AWS DeepLearning AMI — почему (и как) его стоит использовать

в 1:17, , рубрики: Amazon Web Services, AWS, aws ec2, deep learning, dlami, mxnet, машинное обучение

Иногда хорошие вещи приходят бесплатно ...

Что такое AMI?

Для тех из вас, кто не знает, что такое AMI, позвольте мне процитировать официальную документацию по этому вопросу:

Amazon Machine Image (AMI) предоставляет данные, необходимые для запуска экземпляра виртуального сервера в облаке. Вы настраиваете AMI при запуске экземпляра, и вы можете запустить столько экземпляров из AMI, сколько вам нужно. Вы также можете запускать экземпляры виртуальных машин из множества различных AMI, сколько вам нужно.

Этого должно быть достаточно, чтобы понять остальную часть статьи, однако я бы посоветовал потратить некоторое время на официальную документацию об AMI.

Если вдруг не слышали термин Deep learning ранее...

Глубокое обучение или глубинное (англ. Deep learning) — набор алгоритмов машинного обучения, которые пытаются моделировать высокоуровневые абстракции в данных, используя архитектуры, состоящие из множества нелинейных преобразований
Глубокое обучение является частью более широкого семейства методов машинного обучения, которые подбирают представление данных. Наблюдение (например, изображение) может быть представлено многими способами, такими как вектор интенсивности значений на пиксель, или (в более абстрактной форме) как множество примитивов, областей определенной формы, и т. д.
С другой стороны есть и мнения, что глубокое обучение — не что иное, как модное слово или ребрендинг для нейронных сетей. Wiki.

Что такое AWS DeepLearning AMI (а.к.а. DLAMI) и почему его нужно использовать?

Обучение (тренировку) нейронных сетей можно делать 2-мя путями: с использование CPU или с использованием GPU. Думаю ни для кого не секрет что обучение с помощью GPU показывает лучшие результаты, с точки зрения скорости(а как следствие и затрат), чем обучение с помощью CPU, поэтому все современные системы машинного обучения поддерживают GPU. Однако, чтобы использовать все преимущества GPU мало просто иметь этот самый GPU, вам необходимо еще "по приседать":

  1. Получить сам GPU.
  2. Настроить его драйвера.
  3. Найти библиотеки, которые могут использовать все возможности именно вашего GPU. Библиотеки должны быть совместимы с драйверами и оборудованием из 1 и 2.
  4. Вам необходимо иметь нейронную сеть, которая была скомпилирована с библиотеками, которые были найдены ранее.

Так что же нужно сделать что бы решить все эти 4 незадачи? Есть 2 варианта:

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

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

Как DLAMI может решить эту проблему? Да легко, дело в том, что DLAMI, это первое бесплатное решение, включающее все, что необходимо прямо из коробки:

  • Драйвера для новейшего графического процессора от Nvidia;
  • Последние библиотеки CUDA и CuDNN;
  • Предварительно собранные фреймворки с поддержкой GPU (и собранные с теми версиями CUDA и CuDNN которые доступны в AMI).

Аль, к слову, список фреймворков, которые работают из коробки:

DLAMI можно использовать с GPU-совместимым машинами на AWS, например P2 или G2:

image

Можете, кстати, попробовать поиграться со свеже выпущенными G3

Надеюсь, теперь у нас есть ответ на вопрос: почему и кому нужно использовать DLAMI. Теперь давайте обсудим ответ на следующий вопрос ...

Как именно можно создать машину с DLAMI?

Для этого сначала нужно выбрать, какой вариант DLAMI более предпочтителен:

  • на базе Ubuntu (может использоваться с любыми пакетами Ubuntu).
  • на базе Amazon Linux (включает все программы AWS, такие как awscli, из коробки).

Если с типом DLAMI определились то перейдем с способам создания машин на базе DLAMI:

  • С помощью AWS EC2 Marketplace:
  • С помощью консоли EC2.

Консоль EC2 фактически предоставляет два способа ее создания, обычное создание:

AWS DeepLearning AMI — почему (и как) его стоит использовать - 2

И ускоренное создание консоли EC2, применяя конфигурацию по умолчанию:

AWS DeepLearning AMI — почему (и как) его стоит использовать - 3

Проблемы с обновлениями

Существует одна оговорка, которую необходимо обсудить. Поскольку все фреймворки построены с нуля, вы не можете просто так взять и обновить их до последней версии, есть риск получить версию фреймворка, которая не собрана с поддержкой GPU (или не совместима с версией CUDA). Так что обновляйте пакеты на свой страх и риск!

Согласен, это затрудняет переход на новые версии фреймворков, поскольку вам нужно перейти на новый AMI, а не просто обновить пакет. В свою очередь переход на новую AMI может быть болезненным. Поэтому имейте это в виду, создавая новый экземпляр виртуальной машины, я бы посоветовал вам создать отдельную EBS для хранения ваших данных, которую вы можете легко отмонтировать и использовать с новым экземпляром виртуальной машины с обновленной версией AMI. Ну или храните данные в репозитории.

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

Автор: Viacheslav Kovalevskyi

Источник

Поделиться

* - обязательные к заполнению поля