微软开源“原生1bit”三进制LLM:2B参数,0.4GB内存/单CPU就能跑

  西风发自凹非寺

  量子位 | 公众号 QbitAI

  微软以小搏大,发布首个开源 2B 参数规模“原生 1bit”LLM——

  BitNet b1.58 2B4T,单 CPU 就能跑,性能与同规模全精度开源模型相当。

  它采用三进制{-1, 0, 1}存储权重,相较于传统的 16 位浮点数可大幅降低显存需求。

  只需 0.4GB 内存即可运行。

  基于 4T token 语料训练,BitNet b1.58 2B4T 在保持性能的同时,计算效率突出。

  单个 CPU 即可达到“与人类阅读速度”相当的速度,每秒5-7 个 token,CPU 端解码延迟 29ms,能耗低至 0.028J。

  这种效率使其可在普通笔记本电脑甚至边缘设备上实时运行。

  例如在苹果 M2 CPU 上快速运行:

  另外值得一提的是,BitNet b1.58 2B4T 具有原生训练优势,与训练后量化(PTQ)模型对比,避免了 PTQ 常见的性能衰减

  BitNet b1.58 2B4T 刚发布就吸引了大量网友点赞关注,作者们也当起了自己个儿的自来水。

  如何实现原生 1bit?话不多说,一起来看看技术详情。

  权重映射为三元值{-1, 0, +1}

  BitNet b1.58 2B4T 模型基于 Transformer 架构,对核心组件进行了系统性改造。

  传统 LLM 依赖 16bit 或 32bit 浮点数存储权重,而 BitNet b1.58 2B4T 采用一种称为absmean 的量化方案,将权重映射为三元值{-1, 0, +1},平均每个权重仅需 1.58bit(log₂3≈1.58)来表示。

  模型内存占用骤降至 0.4GB,仅为同类全精度模型的1/5-1/12。

  另外,线性投影中的激活值被量化为 8bit 整数,采用基于每 token 的absmax 量化策略,团队还引入subln 归一化,增强量化训练稳定性。

  其它关键设计包括:

  • 激活函数:前馈网络(FFN)子层采用 ReLU²替代常见的 SwiGLU,通过提升模型稀疏性,优化了 1bit 环境下的计算特性。
  • 位置编码:使用旋转位置嵌入(RoPE)。
  • 偏置消除:与 Llama 等架构一致,所有线性层和归一化层均移除偏置项,减少参数量并简化量化流程。

  训练方面,BitNet b1.58 2B4T 采用三阶段训练:大规模预训练监督微调(SFT)和直接偏好优化(DPO)。

  先是大规模预训练,模型经历了两阶段学习率调度:得益于 1bit 模型的训练稳定性,初期采用高学习率快速收敛;中期骤降至低水平,使模型能在高质量数据上精细化调整。配合动态权重衰减策略,模型在保持泛化能力的同时避免过拟合。

  监督微调(SFT)阶段,值得注意的是,训练中采用损失函数求和而非平均策略,并延长了训练轮次,这一调整被证明对低精度模型的收敛至关重要。

  直接偏好优化(DPO)阶段,基于 UltraFeedback、MagPie 等人类偏好数据集,模型通过无奖励模型的直接优化,提升了回答的安全性与用户满意度,避免了传统 RLHF 的高计算成本。

  实验效果方面,BitNet b1.58 2B4T 内存占用仅为 0.4GB,CPU 端解码延迟 29ms,能耗低至 0.028J。

  在数学推理任务 GSM8K 中,BitNet 以 58.38 的准确率远超 Llama 3.2-1B(38.21)和 Qwen2.5-1.5B(56.79);在常识推理任务 WinoGrande 中,BitNet 71.90 的得分超同类模型均值(63.55)。

  团队特别指出,BitNet b1.58 2B4T 具有原生训练优势。与训练后量化(PTQ)模型对比,BitNet 的原生 1bit 训练策略避免了 PTQ 常见的性能衰减。

  参数更大的 Llama3-8B 模型量化至 1bit 后,也难打 BitNet b1.58 2B4T。

  和其它 1bit 模型相比,BitNet b1.58 2B4T 也有显著更强的整体性能,绝大多数基准测试中取得 SOTA。

  有关 BitNet b1.58 2B4T 的具体表现,再来看几个例子。

  让它生成几个笑话,笑话简短但也蛮有意思:稻草人为何成为成功的神经外科医生?回答是因为它在自己的领域很杰出(outstanding in his field)。

  单 CPU 生成 97 个 token,总耗时 3.452 秒,每秒处理 28.1 token。

  再让它基于 2000 年的背景,让一位 PowerPC 处理器爱好者和一位英特尔处理器爱好者进行五行辩论。

  BitNet b1.58 2B4T 生成结果也很快,并且反映了那个时代科技行业的竞争特性。

  微软在 1 bit LLM 上的探索

  1 bit LLM 的实现方法,微软其实早在 2023 年就有相关研究,当时就称为 BitNet,用 BitLinear 替换了 nn.Linear

  之后,微软原班人马在上一篇论文的基础之上做了优化,提出 BitNet b1.58,在原始 BitNet 的基础上增加了一个额外的0 值

  也就是“The Era of 1-bit LLMs”这篇论文,用 6 页研究引发网友广泛关注。

  这种方法发布后,也有不少人在这项研究的基础之上进行探索。Huggingface Transformers 还曾整合了 BitNet b1.58,运用一些技巧,使得现有模型可以直接微调到 1.58bit。

  接着,微软还开发并开源了针对 GPU 和 CPU 平台的专用推理库

  BitNet b1.58 采用独特量化方案(1.58bit 权重和 8bit 激活值,W1.58A8)需要专门的实现,标准深度学习库通常缺乏针对这种混合精度、低比特格式的优化内核,微软开发了专门针对 W1.58A8 矩阵乘法的自定义 CUDA 内核。

  另外,微软还开源了 bitnet.cpp——一个用于 1 bit LLM CPU 推理的官方参考 C++ 库,提供针对标准 CPU 架构优化的内核,旨在高效适配模型的特定量化方案,尽可能避免通用量化库的开销或复杂的底层位操作。

  技术报告:https://arxiv.org/abs/2504.12285

  抱抱脸链接:https://huggingface.co/microsoft/bitnet-b1.58-2B-4T

  参考链接:https://arstechnica.com/ai/2025/04/microsoft-researchers-create-super%e2%80%91efficient-ai-that-uses-up-to-96-less-energy/