大家都知道,大语言模型(LLM)越来越强,但想自己跑一个模型?动不动就需要昂贵的显卡集群。许多人只能望“卡”兴叹。
最近,微软研究院开源了一个新项目:BitNet,直接把模型的权重量化到了 1.58 比特!这意味着什么?——即使没有显卡,也能在普通 CPU 上运行大模型!
BitNet 有啥特别的?
- 1.58 比特量化
不再用 16bit/32bit 浮点数,而是用三值权重(-1、0、+1)。模型更小,速度更快。 - 训练即量化
它不是“训练完再压缩”,而是从一开始训练就用 1bit 权重,性能损失超级小。 - CPU 也能跑
在一台普通 CPU 上,BitNet 就能跑百亿参数模型,速度能达到 5~7 tokens/s,接近人类阅读速度。 - 能效惊人
相比常见的 BF16 推理,能耗直接降低 70% 左右!对数据中心和边缘设备来说都是巨大优势。
怎么用?
0)准备环境(macOS / Linux / Windows)
- 需要:Python ≥ 3.9、CMake ≥ 3.22、Clang ≥ 18(Windows 用 VS2022 自带的 Developer Command Prompt 打开再编译)。GitHub
- 强烈提议用 Conda 做隔离:
conda create -n bitnet-cpp python=3.9 -y
conda activate bitnet-cpp
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
pip install -r requirements.txt
1)下载并配置模型
BitNet 的官方开源权重(2B 参数规模)在 Hugging Face:
# 安装 HF CLI(若未安装)
pip install -U "huggingface_hub[cli]"
# 拉取官方推荐的 GGUF 版模型到本地 models 目录
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
# -md: 模型所在目录
# -q : 量化类型(i2_s / tl1),一般先用 i2_s
(README 中给出了等价示例与脚本说明。)GitHub
补充:模型权重卡(model card)及说明见 Hugging Face 条目 “
microsoft/bitnet-b1.58-2B-4T”。
2)跑一次最小可用推理(单轮生成)
官方提供了 run_inference.py 脚本,最小命令如下:
python run_inference.py
-m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf
-p "You are a helpful assistant. 请用中文总结:BitNet 的特点是什么?"
-n 128
-t 8
-c 4096
常用参数速记:
- -m 模型路径(GGUF)
- -p prompt 文本
- -n 生成 token 数
- -t 线程数(一般设为物理核或逻辑核数量)
- -c 上下文窗口
脚本参数释义与用法见 README「Basic usage」。
3)开启聊天模式(对指令更友善)
加上 -cnv 会把 -p 作为 system prompt,进入对话模式:
python run_inference.py
-m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf
-p "你是一个精炼的中文技术助理,回答尽量短小但给出可操作步骤。"
-cnv -n 128 -t 8
(聊天开关 –conversation/-cnv 详见 README。)
4)性能参数调优提议(CPU 场景)
- 线程数 -t:从 $(nproc) 开始测,逐步微调观察 tokens/s 与能耗。
- 量化类型 -q:i2_s vs tl1 可在 setup_env.py 里切换;不同 CPU(x86/ARM)和模型布局的最佳组合不同。GitHub
- 上下文 -c:越大越吃内存,按需求权衡。
- 核函数/内核预设:–use-pretuned 有时能带来小幅增益(见 setup_env.py -h)。GitHub
官方给出:在 x86 上可见 2.37×–6.17× 的提速与 72%–82% 的能耗下降;ARM 上 1.37×–5.07× 和 55%–70% 的能耗下降(不同规模与布局略有差异)。
5)做一次标准化基准测试(吞吐/延迟)
官方提供了端到端压测脚本:
python utils/e2e_benchmark.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf
-n 200 -p 256 -t 8
# -n 生成 tokens 数;-p prompt 长度;-t 线程数
用于比较不同线程、不同量化布局(i2_s / tl1)的性能差异。参数与示例见 README「Benchmark」。
6)把 safetensors 转成 GGUF(自有/研究模型常用)
如果你手里是 BF16 的 .safetensors 检查点,可用官方转换脚本变为 GGUF:
# 例:下载 BF16 检查点
huggingface-cli download microsoft/bitnet-b1.58-2B-4T-bf16
--local-dir ./models/bitnet-b1.58-2B-4T-bf16
# 执行转换(会输出 .gguf)
python utils/convert-helper-bitnet.py ./models/bitnet-b1.58-2B-4T-bf16
(转换流程与命令同样写在 README 的「Convert from .safetensors Checkpoints」。)
7)没有权重也想压机?用“假模型”生成器
只测内核与平台性能时,可生成“假 BitNet 模型”做基准:
# 生成 125M 的假模型(TL1 布局)
python utils/generate-dummy-bitnet-model.py models/bitnet_b1_58-large
--outfile models/dummy-bitnet-125m.tl1.gguf --outtype tl1 --model-size 125M
# 直接拿去压测
python utils/e2e_benchmark.py -m models/dummy-bitnet-125m.tl1.gguf -p 512 -n 128 -t 8
(官方 README 提供了等价示例与参数说明。)
8)想跑服务?(可选)
仓库包含 run_inference_server.py,可作为入门级的本地推理服务脚本(适合二次封装为 REST 形态)。提议先完成单机 CLI 跑通,再阅读脚本源码按需改造。GitHub
9)常见坑与排查
- Windows 构建报编译器或标准库路径错:务必用 Developer Command Prompt for VS2022 打开后再执行 CMake/编译步骤(README 专门强调)。GitHub
- 模型加载失败(路径/布局不匹配):确认 -m 指向的是与 setup_env.py -q 一致布局的 GGUF 文件。
- 性能不达预期:
- 检查是否启用了正确的 CPU 内核(x86/ARM);
- 调整线程数与上下文;
- 尝试 –use-pretuned;
- 升级 Clang/CMake。
能干啥?
- 边缘设备 AI:树莓派、ARM 设备跑 LLM,不再依赖云端。
- 本地私有部署:企业用 CPU 服务器就能跑大模型,安全又省钱。
- 节能减碳:大幅降低 AI 的能耗和成本,真正做到绿色 AI。
✨ 总结
BitNet 的出现,说明大模型的发展方向并不只是“更大更强”,而是 更高效、更普惠。
未来,也许你家里的电脑,甚至手机,都能轻松跑 LLM。
















- 最新
- 最热
只看作者