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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 随着大语言模型的发展,参数量逐渐扩大,大语言模型的训练和运行通常需要大量的计算资源,这也限制了大语言模型在一些场景尤其是端侧的应用,所以,探索剪枝,蒸馏等量化方式,已经成为大语言模型研究的一个重要方向。

引言

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

近期微软开源了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

目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
魔搭社区模型速递(4.20-4.26)
魔搭ModelScope本期社区进展:2227个模型,270个数据集,167个创新应用,10篇内容
301 4
|
6月前
|
人工智能 缓存 自然语言处理
全球首款开源通用型AI智能体上线!Suna:自动处理Excel/爬数据/写报告等复杂任务一句话搞定
Suna是由Kortix推出的开源通用型AI智能体项目,通过自然语言交互实现浏览器自动化、文件管理、数据分析等复杂任务处理,支持自托管部署,为研究分析和日常工作提供智能辅助。
1412 55
全球首款开源通用型AI智能体上线!Suna:自动处理Excel/爬数据/写报告等复杂任务一句话搞定
|
6月前
|
人工智能 算法 数据可视化
机器人训练师狂喜!Infinite Mobility:上海AI Lab造物神器1秒生成可动家具,成本只要1分钱
上海AI Lab推出的Infinite Mobility采用程序化生成技术,可高效生成22类高质量可交互物体,单个生成仅需1秒且成本低至0.01元,已应用于机器人仿真训练等领域。
215 2
机器人训练师狂喜!Infinite Mobility:上海AI Lab造物神器1秒生成可动家具,成本只要1分钱
|
6月前
|
人工智能 自然语言处理 数据可视化
让AI单次生成4万字!WriteHERE:开源AI长文写作框架,单次生成超长文本,小说报告一键搞定!
WriteHERE是基于异质递归规划技术的开源AI写作框架,能动态分解写作任务并管理任务依赖关系,支持单次生成超过4万字的专业报告。
743 55
让AI单次生成4万字!WriteHERE:开源AI长文写作框架,单次生成超长文本,小说报告一键搞定!
|
消息中间件 缓存 监控
系统稳定性建设实践总结
2020年,注定是个不平凡的一年。疫情的蔓延打乱了大家既定的原有的计划,同时也催生了一些在线业务办理能力的应用诉求,作为技术同学,需要在短时间内快速支持建设系统能力并保障其运行系统稳定性。恰逢年终月份,正好梳理总结下自己的系统稳定性建设经验和思考。
系统稳定性建设实践总结
|
6月前
|
机器学习/深度学习 人工智能 算法
小米7B参数推理大模型首次开源!Xiaomi MiMo:数学代码双杀,超越32B巨头
小米开源的MiMo推理大模型通过联动预训练与强化学习算法,在7B参数规模下实现数学推理与代码生成能力的突破性提升,技术报告显示其性能超越部分32B级模型。
813 74
小米7B参数推理大模型首次开源!Xiaomi MiMo:数学代码双杀,超越32B巨头
|
6月前
|
人工智能 搜索推荐
「社会实验室」成真!SocioVerse:复旦联合小红书开源社会模拟世界模型,用AI预演群体行为
SocioVerse是由复旦大学联合小红书等机构开源的社会模拟框架,基于大语言模型和千万级真实用户数据构建,能精准模拟群体行为并预测社会事件演化趋势。
385 2
「社会实验室」成真!SocioVerse:复旦联合小红书开源社会模拟世界模型,用AI预演群体行为
|
6月前
|
机器学习/深度学习 人工智能 IDE
14B小模型代码成绩紧逼O3-Mini!DeepCoder-14B-Preview:基于Deepseek-R1蒸馏优化的开源代码生成模型
DeepCoder-14B-Preview是基于Deepseek-R1蒸馏优化的140亿参数模型,通过强化学习微调在LiveCodeBench达到60.6%准确率,开源训练数据与系统优化方案。
327 3
14B小模型代码成绩紧逼O3-Mini!DeepCoder-14B-Preview:基于Deepseek-R1蒸馏优化的开源代码生成模型
|
6月前
|
人工智能 编解码 算法
AI生成视频告别剪辑拼接!MAGI-1:开源自回归视频生成模型,支持一镜到底的长视频生成
MAGI-1是Sand AI开源的全球首个自回归视频生成大模型,采用创新架构实现高分辨率流畅视频生成,支持无限扩展和精细控制,在物理行为预测方面表现突出。
686 1
AI生成视频告别剪辑拼接!MAGI-1:开源自回归视频生成模型,支持一镜到底的长视频生成
|
6月前
|
人工智能 自然语言处理 运维
让AI读懂K线图!ChatTS-14B:字节开源的时间序列理解和推理大模型,自然语言提问秒解趋势密码!
ChatTS-14B是字节跳动开源的时间序列专用大模型,基于Qwen2.5-14B微调优化,通过合成数据对齐技术显著提升分析能力,支持自然语言交互完成预测推理等复杂任务。
1038 1
让AI读懂K线图!ChatTS-14B:字节开源的时间序列理解和推理大模型,自然语言提问秒解趋势密码!

热门文章

最新文章