Facebook открыл модули машинного обучения, использующие GPU для ускорения

17.01.2015 08:48

Facebook опубликовал серию модулей для библиотеки Torch с реализацией алгоритмов глубинного обучения. Модули разработаны в учреждённой при Facebook лаборатории исследований в области искусственного интеллекта и могут применяться для таких задач как распознавание изображений и обработка естественного языка (NLP). При моделировании нейронной сети и организации параллельной обработки данных в модулях активно используется вынос вычислений на сторону GPU, в том числе возможно одновременное распределение вычислений на несколько GPU.

Представленные модули существенно быстрее, чем модули из фреймворка Torch, предоставляющего средства для использования алгоритмов машинного обучения в программах на языке Lua. Например, при выполнении теста по классификации изображений указанные модули обеспечили производительность в 23.5 раза опережающую наиболее быструю реализацию ConvNets. При этом данные модули могут использоваться в качестве прозрачной замены штатным модулям Torch, предлагаемым для построения cвёрточных нейронных сетей (ConvNets). Код предназначен для использования с языком Lua (на Lua только обвязка, низкоуровневые компоненты написаны на С++) и распространяется под лицензией BSD.

Из опубликованных компонентов можно отметить:

  • fbnn - набор расширений для фреймворка Torch и пакета nn, предназначенного для построения нейронных сетей. Доступны расширения fbnn.Dropout, fbnn.Optim, fbnn.Probe, fbnn.TrueNLLCriterion и fbnn.SparseLinear;
  • fbcunn - набор очень быстрых модулей для Torch с реализацией алгоритмов машинного обучения, использующих CUDA для ускорения на стороне GPU. Модули можно использовать совместно с базой ImageNet для автоматической классификации изображений;
  • fblualib - коллекция вспомогательных утилит для Lua и Torch. Некоторые компоненты можно использовать независимо от Torch, но для их работы требуется LuaJIT. В частности доступны утилиты для создания расширений на языке Lua, модуль для связывания Lua и Python, отладчик, библиотека для сериализации произвольных объектов Lua, библиотека для чтения и записи файлов в формате Matlab (.mat);
  • fbcuda - библиотека с расширениями CUDA, предоставляющая API для выполнения различных операций на стороне GPU;
  • iTorch - надстройка над IPython для Torch, предоставляющая средства для визуализации изображений, видео и звука, а также для формирования графиков.