Как использовать два экземпляра aws ec2 (1 графический процессор и 1 процессор) с одним хранилищем для (запуска кода, хранения / обмена файлами) и снижения затрат

Моя команда использует экземпляр gpu для запуска приложений машинного обучения на основе тензорного потока, yolo и компьютерного зрения, а также для обучения моделям машинного обучения. Это стоит 7 долларов в час и имеет 8 графических процессоров. Пытался сократить расходы на это. Нам нужно 8 графических процессоров для более быстрой тренировки, и иногда многие люди могут использовать разные графические процессоры одновременно.

Для нашего случая использования мы иногда не используем GPU (8 GPU) в течение по крайней мере 1-2 недель месяца. Но использование графического процессора может прийти в это время, но не может также. Итак, я хотел знать, есть ли способ отредактировать код и выполнять все интенсивные операции с процессором, когда gpu не требуется через недорогой экземпляр процессора. И включайте экземпляр gpu только при необходимости, используйте его, а затем остановите, когда работа будет завершена.

Я думал об использовании efs для помещения кода в общую файловую систему, а затем запуска оттуда, но я прочитал статью ( https://www.jeffgeerling.com/blog/2018/getting-best-performance-out-amazon-efs) где написано, что я никогда не должен запускать код с сетевых дисков, потому что скорость может стать очень низкой. Так что я не знаю, хорошо ли запускать приложение машинного обучения из файловой системы efs. Я думал о создании виртуальных сред на папках в EFS, но я не думаю, что это хорошая идея.

Может ли кто-нибудь предложить хорошие способы достижения этого и сократить расходы. И если вы предлагаете использовать экземпляр с меньшим количеством графических процессоров, который я рассмотрел, но иногда нам нужно 8 графических процессоров для более быстрого обучения, но мы вообще не используем этот процесс в течение 1-2 недель, но затраты все равно понесены.

Пожалуйста, предложите способ достижения низкой стоимости для этого варианта использования без использования спотовых или зарезервированных экземпляров. заранее спасибо

2 ответа

Решение

Несколько мыслей:

  • Экземпляры GPU теперь допускают спящий режим, поэтому при запуске графического процессора выберите новое поведение Stop Instance "hibernate", которое позволит вам отключить его на 2 недели, но при необходимости быстро раскрутить.
  • Если у вас есть только один экземпляр, изучите возможность использования EBS для хранения данных с большим объемом подготовленных iops для быстрого перемещения данных в / из экземпляра.
  • Кроме того, перенесите вашу модель в Sagemaker, чтобы убедиться, что вы платите только за использование графического процессора, когда активно тренируете свою модель.
  • Если вы применяете свою модель (вывод), перенесите эту рабочую нагрузку на дешевый экземпляр. Обученная модель yolo может выполнять вывод на очень маленьких экземплярах ЦП, при этом вообще не требуется графический процессор для этой части рабочей нагрузки.

Чтобы снизить затраты на вывод, вы можете использовать Elastic Inference, который поддерживает функцию оплаты за использование:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-inference.html

Другие вопросы по тегам