在 ESP32-S3 微控制器上运行 28.9M 参数的 LLM
在 ESP32-S3 微控制器上运行 28.9M 参数的 LLM
在 $8 微控制器上本地执行 LLM
研究人员成功地在 ESP32-S3 微控制器上部署了一个 2890 万参数的语言模型,实现了大约每秒 9.5 个 token 的生成速度。这代表了此硬件类别模型容量的显著提升,因为之前在类似芯片上运行的模型仅限于大约 26 万参数。
通过逐层嵌入克服内存限制
在微控制器上运行 LLM 的主要障碍是快速内存(SRAM)的严重限制。ESP32-S3 仅提供 512KB 的 SRAM,这通常需要将整个模型加载到快速内存中以供执行。
为了绕过这一限制,该项目利用了 逐层嵌入,这是源自 Google Gemma 模型的一种技术。系统不是将整个模型加载到 SRAM,而是将参数的大部分——具体来说是一个 2500 万行的嵌入表——存储在慢速闪存中。由于模型每个 token 只需要读取几行(大约 450 字节),系统可以即时从闪存中采样,而无需将完整表加载到 RAM 中。
内存架构布局
- SRAM (快速, 小容量): 存放用于每个 token 的“思考”核心。
- PSRAM (中等): 用于输出头和工作内存。
- FLASH (巨大, 慢速): 存储 2500 万参数表,每个 token 仅读取约 6 行。
模型性能和功能
该模型在量化为 4-bit 时大小为 14.9MB,完全在设备上运行,无需服务器连接。
技术规格
| 指标 | 值 |
|---|---|
| 参数 | 28.9M(闪存查找表中为 25M) |
| 硬件 | ESP32-S3 (512KB SRAM, 8MB PSRAM, 16MB Flash) |
| 速度 | ~9.5 tokens/sec 端到端 |
| 模型大小 | 14.9MB (4-bit) |
功能限制
由于模型的“推理”部分较小,其功能受到限制。它是在 TinyStories 数据集上训练的,这意味着它可以生成短小、连贯、简单的故事。它无法执行以下任务:
- 回答事实性问题
- 遵循复杂指令
- 编写代码
社区见解和潜在应用
开发者之间的讨论表明,这种架构可以超越文本生成,扩展到其他小规模 AI 任务。
"还值得一提的是,存在大约 20-30M 参数的可行 TTS 模型,因此可能意味着你可以让一个无网络访问的 ESP32 近乎实时地朗读内容!"
其他社区成员强调了将此类模型集成到日常物品中的潜力,例如口腔卫生设备;而另一些成员则指出,存在更强大的低成本开发板,例如 Milk-V Duo,它提供最高 256MB 内存和一个 TPU,价格相近。