MXNet – это лаконичная, гибкая и сверхмасштабируемая платформа глубокого обучения, которая поддерживает самые современные модели глубокого обучения, включая сверточные нейронные сети (CNN) и сети с долгой краткосрочной памятью (LSTM). Идея создания этой платформы возникла в академической среде, ее разработкой совместно занимались научные сотрудники нескольких ведущих университетов. Платформа разрабатывалась для развития технологий компьютерного зрения и речи, обработки и понимания естественного языка, создания порождающих моделей, а также параллельных и рекуррентных нейронных сетей.
С помощью MXNet можно задавать, обучать и развертывать сети глубокого обучения для самых разных примеров использования от широкой облачной инфраструктуры до мобильных и подключенных устройств. Платформа обеспечивает очень гибкую среду с поддержкой множества распространенных языков и возможностью использования элементов как императивных, так и символических языков программирования. MXNet требуется небольшое количество ресурсов. Таким образом, платформу можно очень эффективно масштабировать на различных графических процессорах и машинах. Это очень удобно при выполнении обучения на крупных наборах данных в облаке.
Именно поэтому в качестве рабочей платформы глубокого обучения Amazon Web Services выбрала Apache MXNet. Чтобы начать работу с Apache MXNet на AWS, достаточно запустить образ AWS Deep Learning AMI, доступный в версиях для Amazon Linux и Ubuntu.
Внесите свой вклад в проект Apache MXNet
Используйте GitHub в работеНа странице проекта в GitHub можно найти образцы кода, примечания и учебные материалы.
Программируемость
Предельная простота сетевых определений и использование знакомых языков программирования.
Универсальность
Эффективное использование ресурсов памяти, благодаря чему модели могут работать на самых разных устройствах и платформах.
Масштабирование
Возможность масштабирования на различных графических процессорах и узлах для быстрого обучения крупных и сложных моделей.
При программировании на Apache MXNet можно использовать как императивные, так и символические языки. Само название MXNet происходит от английского словосочетания «mixed networks», что в переводе означает «смешанные сети». Таким образом, работа с различными сетевыми уровнями оптимизируется за счет использования символических исполнителей и таких гибких возможностей императивных языков, как циклы итераций и обновление параметров. Благодаря своей универсальности платформа MXNet предоставляет уникальный набор возможностей, чтобы сделать работу со сложными многоуровневыми моделями глубокого обучения проще.
import mxnet as mx
a = mx.nd.zeros((100, 50))
b = mx.nd.ones((100, 50))
c = a + b
c += 1
print(c)
import mxnet as mx
net = mx.symbol.Variable('data')
net = mx.symbol.FullyConnected(data=net, num_hidden=128)
net = mx.symbol.SoftmaxOutput(data=net)
texec = mx.module.Module(net)
texec.forward(data=c)
texec.backward()
Кроме того, интерфейсная часть платформы MXNet обеспечивает поддержку различных языков программирования, включая C++, JavaScript, Python, R, Matlab, Julia, Scala и Go. Таким образом, можно сразу приступить к работе с платформой глубокого обучения, используя знакомые языки программирования. Серверная часть платформы выполняет обработку всего кода на языке C++, поэтому производительность остается стабильной независимо от выбранного пользователем языка программирования.
Приложения с использованием искусственного интеллекта все чаще используются в повседневной жизни, а значит, все более и более важно обеспечить возможность их развертывания на устройствах любого типа. Это особенно очевидно, когда развертывание приложений с использованием искусственного интеллекта выполняется на периферийных мобильных или подключенных устройствах с очень ограниченными ресурсами хранилищ.
Модели Apache MXNet можно разместить даже при минимальном объеме свободной памяти. К примеру, для размещения сети с тысячей уровней требуется хранилище объемом менее 4 ГБ. Кроме того, данная система работает на любых платформах. Основная библиотека (со всеми зависимостями) умещается в одном исходном файле C++, обработку которого можно выполнить как на базе iOS, так и в Android. А с помощью JavaScript его можно запустить даже в браузере. Благодаря такой гибкости можно развертывать модели для самых разных примеров использования и применять их для самого широкого спектра пользователей.
Apache MXNet создан на основе динамического обработчика зависимостей, который превращает зависимости данных в серийный код и автоматически организует параллельное выполнение на лету как декларативных, так и императивных операций. Уровень оптимизации графа дополнительно обеспечивает быстрое выполнение декларативных операций и эффективное использование памяти.
Благодаря такой автоматической параллелизации платформа MXNet обеспечивает очень эффективное масштабирование. К примеру, чтобы оценить производительность MXNet, мы обучали популярный алгоритм анализа изображений Inception v3 с использованием растущего количества инстансов EC2 P2 на базе графических процессоров.
Красной линией отмечена идеальная производительность, когда при увеличении количества графических процессоров вдвое скорость работы тоже удваивается. Пропускная способность MXNet увеличивалась практически пропорционально увеличению количества используемых графических процессоров. На одном инстансе с 16 графическими процессорами платформа Apache MXNet смогла продемонстрировать производительность на уровне 91 %.
Однако при работе с большими сетями может потребоваться масштабирование с использованием кластера инстансов P2. При запуске того же механизма оценки по такому сценарию наблюдается лишь незначительное снижение производительности при экспоненциальном росте количества графических процессоров.
Совсем не обязательно верить нам на слово. Одним из преимуществ использования облака является возможность легко опробовать систему на собственных примерах с использованием своего кода. Наш пример оценки производительности доступен всем на GitHub. Попробуйте копнуть глубже, чтобы понять основные принципы работы системы и использовать ее для получения собственных результатов. Кроме того, можно выполнить быстрое развертывание всех необходимых ресурсов с помощью нашего шаблона AWS CloudFormation.
Чтобы без труда начать работу с Apache MXNet на AWS, посетите AWS Marketplace и запустите образ AWS Deep Learning AMI.
Данный AMI предоставляется бесплатно и содержит самую новую версию MXNet и ряд других популярных платформ глубокого обучения, а также сопутствующие инструменты. Оплате подлежит только фактическое время выполнения вычислений в EC2.