Глубокое обучение с помощью DigitalOcean: Redux

Эта статья будет немного отличаться от моих обычных статей, ориентированных на бизнес. В недавней статье у меня сложилось впечатление, что DigitalOcean - не лучшее место для развертывания систем глубокого обучения. Однако есть несколько хороших вариантов использования для развертывания в DigitalOcean, которые позволяют сэкономить средства и сложность.

Недавно клиент поручил нам развернуть регрессионную модель в облаке. Обучение проводилось на графическом процессоре K20.

Мы попробовали установить «Машинное обучение и искусственный интеллект» DigitalOcean в один клик на новой капле с 2 ГБ оперативной памяти. Результаты были потрясающими.

Для начала мы обновили tenorflow следующим образом:

pip install --upgrade tensorflow
#to resolve ImportError: 'load_weights' requires h5py.
pip3 install --upgrade h5py

Для обновления кераса (необязательно) используйте это:

pip install keras --upgrade

Непосредственные проблемы с получением кода для работы на Keras 2. Прочтите нужную версию документации: https://faroit.github.io/keras-docs/2.0.8/ и проверьте свою версию следующим образом:

import keras
print(keras.__version__)

Результаты времени выполнения в DigitalOcean

DNN (MLP) с 7 слоями обучается за 11,4 секунды (для 10 000 выборок с 20 входными и 10 выходными классами). Тестирование на 1000 образцах заняло 968 мс. Это БЫСТРО. Вот код:

Чтобы рассчитать время для прогнозов 1000 моделей, просто сделайте следующее:

LSTM (для предсказания последовательности) тоже работал очень быстро. Мы используем такую ​​модель для прогнозирования таких вещей, как цены на акции. Еще одно интересное использование LSTM - это регрессия, но давайте остановимся на этом примере. Пример занял 33,5 с для 144 точек данных. НО, прогноз модели (без обучения) занял всего 16 миллисекунд!

CNN (vgg19) 2 ГБ памяти было недостаточно для запуска модели, поэтому я сделал это на экземпляре 8 ГБ. Для нескольких других CNN на 2 ГБ я аналогичным образом получил ResourceExhaustedError и другой мусор. Ничего страшного. На экземпляре 8 ГБ ОЗУ работает как шарм. Загрузка модели и получение одного результата занимает 8,6 секунды, но само прогнозирование модели происходит намного быстрее.

Обработка 100 изображений и прогнозирование модели для каждого из них заняли 4 минуты 23 секунды. Итак, в секундах это 240 + 23 = 263 секунды. Если разделить на количество изображений, получим 2,63 секунды. Не хорошо. Вот код времени:

Следующим моим шагом была модель встраивания слов в word2vec (новости Google), но, увы, мне нужно вернуться к реальной работе. У встраиваемых моделей есть проблема с размером памяти, как у CNN.

Результаты расчета стоимости в DigitalOcean

Что ж, выполнение DNN и LSTM на двух инстансах по 20 долларов в месяц ОЧЕНЬ дешевле, чем на инстансе p2 или p3 на 1K в месяц на AWS. Для этих небольших моделей это имеет большой смысл. Для более крупных моделей CNN и word2vec не хватает вычислительных ресурсов (без графического процессора) или оперативной памяти (для больших моделей встраивания), чтобы сделать DigitalOcean привлекательной. Это может измениться, если, например, существует способ загрузки моделей word2vec с SSD вместо RAM. Я имею в виду, а почему бы и нет? По сути, это просто большая память. Так что это решит проблемы со встраиванием слов, но как насчет CNN? Это сложнее. Я думаю, что для обработки изображений графический процессор еще долгое время будет лидером в этой области.

Если вам понравилась эта статья о глубоком обучении в облаке, попробуйте инструмент хлопка. Нажмите на это. Следуйте за нами в среде. Поделитесь ссылкой на эту статью. Действуй. Я также рад услышать ваши отзывы в комментариях. Что вы думаете?

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

Удачного кодирования!

-Даниэль
[email protected] ← Передай привет.
Lemay.ai
1 (855) LEMAY-AI

Другие статьи, которые могут вам понравиться: