25GB 内存跑 744B 模型,这哥们用 1300 行 C 干成了

小岛AI 2026 / 07 / 10

一台 12 核、25GB 内存的笔记本,跑起了 744B 参数的 GLM-5.2。

不是砍到面目全非的蒸馏版,是完整权重的那个 744B,输出被逐 token 对拍验证过,和官方实现一字不差。干这事的是一个人,整个推理引擎是一个 1300 行的 C 文件,零依赖,运行时没有 Python,没有 BLAS,更没有 GPU。

这个叫 colibrì 的项目,这两天在 Hacker News 上拿了 550 分。我把 readme 和一百多条评论从头刷到尾,越看越觉得,这可能是今年最值得程序员细读的开源项目之一。倒不是因为它能用,恰恰相反,它现在慢得离谱。值得细读的是它把「不可能」拆成一连串「可以做到」的过程。

先说那个所有人的第一反应,这怎么可能。744B 参数,int4 量化(把 16 位浮点权重压成 4 位整数,体积砍到四分之一,精度有损)以后也有 370GB,25GB 内存塞哪去。

答案藏在 MoE 这三个字母里。MoE 是混合专家架构,你可以把模型想象成一家有几万名专科医生的医院,每个病人(token)进来,分诊台只会叫其中八个医生出诊,剩下的都在休息。GLM-5.2 总参数 744B,但每生成一个 token,真正被激活的只有 40B 左右。再往细看,这 40B 里还有一大块是每个 token 都要用的固定部分,真正随 token 变化的,也就是被分诊台点名的那批专家,只有 11GB 上下。

colibrì 的整个方案就建立在这条缝隙上。注意力、共享专家、词嵌入这些固定要用的稠密部分,int4 量化后常驻内存,只占 9.9GB。剩下的 21504 个专家,全部躺在硬盘上,加起来 370GB,谁被点名,谁才被从磁盘读进内存。

744B 模型的体积拆账,370GB 躺在磁盘上,内存里只养 9.9GB

内存装不下就放硬盘。听起来像句废话对吧,这种话谁都会说。让这句废话真的能跑起来的,是下面这一层层的工程活。

每层 MoE 配一个 LRU 缓存(Least Recently Used,谁最久没被用就先踢谁),刚用过的专家留在内存里,赌下一个 token 还会用到。再往上叠一个可选的热点固定区,把你最常用的专家钉死在内存不许换出。最外面还白嫖了操作系统的页缓存当免费的二级缓存。读磁盘的同时,一个异步预读线程已经在拉下一批专家,算和读是重叠的。

光有缓存还不够,作者在正确性上的较真程度让我肃然起敬。整个前向计算和 transformers 参考实现做过 token 级对拍,teacher-forcing 32 个 token 全对,贪心生成 20 个全对。干我们这行的都知道,自己手写推理引擎,最怕的不是慢,是错得悄无声息,输出看着像人话,数值早就漂到姥姥家了。他用一个真实架构的小随机模型当 oracle,把每一步都钉死了。

然后是几个我看完在工位上小声说了句好家伙的细节。

GLM-5.2 用的是 MLA 注意力,自带压缩的 KV 缓存(模型生成时要记住前文的注意力状态,这块内存随上下文变长线性膨胀,是长文本推理的老大难)。colibrì 把每个 token 的缓存从 32768 个浮点数压到 576 个,小了 57 倍。换来的直接好处是,对话拉长时内存不会像普通引擎那样越吃越肥。

投机解码也是原生的。GLM-5.2 自己带一个多 token 预测头,行话叫 MTP,相当于模型里内置了一个小学徒,先唰唰打几个 token 的草稿,主模型一次批量前向验收,对得上就白赚。社区实测每次前向能带出 2.2 到 2.8 个 token,等于解码开销直接砍半。但这里有个特别有意思的坑,这个预测头必须用 int8 量化,压到 int4 的话草稿接受率直接崩到 0 到 4%,投机根本转不起来,int8 就能到 39 到 59%。这个数字是社区在 issue #8 里量出来的,readme 还诚实地补了一句,冷缓存的时候每个草稿会拖着主模型多读一堆专家,投机反而可能更慢,所以留了自适应开关。一个 readme 里到处写着「我的优化在什么条件下会失效」,这种项目我天然多信三分。

最妙的是学习型缓存。引擎会在模型目录旁边记一个小文件,记录你的使用习惯实际路由到了哪些专家,下次启动自动把最热的那批钉进空余内存。你越用,它越懂你常问什么,速度就越快。一个推理引擎,有点子牛逼地长出了记忆。

还有个实验性的路由预言机。把第 L+1 层的分诊台提前用在第 L 层的中间状态上,居然能预测出 71.6% 的真实点名结果,对比「沿用上个 token 的专家」只有 41.3%。专家读取从被动等待变成了主动预取。这个思路我感觉迟早会出现在正经推理框架里。

好,工程之美夸完了,现在泼冷水。

