你想在本地电脑上运行 AI,常见障碍不只是算力,还有一整套 Python、CUDA 和计算库。Project Zero 试图把这件事收进一个独立程序:面向 BitNet 1.58-bit 三值模型,用 CPU 直接生成文本。作者称,它在一台 Intel Xeon 上用 4 线程运行 BitNet b1.58-2B-4T,达到 36.25 tok/s。tok/s 是每秒生成的 Token 数,Token 可以理解为模型处理文本时切分出的字词片段。本文数据均来自作者的一篇 Reddit 自述,尚无独立验证。
压缩之后,别急着还原
BitNet 的权重只有 −1、0、+1 三种值,平均信息量接近 1.58 比特。Project Zero 把四个权重塞进一个字节。关键一步是:计算时不先把它们还原成 float32 浮点数,而是通过自定义 AVX2、AVX-512 例程和 VNNI 指令 vpdpbusds,直接在 CPU 的整数寄存器里累加。
这像把压缩货物直接送上专用流水线,而不是先拆箱、恢复成大件,再搬运。SIMD 指一条指令同时处理多组数据;VNNI 则专门加速神经网络常见的整数运算。不过,材料没有说明具体 Xeon 型号,也不能据此认为所有 Xeon 或 AVX2 CPU 都能走同一条路径。
瓶颈已经不在计算
作者判断,batch size 1——一次只生成一条序列——的解码速度受 DRAM 内存带宽限制,并称测试机已用到约 95% 的理论带宽。因此,在同时处理多条序列前,继续加速计算内核也难以降低单个 Token 的端到端延迟。
项目还称可编译为单个二进制文件,并直接提供兼容 OpenAI 格式的 API。它宣称使用 pure C99、只需 GCC 和 make,但线程池同时使用 C11 atomics;两种标准口径存在矛盾,所谓“纯 C99、零依赖”仍待澄清。
局限与未知
- 36.25 tok/s 缺少 CPU 型号、内存规格、上下文长度、采样参数和编译选项,不能泛化为普通 CPU 的普遍表现。
- “约 95% 理论内存带宽”及线程同步开销近乎为零,均未获独立基准验证。