Начните работу с Apache MXNet в Amazon Linux
Начните работу с Apache MXNet в Ubuntu

MXNet – это лаконичная, гибкая и сверхмасштабируемая платформа глубокого обучения, которая поддерживает самые современные модели глубокого обучения, включая сверточные нейронные сети (CNN) и сети с долгой краткосрочной памятью (LSTM). Идея создания этой платформы возникла в академической среде, ее разработкой совместно занимались научные сотрудники нескольких ведущих университетов. Платформа разрабатывалась для развития технологий компьютерного зрения и речи, обработки и понимания естественного языка, создания порождающих моделей, а также параллельных и рекуррентных нейронных сетей.

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

Именно поэтому в качестве рабочей платформы глубокого обучения Amazon Web Services выбрала Apache MXNet. Чтобы начать работу с Apache MXNet на AWS, достаточно запустить образ AWS Deep Learning AMI, доступный в версиях для Amazon Linux и Ubuntu.

Внесите свой вклад в проект Apache MXNet

Используйте GitHub в работе

На странице проекта в GitHub можно найти образцы кода, примечания и учебные материалы.

GitHub-Mark-120px-plus
Простота

Программируемость

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

Надежность

Универсальность

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

Масштабируемость

 Масштабирование

Возможность масштабирования на различных графических процессорах и узлах для быстрого обучения крупных и сложных моделей.

При программировании на 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++, поэтому производительность остается стабильной независимо от выбранного пользователем языка программирования. 

c-plus-plus-logo-100px
javascript-logo-100px
python-logo-100px
r-logo-100px
Matlab
julia-logo-100px
scala-logo-100px
go-logo-100px

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

Модели Apache MXNet можно разместить даже при минимальном объеме свободной памяти. К примеру, для размещения сети с тысячей уровней требуется хранилище объемом менее 4 ГБ. Кроме того, данная система работает на любых платформах. Основная библиотека (со всеми зависимостями) умещается в одном исходном файле C++, обработку которого можно выполнить как на базе iOS, так и в Android. А с помощью JavaScript его можно запустить даже в браузере. Благодаря такой гибкости можно развертывать модели для самых разных примеров использования и применять их для самого широкого спектра пользователей. 

portability-cloud

Облако

portability-mobile

Мобильные устройства

portability-browser

Браузер

portability-devices

Подключенные устройства

Apache MXNet создан на основе динамического обработчика зависимостей, который превращает зависимости данных в серийный код и автоматически организует параллельное выполнение на лету как декларативных, так и императивных операций. Уровень оптимизации графа дополнительно обеспечивает быстрое выполнение декларативных операций и эффективное использование памяти.

Благодаря такой автоматической параллелизации платформа MXNet обеспечивает очень эффективное масштабирование. К примеру, чтобы оценить производительность MXNet, мы обучали популярный алгоритм анализа изображений Inception v3 с использованием растущего количества инстансов EC2 P2 на базе графических процессоров.

mxnet-scale-story-1

Красной линией отмечена идеальная производительность, когда при увеличении количества графических процессоров вдвое скорость работы тоже удваивается. Пропускная способность MXNet увеличивалась практически пропорционально увеличению количества используемых графических процессоров. На одном инстансе с 16 графическими процессорами платформа Apache MXNet смогла продемонстрировать производительность на уровне 91 %.

Однако при работе с большими сетями может потребоваться масштабирование с использованием кластера инстансов P2. При запуске того же механизма оценки по такому сценарию наблюдается лишь незначительное снижение производительности при экспоненциальном росте количества графических процессоров.

mxnet-scale-story-2

Совсем не обязательно верить нам на слово. Одним из преимуществ использования облака является возможность легко опробовать систему на собственных примерах с использованием своего кода. Наш пример оценки производительности доступен всем на GitHub. Попробуйте копнуть глубже, чтобы понять основные принципы работы системы и использовать ее для получения собственных результатов. Кроме того, можно выполнить быстрое развертывание всех необходимых ресурсов с помощью нашего шаблона AWS CloudFormation.

Чтобы без труда начать работу с Apache MXNet на AWS, посетите AWS Marketplace и запустите образ AWS Deep Learning AMI.

Данный AMI предоставляется бесплатно и содержит самую новую версию MXNet и ряд других популярных платформ глубокого обучения, а также сопутствующие инструменты. Оплате подлежит только фактическое время выполнения вычислений в EC2.