作者开发机上的真实数字是,冷启动每个 token 要从磁盘读 11GB,速度 0.05 到 0.1 tok/s。tok/s 是每秒生成的 token 数,人的阅读速度大概每秒 5 到 7 个 token,云端 API 随便几十上百。0.1 tok/s 什么概念,一分钟憋出六个词,你问它一句你好,答案够你吃完一顿午饭。上下文目前也只支持到 2048 个 token,稀疏注意力还在开发中。更微妙的是,int4 量化到底掉了多少精度,作者自己从没测过,评测框架建好了,但在他那块每秒 1GB 的磁盘上跑完要大半天。官方全精度分数在 85 到 95 这个档,int4 落在哪,现在是薛定谔的。

所以这玩意现在不是生产力,纯粹不是。作者在 HN 的帖子里也说得很直白,速度对他不重要,重要的是让它无论如何先跑起来,重要的是这段旅程。

但社区接力测出来的数字,让这段旅程开始有了实用的影子。

一台 24GB 内存的 Intel Ultra 7,磁盘比作者的快两倍多,结果还是只有 0.07 tok/s。为什么,内存太小,专家缓存被自动压到每层只剩两个坑位,磁盘再快也永远在冷读。这台机器上单加一个采样参数就提速 1.6 倍。一台 128GB 的 Framework 13 笔记本,让缓存吃饱内存再加上学习型固定区,专家命中率从 28% 拉到 66%,速度 0.37 tok/s。而一台 128GB 统一内存的 M5 Max,凭着 14GB/s 的内置 SSD,跑出了 1.06 tok/s。

社区接力实测,同一个 744B 模型在不同机器上的速度阶梯

一台笔记本,1 tok/s,744B 的前沿级模型。这个数字放在那儿,HN 上有个评论我特别认同,1 tok/s 的本地模型,你给它一个项目让它通宵跑,早上起来收结果,已经是能用的东西了。0.05 不行,1 可以,这中间隔的不是数量级的鸿沟,是你机器上的内存条和 SSD 型号。作者的预估表往上排,PCIe5 的盘加 64GB 内存能到 2 到 4 tok/s,再堆核心数或者上 AVX-512 指令集,5 到 15 tok/s,进入可交互区间。每一个条件都是你下次装机时可以主动拧的旋钮。

顺便说一句,370GB 的 int4 权重社区已经转好传上 Hugging Face 了(记得配 int8 的 MTP 头),不用自己下 756GB 的原始权重折腾。我本来也想跟风拉一份,看了眼 370GB 这个数字和我笔记本可怜的剩余空间,冷静了。等哪天换了大盘再说,不丢人。

HN 的讨论比项目本身还好看,一百多条评论基本把「本地跑大模型到底图什么」这个话题翻了个底朝天。

有人算了笔狠账,一万美元预算,eBay 上能收一台二手双路服务器,768GB 内存的 Dell 卖五千八,凑到 1TB 内存也就这个预算上下,纯 CPU 跑巨型模型,速度不快但能跑。电费按他那 0.07 美元一度算,500W 全天候一个月三十多刀。也有人立刻现身泼冷水,说自己花一半价钱攒过本地推理机,跑编码模型的体验是巨大的失望,性价比被云服务按在地上摩擦。

还有一条评论戳中了我。有人说,慢速本地模型也许根本就不该用聊天界面,聊天预设了「你问我立刻答」,而 1 tok/s 的模型更适合工单系统,你提交任务,它慢慢干,干完通知你。已经有人顺着这个思路做了个 SMTP 网关,用发邮件的方式跟本地模型协作。想想还真是,我们对「AI 必须秒回」的执念,可能只是被云端惯出来的习惯。异步的智能,也是智能。

当然也有清醒的反方,云上白嫖 GLM-5.2 的免费额度,速率限制再抠也比 1 token 一分钟强出天际,图啥。支持者的回答基本就两个词,隐私,还有把一份压缩过的人类知识实实在在握在自己手里。模型是租来的,硬盘上这 370GB 是自己的。在内存条价格一路起飞的 2026 年(评论区有人哀嚎两条 16GB 的 DDR5 从 399 涨到了 475 美元),这份「自己的」越来越贵,但也越来越让人惦记。

最后说说我自己的看法。colibrì 对绝大多数人的价值,不是「你现在就去跑」,而是它证明了一条路是通的。磁盘可以是推理内存体系里正经的一层,MoE 的稀疏性可以被工程手段兑现成真金白银的硬件门槛下降。评论区有人说这套东西最该被苹果抄走,超快 SSD 加统一内存加一个专门的专家缓存层,软硬一体做进 Mac,我觉得这不是玩笑,这几乎是画好的路线图。

另外还有个容易被忽略的点。作者在帖子里坦然说,这个项目是他在 agent 的协助下完成的。一个人,一台 25GB 内存的笔记本,加上 AI 搭把手,产出了一个逐 token 精确的 744B 推理引擎,外加 AVX2 手写内核和自动内存预算这种细节。我平时的工作就是给模型搭脚手架,让它们真正能干活的那层工程,看到这种「一个人加 AI 能走多远」的样本,感触比看到任何跑分都深。工具在变,但把一件事情磕到底的那股劲,还是老配方。

项目名 colibrì 是意大利语的蜂鸟。作者在 readme 结尾解释了这个名字,蜂鸟只有几克重,悬停在原地,一天要访一千朵花。他用 25GB 内存和十二个核心,喂活了一个 744B 的庞然大物,靠的是蜂鸟的口粮,和磁盘的耐心。

大教堂还在云端,但集市上已经有人骑着蜂鸟起飞了。