В мае 2018 года мы добавили бэкэнд MXNet добавил поддержку Keras 2. Keras-MXNet обеспечивает повышенную производительность как для логического вывода, так и для обучения, с более чем двукратным ускорением обучения GPU в сверточных сетях и поддержкой обучения с несколькими GPU. С тех пор мы работаем над добавлением дополнительной поддержки операторов и некоторыми интересными новыми функциями.

Keras-MXNet недавно анонсировала выпуски v2.2.4 и v2.2.4.1 со значительной функциональностью, включая полную RNN опора и разреженная тензорная опора. Последний выпуск расширяет возможность запуска обучения с несколькими графическими процессорами, включая разреженные тензоры, и добавляет поддержку разреженных категориальных перекрестных потерь энтропии.

Редкие тензоры

Одной из основных функций, которые мы добавили в этот выпуск, является поддержка разреженного тензора с CPU, GPU и multi-GPU на бэкэнде MXNet. Теперь пользователи могут использовать разреженные тензоры для создания рекомендательных систем и различных моделей машинного обучения, связанных с NLP и машинами факторизации с Keras-MXNet.

В этом выпуске мы добавили разреженную поддержку дляsum, mean, concat, dot и embedding операторы. Мы также добавили поддержку sparse_weight в Dense Layer. Теперь вы можете указать, что ваши входные данные и веса слоя будут разреженными тензорами.

Мы измерили производительность разреженных тензоров с помощью базовой модели линейной регрессии с использованием разреженных синтетических данных. Результаты тестов показывают значительное повышение производительности при большом размере пакета (более 128 выборок) для скорости и использования памяти.

На следующем изображении показана производительность для обучения с увеличивающимися размерами пакетов GPU с разреженными тензорами:

Затем мы видим производительность логического вывода на ЦП при увеличении размера пакета.

Для более подробного обзора см. Результаты тестов обучение и логический вывод с разреженными данными. Дополнительная документация по редкому использованию в Keras-MXNet доступна в репозитории.

Полная поддержка RNN

Keras-MXNet теперь поддерживает эти функции RNN в новом выпуске:

(1) Поддержка переменной длины ввода: указание длины ввода или заполнение не требуется.

(2) Поддерживается RNN без развертывания, что позволяет поддерживать более крупные уровни RNN с меньшим объемом памяти.

3) Добавлена ​​поддержка RNN Dropout Layer.

Теперь пользователи могут использовать слои RNN без каких-либо изменений, обеспечивая те же возможности, что и бэкэнд TensorFlow. Чтобы узнать больше о том, когда и как использовать разворачивание в Keras, прочтите нашу Документацию по RNN.

Мы реализовали вышеуказанные функции с помощью операторов потока управления MXNet, которые были представлены в последнем пакете PIP MXNet. Чтобы узнать больше об операторах потока управления MXNet, ознакомьтесь с нашими проектными документами: Операторы потока управления MXNet, Keras-MXNet RNN с операторами потока управления.

Разреженная категориальная перекрестная энтропия

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

Второй - это множественная горячая разреженная категориальная кросс-энтропия. Он подходит для классификации с несколькими метками и несколькими классами. Например, каждый вход может принадлежать от 3 до 5 классов, но всего существует 1000 различных классов. Пожалуйста, следуйте этому примеру для использования, и если вам интересно узнать больше о его реализации, пожалуйста, найдите более подробную информацию в нашей проектной документации.

Начало работы с Keras-MXNet

Не терпится опробовать новую версию? Обязательно посетите страницу установки для получения инструкций по настройке Keras-MXNet на вашем компьютере разработчика. Пакеты PyPI доступны для установки Keras-MXNet на Mac, Windows и Linux.

Все, что вам нужно сделать, это запустить:

# Install MXNet for CPU machine
pip install mxnet-mkl
# Install MXNet for GPU machine with cuda 9.0
pip install mxnet-cu90mkl
# Install Keras-MXNet
pip install keras-mxnet

Примечание: Документ по установке MXNet перечисляет все пакеты MXNet, которые можно использовать с Keras-MXNet.

Для использования новых функций RNN и потерь, выпущенных в Keras-MXNet 2.2.4, используйте последний пакет MXNet: pip install mxnet-mkl --pre

Чтобы узнать больше о Keras-MXNet, обязательно ознакомьтесь с другими связанными сообщениями в блоге - развертывание модели Keras-MXNet на сервере моделей MXNet и обучение с использованием Keras-MXNet и вывод с использованием MXNet Scala API.

Если вам нравится то, что вы читаете - следите за каналом Apache MXNet на Medium, чтобы быть в курсе последних событий экосистемы MXNet. Keras-MXNet - проект с открытым исходным кодом, и вклад в репозиторий всегда приветствуется!

Выражаем благодарность: Вей Лай, Сандип Кришнамурти.