本仓库包含BitNet b1.58 2B4T的权重文件。该模型是由微软研究院开发的首个开源、原生1位、参数量达20亿级别的大语言模型(LLM)。
在4万亿 tokens 的语料上训练后,该模型证明了原生1位大语言模型能够达到与同等规模主流开源全精度模型相当的性能,同时在计算效率(内存、能耗、延迟)方面具有显著优势。
➡️ 技术报告: BitNet b1.58 2B4T 技术报告
➡️ 官方推理代码: microsoft/BitNet (bitnet.cpp)
Hugging Face 上提供了该模型权重的多个版本:
microsoft/bitnet-b1.58-2B-4T(本仓库):包含经过压缩的1.58位权重,针对高效推理进行了优化。部署时请使用此版本。
microsoft/bitnet-b1.58-2B-4T-bf16:包含 BF16 格式的主权重。仅用于训练或微调。
microsoft/bitnet-b1.58-2B-4T-gguf:包含 GGUF 格式的模型权重,与 bitnet.cpp 库兼容,适用于 CPU 推理。
BitLinear 层进行了改进(BitNet 框架)。
subln 归一化。transformers)关于效率的重要提示
请注意,即使使用所需的分支版本,在标准
transformers库中使用此模型时,也不要期望获得性能效率方面的提升(如速度、延迟或能耗的改善)。
transformers库当前的执行路径中并不包含利用BitNet架构优势所需的专用、高度优化的计算核心。通过transformers运行此模型时,无论是在CPU还是GPU上,推理速度和能耗都可能与该框架内标准全精度模型相当,甚至可能更差。虽然您可能会观察到由于权重量化而减少的内存使用量,但主要的计算效率优势无法通过这种标准的
transformers使用方式实现。要实现技术论文中展示的效率优势,您必须使用专用的C++实现:bitnet.cpp。
pip install git+https://github.com/shumingma/transformers.git我们正积极与 Hugging Face 团队合作,将必要代码整合到 transformers 主库中。此安装方法未来可能会发生变化。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "microsoft/bitnet-b1.58-2B-4T"
# Load tokenizer and model
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16
)
# Apply the chat template
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "How are you?"},
]
chat_input = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)
# Generate response
chat_outputs = model.generate(chat_input, max_new_tokens=50)
response = tokenizer.decode(chat_outputs[0][chat_input.shape[-1]:], skip_special_tokens=True) # Decode only the response part
print("\nAssistant Response:", response)bitnet.cpp)有关详细的编译步骤、使用示例和命令行选项,请参考 bitnet.cpp GitHub 仓库。
BitNet b1.58 2B4T 已与同等规模的主流开源全精度大语言模型进行了对比评估。以下是主要结果(所有模型均为指令微调版本):
| 基准测试 | LLaMA 3.2 1B | Gemma-3 1B | Qwen2.5 1.5B | SmolLM2 1.7B | MiniCPM 2B | BitNet b1.58 2B |
|---|---|---|---|---|---|---|
| 内存(非嵌入) | 2GB | 1.4GB | 2.6GB | 3.2GB | 4.8GB | 0.4GB |
| 延迟(CPU 解码) | 48ms | 41ms | 65ms | 67ms | 124ms | 29ms |
| 能耗(估算) | 0.258J | 0.186J | 0.347J | 0.425J | 0.649J | 0.028J |
| 训练 tokens(预训练) | 9T* | 2T** | 18T | 11T | 1.1T | 4T |
| ARC-Challenge | 37.80 | 38.40 | 46.67 | 43.52 | 44.80 | 49.91 |
| ARC-Easy | 63.17 | 63.13 | 76.01 | 62.92 | 72.14 | 74.79 |
| OpenbookQA | 34.80 | 38.80 | 40.80 | 46.00 | 40.20 | 41.60 |
| BoolQ | 64.65 | 74.22 | 78.04 | 75.78 | 80.67 | 80.18 |
| HellaSwag | 60.80 | 57.69 | 68.28 | 71.71 | 70.81 | 68.44 |
| PIQA | 74.21 | 71.93 | 76.12 | 76.12 | 76.66 | 77.09 |
| WinoGrande | 59.51 | 58.48 | 62.83 | 68.98 | 61.80 | 71.90 |
| CommonsenseQA | 58.48 | 42.10 | 76.41 | 63.55 | 71.74 | 71.58 |
| TruthfulQA | 43.80 | 38.66 | 46.67 | 39.90 | 41.41 | 45.31 |
| TriviaQA | 37.60 | 23.49 | 38.37 | 45.97 | 34.13 | 33.57 |
| MMLU | 45.58 | 39.91 | 60.25 | 49.24 | 51.82 | 53.17 |
| HumanEval+ | 31.10 | 37.20 | 50.60 | 28.00 | 43.90 | 38.40 |
| GSM8K | 38.21 | 31.16 | 56.79 | 45.11 | 4.40 | 58.38 |
| MATH-500 | 23.00 | 42.00 | 53.00 | 17.60 | 14.80 | 43.40 |
| IFEval | 62.71 | 66.67 | 50.12 | 57.91 | 36.81 | 53.48 |
| MT-bench | 5.43 | 6.40 | 6.12 | 5.50 | 6.57 | 5.85 |
| 平均值 | 44.90 | 43.74 | 55.23 | 48.70 | 42.05 | 54.19 |
*LLaMA 3.2 1B 采用了剪枝和蒸馏技术。
**Gemma-3 1B 采用了蒸馏技术。
模型权重和代码根据 MIT 许可证 发布。
本模型仅供研究和开发使用。尽管已通过 SFT 和 DPO 努力对其进行对齐,但它仍可能产生意外、有偏见或不准确的输出。请负责任地使用。