LLM с 28,9 млн параметров работает локально на ESP32-S3 со скоростью 9 токенов/с

Slava S. (slvDev) оптимизировал LLM с 28,9 млн параметров, работающую локально на отладочной плате ESP32-S3, со скоростью около 9 токенов/с при генерации текста, а точнее, при написании коротких рассказов.

Ранее уже публиковались материалы о LLM и ESP32, но обычно эти платы используются как энергоэффективные шлюзы для взаимодействия с онлайн-LLM, размещенными на мощных серверах в дата-центрах. К таким продуктам или проектам относятся HiWonderLLM «умный чат-модуль» , а также Фреймворк ESP-Claw , или ESP32 Agent Dev Kit . Проект Славы «esp32-ai» совсем другой, поскольку всё работает на микроконтроллере ESP32-S3.

ESP32-S3 local LLM

Это будет работать не на всех ESP32-S3, так как потребуется достаточно памяти и хранилища для файла модели размером 14,9 МБ (4-бит), а Слава тестировал свой демонстрационный пример на плате ESP32-S3 стоимостью около $8 с 512 КБ SRAM+8 МБ SPRAM и 16 МБ флеш-памяти, подключённой к небольшому I2C-дисплею для отображения коротких рассказов.

Дэйв Беннетт уже сделал нечто подобное с проектом ESP32-LLM project , but it only relied on a 260K-parameter model, far from the 28.9M-parameter model used in this project. The trick was to stop putting the model in “fast memory” (the 512KB SRAM), as most of a language model’s parameters sit in an embedding table with around 25 million rows, which can be read from slow flash. So only the few rows each token needs, or about 450 bytes, need to be loaded and processed in the SRAM.

Slave explains that the idea is Google’s Per-Layer Embeddings used in Gemma 3n and Gemma 4. This is what the memory layout on the ESP32-S3 looks like:

SRAM (fast, tiny) the "thinking" core, used on every token
PSRAM (medium) the output head and working memory 
FLASH (huge, slow) the 25M-param table, about 6 rows read per token (~450 B)

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

Исходный код, инструкции и более подробные сведения о результатах можно найти на GitHub , немного дополнительных сведений можно найти на Reddit , а также в видео ниже для наглядного объяснения того, как всё это работает.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments