Ишара Неранджана — младший инженер по машинному обучению

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

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

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

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

Что такое TinyML?

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

На приведенном выше рисунке показано, как TinyML позиционируется вместе со связанными с ним поддоменами.

Почему TinyML быстро развивается?

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

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

Знаете ли вы об этом или нет, TinyML, вероятно, в той или иной мере является частью вашей повседневной жизни. Примером приложения TinyML в повседневной жизни является модель обнаружения звуковых слов-пробуждения, используемая в устройствах Google и Android. Чтобы «включаться», когда они слышат слова «ОК, Google», устройства Android используют 14-килобайтную модель распознавания речи ML, которая работает на цифровом сигнальном процессоре (DSP). То же самое можно сказать и о многих других виртуальных помощниках.

Общая процедура применения пробуждающего слова показана ниже на рисунке 02.

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

Оборудование, используемое в приложениях TinyML

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

Существует определенное оборудование, поддерживающее использование TinyML. На рисунке ниже показаны платы Raspberry Pi Pico, Arduino Nano 33 BLE и STM 32.

Приложения TinyML используют менее мощное вычислительное оборудование, такое как микроконтроллеры (MCU) и цифровые сигнальные процессоры, для решения проблемы энергопотребления менее 1 мВт. Можно ожидать, что эти системы будут иметь тактовую частоту в десятки МГц, менее нескольких сотен КБ ОЗУ и сопоставимые объемы флэш-памяти. Помимо этих датчиков (таких как камера или микрофон) и потенциального BLE (Bluetooth с низким энергопотреблением), подключение можно найти на устройстве TinyML.

Программное обеспечение TinyML — TensorFlow/PyTorch

Программное обеспечение, которое поддерживает идеи и инструменты, лежащие в основе TinyML, во многих отношениях является его наиболее важным компонентом. В целом TensorFlow Lite для микроконтроллеров — самая известная и развитая экосистема для разработки TinyML (TFLite Micro).

Целью TFLite Micro, специализирующейся на микроконтроллерах (MCU), было выполнение машинного обучения на устройствах с ограниченными ресурсами.

Пример рабочего процесса Tensorflow Lite для микроконтроллера показан ниже на рисунке 04.

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

Методы оптимизации для сжатия нейронных сетей

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

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

Квантование

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

Сокращение

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

На рисунке 05 показано влияние на нейронную сеть после процесса обрезки.

Извлечение знаний

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

Этапы развертывания приложения TensorFlow Lite для микроконтроллеров

Благодаря TensorFlow Lite для микроконтроллеров модели машинного обучения могут выполняться на микроконтроллерах и других устройствах с объемом оперативной памяти всего в несколько килобайт. На Arm Cortex M3 основная среда выполнения имеет размер всего 16 КБ, но может выполнять множество простых моделей. Ему не нужны обычные библиотеки C или C++, динамическое выделение памяти или поддержка операционной системы.

Для запуска TensorFlow Lite для микроконтроллеров требуется 32-разрядная платформа, построенная на C++ 11. Она прошла всестороннее тестирование с различными процессорами, построенными на архитектуре Arm Cortex-M Series, и была перенесена на дополнительные архитектуры. например ESP32. Предлагается библиотека Arduino для фреймворка. Он также может создавать проекты для сред разработки, таких как Mbed. Он имеет открытый исходный код и совместим со всеми проектами C++ 11.

Вот шаги, необходимые для развертывания и запуска модели TensorFlow на микроконтроллере:

1. Обучить модель

Создайте небольшую модель TensorFlow, которая подходит для целевого устройства и содержит поддерживаемые операции. Мы можем использовать преобразователь TensorFlow Lite для преобразования модели TensorFlow в формат, который можно запустить на микроконтроллере.

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

Перенесите скомпилированную модель на микроконтроллер. Обычно это можно сделать через USB-соединение или путем прошивки модели в память микроконтроллера.

2. Запустите логический вывод на устройстве с помощью библиотеки C++ и обработайте результаты

Ограничения разработки микроконтроллеров специально устранены с помощью TensorFlow Lite для микроконтроллеров. Стандартную платформу TensorFlow Lite может быть проще внедрить, если вы работаете на более мощном оборудовании (например, на встроенном устройстве Linux, таком как Raspberry Pi).

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

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

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

Ссылки