第一部分:痛点与破局
说起跑大语言模型(LLM),大家的第一反应是什么?动辄几千块的显卡、几十上百 GB 的显存,还有那令人抓狂的环境配置和漫长的等待。
如果把目光转向物联网和嵌入式设备,局面就更加惨烈。单片机的 RAM 通常以 KB 为单位计量。之前有人在类似芯片上跑过 LLM,极限不过是 26 万参数。想在一个不到 10 美元的微型芯片上跑几十兆参数的大模型?听起来就像推着自行车上高速——异想天开。
但今天要介绍的这个开源硬核项目,直接打破了这一天花板。它在 8 美元的 ESP32‑S3 微控制器上,成功跑起了一个 28.9M 参数的语言模型(参数量足足是之前的 100 倍!),并在一块外接小屏幕上以接近每秒 10 个词的速度离线生成文本。它用巧妙的架构告诉你:没有庞大的算力,也能优雅地拥抱大模型。
第二部分:核心功能深挖
为了弄清楚它是怎么把大象装进冰箱的,我们得先看看它交出的硬核成绩单。
1. 令人发指的硬件利用率
它完全没有依赖网络,所有计算都在设备本地完成。核心参数如下:
- Parameters(参数量):存储了 28.9M 参数(其中 25M 参数位于 flash 查找表中)
- Chip(硬件):ESP32‑S3(约 8 美元),仅配备 512KB SRAM、8MB PSRAM 和 16MB Flash
- Speed(速度):端到端约 9.5 tok/s(纯计算耗时对应 9.7 tok/s)
- Connectivity(网络):无需联网,完全本地离线运行
- Model size(模型大小):经过 4‑bit 量化后仅为 14.9MB
相机核心魔法:Per‑Layer Embeddings(逐层嵌入)
微控制器最大的瓶颈在于缺乏快速内存。ESP32‑S3 只有 512KB 的 SRAM,如果按常规思路把整个模型塞进内存,模型只能做得非常小。
本项目的破局思路是:坚决不把大模型放进快速内存! 大模型的大部分参数其实都待在 Embedding 表里,模型在推理时主要是去“读取”这些参数,而不是对它们进行复杂的“计算”。
作者借鉴了 Google Gemma 3n 和 Gemma 4 模型中的 Per‑Layer Embeddings 技术。它将那庞大的 2500 万行查找表直接扔进速度最慢但容量巨大的 Flash 中。模型每次生成 token 时,只需要从 Flash 中精准抽取需要的几行(大约 450 字节),而留在 SRAM 里负责真正“思考和计算”的核心结构其实非常小。
其内存分配架构极其精妙:
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)
3. 清醒的认知:它能做什么,不能做什么?
受限于模型本体较小的推理层,这个模型并不是来帮你写代码或回答百科问题的。
该模型使用 TinyStories 数据集训练,因此它主要用来写一些短小、简单且连贯的故事。它无法回答问题、遵循指令、编写代码或提供事实性知识。
本项目最大的看点在于架构上的创新(如何将大模型塞进微型芯片),而不是一个不到 3000 万参数的模型能讲出多么深奥的道理。
第三部分:实战演示
如果你想亲自上手把玩,项目提供了非常清晰的路径。固件、接线方式和烧录步骤都在仓库的 firmware/esp32_llm/README.md 文件中;而模型的训练、消融实验和量化代码则放在 src/ 和 experiments/ 目录下。
最核心的运行指引如下(直接操作硬件):
# 准备好你的 ESP32-S3 开发板及外接屏幕
# 根据仓库 firmware 目录下的 README.md 进行接线
# 按照说明进行固件 Flash 烧录
# 烧录完成后,模型将直接在芯片上以 ~9.5 tok/s 的速度离线生成故事,并显示在屏幕上。
第四部分:避坑指南与总结
避坑与说明:
- 别被早期的数据忽悠了:作者非常坦诚地在仓库里保留了“肮脏的”提交历史。他曾在参数统计中发现了一个 Bug,导致早期的数据虚高,目前文档中的 28.9M 是修复后的精确结果。详细的消融实验和测量数据可以查阅
RESULTS.md。
- 致谢与灵感来源:该方法离不开微软研究院提出的
TinyStories 数据集,以及 Karpathy 大神的 llama2.c(证明了用纯 C 语言跑极小模型是可行的)。
适用人群:
如果你是嵌入式开发极客、端侧 AI 探索者,或者单纯想体验一下“在 8 美元芯片上跑大模型”的赛博朋克感,这个项目绝对值得你 fork 并亲手烧录一块属于自己的 AI 硬件!
GitHub 开源地址:https://github.com/slvDev/esp32-ai