LINUX.ORG.RU

Языковая модель с 28,9 млн параметров заработала на ESP32-S3

 esp32-s3, ,

Языковая модель с 28,9 млн параметров заработала на ESP32-S3

1

1

Разработчик Вячеслав Сербов, выступающий под псевдонимом slvDev, продемонстрировал полностью локальную генерацию текста на микроконтроллере ESP32-S3. Созданная им языковая модель содержит 28,9 млн параметров и выдаёт около 9,9 токена в секунду, не обращаясь к серверу или другим внешним вычислительным ресурсам. Сгенерированные короткие рассказы выводятся на подключённый OLED-дисплей.

Проект esp32-ai испытан на модуле ESP32-S3 N16R8, располагающем 512 КБ встроенной SRAM, 8 МБ PSRAM и 16 МБ флеш-памяти. Квантованная до четырёх бит модель занимает 14,9 МБ. В репозитории опубликованы исходный код среды исполнения на C, средства обучения и квантования модели, прошивка, тесты и сценарии её загрузки на плату.

Заявленные 28,9 млн параметров не следует напрямую сравнивать с числом параметров обычных настольных LLM. Согласно подробному отчёту разработчика, модель состоит из плотного вычислительного ядра примерно на 559 тысяч параметров, выходного слоя на 3,1 млн параметров и таблицы послойных векторных представлений примерно на 25 млн параметров. Именно последняя обеспечивает основную часть формального размера модели, но не обрабатывается целиком при генерации каждого токена.

Для размещения модели задействованы три уровня памяти. Наиболее часто используемые данные находятся во внутренней SRAM, выходной слой, KV-кеш и временные буферы — в PSRAM, а 25-миллионная таблица остаётся во флеш-памяти и доступна через отображение в адресное пространство. Для каждого токена из неё считывается лишь около шести строк общим объёмом примерно 450 байт.

Такое устройство основано на технологии Per-Layer Embeddings, применённой Google в Gemma 3n. Согласно документации Google, PLE-параметры могут храниться вне рабочей памяти модели и добавляться в процесс вывода по мере обработки отдельных слоёв. В esp32-ai этот подход перенесён на иерархию памяти микроконтроллера, где быстрая SRAM особенно ограничена.

Первая корректная версия написанной на C среды исполнения выдавала только 0,57 токена в секунду. После помещения выходного слоя в PSRAM, перехода к восьмибитным активациям, распределения вычислений между двумя ядрами Xtensa LX7 и других оптимизаций задержка была уменьшена до 94,9 мс на шаг модели. Итоговая измеренная скорость достигла 9,88 токена в секунду с учётом полного процесса генерации. Основным ограничением теперь стала пропускная способность PSRAM при чтении выходного слоя.

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

В актуальной документации автор отдельно подчёркивает, что esp32-ai является самостоятельной разработкой. Проекты llama2.c Андрея Карпати и более ранний запуск 260-тысячной модели на ESP32-S3 приводятся лишь как ориентиры и примеры предшествующих работ: код, контрольные точки и методика непосредственно из них не заимствованы. Исходный код esp32-ai распространяется под лицензией MIT.

>>> Источник

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

Разработчик рассматривает работу прежде всего как демонстрацию эффективного размещения модели в памяти микроконтроллера

Короче опять just for fun, и никакой пользы, кроме как «а мы могем»)

REDDERa
()

но не предназначена для ответов на вопросы, выполнения инструкций, программирования или воспроизведения фактических знаний.

Много аппаратных ресурсов нужно добавить для этого?

Модель обучена на синтетическом наборе данных TinyStories, состоящем из простых англоязычных рассказов с ограниченным словарём.

А если обучить модель на англоязычной википедии? Взяв подмножество статей на Basic English (simple.wikipedia.org)

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)
Ответ на: комментарий от greenman

А если обучить модель на англоязычной википедии? Взяв подмножество статей на Basic English (simple.wikipedia.org)

Будет генерировать новые статьи для википедии.

monk ★★★★★
()
Ответ на: комментарий от greenman

Много аппаратных ресурсов нужно добавить для этого?

Примерно 4 десятичных порядка.

Три порядка, чтобы масштабировать с миллионов до миллиардов параметров, а ещё 1 для адекватной скорости инференса.

wandrien ★★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от REDDERa

Эта штука очень похожа на МОЗГ ТЕРМИНАТОРА, если ты смотрел вторую часть.

Как в фильме «Я Робот» — Будущее наступает СЕГОДНЯ.

Set440 ★★
()
Ответ на: комментарий от amd_amd

Ну даж так… ??? Эта штука позволяет не_нанимать копирайтера, как у меня (ОТКУДА У БОМЖА ПЕЧЕНЬЕ???).

У меня НА ГЛАГНЭ описание системы составлено БРЕДОГЕНЕРАТОРОМ. Там самый бред в разделе про Хэширование, так-как SHA-512 — быстрый хэш, и его автоматом декодировать по радужным таблицам — раз плюнуть. Спасает от взлома только то, что хэш хранится исключительно в серверной сессии.

Ну а так, описалово на глагнэ — НОРМ. Надо было насочинять дифирамб с водой и баснями, чтоб отметить важность моей ЦМСки. — Бредо-Гена справился.

Set440 ★★
()
Ответ на: комментарий от Set440

Эта штука очень похожа на МОЗГ ТЕРМИНАТОРА

— Напиши короткий рассказ.
— Мне нужна твоя одежда.

Но неожиданнее будет: «Мне нужна твоя Надежда». :)

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от REDDERa

S3 имеет зайчатки SIMD, и , в принципе, из всех МК - топовый в смысле ИИ. Старшие модели, типа P4 еще лучше.

Решение с mmap() флешки - логичное, хорошее. Забавно, что в мире ардуинщиков про то, что ESP32S3 умеет mmap знают не многие :).

Ну и под S3 есть спецательные библиотеки оптимизированные. И для звука, и для ИИ.

vvb333007
()

Это конечно кринж подобные модели называть LLM. Поскольку LLM это большая языковая модель, которая приобретает свойства ИИ из-за своего масштаба.

v_0ver
()
Ответ на: комментарий от v_0ver

я называю сие БЯМсиками - прикольнеее звучит.
а что там за «неонка у нёй внутре» вообще может и быть и не только llm

pfg ★★★★★
()
Ответ на: комментарий от z0idator

«…сначала какая-нибудь непонятная фигня произойдет, а потом водка дорожает.

Dispetcher14 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.