微软推出bitnet-b1.58-2B-4T:极致的量化,小巧而强大

简介: 随着大语言模型的发展,参数量逐渐扩大,大语言模型的训练和运行通常需要大量的计算资源,这也限制了大语言模型在一些场景尤其是端侧的应用,所以,探索剪枝,蒸馏等量化方式,已经成为大语言模型研究的一个重要方向。

引言

随着大语言模型的发展,参数量逐渐扩大,大语言模型的训练和运行通常需要大量的计算资源,这也限制了大语言模型在一些场景尤其是端侧的应用,所以,探索剪枝,蒸馏等量化方式,已经成为大语言模型研究的一个重要方向。

近期微软开源了bitnet-b1.58-2B-4T模型,bitnet是一种在极低比特权重运行的模型架构。传统的量化如int8量化,甚至更低int4,int2等,通过进一步的降低精度,理论上提升了模型的工作效率,降低了模型工作需要的计算资源,但同时按照经验来看,量化的性能下降风险很大,随着精度的降低,保持模型的准确率越发的困难。

而量化的最终理论极限是1位,其中权重被限制为仅两个值(例如 +1 和 -1)。这就是二值神经网络 (BNN) 的领域。BitNet 的核心思想是通过采用 1 位权重表示来大幅降低 LLM 的计算成本。如果权重为二进制 (+1/-1),那么 Transformer 中计算最密集的运算——矩阵乘法——可以在很大程度上被简单的加减运算所取代。这有望带来以下优势:

  1. 大幅减少内存:存储权重仅需要一位,而不是 16 位或 32 位。
  2. 显著加速:加法在计算上比浮点乘法便宜得多。
  3. 更低的能耗:操作越简单,消耗的电量就越少。

然而,训练稳定且准确的 BNN,尤其是在 LLM 规模上,已被证明极其困难。在训练过程中直接将权重量化为 +1/-1 可能会阻碍学习过程,通常会导致与全精度模型相比质量损失显著。

虽然最初的 BitNet 概念可能旨在实现纯 1 位权重,但“b1.58”是另一种一种具体的、略有不同的量化方案。此名称对应于1.58 位表示,这在数学上源于使用三进制权重。三进制量化允许权重取三个值: +1、0 或 -1,而不仅仅是两个值 (+1, -1)。

为什么是三进制的?

  1. 引入稀疏性:将权重表示为“0”的能力使模型能够有效地“关闭”某些连接,从而引入稀疏性。这有利于提高模型容量,并且可能比纯二元网络(每个连接都必须为正或负)更容易训练。
  2. 提升表示能力(相对于 1 位):虽然精度仍然极低,但三种可能状态(+1、0、-1)比两种状态(+1、-1)提供了略高的灵活性。这种小幅提升对于维持复杂语言任务的性能至关重要。
  3. 保持效率:与二进制权重类似,三进制权重仍然允许矩阵乘法以加法/减法为主(乘以 +1、-1 或 0 较为简单)。相比 FP16,其核心效率优势基本保持不变。

“1.58 位”来自信息论计算:log₂(3) ≈ 1.58。每个参数大约需要 1.58 位信息来存储其状态(+1、0 或 -1)。

该实现可能涉及用nn.Linear自定义层替换 Transformer 架构中的标准层,该自定义BitLinear层在前向和后向传递期间对其权重强制实施此三元约束。

同时模型的size为20亿参数量,训练用的tokens为4T。

模型效果

BitNet b1.58 2B4T 与类似规模的领先开放权重全精度LLM 进行了比较。以下是主要结果(所有模型均为指令调优版本):

Benchmark

LLaMA 3.2 1B

Gemma-3 1B

Qwen2.5 1.5B

SmolLM2 1.7B

MiniCPM 2B

BitNet b1.58 2B

Memory (Non-emb)

2GB

1.4GB

2.6GB

3.2GB

4.8GB

0.4GB

Latency (CPU Decoding)

48ms

41ms

65ms

67ms

124ms

29ms

Energy (Estimated)

0.258J

0.186J

0.347J

0.425J

0.649J

0.028J

Training Tokens (Pre-train)

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

Average

44.90

43.74

55.23

48.70

42.05

54.19

最佳实践

使用transformers进行推理:

环境安装:

!pip install git+https://github.com/shumingma/transformers.git

示例代码

import torch
from modelscope import AutoModelForCausalLM, AutoTokenizer
model_id = "AI-ModelScope/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?"},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
chat_input = tokenizer(prompt, 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['input_ids'].shape[-1]:], skip_special_tokens=True) # Decode only the response part
print("\nAssistant Response:", response)

