全球AI社区刚刚见证了可能是最硬核的单兵项目展示:一个叫colibrì的推理引擎,仅用~1300行纯C代码、零外部库、零Python、零GPU,就在一台仅配备25GB内存的家用电脑上运行起了参数规模高达744B的GLM-5.2混合专家模型。没有BLAS,不靠任何运行时加速库,也没有动用哪怕一个字节的显存,所有计算全部在CPU上完成。整件事情听起来像是典型的极客玩笑,但它的确通过了严格的token精确性验证,并且已经在社区里被多位开发者实测跑通。如果你对“大模型只能活在云端”这种说法已经感到厌倦,这个来自意大利语“蜂鸟”命名的引擎,可能正是给你的一剂清醒剂。

项目最核心的挑战,当然是拜模型尺寸所赐。GLM-5.2是一个拥有744B参数的混合专家(MoE)架构,原始权重大到令人绝望。colibrì的解法是把模型一刀劈成两部分:一部分是每次计算都必须用到的稠密组件,包括注意力层、共享专家、词嵌入等大约17B参数,在int4量化后常驻内存,占用约9.9GB;另一部分是分布在整个模型75个MoE层里的21504个路由专家——每层256个专家加上顶层的多令牌预测头,每个专家在int4下只有区区19MB。这370GB的专家权重就躺在磁盘上,按需流式加载。冷启动时,引擎在32秒内完成初始化,之后就可以用不到10GB的常驻内存,把那个理论上需要塞满一整排服务器机柜的模型,轻巧地跑起来。

这套流式专家调度是用一个单层的LRU缓存组织起来的,还可以额外固定一块热专家存储,剩下的事就彻底交给操作系统的页缓存充当免费的二级缓存。这就使得colibrì天然具备了一种“越聊越顺滑”的特性:当一个会话里被反复激活的专家逐渐占满缓存和热存储后,磁盘I/O大幅下降,响应越来越快。反过来,如果缓存冰冷,每个token都要从磁盘重新拉取大量专家,速度就会很难看。作者毫不避讳这点,甚至把它写进了命令行交互提示里。这种带着自嘲的诚实,反而比那些动辄宣称“无损运行”的PPT要可靠得多。

MLA注意力机制为这套CPU优先的方案扫平了最大的内存瓶颈。GLM-5.2使用多头潜在注意力,原本每个token要在KV缓存里塞进32768个浮点数。colibrì加入了一组我们并不陌生的“DeepSeek式”操作:通过查询/键值的低秩适应(q/kv-LoRA)和交错局部旋转位置编码(partial RoPE),将实际需要缓存的浮点数砍到576,压缩比足足57倍。这还不算完,引擎又吸收了MLA中kv_b投影矩阵到查询权重里,让解码阶段完全不需要按token重构键值张量,上下文信息在注意力计算之后直接投影,大大减少了每次前向的运算量。作者声称,这个吸收优化已经在teacher-forcing和贪婪采样两种验证模式下均达到32/32与20/20的完全精确匹配,没有引入一丝精度损失。

另一项同样大胆的性能压榨,是直接让模型自带的MTP多令牌预测头参与推测解码。GLM-5.2在第78层本身就有一个能同时预测下一个token的草稿头,colibrì把它由默认的int4量化强行提到int8。这个看似微小的数据类型改动效果惊人:在int4下,草稿令牌的接受率会跌到0到4%,推测机制基本上形同虚设;拉到int8后,社区实测接受率立刻跳升到39%-59%,一次模型前向可以产出2.2到2.8个有效token,全程无损,并且在采样模式下通过拒绝采样维持损失率为零。当然,作者同样坦诚到近乎“劝退”地指出,当缓存冰冷时,每个验证通过的草稿都会触发额外的专家路由,导致单个token的专家加载次数从约660次蹿升到1100次,这时候推测解码反而会变成负优化。为此,引擎内置了自适应保护门和DRAFT=0环境变量,确保在缓存没暖起来之前不会瞎猜。

整数计算内核的精细把控,才让所有以上优化不至于停留在图纸上。colibrì针对x86体系架构写了一套AVX2整数点乘内核,激活值采用类似Q8_0风格的int8量化,配合maddubs指令,实测矩阵乘法达到119 GFLOP/s,比浮点版本快1.4到2.5倍。对于矩阵形状敏感的int4单行乘法,作者没有强行套用int8逻辑,而是经过实测后发现浮点反而更快,于是老老实实退回去用了f32。这种数据驱动的“认怂”比任何死守单一量化方案的雄心都更有工业参考价值。同时,异步专家预读也在底层做了手脚:在当前一批专家进行乘法运算时,内核就已经通过WILLNEED系统调码提前通知操作系统准备下一块磁盘数据,把I/O等待尽可能藏在计算背后。

细看colibrì的量化与稀疏设计,更会发现大量被充分验证的“偏执”。它的int8、packed int4、packed int2量化内核全部基于逐行缩放因子,解量化在数值被使用时当场进行,其打包格式与int8容器之间实现了比特级一致。DSA稀疏表示的具体细节作者没有展开,但显然已经集成到了引擎的前向传递路径中。值得额外注意的一点是默认采样参数:作者没有照搬GLM-5.2官方推荐的1.0温度和0.95核采样,而是针对int4量化现实中尾部分布引入量化噪声的特点,将温度调低到0.7、核采样收紧到0.90。这种从现实出发、不迷信官方配置的调参洁癖,使得colibrì在牺牲极小多样性的情况下有效抑制了量化带来的奇葩输出。

至于正确性,作者给出的保证是硬碰硬的。他们在与一个使用transformers库实现的oracle模型进行teacher-forcing和贪婪采样两种交叉验证时,面对一个使用真实架构但随机权重的小规模测试模型,分别达成了32/32和20/20的token完全匹配。这意味着colibrì对GLM-5.2数学定义的重现,在给定随机种子的条件下,做到了与参考实现每一步的浮点和整数路径都完全一致。开源社区中相当一部分声称“支持某模型”的项目甚至从未做过此类逐token对照,colibrì能用纯粹手工编写的C代码达到这个精确度,本身就构成了一种讽刺:某些动辄依赖数万行Python胶水的大厂官方实现,鲜有敢用同样严苛的标准来检验自己。

整个引擎最后被塞进一个叫做c/glm.c的主文件和几个对应的小头文件里,代码量只有约1300行,干净得令人发指。启动方式同样简洁到粗暴:在终端敲下./coli chat,引擎在30秒左右完成常驻权重的加载,然后弹出一行意大利语问候,就开始和你用多国语言对话。没有Web界面,没有API包装,没有任何多余一层抽象。在这个动辄一个依赖列表卷出几百项、安装脚本跑半小时的年代,colibrì像是一个从远古携来的手工艺品,提醒我们一个简单事实:如果你真的懂模型算术,懂内存层次,懂操作系统底层的文件映射和页缓存,一台普通电脑足以撬动看起来不可撼动的算力神话。