>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
C

如何在普通电脑上运行 7440 亿参数神经网络

colibrì — tiny engine, immense model

当你打开一个拥有 7440 亿参数的 GLM-5.2 或 2.8 万亿参数的 Kimi K3 这样的模型页面时,第一反应很简单:你需要一台配备十几块 H100 GPU 的服务器机架。如果你手边没有这些资源,唯一的选择就是付费调用 API。

最近我发现了 JustVugg/colibri 项目。作者用纯 C 语言编写了一个轻量级推理引擎,没有任何第三方依赖。该引擎能够在配备 24GB 内存的普通台式机或笔记本电脑上运行大型 MoE 模型,直接从高速 SSD 加载权重。

only ~5.4% of parameters are active per token

诀窍是什么

Mixture-of-Experts(MoE)架构的设计使得生成单个 token 不需要调用整个模型。例如,在 GLM-5.2 的 7440 亿参数中,只有约 400 亿处于活跃状态。此外,从一个 token 到下一个 token,只有约 11 GB 的权重会发生变化,对应于路由器选择的专家。

引擎没有尝试将 370 GB 的模型塞进显存,而是将数据分布到存储层级中:

  • 模型的密集部分(嵌入层、注意力机制、共享层)以 int4 量化格式占用约 9.9 GB,永久保留在内存中。
  • 近 20,000 个专家驻留在高速 NVMe SSD 上,通过异步 I/O 按需加载。
  • 频繁使用的专家被缓存在内存或显存的 LRU 缓存中。

VRAM / RAM / NVMe three-tier expert residency

本质上,这个系统就像一个神经网络权重的 JIT 编译器。引擎追踪访问统计、记忆热门分支,并精确缓存当前上下文所需的专家。

引擎是如何工作的

代码库非常精简。核心部分用 C 编写(每个模型系列都有独立的文件,例如 GLM 的 c/colibri.c),并使用 gcc 或 clang 配合 OpenMP 编译。没有庞大的框架或臃肿的运行时环境。Python 仅用于一次性权重转换和 Web 界面包装器。

route → union → place → overlap → learn

在生成每个 token 时,引擎执行多个步骤:

  1. 通过独立的预取线程提前一层计算路由。路由器以约 71% 的准确率预测所需专家,使磁盘读取与计算并行进行。
  2. 合并对相同专家的请求为批次,以消除重复读取。
  3. 在单个 pread 系统调用中读取每个专家的三个矩阵。
  4. 将命中率统计保存到历史文件,以便后续运行时将热门层预固定在内存中。

对两个存储设备的支持实现得很有意思。如果将权重副本分布在两个不同的 SSD 上,引擎会按各磁盘读取速度的比例分配专家请求。一对速度分别为 9 GB/s 和 3 GB/s 的驱动器可以将读取速度提高约三分之一。

colibrì web dashboard

计算加速方面支持 CUDA、Apple Silicon 芯片上的 Metal 以及 Vulkan。Vulkan 变体甚至可以在较旧的 GPU(如 AMD RX 580)上通过 RADV 驱动运行,而该厂商早已停止了对最新 ROCm 的支持。

the Brain page

该包包含一个带有专家活动可视化的 Web 仪表板。在 Atlas 页面上,你可以旋转数千个专家的 3D 地图,观察不同组如何处理代码、法律主题或外语。

the Atlas page

实际速度数据

没有奇迹,速度受限于磁盘吞吐量和可用内存。

measured decode speed by hardware class

项目基准测试在 GLM-5.2 模型上记录了以下结果:

  • 配备 25 GB 内存且缓存冷的笔记本电脑产生 0.05-0.1 tokens/秒的 modest 速度。虽然很慢,但模型响应没有逻辑失真。
  • 配备 128 GB 内存但无独立 GPU 的工作站,在缓存预热后提供约 1.8 tokens/秒。
  • 配备移动版 RTX 5070 Ti 的笔记本电脑借助 GPU 管道加速至 1.07 tokens/秒。
  • 配备六块 RTX 5090 卡的工作站将专家完全保留在显存中,达到 5.8-6.8 tokens/秒。

支持的模型

除了基础的 GLM-5.2,作者还添加了对四种架构的支持:

  • Inkling (975B) — 以 int4 运行密集部分需要约 25 GB 内存和 469 GB 磁盘空间。
  • Kimi K3 (2.8T) — 体积达 1.6 TB,直接从原始分片读取 MXFP4 原生权重,无需预转换。
  • DeepSeek V4 Flash (284B) — 使用 fp4/fp8 格式的 167 GB 权重,需要 16 到 22 GB 内存。
  • OLMoE (7B) — 紧凑型变体,权重仅 4 GB,可在 8 GB 内存上进行快速实验。

如何运行

引擎以 Linux、macOS 和 Windows 的预编译二进制文件形式分发,也可以在一分钟内从源码构建:

构建完成后,从 Hugging Face 下载所需模型的量化权重(例如 GLM-5.2 int4 约需 372 GB),然后通过终端启动聊天:

如果需要本地服务器兼容 OpenAI API 并附带 Web 面板,运行:

启动前,建议用 ./coli plan 检查内存分配情况,用 ./coli tune 运行快速硬件测试。

谁会发现这个项目有用

由于消费级硬件的磁盘读取延迟,Colibrì 可能不适合高负载生产环境。然而,对于需要在本地测试顶级开源模型推理能力的研究人员、爱好者和开发者来说,这是一个很好的选择,无需花费数百万购买服务器 GPU。核心代码紧凑透明,使引擎成为进行 I/O 和量化实验的理想场所。

相关项目