цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Квантование нейронной сети: что это такое и как оно связано с TinyML?



Квантование нейронной сети: что это такое и как оно связано с TinyML?

Автор: Mike(admin) от 11-03-2022, 05:05

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


Эта статья даст базовое понимание квантования, что это такое, как оно используется и почему это важно.


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


Квантование нейронной сети: что это такое и как оно связано с TinyML?

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


Эти значения, веса, смещения и активации – это большая часть того, что физически сохраняется в памяти нейронной сетью. Стандартом является представление этих чисел в виде 32-битных значений с плавающей запятой, что обеспечивает высокий уровень точности и, в конечном счете, точность для нейронной сети. Именно из-за такой точности нейронные сети занимают так много памяти. Для сети с миллионами параметров и активаций, каждая из которых хранится в виде 32-битного значения, использование памяти быстро увеличивается. Например, 50-уровневая архитектура ResNet содержит примерно 26 миллионов весов и 16 миллионов активаций. При использовании 32-битных значений с плавающей запятой для представления как весов, так и активаций всей архитектуре потребуется 168 МБ памяти.


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


Квантование нейронной сети: что это такое и как оно связано с TinyML?

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


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


На практике существует два основных способа квантования:


  • Квантование после обучения
  • Обучение с учетом квантования

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


Хотя этот метод прост, он может привести к более высокой потере точности, поскольку все ошибки, связанные с квантованием, возникают после завершения обучения и, следовательно, не могут быть компенсированы. Обучение с учетом квантования, как показано на следующем рисунке, взятом из статьи «Quantization and Deployment of Deep Neural Networks on Microcontrollers» (arxiv.org/pdf/2105.13331.pdf), работает для компенсации ошибок, связанных с квантованием, путем обучения нейронной сети с использованием квантованной версии на прямом проходе во время обучения.


Квантование нейронной сети: что это такое и как оно связано с TinyML?

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


Для TinyML квантование – бесценный инструмент, лежащий в основе всего механизма. В целом квантование необходимо по трем основным причинам:


  1. Квантование значительно уменьшает размер модели – это упрощает запуск машинного обучения на устройстве с ограниченным объемом памяти, таком как микроконтроллер.
  2. Квантование позволяет запускать модели машинного обучения, требуя меньших вычислительных мощностей – микроконтроллеры, используемые с TinyML, как правило, имеют менее производительные процессоры, чем стандартные ЦП или ГП.
  3. Квантование позволяет снизить энергопотребление – первоначальной целью TinyML было выполнение задач машинного обучения с бюджетом мощности менее 1 мВт. Это необходимо для развертывания нейросетей на устройствах с питанием от небольших батареек.



© digitrode.ru


Теги: нейронная сеть, TinyML, машинное обучение




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий