Жемчужина сжатия моделей: двоичные сети

искусственный интеллект алгоритм
Жемчужина сжатия моделей: двоичные сети

Сеть бинаризации (BNN)

  • Босс: Как насчет количественной оценки до INT8! Недостаточно маленький! Я собираюсь поместить ИИ-модель в часы с гарнитурой! ! \

  • Сотрудник: Тогда мы используем бинарную сеть! ! Все 0s и 1s! ! \

Сеть бинаризации, как и низкобитовое квантование, направлена ​​на то, чтобы сделать модель меньше, настолько маленькой, чтобы она имела самую высокую степень сжатия и чрезвычайно низкую вычислительную стоимость. Так что же такое двоичное значение? Двоичная сеть относится к нейронной сети, которая использует только значения +1 и -1 (или 0 и 1) для представления весов и активаций.

По сравнению с нейронной сетью, представленной полной точностью (FP32), бинаризация может использовать XNOR (элемент XNOR в логической схеме) или простую операцию подсчета (pop Count), чрезвычайно простую комбинацию для замены умножения и суммы FP32 Сложные операции, такие как как накопление используются для реализации операций свертки, что экономит много памяти и вычислений и значительно облегчает развертывание моделей на устройствах с ограниченными ресурсами.

Поскольку BNN может достигать чрезвычайно высокой степени сжатия и эффекта ускорения, это очень потенциальная технология для продвижения моделей искусственного интеллекта, представленных глубокими нейронными сетями, и применения на мобильных устройствах с ограниченными ресурсами и ограниченным энергопотреблением.

Однако в настоящее время в BNN все еще есть много недостатков, например, точность модели все еще ниже полной точности, она не может быть эффективно обобщена на более сложные задачи и зависит от конкретной аппаратной архитектуры и программной среды. Но в то же время также можно увидеть, что, когда BNN был впервые предложен в 2016 году, показатель точности Top1 в ImageNet составлял всего 27%, а ReActNet-C, предложенный в 2020 году, имеет улучшение точности на 71,4%!

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

1. Базовое введение в BNN

BNN был впервые предложен Йошуа Бенжио [1] в 2016 году. В документе говорится, что стохастический градиентный спуск используется для обучения модели нейронной сети с бинаризованными весами и параметрами акта активации.

1.1 Форвардный расчет

Чтобы решить проблему переноса градиента при расчете веса бинаризованного веса, в статье предлагается поддерживать действительный (FP32) вес в процессе обучения, а затем использовать функцию знака для получения параметра бинаризованного веса. [公式]это FP32,[公式]представляет собой бинарное значение:

[公式]

Функция знака равна 1, если входной параметр больше или равен 0, в противном случае он равен -1:

[公式]

На приведенном выше рисунке показана операция свертки 3X3 веса бинаризации и ввода бинаризации.Операция бинаризации состоит в том, чтобы разбить и расширить ядро ​​свертки и окно входных данных, затем выполнить операцию XNOR, а затем выполнить подсчет битов, чтобы получить результат свертки.

1.2 Обратное распространение

Подобно способу обучения перцептивному квантованию, функция знака не дифференцируема при 0. Когда производная равна 0, не будет возможности вычислить градиент, поэтому в статье предлагается прямая оценка STE, то есть когда градиент Transfer встречает функцию знака, пропустите эту функцию напрямую:

[公式]

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

[公式]

Поскольку есть встроенные модификации в процесс обучения FP32, это определенно приведет к увеличению времени обучения, а точность конечного экспериментального результата не так высока, как у FP32, что толку?

Перевод и перевод здесь, на самом деле, самая большая роль заключается в том, что, как показано на рисунке вперед, 1-битные операции XOR и pop count могут использоваться для замены свертки FP32 для операций умножения и накопления. вывод, не только он может уменьшить память для хранения параметров в 32 раза, но и может работать быстрее лошади!

3. Структура сети БНС

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

Среди них последняя обзорная статья Binary Neural Networks: A Survey of Beihang University, в которой содержится хороший обзор многих моделей бинарных сетей ZOMI кратко представляет структуру сетевой модели BNN, которую я считаю более интересной.

4. Аппаратная реализация

С точки зрения процесса бинаризации сети основная причина ускорения BNN заключается в том, что операции XNOR и Pop Count используются для замены дорогостоящих операций MAC с умножением и накоплением в традиционном алгоритме свертки.

Общая вычислительная архитектура x86 в основном представляет собой вычисление данных типа FP32 с полной точностью, а базовое оборудование и оптимизация компиляции и выполнения выполняются Таким образом, преимущества прямого развертывания BNN на общей вычислительной платформе x86 не очевидны и могут даже не быть. Эффект ускорения даже медленнее, чем у эквивалентной сетевой модели FP32.

Давайте рассмотрим простой анализ на платформах ARM CPU и FPGA соответственно.

ARM CPU

Фактически, BNN в настоящее время сосредоточена на развертывании на мобильной стороне. BMXNet 2017 [3] был разработан Хаоджином Янгом, исследователем из Института Хассо Платтнера в Германии, и др. Это фреймворк с открытым исходным кодом для бинаризации на основе MXNet. Поддерживает обучение с помощью CuDNN и вывод с помощью бинарных операторов XNOR и Pop Count. Недостатком является то, что бинарное ядро ​​специально не настраивается, поэтому скоростные показатели на процессорах ARM не выдающиеся.

Dabnn 2019[4] был запущен Исследовательским институтом искусственного интеллекта Jingdong на основе инструмента вывода BNN после настройки сборки. Он эффективно повышает скорость логического вывода BNN на стороне платформы ARM, но этот инструмент нельзя использовать для обучения модели, и для обучения необходимо использовать другие инструменты.

\

BMXNet-v2 2019 [9], Bethge and Yang и др. открыли исходный код второй версии, поддерживающей Gluon API. Ряд улучшений, принятых этой структурой, значительно снижает сложность обучения модели и стоимость синхронизации MXNet. Вторая версия не только повышает эффективность, но также продолжает поддерживать сжатие моделей и вывод бинаризации, что позволяет развертывать модели на различных периферийных устройствах.

FPGA и ASIC

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

В настоящее время проектирование ускорителей ИИ с использованием FPGA в основном основано на устройствах и инструментах разработки Xilinx, а также специально разработанной архитектуре FINN для бинарных нейронных сетей Разработчики могут использовать инструменты синтеза высокого уровня (HLS) для использования языка C для разработки , и напрямую разверните бинарную модель на FPGA.

Суммировать

Хотя BNN добился большого прогресса за последние 5 лет, более серьезная проблема заключается в том, что потеря точности по-прежнему является головной болью, особенно для больших сетей и наборов данных. К основным причинам могут относиться:

1) В настоящее время нет бинарной сетевой модели SOTA, и неясно, какая структура сети подходит для бинаризации;

2) Даже с градиентными оценками или функциями аппроксимации для бинаризации оптимизация двоичной сети в дискретном пространстве является сложной задачей.

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

Наконец, исследования по интерпретируемому машинному обучению показывают, что в выводе нейронных сетей есть критические пути и что разные сетевые структуры следуют разным шаблонам. Следовательно, также имеет большое значение разработка стратегии смешанной точности в соответствии с важностью слоев и разработка новой сетевой структуры, дружественной к информационному потоку бинарных нейронных сетей.

использованная литература

  • [1] Courbariaux, Matthieu, et al. "Binarized neural networks: Training deep neural networks with weights and activations constrained to+ 1 or-1." arXiv preprint arXiv:1602.02830 (2016).
  • [2] Qin, Haotong, et al. "Binary neural networks: A survey." Pattern Recognition 105 (2020): 107281.
  • [3] Yang, Haojin, et al. "Bmxnet: An open-source binary neural network implementation based on mxnet." Proceedings of the 25th ACM international conference on Multimedia. 2017.
  • [4] Zhang, Jianhao, et al. "dabnn: A super fast inference framework for binary neural networks on arm devices." Proceedings of the 27th ACM international conference on multimedia. 2019.
  • [5] zhuanlan.zhihu.com/p/27