在 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,价格相近。

Sources