Transformers 文档
BitNet
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
BitNet
BitNet 用专门的 BitLinear 层替换了多头注意力(Multi-Head Attention)和前馈网络中的传统线性层。BitLinear 层使用三元精度(值为 -1、0 和 1)量化权重,并将激活量化为 8 位精度。

BitNet 模型无法动态量化。它们需要在预训练或微调期间进行量化,因为它是一种量化感知训练 (QAT) 技术。在训练期间,权重通过对称的每张量量化被量化为三元值。
- 计算权重矩阵绝对值的平均值并用作尺度。
- 将权重除以尺度,对值进行四舍五入,将其限制在 -1 和 1 之间,然后重新缩放以继续进行全精度计算。
- 激活使用 absmax 量化(对称的每通道量化)量化到指定的比特宽度(8 位)。这包括将激活缩放到 [−128,127] 的范围。
请参阅此 PR,以使用 Nanotron 预训练或微调 1.58 位模型。对于微调,请将 Hugging Face 模型转换为 Nanotron 格式。请在此 PR 中找到转换步骤。
使用 from_pretrained() 加载 BitNet 量化模型。
from transformers import AutoModelForCausalLM
path = "/path/to/model"
model = AutoModelForCausalLM.from_pretrained(path, device_map="auto")
内核
@torch.compile
用于解包权重并执行前向传播。它实现起来非常简单,并且能显著提高速度。未来版本中将集成额外的优化内核。
资源
阅读 将 LLM 微调至 1.58 位:极致量化轻松实现,了解更多关于 BitNet 模型如何训练和微调的信息。
< > 在 GitHub 上更新