В мае 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 - проект с открытым исходным кодом, и вклад в репозиторий всегда приветствуется!
Выражаем благодарность: Вей Лай, Сандип Кришнамурти.