Skip to content
research

Этот чип за $8 запускает LLM с 29 млн параметров

Микроконтроллер за $8 с объемом оперативной памяти меньше, чем у ПК 90-х годов, теперь запускает языковую модель с 29 млн параметров полностью в офлайн-режиме. Узнайте об остроумном хаке памяти, вдохновленном Google's Gemma, который делает этот невозможный подвиг реальностью.

Aki Tanaka
Этот чип за $8 запускает LLM с 29 млн параметров

Невозможный подвиг: LLM с 29 млн параметров на чипе за $8

Украинский разработчик Slava S. совершил невероятное, успешно запустив языковую модель с 28,9 млн параметров на микроконтроллере ESP32-S3 стоимостью $8. Эта революционная система работает полностью офлайн, генерируя текст локально без Wi-Fi или подключения к серверу. Это демонстрирует значительный скачок в возможностях встроенного ИИ, делая мощную обработку языка доступной на минимальном аппаратном обеспечении, вдали от облачной инфраструктуры.

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

Технические характеристики ESP32-S3 делают это достижение еще более примечательным. Чип предлагает всего 512 килобайт SRAM — объем памяти меньше, чем у типичного персонального компьютера 1990-х годов. Несмотря на это серьезное ограничение, система генерирует текст со скоростью девять токенов в секунду, демонстрируя, как тщательная инженерия может преодолеть жесткие аппаратные лимиты для обеспечения сложного ИИ-вывода в условиях сверхнизкого энергопотребления и отсутствия связи.

Хак памяти: Flash, а не RAM

Украинский разработчик Slava S. использовал остроумное обходное решение, вдохновленное моделями Google's Gemma. Эта техника, названная послойными эмбеддингами (per-layer embeddings), переосмысливает функционирование параметров больших языковых моделей. Основная идея заключается в том, что большинство параметров LLM находятся в статической таблице поиска — огромном словаре представлений слов, — а не активно участвуют в вычислениях в реальном времени.

Это фундаментальное различие позволяет применить радикальную стратегию работы с памятью. Вместо попыток втиснуть всю модель в крошечные 512 КБ быстрой SRAM чипа ESP32-S3, массивная таблица эмбеддингов на 25 миллионов строк, весящая около 15 МБ, стратегически перемещается. Она находит свое место в значительно большей, но более медленной и дешевой flash-памяти объемом 16 МБ.

Во время вывода система динамически извлекает только те несколько строк эмбеддингов, которые абсолютно необходимы для текущего токена. Например, из flash-памяти в SRAM считывается всего шесть строк — в общей сложности около 450 байт. Этот изобретательный подход оставляет ограниченную высокоскоростную SRAM преимущественно свободной для основной вычислительной работы модели: слоев внимания и полносвязных слоев, которые обрабатывают и генерируют следующий токен.

Проверка реальностью: это не ChatGPT

Достижение Slava S., хотя и является революционным, не дает языковой модели общего назначения. Эта модель с 28,9 млн параметров обучена исключительно на наборе данных TinyStories от Microsoft. Эта специально отобранная коллекция содержит простые, связные повествования, разработанные специально для небольших моделей — даже тех, у которых всего несколько миллионов параметров, — чтобы научиться связной генерации текста, не выдавая типичную бессмыслицу, которую можно было бы ожидать от модели такого размера на более широком наборе данных.

В процессе взаимодействия возникают существенные ограничения. Модель постоянно переключается на одну и ту же историю о маленькой девочке, независимо от первоначального запроса пользователя. Например, даже такие вводные данные, как «история о роботе» или вступительная фраза в стиле «Star Wars», через несколько предложений быстро перенаправляются к этому стандартному повествованию, что демонстрирует крайне узкое понимание и неспособность поддерживать новые темы для разговора. Такое поведение подчеркивает ограниченность изученных моделью паттернов.

Более того, динамическое взаимодействие невозможно. Изменение запроса требует полной перепрошивки микроконтроллера ESP32-S3, процесс которой перезаписывает память устройства. Система может выполнять только один заранее заданный запрос за раз, что делает ее интересным, хотя и ограниченным, доказательством концепции, а не универсальным динамическим инструментом для произвольной генерации текста. Для тех, кто хочет изучить исходный код и методологию, посетите репозиторий проекта на GitHub: Running a 28.9M parameter LLM on an $8 microcontroller - GitHub.

Нравится статья? Получайте такие каждое утро на почту.

одно письмо в день · отписка в два клика · без сторонних трекеров

Чертеж Karpathy: как это построить

Этот впечатляющий проект основан непосредственно на фундаментальной работе Андрея Карпатого (Andrej Karpathy) «llama2.c». Карпатый доказал, что эффективный вывод больших языковых моделей (LLM) возможен на чистом, переносимом коде C, полностью исключая Python или сложные зависимости. Его проект доказал, что LLM могут работать на минимальных системах, что стало основополагающей идеей для этой реализации на ESP32-S3 и позволило воплотить концепцию в жизнь.

Для воспроизведения этой недорогой LLM требуется специфическое оборудование — обязательный компонент для успеха. Необходим вариант ESP32-S3 N16R8, выбранный из-за его внушительного объема памяти. Эта конкретная модель оснащена 16 МБ флэш-памяти и 8 МБ PSRAM. Обученный файл модели размером 15 МБ критически важен и требует именно такой емкости флэш-памяти; платы с объемом менее 16 МБ, такие как распространенные версии на 4 МБ или 8 МБ, просто не смогут вместить всю модель целиком.

В оригинальном репозитории GitHub пользователя Slava S. размещен весь необходимый код для тех, кто хочет изучить детали реализации и внутренние механизмы. Для более прямого пути к развертыванию автор видео предоставляет упрощенный one-shot скрипт, значительно упрощающий настройку. Этот комплексный скрипт автоматизирует весь процесс сборки, включая установку цепочки инструментов, подготовку данных, обучение модели на наборе данных TinyStories и, наконец, прошивку ESP32-S3 скомпилированной моделью.

Часто задаваемые вопросы

Как LLM с 28,9 млн параметров помещается на микроконтроллер всего с 512 КБ SRAM?

Модель использует хак памяти, при котором самая большая часть — таблица эмбеддингов на 25 млн параметров — хранится в более объемной, но медленной 16 МБ флэш-памяти чипа. В быструю 512 КБ SRAM загружаются только небольшая вычислительная часть и конкретные строки эмбеддингов, необходимые для текущего токена.

Какое конкретное оборудование требуется для воспроизведения этого проекта?

Вам понадобится микроконтроллер ESP32-S3 с объемом флэш-памяти не менее 16 мегабайт и 8 мегабайтами PSRAM. Это широко известно как вариант N16R8.

Каковы ограничения LLM, работающей на ESP32?

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

Какие проекты с открытым исходным кодом сделали это возможным?

Этот проект, созданный разработчиком Slava S., основан на проекте llama2.c Андрея Карпатого, который продемонстрировал запуск вывода LLM на обычном C. Сама модель была обучена на наборе данных TinyStories, разработанном Microsoft Research.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only