Муфты электромонтажные от производителя Fucon
РадиоЛоцман - Все об электронике

Что такое машинное обучение? Часть 3 - Аппаратное преобразование сверточных нейронных сетей

Analog Devices MAX78000

Аннотация

В этом цикле из трех частей мы изучаем свойства и области применения сверточных нейронных сетей (CNN), которые в основном используются для распознавания образов и классификации объектов. В третьей части мы расскажем об аппаратном преобразовании CNN и, в частности, о преимуществах использования микроконтроллера искусственного интеллекта (ИИ) с аппаратным ускорителем CNN – технологии, позволяющей создавать приложения ИИ на границе Интернета вещей (IoT). Предыдущие статьи из этого цикла: «Введение в сверточные нейронные сети: Что такое машинное обучение? – Часть 1» и «Обучение сверточных нейронных сетей: Что такое машинное обучение? – Часть 2».

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Введение

Приложения искусственного интеллекта требуют огромного потребления энергии, часто в виде серверных ферм или дорогостоящих программируемых пользователем вентильных матриц (FPGA). Проблема заключается в увеличении вычислительной мощности при сохранении низкого энергопотребления и затрат. Теперь в приложениях ИИ происходят кардинальные изменения благодаря мощному вычислительному алгоритму Intelligent Edge. По сравнению с традиционными микропрограммными вычислениями аппаратное ускорение сверточных нейронных сетей открывает новую эру вычислительных характеристик, обладая впечатляющей скоростью и мощностью. Позволяя сенсорным узлам самостоятельно принимать решения, технология Intelligent Edge значительно снижает скорость передачи данных в сетях 5G и Wi-Fi. Это позволяет использовать новые технологии и создавать уникальные приложения, которые ранее были недоступны. Например, детекторы дыма/огня в удаленных местах или анализ экологических данных на уровне датчиков станут реальностью – и все это при многолетнем питании от батареи. В этой статье рассматривается аппаратное преобразование сверточной нейронной сети с помощью специализированного микроконтроллера искусственного интеллекта.

Максимально энергоэффективный микроконтроллер искусственного интеллекта с ускорителем сверточных нейронных сетей

MAX78000 – это микроконтроллер искусственного интеллекта с уникально низким энергопотреблением и ускорителем сверточных нейронных сетей, который представляет собой передовую систему на кристалле. Он обеспечивает работу нейронных сетей с самым низким энергопотреблением для ресурсоограниченных периферийных устройств и применений Интернета вещей. К таким приложениям относятся обнаружение и классификация объектов, обработка аудио, классификация звуков, подавление шумов, распознавание лиц, обработка временных рядов данных для сердечного и других биологических ритмов, сигналов здоровья, мультисенсорный анализ и прогнозирования технического обслуживания. На Рисунке 1 показана блок-схема MAX78000, который работает на частоте до 100 МГц благодаря ядру Arm Cortex-M4F с блоком вычислений с плавающей точкой. Чтобы обеспечить приложениям достаточный объем памяти, эта версия микроконтроллера оснащена 512 кБ флэш-памяти и 128 кБ SRAM. Имеется множество внешних интерфейсов, таких как I2C, SPI, UART, а также I2S, которые важны для аудиоприложений. Кроме того, имеется встроенное ядро RISC-V с частотой 60 МГц. RISC-V копирует данные из/в отдельные периферийные блоки и память (флэш- и SRAM), что делает его интеллектуальным механизмом прямого доступа к памяти (DMA). Ядро RISC-V предварительно обрабатывает данные датчиков для ускорителя ИИ, поэтому ядро Arm в это время может находиться в режиме глубокого сна. При необходимости результат вывода может вызвать прерывание ядра Arm, после чего процессор Arm выполняет действия в основном приложении, передает данные датчиков по беспроводной связи или информирует пользователя.

Блок-схема микроконтроллера MAX78000.
Рисунок 1. Блок-схема микроконтроллера MAX78000.

