Facebook открыл код библиотеки для ускорения операций машинного обучения
Facebook опубликовал новую библиотеку QNNPACK (Quantized Neural Network PACKage), предоставляющую набор оптимизированных для выполнении на мобильных устройствах операторов, которые можно использовать для ускорения различных реализаций нейронных сетей. В частности QNNPACK предоставляет операторы для построения сверточных, развертывающих и полностью рекуррентных нейронных сетей, манипулирующие квантованными 8-битными тензорами. Библиотека написана на языке Си с ассемблерными вставками, использующими SIMD-инструкции NEON и SSE2 для распараллеливания обработки данных. Код распространяется под лицензией BSD.
Предоставляемые библиотекой QNNPACK примитивы могут использоваться для замены типовых реализаций операторов нейронных сетей в высокоуровневых фреймворках машинного обучения. В настоящее время QNNPACK можно использовать для ускорения работы фреймворка PyTorch с поддержкой экспорта моделей в графовое представление Caffe2. Библиотека уже применяется в мобильных приложениях Facebook для решения задач компьютерного зрения, таких как классификация и распознавание изображений, а также выделение объектов (Mask R-CNN, DensePose) на фотографиях в режиме реального времени.
Замена предлагаемых во фреймворках операторов нейронных сетей на реализацию из библиотеки QNNPACK позволяет приблизительно в два раза ускорить работу приложений на мобильных устройствах, при выполнении таких тестов как MobileNetV2. Библиотека поддерживает 32- и 64-разрядные архитектуры ARM (AArch32 и AArch64), а также архитектуру x86 (для оптимизации используются инструкции SSE2).