Colibrì 是一款纯 C 语言开发的 MoE 大模型推理引擎,可在 25GB 内存机器上运行 744B 参数的 GLM-5.2 模型。将 VRAM/RAM/磁盘作为统一内存层级,按需流式加载专家模块,零依赖零 GPU 要求,支持 MTP 投机解码加速,文末附详细使用教程
🎤 引言
一个 7440 亿参数的大模型,通常需要 H100 这种万元级显卡才能跑。但有个叫 Colibrì 的开源项目说:在普通电脑上,25GB 内存,就能跑起来。
Colibrì(蜂鸟)是一个用纯 C 语言写的 MoE(混合专家)推理引擎,专门针对 GLM-5.2 这类稀疏大模型优化。它的核心思路很简单——744B 的 MoE 模型每次其实只激活约 40B 参数,剩下的专家模块存在硬盘里,按需加载。就像蜂鸟在空中悬停一样,需要什么才拿什么,绝不多占资源。
⭐ 核心功能
稀疏 MoE 架构支撑
GLM-5.2 是混合专家模型,总参数 744B,但每次 token 只需要激活 ~40B 参数。其中约 11GB 的路由专家模块会随每个 token 变化,这些就是 Colibrì 要从磁盘动态加载的部分。而模型的稠密部分(注意力层、共享专家、embedding)约 17B 参数,以 int4 精度常驻 RAM,约 9.9GB。
MLA 压缩注意力
GLM-5.2 有 64 个注意力头且没有 GQA(分组查询注意力),传统 KV-cache 非常大。Colibrì 实现了 MLA(多头潜在注意力)+ q/kv-LoRA + 压缩 RoPE 技术,把每个 token 的 KV 缓存从 32,768 floats 压缩到 576 floats,缩小 57 倍。显存占用大幅降低,同时验证与原始模型输出完全一致。
MTP 投机解码
Colibrì 支持 GLM-5.2 原生的多 token 预测(MTP)投机解码。实测 int8 MTP 头接受率达到 39-59%,每个前向传播平均可解码 2.2-2.8 个 token,有效提升吞吐量。注意:必须使用带 int8 MTP 头的模型版本,int4 版本接受率为 0%,投机解码完全不会生效。
整数运算加速
引擎使用 AVX2 maddubs 实现 int8/int4 矩阵乘法。实测 int8 矩阵乘法比浮点快 1.4-2.5 倍,int4 批处理快 1.8 倍。路由器根据输入形状自动选择最优内核,不盲目追求量化。
磁盘流式专家
21,504 个路由专家(每个约 19MB int4)存储在磁盘上(约 370GB),通过每层 LRU 缓存 + 可选 pinned 热存储 + OS 页面缓存组成三级体系。冷启动时每个 token 需要读取约 11GB 数据(约 0.05-0.1 tok/s);缓存预热后速度显著提升。引擎支持 PILOT=1 路由预取,提前加载下一层专家。
KV 缓存持久化
对话可跨引擎重启热恢复。每次回复后自动将压缩的 MLA KV 追加写入 .coli_kv 文件(约 182KB/token),重启时无缝续接,无需重新预填充。崩溃安全。
Grammar 约束解码
支持 GBNF 语法文件强制输出格式(JSON/NDJSON、函数调用、结构化提取)。语法本身作为第三层"草案"来源,接受率约 1.0,且与 MTP 投机解码组合使用,在约束输出场景下效果尤为明显。
原生 Windows 支持
项目不依赖 WSL,在 Windows 11 x64 上通过 MinGW-w64 原生编译运行。提供了 _WIN32 兼容层(c/compat.h),将 POSIX I/O 映射到 Windows API,引擎源码完全不变。
📥 安装与使用
环境要求
- Linux(GCC + OpenMP)或 Windows 11 x64(MinGW-w64)
- 25GB 以上可用 RAM
- NVMe SSD(推荐,SATA 盘冷启动性能约 0.05 tok/s)
- 约 400GB 空闲磁盘空间
下载模型
项目已预转换好 GLM-5.2 int4 模型(带 int8 MTP 头版本),直接下载即可使用:
⚠️ 必须使用带 int8 MTP 头的版本(matey-0/GLM-5.2-colibri-int4-with-int8-mtp),原 int4 MTP 头版本接受率为 0%。下载地址:https://huggingface.co/mateogrgic/GLM-5.2-colibri-int4-with-int8-mtp
编译引擎
# Linux
cd c
./setup.sh # 自动检测 gcc/OpenMP,构建并自检
# Windows (MinGW-w64)
cd c
make glm.exe # 静态编译,无 DLL 依赖
# 启用 Intel AVX-VNNI 加速 (Alder Lake+ CPU)
make glm.exe ARCH=native运行
# 交互式对话
COLI_MODEL=/path/to/GLM-5.2-colibri-int4-with-int8-mtp ./coli chat
# 查看内存规划
COLI_MODEL=/path/to/model ./coli plan --json
# 预检系统兼容性
COLI_MODEL=/path/to/model ./coli doctor --json
# 启动 OpenAI 兼容 API
COLI_MODEL=/path/to/model ./coli serve --model /path/to/model --port 8080
# 开启路由预取(实验性)
PILOT=1 COLI_MODEL=/path/to/model ./coli chat
# 关闭 MTP 投机(追求字节级确定性输出)
DRAFT=0 COLI_MODEL=/path/to/model ./coli chat性能数据(WSL2, 12核, 25GB RAM, NVMe)
| 指标 | 数值 |
|---|---|
| 模型磁盘占用(int4) | ~370 GB |
| 常驻 RAM(稠密部分,int4) | 9.9 GB |
| 启动时间 | ~30 秒 |
| 峰值内存 | ~20 GB |
| MTP 加速(int8 头) | 2.2-2.8 tok/forward |
| 冷启动速度 | ~0.05-0.1 tok/s |
🎯 适用场景
硬件受限的开发者/研究者
没有 H100/A100,但需要本地跑 700B 级别大模型做实验。Colibrì 把门槛降到了"一台游戏电脑"级别。适合验证模型行为、跑测试用例、调试 prompt。
对数据隐私有要求的场景
纯本地运行,不需要联网 API,所有数据留在本地机器。适合处理敏感内容的实验性推理。
MoE 架构学习者
项目代码结构清晰(c/glm.c 约 2400 行纯 C),是学习 MoE 推理工程实现的绝佳参考资料。从 MLA 压缩到 MTP 投机解码,每一步都有明确注释。
🔍 对比/替代方案
vLLM
vLLM 是目前最流行的 LLM 推理库,但对硬件要求高,需要足够显存容纳 KV 缓存。Colibrì 走的是完全不同的路线——把磁盘作为虚拟显存,通过精细的流式调度弥补 IO 延迟。两者定位不同:vLLM 追求高吞吐,Colibrì 追求低硬件门槛。
llama.cpp
llama.cpp 专注稠密模型(Llama、Mistral 等),对 MoE 架构支持有限。Colibrì 针对 GLM-5.2 MoE 的特定架构做了深度优化(MLA 压缩、MTP、路由预取),是专门针对 GLM-5.2 的专项工程。
ollama
ollama 上手最简单,但模型需要完整加载到显存,硬件门槛最高。Colibrì 是"工程复杂度换硬件门槛"的思路,需要手动编译和配置,但回报是极低的运行成本。
⚠️ 注意事项
冷启动很慢
磁盘流式加载意味着首次推理极慢(约 0.05 tok/s),需要等待缓存预热。如果经常只跑一两个 query,体感会很糟糕。建议参考文档做 overnight 缓存预热(长时间挂机让缓存充分填充)。
SSD 寿命的误解
Colibrì 是纯读取,不写入。官方明确说"reads don't meaningfully wear an SSD"。真正需要注意的反而是:别把系统内存耗尽导致 swap 写操作,以及长时间高负载下的 SSD 温度监控。
投机解码的局限
MTP 投机解码在 int4 头下接受率为 0%。即使使用 int8 头,冷启动时因为 expert 缓存不完整(660→1100 expert loads/token),投机反而可能拖慢速度。社区反馈(GitHub #100)中提到,投机解码在大批量请求时才真正发挥价值。
这不是"快"的方案
Colibrì 把 744B 模型跑在普通电脑上,但代价是速度。6×RTX 5090 满配专家缓存的满血速度是 6.84 tok/s;普通消费级 NVMe 冷启动可能只有 0.05 tok/s。它的意义在于让不可能变成可能,而不是让慢变快。
✅ 总结
Colibrì 是个挺有意思的工程尝试。它的核心价值不是"跑得快",而是用纯 C 的工程复杂度,换来了极低的硬件门槛——让一台 25GB 内存的普通电脑也能跑 744B 大模型。
技术层面亮点不少:57× 压缩的 MLA KV 缓存、投机解码、磁盘流式调度、grammar 约束解码,每一项都是大模型推理工程里的硬骨头。代码质量也在线,单文件 2400 行 C,没有第三方依赖,可移植性好。
但也要正视它的局限:冷启动慢、需要 NVMe、内存规划复杂、速度远不如 GPU 方案。如果你有条件用 GPU,Colibrì 肯定不是首选;但如果你的预算只有一台普通游戏电脑,它可能是目前唯一能让 744B 模型跑起来的开源方案。