Авторы: Алессандро Капотонди и Мануэле Руши, Университет Болоньи

Энергоэффективные периферийные устройства на базе искусственного интеллекта

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

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

Энергоэффективная интеллектуальность создает две основные проблемы при соблюдении подходов глубокого обучения (DL), которые выражаются следующими вопросами:

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

Мы утверждаем, что нет правильного порядка для ответов на эти вопросы. Напротив, одновременная работа с обеих сторон приводит к наилучшему результату. В этом посте мы расскажем, как последние модели глубокого обучения, уже обученные и оптимизированные для повышения энергоэффективности, могут быть сопоставлены на граничном устройстве, таком как MCU STM32H7, благодаря нашим оптимизированным расширениям библиотеки CMSIS-NN. Наш код доступен онлайн.

Энергоэффективное встроенное глубокое обучение

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

  • Топология сети имеет значение. Почему бы не уменьшить модель, чтобы уменьшить количество параметров и операций MAC? Несмотря на то, что этот процесс может показаться черной магией, опыт Mobilenet показал, что это жизнеспособный способ, позволяющий достичь наилучшего компромисса между размером модели и показателями точности распознавания.
  • Tensorflow Lite - теперь хорошо известный инструмент для сжатия существующей модели в более простую числовую область (например, 8-битные данные с фиксированной точкой) с целью уменьшения объема памяти и ускорения вычислений. Стоимость сжатия состоит из специального процесса переобучения, необходимого для достижения того же уровня точности, что и исходная несжатая модель.

После применения сжатия 8-битные версии Mobilenet не показали ухудшения точности по отношению к базовым линиям с плавающей запятой и в настоящее время используются для задач классификации или в качестве основы для фреймворков распознавания объектов (TF Lite на Raspberry).

MobileNet на микроконтроллере ARM Cortex-M7

Чего не хватает, чтобы достичь самого края и запустить сжатые модели DL на устройствах с ограниченным энергопотреблением? ARM попыталась ответить на этот вопрос, выпустив библиотеку CMSIS NN для Cortex-M target. К сожалению, библиотека не отслеживает новейшие функции сжатия и квантования модели DL. Фактически, эффективный процесс квантования включает линейное квантование в асимметричном диапазоне. Допустим, весовые параметры сверточного слоя квантуются в диапазоне [a, b], где a ›0 и b‹ 0, тогда

Таким образом, внутренний цикл квантованного сверточного ядра можно вычислить как:

Легко заметить, что теперь 8-битные сверточные ядра должны выполнять операцию смещенной свертки, за которой следует операция масштабирования (и ограничения). Мы предоставляем эти новые сверточные ядра в нашем выпущенном расширении CMSIS-NN.

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

Ключевую роль здесь могут сыграть инновационные архитектурные решения (помните второй вопрос в начале поста?). Однако при попытке реализовать MobileNet на устройстве ST32H7 есть ограничение памяти (2 МБ флэш-памяти + 512 КБ L2 SRAM), и нам нужно с этим столкнуться. Самое простое решение - использовать память L2 для чтения / записи для хранения временных активаций уровня (как входных, так и выходных), одновременно сохраняя сетевые параметры во флэш-памяти, предназначенной только для чтения. Следующий вопрос: какой тип MobileNet соответствует этим ограничениям?

Каждая точка на графике выше представляет модель Mobilenet с определенным размером ввода (128, 160, 192, 224) и множителем ширины (0,25, 0,5, 0,75, 1,0). Требование к памяти активации относится к осям x, весовые параметры - по осям y. Красный прямоугольник ограничивает пространство решений моделей, которое соответствует ограничениям памяти MCU STM32H7. Вы видите, что не все из них могут уместиться в ограниченном объеме памяти (на самом деле сеть с наивысшим рейтингом top1 не подходит).
Итак, мы загрузили 8-битный квантованный Mobilnet 160_0.25 из TensorFlow и портировали в STM32H7 с помощью нашего расширения библиотеки. Результат: задача классификации 1000 классов может выполняться за 165 мсек (65 миллионов циклов на частоте 400 МГц). Если вы хотите узнать больше, вы можете проверить наше репозиторий на github. Более подробная информация по теме появится в ближайшее время. Будьте на связи!