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

Потребность в высокопроизводительных вычислительных ресурсах привела к ограничению многих приложений машинного обучения облачными вычислениями, где легко доступны вычисления на уровне центра обработки данных. Чтобы позволить машинному обучению расширить свои возможности и открыть новую эру в данном направлении, мы должны найти способы упростить реализацию машинного обучения на небольших устройствах с более ограниченными ресурсами. Это стремление привело к созданию области, известной как Tiny Machine Learning (компактное машинное обучение) или TinyML (термин, зарегистрированный под торговой маркой TinyML Foundation, который стал синонимом технологии).
Что из себя представляет TinyML
Само машинное обучение — это технология, использующая алгоритмы, называемые нейронными сетями (пример показан на следующем рисунке), чтобы научить компьютер распознавать закономерности. Это экстраполируется на различные приложения, включая распознавание объектов и обработку естественного языка.

TinyML, с другой стороны, можно определить как подобласть машинного обучения, которая преследует цель запуска приложений машинного обучения на дешевых устройствах, а также устройствах с ограниченными ресурсами и мощностью. Цель TinyML — вывести машинное обучение на периферию, когда встраиваемые устройства на базе микроконтроллеров с питанием от батареи могут выполнять задачи машинного обучения с реакцией в реальном времени. Эти работы междисциплинарны и требуют оптимизации и максимизации знаний в таких областях, как аппаратное обеспечение, программное обеспечение, аналитика данных и машинное обучение. В последние годы эта область в значительной степени набирает популярность из-за развития аппаратных и программных экосистем, лежащих в ее основе.
Области применения TinyML
К основным областям применения TinyML относятся:
- обнаружение ключевых слов
- распознавание и классификация объектов
- распознавание жестов
- обнаружение звука
- мониторинг состояния оборудования
Примером приложения TinyML в повседневной жизни является модель обнаружения звуковых слов-активаторов, используемая внутри «умных» колонок, таких как Яндекс станция. К другим более экзотическим примерам приложений TinyML относятся, например, обнаружение оленей на шоссе для автомобилей (пример обнаружения объектов), обнаружение комаров на основе звука (пример распознавания звука) и многие другие.
Аппаратное обеспечение, используемое в приложениях TinyML
Когда дело доходит до аппаратной части, TinyML впечатляет тем, что он нацелен на работу на довольно невпечатляющем оборудовании. С определенной точки зрения, настоящая цель TinyML состоит в том, чтобы реализовывать задачи машинного обучения с минимально возможной мощностью.
Пит Уорден, которого многие считают отцом TinyML, утверждает в своей основополагающей книге на эту тему, что TinyML должен стремиться работать с потребляемой мощностью ниже 1 мВт. Причина этого, казалось бы, произвольного числа заключается в том, что потребление 1 мВт делает устройство способным работать от стандартной плоской батарейки с разумным сроком службы от месяцев до года.
С точки зрения вычислений TinyML не использует графические процессоры (GPU), специализированные интегральные схемы (ASIC) и микропроцессоры, как большинство приложений машинного обучения. Пример обучающего комплекта с использованием Arduino можно увидеть на следующем рисунке.

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

TF Lite Micro был разработан специально для задач машинного обучения на устройствах с ограниченными ресурсами, при этом основное внимание уделялось микроконтроллерам. Среда на основе Python, TF Lite Micro, полна встроенных библиотек и наборов инструментов для реализации следующих задач:
- Получение данных
- Предварительная обработка
- Построение архитектуры модели
- Обучение
- Оценка
- Оптимизация
- Квантование
Квантование — это действительно секретный соус, который делает TinyML действительно полезным. Если говорить кратко, то квантование — это процесс, с помощью которого вы уменьшаете точность (разрядность) весов и смещений модели, чтобы модель занимала меньше памяти, работала быстрее и потребляла меньше энергии — и все это с минимальным ударом по точности. С квантованной моделью большинство приложений TinyML могут быть написаны на C/C++ для минимальным вспомогательным кодом.
Преимущества TinyML
Основным преимуществом TinyML является его портативность. Работа на дешевых микроконтроллерах с низким энергопотреблением означает, что с помощью TinyML можно легко интегрировать машинное обучение практически во что угодно за малую стоимость.
Кроме того, TinyML также обладает преимуществом повышенной безопасности благодаря локальному характеру вычислений, то есть данные не нужно отправлять в облако. Это может быть важно при работе с персональными данными в приложениях Интернета вещей (IoT).
© digitrode.ru