使用bitnet.cpp推理

git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
# 在个人电脑建议安装虚拟环境
# 在魔搭免费CPU notebook资源不需要安装虚拟环境
# python3.11 -m venv 3.11   
# source 3.11/bin/activate 
pip install -r requirements.txt
pip install modelscope
modelscope download AI-ModelScope/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
python run_inference.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf -p "You are a helpful assistant" -cnv

推理性能(MAC M2芯片)

image.png

点击链接,即可跳转体验~

https://www.modelscope.cn/models/AI-ModelScope/bitnet-b1.58-2B-4T

目录
相关文章
|
7月前
|
存储 人工智能 算法
显卡不再是刚需?微软开源“省钱”神技:让100B大模型在普通CPU上跑疯了!
微软BitNet以1.58-bit三值量化技术,将百亿参数大模型压缩至CPU可运行级别:内存降10倍、运算转整数加减,Mac/ThinkPad即可实现5–7 tokens/s推理,功耗降低超70%。开源框架bitnet.cpp让本地私有AI真正普惠。(239字)
1204 1
|
7月前
|
人工智能 API 数据库
OpenClaw 告别失忆与费 Token 吞金教程:阿里云/本地部署+配置免费API+lossless-claw插件优化管理上下文指南
2026年,OpenClaw(曾用名Clawdbot)凭借“本地优先+长时记忆”的特性成为开源圈热门工具,但用户普遍面临两大痛点:一是“失忆”——长对话中关键信息被随机丢弃,任务执行到一半偏离目标;二是“吞金”——默认滑动窗口压缩机制导致上下文冗余,Token消耗剧增,长期使用成本高昂。这两个问题形成恶性循环:脏上下文让模型表现拉胯,用户被迫降低模型规格,而低规格模型在冗余信息中更难发挥作用,最终让OpenClaw陷入“不好用”的口碑困境。
2543 2
|
10月前
|
存储 缓存 并行计算
LMCache:基于KV缓存复用的LLM推理优化方案
LMCache推出KV缓存持久化方案,显著优化大模型推理首Token延迟(TTFT)。通过将KV缓存存储至GPU、CPU或磁盘,实现跨请求复用,支持任意位置文本匹配,与vLLM深度集成,多轮对话、RAG场景提速3-10倍,降低硬件压力,提升吞吐。开源支持Linux/NVIDIA,正拓展AMD及更多生态支持。
1216 15
LMCache:基于KV缓存复用的LLM推理优化方案
|
6月前
|
人工智能 自然语言处理 API
Graphify:为代码库构建知识图谱,以图遍历替代向量检索
Graphify 是一款Python代码知识图谱工具,支持Claude Code。它通过AST解析、本地语音转录和语义提取三阶段构建带置信度标签(EXTRACTED/INFERRED/AMBIGUOUS)的结构化图谱,将混合语料查询Token消耗降低71.5倍,大幅提升大型代码库分析效率与可解释性。
1159 1
Graphify:为代码库构建知识图谱,以图遍历替代向量检索
|
6月前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
4109 8
|
API
[已解决]openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host=‘api
[已解决]openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host=‘api
3436 0
|
7月前
|
人工智能 安全 API
OpenClaw(Clawdbot)云端/本地部署+阿里云百炼API配置+安全 Skill 清单,恶意插件零接触指南
OpenClaw(原Clawdbot)的Skill生态已进入爆发期,ClawHub平台汇聚的5700+技能插件覆盖办公、开发、创作等全场景需求,让AI助手的能力边界无限延伸。但光鲜背后暗藏致命陷阱:Koi Security报告显示,约12%的Skill存在恶意行为,近期曝光的ClawHavoc供应链攻击中,黑客将恶意代码伪装成“加密钱包追踪器”,导致超1000名用户的API密钥被窃取、设备植入后门。
1358 9
|
7月前
|
存储 API Docker
告别“金鱼脑”!OpenClaw记忆系统完全手册(阿里云/本地部署+记忆优化+避坑指南)
“昨天聊完的需求,今天再问就忘;反复强调的偏好,每次都要重新说明”——这是2026年无数OpenClaw用户的痛点。参考文章精准指出核心问题:AI智能体的记忆能力直接决定使用体验,而OpenClaw的记忆系统并非“自动生效”,需要理解其底层逻辑才能充分利用。
3144 1