Hacker News 中文摘要

RSS订阅

在8美元微控制器上运行2890万参数的大语言模型 -- Running a 28.9M parameter LLM on an $8 microcontroller

文章摘要

该项目展示了如何在仅8美元的ESP32-S3微控制器上运行一个2890万参数的语言模型。模型完全在芯片本地运行,无需连接服务器,每秒可生成约9个token。通过采用Google Gemma模型的逐层嵌入技术,将大部分参数存储在闪存而非RAM中,实现了百倍于同类芯片模型的参数规模。

文章总结

在8美元微控制器上运行2890万参数大语言模型

该项目在ESP32-S3微控制器(约8美元)上运行了一个2890万参数的语言模型。模型完全在芯片本地运行,无需连接服务器,能以每秒约9个token的速度将生成的文字显示在连接的小屏幕上。相比此前同类芯片上仅能运行26万参数的模型,该模型容量提升了约100倍。其实现关键在于将大部分参数存储在闪存而非RAM中,采用了Google Gemma模型的逐层嵌入技术。

技术参数

  • 参数规模:2890万(其中2500万存储在闪存查找表中)
  • 芯片配置:ESP32-S3(约8美元),512KB SRAM、8MB PSRAM、16MB闪存
  • 运行速度:约9.5 token/秒(纯计算速度9.7 token/秒)
  • 运行模式:完全离线,所有计算在设备端完成
  • 模型大小:4位量化后14.9MB

技术难点与解决方案

微控制器的快速内存极为有限,ESP32-S3仅有512KB SRAM。传统方法需要将整个模型加载到SRAM中,这限制了模型规模。解决方案是将大部分参数存储在慢速闪存中:语言模型的参数主要位于嵌入表中,模型仅需读取而非计算这些参数。因此可将2500万行的嵌入表保留在闪存中,每次仅读取当前token所需的约450字节数据,而负责实际计算的小型核心部分则保留在快速内存中。这样大型模型的运行成本极低,因为大部分参数从未被加载,只是以逐次采样的方式存储在闪存中。

模型能力与局限

该模型基于TinyStories数据集训练,能生成简短连贯的叙事性故事,但无法回答问题、遵循指令、编写代码或提供事实信息。这一局限源于模型推理部分的小型化设计,内存优化技术并未改变这一本质。项目的核心价值在于架构创新——将大型模型适配到微型芯片上,而非模型本身的语言能力。

项目资源

固件、接线图和刷写步骤详见firmware/esp32_llm/README.md,训练、消融实验和量化代码位于src/experiments/目录,完整方法、消融实验和芯片实测数据记录在RESULTS.md中。

致谢

TinyStories数据集(Ronen Eldan和Yuanzhi Li,微软研究院)提供了适合小模型训练的简单合成故事。Google Gemma模型的逐层嵌入设计使大型模型得以适配小型芯片。Andrej Karpathy的llama2.c项目启发了在纯C环境中训练和运行微型语言模型的可能性。

项目历程

项目保留了完整的历史记录,包括早期参数统计中的错误及其修正过程,这些细节可在提交历史和RESULTS.md中查阅。

评论总结

根据评论内容,主要观点和论据总结如下:

1. 项目创新性与实用性(高认可度) - 评论2、5、8均表达赞赏,认为项目“很酷”("really cool project")、“超级棒”("Super cool"),甚至调侃“终于有能在i5上跑的LLM”("Finally, an LLM that can run on my i5")。 - 评论3指出这是“每层嵌入技巧的巧妙应用”("really neat use of the per-layer embedding trick"),并提到存在20-30M参数的小型TTS模型,暗示可实现在ESP32上离线实时朗读。

2. 硬件性能与扩展性(中等认可度) - 评论1对“9.7 tokens/sec”的速度表示惊讶和有趣("actually seems like a lot! That’s fun!")。 - 评论6称赞ESP32-S3是“野兽级微控制器”("This microcontroller is a beast"),并指出其双USB端口和OTG功能可替代昂贵方案。 - 评论7对比指出,5美元的Milk-V Duo板拥有256MB内存和1TOPS TPU,运行Linux,性价比更高。

3. 技术局限与疑问(低认可度) - 评论4提出质疑:“为何不能扩展到在CPU上运行更大模型,并利用闪存优化访问模式?”("Why can't this scale to run much larger models on CPU backed by flash with good access patterns?") - 评论9表示更关注“训练出这些权重的过程”("I'm more impressed by whatever training has produced the weights"),暗示对模型本身而非部署方式更感兴趣。

总结:评论整体对项目持积极态度,认可其在低成本微控制器上运行LLM的创新性,尤其赞赏ESP32-S3的性能和项目实用性。部分评论提出扩展性疑问,或更关注模型训练过程。