BitNet:1位大语言模型推理框架

microsoft/BitNet 访问 GitHub ↗
🔤 C++ ★ 40919 ⑂ 0 daily #8 (+97) 抓取 2026-10-13

一句话简介

微软开源的C++项目,提供1位(BitNet)大语言模型的高效推理实现,支持在CPU上低内存、低能耗地加载和运行百亿参数规模的二值化LLM。

标签

  • 大语言模型
  • 模型量化
  • 推理框架
  • C++
  • 边缘计算

适用应用场景

  • 本地CPU环境运行大模型
  • 低功耗边缘设备部署
  • 研究二值化LLM推理性能
  • 替代全精度模型以节省显存

README 中文摘要

bitnet.cpp 简介

bitnet.cpp 是 1-bit 大语言模型(例如 BitNet b1.58)的官方推理框架。它提供一套优化内核,支持在 CPU 和 GPU 上对 1.58-bit 模型进行快速且无损的推理,并将在后续版本中加入 NPU 支持。

性能表现

bitnet.cpp 在不同平台上均能显著提升推理效率:

  • ARM CPU:速度提升 1.37x 至 5.07x,能耗降低 55.4% 至 70.0%;模型越大,性能增益越明显。
  • x86 CPU:速度提升 2.37x 至 6.17x,能耗降低 71.9% 至 82.2%。
  • 大模型支持:可在单块 CPU 上运行 100B 参数的 BitNet b1.58 模型,速度达到 5-7 tokens/s,接近人类阅读速度,为本地部署超大模型提供了可能。

模型发布

BitNet-b1.58-2B-4T

首个官方 BitNet b1.58 模型,包含 2.4B 参数,使用 4 万亿 tokens 训练,采用三值(1.58-bit)权重。该模型在性能上可对标同规模的全精度模型,同时推理更快、能耗更低。x86 CPU 上最高可达 6.17x 加速,ARM 上最高 5.07x 加速;能耗在 x86 上最高降低 82.2%,ARM 上降低 70.0%。该模型支持 GPU 推理内核,并具备对话模式。

BitNet-embedding-0.6B

0.6B 参数的 1-bit 嵌入模型,是首个证明三值权重在嵌入任务上同样具备强性能的工作。在 8 线程 x86 下,prefill 阶段相对 F16 实现 1.42x 至 2.28x 加速,且每个权重仅占 2 bit。

BitNet-embedding-270M

轻量级 270M 参数 1-bit 嵌入模型,面向边缘部署等资源受限场景。8 线程 x86 下 prefill 相对 F16 实现 1.32x 至 1.74x 加速,适合需要小内存占用的应用。

安装

环境要求

  • python >= 3.10
  • cmake >= 3.22
  • clang >= 18(Windows 用户需安装 Visual Studio 2022,并勾选 C++ 桌面开发、CMake 工具、Clang 编译器等组件)
  • 建议使用 conda

从源码构建

  1. 克隆仓库(需含子模块):
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
  1. 创建 conda 环境并安装依赖:
conda create -n bitnet-cpp python=3.10
conda activate bitnet-cpp
pip install -r requirements.txt
  1. 下载模型并配置环境:
huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf --local-dir models/BitNet-b1.58-2B-4T
python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_s

setup_env.py 支持通过 --quant-type {i2_s,tl1} 指定量化类型,通过 --quant-embd 将嵌入量化至 f16,并通过 --use-pretuned 选择预调优的内核参数。

使用方法

基础推理

python run_inference.py \
  -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf \
  -p "You are a helpful assistant" -cnv

常用参数说明:

  • -m:模型文件路径
  • -n:生成 token 数
  • -p:提示词;启用 -cnv 时作为系统提示
  • -t:推理线程数
  • -c:上下文窗口大小
  • -temp:采样温度
  • -cnv:启用对话模式(适用于指令模型)

基准测试

使用 utils/e2e_benchmark.py 运行端到端基准测试,典型调用如下:

python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4
# 生成 200 tokens,提示长度 256,使用 4 线程

对于公开模型未覆盖的结构,可使用 utils/generate-dummy-bitnet-model.py 生成指定尺寸的虚拟模型,再配合基准脚本进行测试。

从 .safetensors 转换

huggingface-cli download microsoft/bitnet-b1.58-2B-4T-bf16 --local-dir ./models/bitnet-b1.58-2B-4T-bf16
python ./utils/convert-helper-bitnet.py ./models/bitnet-b1.58-2B-4T-bf16

转换得到 gguf 模型后即可按上述流程进行量化与推理。

摘要更新于 2026-10-13 01:15:12 · 原文 20570 字符 · md5 98c780b1c23d…