用可移植的 C99 在纯 CPU 上推理 Kimi K3——一个参数量 2.78 万亿、检查点体积 1.56 TB 的 MoE 大模型:无 BLAS、无框架、无 GPU,整个引擎编译为单个约 176 KB 的二进制,宣称 8 GB 内存的机器即可运行且输出与 224 GB 机器字节级一致,"多出的内存只买速度"(8 GB 下约 26.5 s/token,128 GB+ 约 5.6 s/token)。

| 项目 | 内容 |
|---|---|
| 仓库 | FareedKhan-dev/kimi-k3-in-c |
| 语言 / 许可证 | C / Apache-2.0 |
| 总星标 | ⭐ 6508(截至 2026-08-26) |
| 创建时间 | 2026-08-01 |
| 榜单 | 近30天新星榜 第3名 |
用可移植的 C99 在纯 CPU 上推理 Kimi K3——一个参数量 2.78 万亿、检查点体积 1.56 TB 的 MoE 大模型:无 BLAS、无框架、无 GPU,整个引擎编译为单个约 176 KB 的二进制,宣称 8 GB 内存的机器即可运行且输出与 224 GB 机器字节级一致,"多出的内存只买速度"(8 GB 下约 26.5 s/token,128 GB+ 约 5.6 s/token)。
"万亿参数模型 + 一个 CPU + 8 GB 内存"的反差叙事极具传播力;README 以严谨的数据链条(5560 GB bf16 → 8.24 GB 峰值 RSS,压缩 675 倍而无近似)回应质疑;逐内核位级一致测试、跨平台 tokenizer 确定性等验证段落赢得了硬核社区的信任;作者延续其"用最朴素语言讲透复杂系统"的风格,工程与教学双重价值叠加。
依赖只有 libm 与 OpenMP,7 个 C 文件:k3_ops.c(RMSNorm/KDA/MLA/MoE/MXFP4 matmul 内核)、k3_st.c(手写 JSON 扫描的 safetensors 读取器)、k3_load/k3_trunk/k3_cache/k3_bind/k3_run。I/O 用 O_DIRECT(实测比缓冲读更快);FNV-1a 哈希索引 96 个分片约 50 万个张量只需四分之一秒;配置读取"拒绝默认值",任何必需字段缺失即中止启动。
Linux x86-64 参考实现(macOS/arm64 与 Windows MSYS2 MinGW-w64 也通过),需 AVX2+FMA、8 GB 内存起步、约 1.7 TB 磁盘、GCC≥9 或 Clang≥10:
git clone https://github.com/FareedKhan-dev/kimi-k3-in-c.git
cd kimi-k3-in-c && make -j && make test
./scripts/k3-doctor.sh
export HF_TOKEN=hf_your_token_here
./scripts/download-model.sh ~/k3model
./scripts/pack-trunk.sh ~/k3model ~/k3trunk # 生成约 109 GB trunk.bin
./bin/k3 ~/k3model --trunk ~/k3trunk --preset workstation \
--tok ~/k3model --prompt "The capital of France is" --gen 8 --incremental
对比 llama.cpp:后者生态成熟支持海量模型但依赖栈大得多,本项目以单二进制+零依赖聚焦 K3 一款模型做到位级可复现;对比官方 GPU 服务路径,它彻底放弃吞吐换可达性,是研究价值大于实用性能的硬核极客项目。
仓库 README(数字链条与基准硬件说明)、scripts/k3-doctor.sh、tools/sim_cache.py(离线缓存轨迹回放)、tools/devbw.py(磁盘带宽基准)、docs/data/ 测量数据。