
凿穿了一面墙,但另一面墙没动
· 阅读约 3 分钟
前几天刷到一个项目 esp32-ai,在 ESP32-S3 上跑了个 2890 万参数的语言模型。
第一反应是"这怎么可能"。这芯片 SRAM 才 512KB。两千多万参数哪怕用最狠的量化,光权重也得吃掉几十兆,怎么塞进去的?
我把它存储策略翻出来看——2500 万参数存在闪存的查找表里,推理时按需读取,每次只拉当前 token 需要的那几行进 SRAM。快的放 SRAM,大头的塞 PSRAM,冷数据丢闪存。借了 Google Gemma 3n 的 Per-Layer Embeddings 思路,让权重按层切着用,不用一次性全装进内存。
到这里,"怎么塞进去"算是清楚了。但我没停下来,因为真正绊住我的不是这个。
先停一下,问个问题:跑起来了,然后呢?
每秒 9.88 个 token,本地推理不联网,跑在这么便宜的芯片上——听起来有很多想象空间对吧。我一开始也这么想。然后翻到它的训练数据:TinyStories。
TinyStories 是个专门生成简短儿童故事的数据集。也就是说,这个模型唯一会干的事就是编儿童故事。听不懂指令,没有事实知识,不具备问答能力。(项目里另外有个 Barista 模型做问答,那是单独下载部署的另一回事。)
这就撞到那层有意思的东西了。
我们看见"芯片上跑 LLM",默认它跑起来就有意义——就像手机跑通某个模型,大家就说这手机有了"AI 能力"。但跑起来和跑得有用中间,隔着一道很宽的沟。
这道沟是什么?是模型的能力边界,跟硬件部署的精巧程度,完全是两件不相干的事。
esp32-ai 的存储分层做得漂亮,SHA-256 校验、发布元数据交叉核对、失败时保护已有文件,工程上挑不出大毛病。但底下那个模型只会写儿童故事——你把它部署到任何设备上,它干的还是写儿童故事这件事。
我一开始也觉得"在 ESP32 上跑大模型"本身就够酷了,酷就够了。后来发现这个想法有个漏洞:如果你追的是端侧推理的实用价值,模型能力是绕不过去的硬约束;如果你追的是"证明这事儿可行"的技术 demo,那它确实证明了——但 2026 年了,证明这事儿可行的 demo 已经不稀缺了。
真正的难题不是怎么把权重塞进闪存——那是工程问题,有现成的套路。真正的难题是:塞进去之后,它能学会的东西,够不够支撑你想让它干的活。
这么说吧,硬件的墙可以用工程绕,模型能力的墙绕不了。esp32-ai 把前一面墙凿穿了,干净利落。但后一面墙还在那儿,靠分层存储和查找表搬不掉。
再往下就是"小模型的能力边界到底卡在数据、架构还是参数量"了。这个我还没想明白,先放这儿,下次接着剥。
更多「部署」的实战
评论
还没有评论,写下第一条讨论。