Отличительной особенностью микроконтроллеров серии MAX7800x, выделяющей их из стандартной архитектуры микроконтроллеров и периферийных устройств, является аппаратный ускоритель для выполнения логических операций сверточных нейронных сетей. Этот аппаратный ускоритель может поддерживать полные архитектуры моделей CNN вместе со всеми необходимыми параметрами (весами и смещениями). Ускоритель CNN оснащен 64 параллельными процессорами и встроенной памятью объемом 442 кБ для хранения параметров и 896 кБ для входных данных. Поскольку модель и параметры хранятся в памяти SRAM, их можно корректировать с помощью встроенного программного обеспечения и адаптировать сеть в режиме реального времени. В зависимости от того, какие 1-, 2-, 4- или 8-битные веса используются в модели, этой памяти может быть достаточно для хранения до 3.5 миллионов параметров. Поскольку память является неотъемлемой частью ускорителя, параметры не нужно извлекать через шинную структуру микроконтроллера при каждой последующей математической операции. Эта операция требует больших затрат из-за больших задержек и высокого энергопотребления. Нейросетевой ускоритель может поддерживать 32 или 64 слоя, в зависимости от функции объединения. Программируемый размер входного/выходного изображения составляет до 1024 × 1024 пикселей на каждый слой.

Аппаратное преобразование CNN: сравнение энергопотребления и скорости вывода

Логический вывод CNN представляет собой сложную вычислительную задачу, состоящую из больших линейных уравнений в матричной форме. Используя возможности микроконтроллеров Arm Cortex-M4F, можно реализовать вывод CNN на прошитом программном обеспечении встраиваемой системы, однако при этом следует учитывать некоторые недостатки. При использовании микропрограммных решений для обработки логических выводов на микроконтроллерах затрачивается много энергии и времени, так как команды, необходимые для вычислений, вместе с соответствующими параметрами, должны быть получены из памяти, прежде чем промежуточные результаты могут быть записаны обратно.

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

Таблица 1. Время вывода CNN и энергия на вывод для трех различных сценариев,
использующих набор данных MNIST для распознавания рукописных цифр
Сценарий Скорость вывода
(мс)
Энергия на вывод
(мкВт·с)
(1) MAX32630, прошивка для сети MNIST 574 22887
(2) MAX78000, прошивка для сети MNIST 1.42 20.7
(3) MAX78000, прошивка для сети MNIST,
оптимизированной для минимизации
энергии на вывод
0.36 1.1

В первом сценарии для проведения вычислений использовался процессор Arm Cortex-M4F, интегрированный в MAX32630 и работающий на частоте 96 МГц. Во втором сценарии для выполнения вычислений использовался аппаратный ускоритель CNN MAX78000. Скорость вывода, то есть время между подачей визуальных данных на вход сети и выдачей результата, при использовании микроконтроллера с аппаратным ускорителем (MAX78000) было ниже в 400 раз. Кроме того, энергопотребление на один вывод снижается в 1100 раз. В третьем сравнении сеть MNIST была оптимизирована для минимального потребления энергии на вывод. Точность результата в этом случае падает с 99.6 до 95.6 %. Однако сеть работает гораздо быстрее, требуя всего 0.36 мс на вывод.

Энергопотребление снижается всего до 1.1 мкВт·с на вывод. В приложениях, использующих две щелочные батарейки AA (в общей сложности 6 Вт·ч. энергии), можно сделать пять миллионов выводов (потребляемая остальной схемой мощность не учитывается).

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

Пример использования микроконтроллера ИИ MAX78000

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

На Рисунке 2 показан пример блок-схемы такой конструкции. В этом случае ядро RISC-V через регулярные промежутки времени включает датчик изображения, а данные изображения загружаются в CNN, работающую на MAX78000. Если вероятность распознавания кошки превышает ранее заданный порог, дверь для кошки разблокируются. После этого система возвращается в режим ожидания.

Блок-схема умной дверцы для кошки.
Рисунок 2. Блок-схема умной дверцы для кошки.

Среды разработки и оценочные комплекты

Процесс разработки приложения, основанного на искусственном интеллекте, можно разделить на следующие этапы:

Этап 1: ИИ – определение, обучение и квантование сети.

Этап 2: Прошивка Arm – включение сетей и параметров, сгенерированных на этапе 1, в приложение на языке C/C++, а также создание и тестирование прошивки приложения.

