Программная инженерия может быть интересной, особенно когда вы работаете над общей целью с единомышленниками. С тех пор, как мы начали проект uTensor, среду искусственного интеллекта для микроконтроллеров (MCU), многие спрашивали нас: Зачем беспокоиться о периферийных вычислениях на MCU? Разве облачных вычислений и прикладных процессоров недостаточно для создания систем Интернета вещей? Действительно вдумчивые вопросы. Я постараюсь показать нашу мотивацию для проекта здесь, надеюсь, они вам тоже будут интересны.

TL; DR: AI на микроконтроллерах позволяет использовать более дешевые устройства с низким энергопотреблением и меньшими габаритами. Это сокращает время ожидания, сохраняет полосу пропускания, улучшает конфиденциальность и позволяет создавать более умные приложения.

Что такое MCU?

Микроконтроллеры - это очень недорогие крошечные вычислительные устройства. Они часто используются в периферийных устройствах Интернета вещей. Эти чипы повсюду поставляются 15 миллиардов микроконтроллеров в год. Их низкое энергопотребление означает, что они могут месяцами работать на батарейках типа «таблетка» и не требуют радиаторов. Их простота помогает снизить общую стоимость системы.

Неиспользованная мощность

Вычислительная мощность микроконтроллеров росла за последние десятилетия. Однако в большинстве приложений Интернета вещей они не делают ничего, кроме перетасовки данных с датчиков в облако. Микроконтроллеры обычно имеют тактовую частоту в сотни МГц и содержат сотни КБ ОЗУ. Учитывая тактовую частоту и объем оперативной памяти, пересылка данных является легкой прогулкой. Фактически, микроконтроллеры большую часть времени простаивают. Проиллюстрируем это ниже:

Область графика выше показывает вычислительный бюджет MCU. Зеленые области указывают, когда MCU занят, это может включать:

  • Сети
  • Чтение датчика
  • Обновление дисплеев
  • Таймеры и другие прерывания

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

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

Что, если мы сможем воспользоваться этой силой? Можем ли мы сделать больше на грани? Оказывается, ИИ здесь идеально подходит. Давайте посмотрим, как мы можем применить ИИ на периферии:

Вывод

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

Sensor Fusion

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

Товары для самосовершенствования

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

Пропускная способность

Нейронные сети можно разделить таким образом, чтобы некоторые уровни оценивались на устройстве, а остальные - в облаке. Это позволяет сбалансировать рабочую нагрузку и задержку. Начальные уровни сети можно рассматривать как функции абстракции функций. По мере распространения информации по сети они абстрагируются до высокоуровневых функций. Эти высокоуровневые функции занимают гораздо меньше места, чем исходные данные, что значительно упрощает их передачу по сети. Технологии связи IoT, такие как Lora и NB-IoT, имеют очень ограниченный размер полезной нагрузки. Извлечение функций помогает упаковать наиболее важную информацию в ограниченный объем полезной нагрузки.

Передача обучения

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

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

Генеративные модели

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

Подведение итогов

ИИ может помочь периферийным устройствам стать умнее, улучшить конфиденциальность и использование полосы пропускания. Хотя на момент написания не было известной структуры, которая развертывала бы модели Tensorflow на микроконтроллерах. Мы создали uTensor в надежде ускорить развитие периферийных вычислений.

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

uTensor продолжит использовать преимущества последних достижений программного и аппаратного обеспечения, например, CMSIS-NN, API машинного обучения Arm Cortex-M. Они будут интегрированы в uTensor для обеспечения максимальной производительности оборудования Arm. Разработчики и исследователи смогут легко проверить свои последние идеи с помощью uTensor, такие как новые алгоритмы, распределенные вычисления или RTL.

Мы надеемся, что этот проект объединит всех, кто интересуется этой областью. В конце концов, сотрудничество - это ключ к успеху на передовой.

Следите за мной на Medium и Twitter, чтобы увидеть ближайшие статьи о uTensor.

Учить больше

Статья uTensor (скоро)
uTensor.ai
Конференция по искусственному интеллекту O'Reilly
FOSDEM 2018
Демо-видео
Блог квантования