Думать по-другому

Когда дело доходит до встроенной системы, машинное обучение терпит неудачу. Вот почему

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

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

Хотя, когда мы говорим о объединении машинного обучения со встроенными устройствами, все равно остается значительный пробел.

1. Мы не понимаем, что такое встроенный мир

Раньше, работая с ML, мы обладали огромной вычислительной мощностью.

AlexNet требует 727 мегафлопс и 235 МБ памяти для обработки небольшого изображения размером 227x227 пикселей. Например, ARM Cortex-A8 на Google Nexus S может производить 66 мегафлопс в секунду. Итак, вам нужно подождать ~ 11 секунд для вывода. Это много!

* FLOP - операция с плавающей запятой

Дополнительная информация: Оценки потребления памяти и подсчетов FLOP для различных CNN и Производительность ядер ARM с плавающей запятой и их эффективность.

В университете я прошел несколько курсов по машинному обучению. Мы сделали много крутых вещей в домашней работе. Но даже там моей 4ГБ GTX1050 не хватило для обучения всех моделей.

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

Вы все еще чувствуете нехватку памяти в телефоне, когда дело касается фотографий с прошлой вечеринки? Представьте, что вы работаете с сенсорным контроллером TrueTouch, который имеет 256 КБ флэш-памяти. Да, 256 КБ. И вы не можете использовать все это из-за существующей прошивки. Итак, около 100 КБ. Проверьте свой последний размер модели. Наверное, намного больше.

Становится интересно? Давай продолжим :)

Что вы думаете, когда слышите «встроенное устройство»? Представьте себе картинку и запомните.

1. Это любая электрическая техника. Даже моя микроволновка и стиральная машина

Да, вы правы!

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

2. Arduino и / или Raspberry PI

Поздравляем, вы снова правы!

Это одни из самых популярных и широко используемых наборов для проектов DIY. И да, это встраиваемые устройства.

3. Jetson Nano и аналогичные

И снова верно.

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

Но здесь что-то упущено

У меня много друзей, которые делают потрясающие домашние проекты по оборудованию. Обычно они используют Arduino или STM32 (также известный как хардкорный Arduino).

Я знаю нескольких AI-инженеров, которые в восторге от Jetson Nano и подобных устройств. Они думают, что это будущее за встроенным ИИ.

И сейчас. Подумайте, пожалуйста, «Сколько таких устройств используется на уровне производства?»

Ответ - крошечный

Подумайте, сколько электроприборов у вас в доме. Затем добавьте в машину тонны контроллеров. Система безопасности в вашей работе. Я могу продолжить очень длинный список.

И у каждого из этих устройств есть какой-то контроллер. Обычно он миниатюрный и супер дешевый. Его нельзя сравнивать с ресурсами и возможностями Jetson или Raspberry.

Представьте, что у вас есть микроконтроллер. Его основная задача - обрабатывать касания пальцем экрана. Он имеет процессор ARM Cortex-M0, 256 КБ памяти (из которых вам доступно только 80–120). Это система реального времени, поэтому у вас есть небольшое количество времени, чтобы сделать выводы для вашей модели, скажем, 100 микросекунд. И ваша цель - улучшить или заменить там какой-то алгоритм.

Удачи и добро пожаловать в мир «встроенного ИИ».

*** Встраиваемый мир »состоит из микросхем по 1–2 доллара с ограниченными ресурсами. И это то, что используется на уровне производства ***

2. Чистая инфраструктура

Я работаю над описанным выше проектом. Все было супер. Я разработал небольшую сеть, которая потенциально должна вписаться в этот микроконтроллер.

Пришло время перенести модель с компьютера на устройство!

  1. Квантование.

Этот процессор не мог выполнять операции с числами с плавающей запятой. Даже если бы это было возможно, мы бы не использовали его, потому что это довольно сложная операция и требует много времени.

Итак, я выполнил квантование весов моделей - преобразование непрерывного диапазона значений в конечный диапазон дискретных значений.

И угадай что? Ни PyTorch, ни TensorflowLite не поддерживают его полностью. Они не поддерживают все функции активации (хотя я использовал довольно простой HardTanh). PyTorch даже не смог сохранить квантованную модель в файл.

Так что пришлось делать это вручную.

2. Генерация кода вывода

Вы хотите запустить свою модель на этом контроллере. Верно? Итак, вам нужен C-код для вывода модели.

Это печально, но делать это нужно вручную. Почему? PyTorch не имеет функции генерации кода вывода. Напротив, у TFLite есть, но он довольно ограничен и опять же не поддерживает общие функции активации.

Итак, я снова сделал это вручную.

Я сталкивался с множеством подобных ситуаций на работе. Это не удар в сторону PyTorch или TF, а скорее «крик о помощи».

*** Есть другая сторона сообщества машинного обучения, которая ищет профессиональный инструмент для «встроенного ИИ», но не может его найти. ***

Что-то хорошее?

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

  • CMSIS-NN - эффективные ядра нейронной сети для процессоров Arm Cortex-M
  • Компиляторы, которые производят высокоэффективный код вывода, оптимизированный на основе имеющегося у вас оборудования.
  • и много других интересных вещей

Эта статья оказалась полезной? Посмотрите еще одну интересную статью ниже