Facebook открыла исходный код библиотеки QNNPACK
Новости Отредактировано
Инструмент разработан для эффективного использования ИИ на мобильных устройствах. QNNPACK опубликован как часть фреймворка PyTorch 1.0.
688 открытий699 показов
Facebook выпустила в открытом доступе исходный код библиотеки ядра ИИ QNNPACK (Quantized Neural Network PACKage). Она рассчитана для работы ИИ на мобильных устройствах. Технология используется в приложениях Facebook для обработки изображений. Поскольку вычислительная мощность у мобильных устройств ниже, чем у серверов обработки данных, разработчики использовали последние достижения в области нейросетей, чтобы сохранить производительность системы на должном уровне.
Ключевые технологии QNNPACK
В основе архитектуры библиотеки лежит свёрточная нейронная сеть. Такая сеть считается самой подходящей для распознавания зрительных образов. Для повышения производительности инженеры применили доработанные технологии произведения матриц и трансформации памяти im2col.
Разработчики Facebook демонстрируют суть технологии произведения матриц с помощью диаграммы:
В схематичном изображении нейросети А — вводные данные, В — веса, С — результат. При этом В при обработке остаётся неизменным. В базовом случае процессор запрашивает в памяти А и В, обрабатывает и выдаёт итог С. Однако такой подход ведёт к образованию «бутылочного горлышка» в точке обращения CPU к памяти, так как в большинстве современных устройств вычислительная мощность процессора выше пропускной способности шины памяти.
В технологии QNNPACK в кэш процессора данные загружаются массивами в виде произведений M и K для А и K и N для В. Вычисление произведения M и N происходит за счёт внутренних ресурсов CPU без обращения к памяти устройства.
Использование трансформации im2col
Технология im2col представляет собой разбивку обрабатываемого изображения на столбцы-векторы по количеству входящих каналов. Создатели QNNPACK доработали эту систему, включив в неё обходной буфер.
Обходной буфер содержит указатели на ряды входящих пикселей, которые должны быть вовлечены в вычисление исходящих. Использовав произведения матриц, разработчикам удалось уменьшить размер буфера относительно стандартных реализаций im2col.
Инженеры Facebook доработали алгоритм равнораспределённой свёртки (depthwise convolution), добавив пакетную обработку групп 3×3. Для пакетных вычислений используются регистры общего назначения (GPR). Обработка свёртки 3×3 требует 18 регистров (9 входящих и 9 для фильтра), в то время как архитектура ядра 32-bit ARM поддерживает только 14. Но так как фильтр в процессе обработки остаётся неизменным, разработчики смогли сократить необходимые для его хранения ресурсы до одного регистра.
Производительность библиотеки
Создатели провели сравнительное тестирование QNNPACK, реализовав технологию через Caffe2 и TensorFlow Lite на разных телефонах. В качестве архитектуры сети использовали MobileNet первой и второй версии. В опубликованных результатах библиотека от Facebook показала большую скорость. По точности TensorFlow Lite оказался на втором месте.
В библиотеке QNNPACK реализованы и другие передовые подходы к оптимизации нейронных сетей, например, вычисления низкой точности.
Инструмент публикуется как часть фреймворка PyTorch 1.0, вышедшего в начале октября 2018 года.
688 открытий699 показов