Квантование глубоких нейронных сетей

В цифровом оборудовании числа хранятся в двоичных словах. Двоичное слово является последовательностью фиксированной длины битов (1's и 0). Тип данных задает, как аппаратные компоненты или функции программного обеспечения интерпретируют эту последовательность 1's и 0. Числа представлены как любое масштабированное целое число (обычно называемый фиксированной точкой) или типы данных с плавающей точкой.

Большинство предварительно обученных нейронных сетей и нейронных сетей, обученных с помощью Deep Learning Toolbox™, используют типы данных с плавающей запятой с одинарной точностью. Даже маленькие обученные нейронные сети требуют значительного объема памяти и требуют оборудования, которое может выполнить арифметику с плавающей точкой. Эти ограничения могут запретить развертывание возможностей глубокого обучения к микроконтроллерам малой мощности и FPGAs.

Используя пакет поддержки Библиотеки Квантования Модели Deep Learning Toolbox, можно квантовать сеть, чтобы использовать 8-битные масштабированные целочисленные типы данных.

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

Точность и область значений

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

  • Потеря точности: потеря Точности является погрешностью округления. Когда потеря точности происходит, значение округлено к самому близкому номеру, который является представимым, по условию вводят. В случае связи это округляется:

    • Положительные числа к самому близкому представимому значению в направлении положительной бесконечности.

    • Отрицательные числа к самому близкому представимому значению в направлении отрицательной бесконечности.

    В MATLAB® можно выполнить этот тип округления использования round функция.

  • Потеря значимости: Потеря значимости является типом потери точности. Потери значимости происходят, когда значение меньше, чем наименьшее значение, представимое по условию, вводит. Когда это происходит, значение насыщает, чтобы обнулить.

  • Переполнение: Когда значение больше, чем самое большое значение, которое может представлять тип данных, переполнение происходит. Когда переполнение происходит, значение насыщает к самому большому значению, представимому, по условию вводят.

Гистограммы динамических диапазонов

Используйте приложение Deep Network Quantizer, чтобы собрать и визуализировать динамические диапазоны весов и смещения слоев свертки и полносвязные слоя сети и активации всех слоев в сети. Приложение присваивает масштабированный 8-битный целочисленный тип данных для весов, смещений и активаций слоев свертки сети. Отображения приложения гистограмма динамического диапазона для каждого из этих параметров. Следующие шаги описывают, как эти гистограммы производятся.

  1. Считайте следующие значения регистрируемыми для параметра при осуществлении сети.

    Schematic representation of values logged for a parameter.

  2. Найдите идеальное бинарное представление каждого регистрируемого значения параметра.

    Старший значащий бит (MSB) является крайним левым битом двоичного слова. Этот бит способствует больше всего значению номера. MSB для каждого значения подсвечен в желтом.

    Ideal binary representation for each logged value shown in a table, with the most significant bit highlighted in yellow.

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

    Sum of MSB's in each column shown at the bottom of the table and highlighted in green.

  4. Количества MSB каждого местоположения бита отображены как карта тепла. В этой карте тепла более темно-синие области соответствуют большему числу MSB в местоположении бита.

    MSB counts shown as a heat map with darker regions corresponding to a larger number of MSB's in the bit location.

  5. Приложение Deep Network Quantizer присваивает тип данных, который может избежать переполнения, покрыть область значений и позволить потерю значимости. Дополнительный знаковый бит требуется, чтобы представлять со знаком из значения.

    Рисунок ниже показывает пример типа данных, который представляет биты от 23 к 2-3, включая знаковый бит.

    Table of binary representations of original values, with the region from 2^3 to 2^-3 and the sign bit column highlighted by a bounding box.

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

    Table of binary representations of values, with non-representable bits grayed out. A table on the right displays the 8-bit binary representations and quantized values.

    В этом примере, значение 0.03125, страдает от потери значимости, таким образом, квантованное значение 0. Значение 2.1 несет некоторую потерю точности, таким образом, квантованное значение 2.125. Значение 16.250 больше, чем самое большое представимое значение типа данных, таким образом, это значение переполнение и квантованное значение насыщает к 15,874.

    The same table, with representative cases of underflow, precision loss, and overflow highlighted in the right table.

  7. Отображения приложения Deep Network Quantizer эта гистограмма карты тепла для каждого настраиваемого параметра в слоях свертки и полносвязных слоях сети. Серые области гистограммы показывают биты, которые не могут быть представлены по условию тип.

    Schematic representation of the heat map histograms displayed by the Deep Network Quantizer app.

Смотрите также

Приложения

Функции