桃子桃子快讯
返回首页
开源

28.9M 参数 LLM 跑在 8 美元 MCU 上

开发者将 2800 万参数语言模型部署到 8 美元的 ESP32-S3 微控制器,采用谷歌 Gemma 的 Per-La…

2026.07.26 · 周日3 分钟阅读

开发者 slvDev 在 Hacker News 上公开了一项边缘 AI 实验:把一个 28.9M(2890 万)参数的语言模型完整跑在一颗售价约 8 美元的 ESP32-S3 微控制器上,所有推理都在芯片本地完成,不依赖任何服务器,并通过一块小屏实时输出生成的文字,端到端速度约为 9.5 token/s。此前在同类芯片上能跑动的最大模型大约只有 26 万参数,这次相当于把上限拉高了约 110 倍。

关键数据

  • 参数规模:28.9M,其中约 25M 存储在 flash 查找表中
  • 硬件平台:ESP32-S3,约 8 美元,配置 512KB SRAM、8MB PSRAM、16MB flash
  • 推理速度:约 9.5 tok/s 端到端,其中纯计算部分约 9.7 tok/s
  • 模型体积:4-bit 量化后约 14.9MB
  • 连接性:无网络,纯离线运行

技术核心:把模型从 SRAM 搬到 flash

微控制器的「快速内存」极其有限,ESP32-S3 只有 512KB SRAM,按传统方式整个模型都必须可被快速内存寻址,因此历史上只能塞下几十 K 参数的小模型。

这项工作的突破在于:语言模型绝大部分参数集中在嵌入表中,推理时只需要按 token 取出对应行(约 6 行、约 450 字节),其余内容几乎只是「被采样」。于是可以把 25M 参数的大表留在容量大但速度慢的 flash 里,仅把负责推理计算的小部分常驻 SRAM。每次生成一个 token,只读取当前需要的几行嵌入,整体运行开销几乎不变。

这套思路来自谷歌 Gemma 系列模型的 Per-Layer Embeddings 设计,原本用于手机等设备;据作者称,这是首次把它搬上如此小型的微控制器。具体的内存分配为:

  • SRAM(快、小):每 token 都用到的「思考」核心
  • PSRAM(中速):输出头与工作记忆
  • FLASH(大、慢):25M 参数表,每次约读 6 行(≈450B)

能力边界

模型在 TinyStories 数据集上训练,因此擅长写简短、连贯的小故事,但不擅长问答、指令跟随、代码生成或事实性任务。这一限制来自真正承担推理计算的小型模块本身,内存优化方案并不能改变这一点。作者也强调,本次工作的亮点在于「架构层面把大模型装进小芯片」,而不是 28.9M 参数模型本身能表达什么。

开源与可复现

工程材料已全部公开:固件、接线与烧录步骤见 firmware/esp32_llm/README.md,训练、消融与量化代码在 src/ 与 experiments/ 目录下,完整方法、消融实验与片上测量数据写在 RESULTS.md 中。作者还在仓库中保留了开发过程中的一次参数统计错误以及修正记录,commit 历史中可以看到数字变化的原因。

致谢与背景

训练数据 TinyStories 来自微软研究院 Ronen Eldan 与 Yuanzhi Li 的工作(arXiv:2305.07759),让小模型也能学会写连贯的短故事;Per-Layer Embeddings 则来自谷歌 Gemma 系列;Andrej Karpathy 的 llama2.c 启发了作者用纯 C 训练并运行小模型的整套思路,本次实验正是基于这一脉络的延伸。

信源