用纯C语言从零构建了一个BitNet推理引擎——在Xeon上比bitnet.cpp快1.8倍(36 tok/s),零依赖 [招募BitNet和Bonsai CPU测试者]
摘要
Project Zero 是一个从零构建的 C99 LLM推理引擎,可在 CPU 上运行 BitNet 与 Qwen Bonsai-27B,拥有零外部依赖,在 Xeon 上相比 bitnet.cpp 实现 1.8 倍加速。该项目诚邀社区为这两种模型提供基准测试结果。
嘿,r/LocalLLM,我们构建了 Project Zero —— 一个从头编写的纯 C99 CPU 推理引擎,支持运行 LLM,无需显卡。在相同硬件上,它比 bitnet.cpp 快 1.8 倍。我们还完全支持在 CPU 上运行 Qwen Bonsai-27B,希望大家帮忙在多种 x86 CPU 上跑出这两个模型的基准数据。
**它是什么**
单个二进制文件,零外部依赖 —— 不需要 Python、CUDA、ONNX 或 PyTorch。只需 GCC + make + CPU。
支持:
- **Microsoft BitNet b1.58-2B-4T** —— 三值权重 ({−1, 0, +1}),二进制文件仅 1.18 GB,提供完整 REPL + 智能体循环
- **Qwen Bonsai-27B** —— 直接读取 GGUF 文件(例如 Ternary-Bonsai-27B-Q2_0.gguf),内存安全的内存映射(mmap)架构,即使在内存受限的环境下也不会 OOM
**BitNet 性能 —— 亮点部分**
| 硬件 | Project Zero | bitnet.cpp | 加速比 |
|------|--------------|------------|--------|
| Intel Xeon (Emerald Rapids, 4C) | 36.25 tok/s | 19.33 tok/s | 1.87× |
| i5-11300H (Tiger Lake, 双通道 DDR4) | ~16.1 tok/s | ~13.0 tok/s | 1.23× |
在 Xeon 上,我们达到了理论 DRAM 带宽上限的约 95%。在那台机器上,BitNet 的性能基本上已经榨干。
**加速原理**:
BitNet 权重以三值形式紧打包为 4 位/字节。我们不采用解包 → float → FMA 的方式,而是使用一个仅需 3 条指令的 VBMI 内核(`vpermi2b` + `vpternlogd` + `vpaddb`),直接喂入 INT8 VNNI 累加指令(`vpdpbusds`)。线程池采用 C11 原子操作的自旋-睡眠策略,消除了 futex 系统调用。
**社区挑战:BitNet 和 Bonsai 基准测试**
目前我们只在两台机器上测试了 BitNet。我们需要看看,在旧款 CPU 架构上,后备的三值内核是否仍能带来加速,并摸清服务器硬件上的内存带宽上限。
此外,PrismML 正在积极征集 Bonsai-27B 的社区基准数据。目前他们的排行榜上所有条目都是基于 GPU(CUDA/Metal/MLX)的,**纯 CPU x86 的条目一条都没有**。我们想改变这一局面。
由于 Project Zero 采用零拷贝的 mmap 架构,你可以在资源严重受限的硬件上运行 Bonsai-27B 而不会崩溃。如果你有一块较老的 AVX2 芯片,或者一台高核心数的 Xeon/EPYC,我们想知道你跑这两个模型能获得多少 token 速率。
**如何测试和跑分**
1. 克隆并构建:
```bash
git clone https://github.com/shifulegend/project-zero.git
cd project-zero
make demo
```
2. 运行 BitNet 或 Bonsai-27B:
```bash
# BitNet (b1.58-2B-4T):
./adaptive_ai_engine --model models/bitnet-b1.58-2B-4T.bin --tokenizer models/bitnet-b1.58-2B-4T_tokenizer_proper.bin --threads 4
# Qwen Bonsai-27B (GGUF):
./adaptive_ai_engine --model models/Ternary-Bonsai-27B-Q2_0.gguf --threads 4
```
**在哪里发布结果**:
你可以直接在此帖下方回复,或将其发布在仓库的 Discussion #3 中。
仓库地址:https://github.com/shifulegend/project-zero
非常乐意回答关于三值内核设计、AVX-512 VNNI 调度、DRAM 瓶颈,以及我们为何聚焦 Bonsai-27B 的任何问题!
相似文章
Bitnet.cpp:面向三值大语言模型的高效边缘推理
Bitnet.cpp 提出了一个混合精度矩阵乘法库,用于高效边缘推理三值大语言模型(如 BitNet b1.58),相比全精度基线实现了高达 6.25 倍的加速。该系统已在 GitHub 上开源。
@QuixiAI: @MicrosoftAI 从未发布过 BitNet 训练器。我修复了那个 bug。https://github.com/QuixiAI/bitnet 训练了我自己的 BitNe…
一位用户发布了微软从未公开发布的 BitNet 训练器,以及用于训练和推理的自定义内核,同时强调了微软的 bitnet.cpp 推理框架,该框架可在 CPU 和 GPU 上实现快速 1 位 LLM 推理。
一个纯C从头编写的、仅支持CPU的Qwen 3精简推理引擎
一个纯C从头实现的、仅支持CPU的Qwen 3模型最小推理引擎
Ternary Bonsai:1.58 比特下的顶级智能
一种使用三值权重(-1、0、1)的高效 AI 模型架构,仅需 1.58 比特/参数即可实现具有竞争力的性能,可部署在极度受限的设备上。
BitNet 文本嵌入
本文介绍了 BitEmbed,一个用于基于 LLM 的文本嵌入的极低位宽框架,它将预训练的 LLM 骨干转换为具有三值权重和量化激活的 BitNet 风格编码器。该框架在显著降低编码和存储成本的同时,实现了与全精度模型相当的性能。