BitNet:1位大语言模型推理框架
一句话简介
微软开源的C++项目,提供1位(BitNet)大语言模型的高效推理实现,支持在CPU上低内存、低能耗地加载和运行百亿参数规模的二值化LLM。
标签
适用应用场景
- 本地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
从源码构建
- 克隆仓库(需含子模块):
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
- 创建 conda 环境并安装依赖:
conda create -n bitnet-cpp python=3.10
conda activate bitnet-cpp
pip install -r requirements.txt
- 下载模型并配置环境:
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…