TinyML
TinyML запускает машинное обучение на микроконтроллерах с килобайтами памяти и потреблением энергии в милливаттах. Как уменьшить модели, где они применяются и какие есть инструменты.
TinyML (компактное машинное обучение) — это запуск моделей машинного обучения на микроконтроллерах и других чипах со сверхнизким энергопотреблением, обычно с памятью в несколько сотен килобайт, без операционной системы и с энергопотреблением в милливаттах. Запуск инференса на чипе рядом с датчиком позволяет устройствам с батарейным питанием месяцами или годами непрерывно слушать, наблюдать или отслеживать окружающую среду, передавая только результаты, например «ключевое слово обнаружено» или «необычная вибрация механизма», а не исходные данные. Это обеспечивает низкую задержку, защищает данные и экономит энергию, которую потребовала бы передача данных. Отраслевое сообщество EDGE AI FOUNDATION раньше называлось tinyML Foundation.
Как разместить модели на микроконтроллере#
Микроконтроллер хранит веса модели во флеш-памяти вместе с программой, а вычисляемые активации — в SRAM, которая обычно оказывается более жёстким ограничением. Квантование модели до 8-битных целых чисел уменьшает размер весов до четверти от FP32 и заменяет вычисления с плавающей точкой целочисленной арифметикой, которую малые ядра выполняют эффективно. Компактные архитектуры на основе глубинно-разделимых свёрток, обрезки модели и снижения разрешения входных данных уменьшают остальные компоненты. Поиск нейронной архитектуры позволяет проектировать сети под память конкретного чипа. MCUNet сочетает такой поиск с экономящей память средой выполнения и достигает точности top-1 более 70% на ImageNet на серийном микроконтроллере. Готовую модель компилируют в прошивку и выполняют с помощью небольшого интерпретатора или скомпилированного кода:
Бюджет можно оценить ещё до использования оборудования. В этой сети для распознавания ключевых слов — CNN с глубинно-разделимыми свёртками, подобной тем, что используют для распознавания голосовых команд по аудиопризнакам, — для флеш-памяти учитывается один байт на каждый вес INT8, а для SRAM — максимальный объём пары входных и выходных активаций:
import torch
from torch import nn
# A depthwise-separable CNN for keyword spotting on 49x10 MFCC audio features
model = nn.Sequential(
nn.Conv2d(1, 64, (10, 4), stride=2, padding=(5, 1)),
nn.ReLU(),
nn.Conv2d(64, 64, 3, padding=1, groups=64),
nn.Conv2d(64, 64, 1),
nn.ReLU(),
nn.Conv2d(64, 64, 3, padding=1, groups=64),
nn.Conv2d(64, 64, 1),
nn.ReLU(),
nn.AdaptiveAvgPool2d(1),
nn.Flatten(),
nn.Linear(64, 12),
)
# At INT8, flash stores one byte per weight and SRAM holds activations in flight
weights = sum(p.numel() for p in model.parameters())
x, peak = torch.randn(1, 1, 49, 10), 0
for layer in model:
y = layer(x)
peak = max(peak, x.numel() + y.numel()) # a layer's input and output coexist
x = y
print(f"Flash: {weights / 1024:.1f} KB, peak SRAM: {peak / 1024:.1f} KB")Вывод программы: 12,7 КБ флеш-памяти и 15,6 КБ пиковой SRAM. Это лишь небольшая часть от 1 МБ флеш-памяти и 256 КБ RAM микроконтроллера nRF52840 на Arduino Nano 33 BLE Sense, так что остаётся место для аудиоконвейера и самой среды выполнения.
Среды выполнения и оборудование#
- LiteRT для микроконтроллеров: Интерпретатор Google, ранее называвшийся TensorFlow Lite for Microcontrollers, не требует операционной системы, стандартной библиотеки или динамического выделения памяти. Основная среда выполнения занимает 16 КБ на Arm Cortex-M3.
- ExecuTorch: Среда выполнения PyTorch на устройстве. Её серверная часть для Arm Ethos-U запускает квантованные модели на NPU Arm Ethos-U, встроенных рядом с ядрами Cortex-M во многих чипах с низким энергопотреблением.
- Arm Cortex-M: Семейство процессоров, встроенных в большинство микроконтроллеров для TinyML: от компонентов Cortex-M0+ с несколькими килобайтами RAM до Cortex-M55 и Cortex-M85 с векторными инструкциями для машинного обучения.
- NPU Coral: Открытая архитектура ускорителя RISC-V от Google, анонсированная в октябре 2025 года для носимых устройств с постоянно включёнными датчиками. Она рассчитана примерно на 512 миллиардов операций в секунду при энергопотреблении в несколько милливатт.
TinyML и периферийный ИИ#
Периферийный ИИ охватывает инференс на любом устройстве, где создаются данные, включая телефоны, одноплатные компьютеры, такие как Raspberry Pi, и встроенные GPU-модули, например NVIDIA Jetson, у которых есть гигабайты памяти и энергопотребление в ваттах. TinyML — самый компактный сегмент этой области, где размер моделей измеряется килобайтами. Граница постоянно сдвигается по мере того, как микроконтроллеры получают ускорители: STM32N6 от ST объединяет Cortex-M55 с нейропроцессором мощностью 600 GOPS и 4,2 МБ RAM. Самый компактный детектор Ultralytics YOLO26 содержит 2,4 миллиона параметров, около 2,4 МБ в формате INT8. Поэтому его экспорт в INT8 в формате LiteRT (format="litert", quantize=8) предназначен для следующего после классического TinyML сегмента: телефонов, одноплатных компьютеров и плат с ускорителями.
Применение TinyML#
- Распознавание ключевых слов: Постоянно работающие детекторы слов активации в телефонах, наушниках и умных колонках распознают одну фразу на маломощном ядре и включают основной процессор только после её обнаружения.
- Предиктивное обслуживание: Датчики вибрации и звука, закреплённые на моторах и насосах, изучают нормальный режим работы и обнаруживают признаки неисправностей. Такие системы годами работают от батареи.
- Мониторинг дикой природы и окружающей среды: Акустические датчики на солнечных батареях или с питанием от обычных батарей распознают крики животных или звук бензопил в отдалённых лесах и отправляют короткие оповещения по радиоканалу дальнего действия.
- Визуальные слова активации: Камеры низкого разрешения на микроконтроллерах определяют, находится ли человек в поле зрения, и включают более крупную систему, только если это так.
Бенчмарк MLPerf Tiny от MLCommons для этого класса оборудования измеряет точность, задержку и энергопотребление на задачах из перечисленных областей применения, например распознавании ключевых слов, визуальных слов активации, классификации изображений CIFAR-10 и обнаружении аномалий в звуках механизмов.