Первая часть процесса разработки включает в себя моделирование, обучение и оценку моделей ИИ. Для этого этапа разработчик может использовать инструменты с открытым исходным кодом, такие как PyTorch и TensorFlow. В репозитории GitHub представлены обширные ресурсы, которые помогут пользователям наметить свой путь в создании и обучении сетей искусственного интеллекта с помощью среды разработки PyTorch, учитывая при этом аппаратные характеристики MAX78000. В репозиторий включены несколько простых ИИ-сетей и приложений, таких как распознавание лиц (Face ID).

На Рисунке 3 показан типичный процесс разработки ИИ в PyTorch. Сначала моделируется сеть. Следует отметить, что не все микроконтроллеры MAX7800x имеют аппаратную поддержку всех операций с данными, доступных в среде PyTorch. Поэтому сначала в проект необходимо включить файл ai8x.py, поставляемый компанией Analog Devices. Этот файл содержит модули и операторы PyTorch, необходимые для работы с MAX78000. На основе этих настроек можно построить сеть, а затем обучить ее, оценить и квантовать, используя обучающие данные. Результатом этого этапа является файл контрольных точек, содержащий входные данные для финального процесса синтеза. На этом заключительном этапе сеть и ее параметры преобразуются в форму, которая подходит для аппаратного ускорителя CNN. Следует отметить, что обучение сети может быть выполнено на любом ПК (ноутбуке, сервере и т. д.). Однако без поддержки видеокарт CUDA это может занять много времени – даже для небольших сетей вполне реальны дни и даже недели.

Процесс разработки ИИ.
Рисунок 3. Процесс разработки ИИ.

На втором этапе разработки создается встроенное программное обеспечение приложения с механизм записи данных в ускоритель CNN и считывания результатов. Файлы, созданные на первом этапе, интегрируются в проект на языке C/C++ с помощью директив #include. В качестве среды разработки для микроконтроллера также используются инструменты с открытым исходным кодом, такие как Eclipse IDE и GNU Toolchain. ADI предоставляет комплект разработки программного обеспечения (Maxim Micros SDK для Windows) в виде инсталлятора, который уже содержит все необходимые компоненты и конфигурации. Кроме того, комплект для разработки программного обеспечения содержит драйверы периферийных устройств, а также примеры и инструкции, облегчающие процесс разработки приложений.

Оценочный комплект MAX78000.
Рисунок 4. Оценочный комплект MAX78000.

После того как проект скомпилирован и скомпонован без ошибок, его можно оценить на целевом оборудовании. Для этого ADI разработала две различные аппаратные платформы. На Рисунке 4 показана плата MAX78000EVKIT, а на Рисунке 5 – MAX78000FTHR, которая представляет собой несколько меньшую плату. Каждая плата поставляется с VGA-камерой и микрофоном.

Оценочный комплект MAX78000FTHR.
Рисунок 5. Оценочный комплект MAX78000FTHR.

Заключение

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

Ссылки

  1. Session 2 - AI at the Edge: A Practical Introduction to Maxim Integrated’s MAX78000 AI Accelerator.” Analog Devices, Inc.
  2. Video Series: Understanding Artificial Intelligence. Analog Devices, Inc.

Материалы по теме

  1. Datasheet Analog Devices MAX78000

Перевод: Михаил Басков по заказу РадиоЛоцман

На английском языке: What Is Machine Learning? Part 3 - Hardware Conversion of Convolutional Neural Networks

Содержание цикла «Что такое машинное обучение?»

  1. Часть 1 - Введение в сверточные нейронные сети
  2. Часть 2 - Обучение сверточных нейронных сетей
  3. Часть 3 - Аппаратное преобразование сверточных нейронных сетей
20 предложений от 8 поставщиков
MCU-Application Specific 32 bit, 100 MHz, 128 KB RAM/512 KB Program, 0.9 V to 1.21 V in, CTBGA-81
AiPCBA
Весь мир
MAX78000EXG+
Maxim
1 154 ₽
ChipWorker
Весь мир
MAX78000EXG+
Maxim
1 170 ₽
Utmel
Весь мир
MAX78000FTHR#
от 2 084 ₽
Akcel
Весь мир
MAX78000FTHR#
Maxim
по запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя