ESP32-S3 запустил нейросеть на 28,9 млн параметров за $8

ESP32-S3 запустил нейросеть на 28,9 млн параметров за $8

Проект esp32-ai демонстрирует языковую модель на 28,9 млн параметров, работающую непосредственно на ESP32-S3, микроконтроллере стоимостью около $8. Данные не отправляются на сервер: устройство выводит генерируемый текст на небольшой подключённый экран и достигает скорости примерно 9 токенов в секунду.

Ограничение ESP32-S3, всего 512 КБ быстрой SRAM. Раньше на микросхеме такого класса запускали модель лишь на 260 тысяч параметров. В новом проекте большая часть параметров, таблица на 25 млн параметров, хранится в медленной флеш-памяти, а не в оперативной. Для каждого токена считываются только нужные строки таблицы: около шести строк, или примерно 450 байт. Небольшое вычислительное ядро модели остаётся в SRAM, а выходной слой и рабочая память размещены в PSRAM.

Подход основан на Per-Layer Embeddings из моделей Google Gemma 3n и Gemma 4, но адаптирован к схеме памяти микроконтроллера. Модель обучена на TinyStories, поэтому её задача, сочинять короткие простые истории; она в основном сохраняет связность текста, но не предназначена для ответов на вопросы, выполнения инструкций, программирования или знания фактов. Автор подчёркивает, что ценность демонстрации, в архитектуре и размещении крупной по меркам микроконтроллера модели, а не в её практических способностях. В репозитории опубликованы прошивка, схема подключения, инструкции по прошивке, код обучения, абляционные эксперименты, квантование и измерения на устройстве. Автор также сохранил историю исправления ошибки, из-за которой ранняя оценка числа параметров была завышена.

Ключевые факты

  • Языковая модель на 28,9 млн параметров работает на ESP32-S3 стоимостью около $8 без отправки данных на сервер.
  • Скорость генерации составляет примерно 9 токенов в секунду, а текст выводится на подключённый к микроконтроллеру экран.
  • В 512 КБ SRAM остаётся вычислительное ядро; таблица на 25 млн параметров хранится во флеш-памяти, откуда на токен читается около 450 байт.
  • Схема использует Per-Layer Embeddings из Google Gemma 3n и Gemma 4, перенесённую на микроконтроллер.
  • Обученная на TinyStories модель пишет только короткие простые истории и не рассчитана на диалог, инструкции, код или фактические ответы.

Почему это важно

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

Кому это важно

Проект интересен разработчикам встроенных систем и тем, кто исследует запуск языковых моделей на локальном маломощном оборудовании. Он также даёт воспроизводимый пример для обучения, прошивки и измерений на ESP32-S3.

Как это применить

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

Можно ли доверять

Автор описывает используемую схему памяти, набор данных TinyStories и публикует код с измерениями на устройстве. Он отдельно указывает, что раннее число параметров было завышено из-за ошибки в подсчёте, и оставил в истории репозитория её исправление.

Риски и подводные камни

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

«Интересна здесь архитектура, размещение большой модели на крошечном чипе, а не то, что может сказать модель на 28,9 млн параметров.»

— автор проекта esp32-ai