在一个售价折合人民币不到60块的开发板上,跑出来一个能正经对话、参数量将近三千万的大语言模型,并且全程不需要任何云端算力——这件事上周在Hacker News炸出了一片“怎么可能”的评论。芯片是乐鑫的ESP32-S3,28.9M参数的模型完全在本地运行,生成速度稳稳落在9.5 tok/s。不是说微控制器只能塞进260K参数的玩具模型吗?突然捅破一百多倍的天花板,背后的来龙去脉比晒一个跑通结果要刺激得多。
芯片上的“不可能”任务
从260K到28.9M的跳跃意味着什么
嵌入式圈从来不缺在极小算力上折腾ML的热情,但此前大家公认的边界非常清晰:能放进ESP32这类微控制器的语言模型,参数量通常被摁死在几百KB级别,典型就像某个260K参数的小模型,勉强用来做几个关键词触发。28.9M参数是什么概念?整整翻了超过110倍。这已经不是在边界试探,而是直接把边界往深里推了两个数量级。更关键的是,模型并非“能加载”就完事了,还得让芯片以可用的速度完成自回归推理,9.5 tok/s虽然不快,但够你一边串口输出一边跟进思考,完全摆脱了“动一下卡三秒”的实验状态。
8美元盒子里的真实硬件格局
先摊开ESP32-S3的底牌。双核Xtensa LX7,自带512KB SRAM,外部通常配了8MB或16MB的PSRAM和16MB的Flash,整个物料成本压得极低,8美元左右的模块就能买到。这点资源连跑一个像样的词嵌入表都嫌紧,更别提把整个Transformer塞进去。传统思路是把权重全部加载到PSRAM里,但28.9M参数哪怕全用INT8量化也要近30MB,远超PSRAM上限。逼到墙角,才逼出了这次真正的工程亮点:直接拿Flash查表当内存用,模型存放在大容量Flash中,推理时按需索引,片上缓存只保留最热的那一小部分激活值。
9.5 tok/s不只是一个数字
生成速度很诚实,不快。但对于一个连MMU都没有、总线带宽受限的微控制器来说,稳定在9.5 tok/s已经意味着流水线设计踩对了点。它背后是一整套访问Flash的等待周期、DMA搬运策略、以及循环缓冲区如何对齐Flash页边界的优化。换句话说,这个速度是硬件带宽、量化精度与调度算法三者相互妥协后得到的最优解,而不是随手一跑的初值。能把它稳定住,本身就让数字多了一层说服力。
查表魔术——把Flash当内存用
内存困境从来不是新问题
想在MCU上跑大模型的人迟早会撞上一堵墙:SRAM和PSRAM加起来还是太小,而模型权重的体量又不可能靠裁剪无底线压缩。以前大家妥协的办法是把模型缩小到MCU可容纳的程度,结果就是智能程度断崖式下跌,260K参数的模型除了“亮灯”“关灯”几乎问不出别的。这次的工作之所以值得拆解,是因为它没再缩模型,而是直接把权重扔进Flash,然后通过一种类似查字典的方式,在推理过程中动态地从Flash中“取”权重的对应行,只把必要的计算结果留在SRAM里。SRAM从此不再扛整个模型的存储压力,转而专做高速缓存,角色的转变一下子打开了伸缩空间。
查表推理是如何绕过带宽瓶颈的
原理说起来并不复杂。模型所有的权重矩阵被量化后固化在Flash中,按行或按块编上索引。推理时每算一层,先根据当前输入算出需要哪些权重数据,再通过索引直接从Flash里把这些行读出来丢进缓存,与缓存中的激活值完成矩阵乘法,生成新的激活值后立即释放上一轮占用。Flash的一次读取延迟虽然远高于SRAM,但通过把访问模式化为顺序的、整块对齐的读操作,就能利用Flash内部的高速连续读取能力,把平均带宽拉高到满足9.5 tok/s的水平。这其中对Flash页边界对齐和DMA双缓冲的细节处理,是能不能从“理论可行”变成“实测能跑”的分水岭。
精度与速度之间,工程师怎么选
28.9M参数的模型没有使用浮点权重,而是采用了激进的INT8甚至混合低比特量化。量化带来的精度损失不可避免,但开发者在实验中发现,对于闲聊、通用问答这类场景,模型在生成连贯性和事实准确性上仍然保持了相当不错的水准——这多少有点出乎意料。选点也很聪明:与其在一个8美元芯片上追求无损推理,不如主动放弃小数点后几位琐碎的精确度,换来FLASH查表方案真正落地的可能。代价是偶尔出现的语义漂移,收获的却是整套系统能在没有外部网络、没有服务器的野外环境里独立运行。
代码扔出来了,但复刻仍需一点狠劲
开源仓库里不止有代码,还有真实的泥巴
仓库里除了模型转换脚本和推理框架,还详细记录了开发过程中撞上的各种诡异问题。比如Flash供电波动导致偶尔的读取错误,需要在访问间隔插入软件校准;比如PSRAM与Flash共享同一SPI总线时的仲裁冲突,最终通过把模型切割成更小块进行错峰访问才避免掉速;再比如量化后的输出层logits有时会出现不该有的偏置,最后靠调整softmax温度系数勉强稳住。这些不着墨于论文的琐碎,恰恰是任何想把类似方案移植到其他MCU上的人绕不开的坑。
端侧AI的下一个真实战场
这次把28.9M参数模型塞进ESP32-S3,真正暗示的趋势不是“MCU可以替代GPU”,而是端侧推理正在从手机、边缘网关继续下沉到传感器级别。当8美元的芯片就能容纳一个完整的本地对话模型,意味着大量离线语音交互设备、工业现场助手、环境监测节点可能第一次获得真正的自然语言理解能力,而不必依赖任何无线回传。把FLASH查表思路扩展到更大Flash、更多SPI通道的平台,10倍于当前参数量的模型也可能以类似成本落地。到那时,衡量智能硬件的标准或许不再是“能不能联网”,而是“断网之后,你还能跟它好好说话吗”。

