073BitNet
BitNet¶
BitNet 是一种新型的神经网络架构,它用特殊的 BitLinear 层替换了传统多头注意力机制和前馈网络中的线性层。BitLinear 层使用三值(或二值在旧版本中)精度量化权重,并将激活值量化为 8 位精度。

训练过程¶
在训练过程中,我们首先使用对称张量量化方法将权重量化为三值(-1, 0, 1)。具体步骤如下:
计算权重的平均绝对值: $$ \text{scale}_w = \frac{1}{\frac{1}{nm} \sum_{ij} |W_{ij}|} $$
其中 $W$ 是权重矩阵, $n$ 和 $m$ 分别是矩阵的行数和列数。
量化权重: $$ W_q = \text{clamp}_{[-1,1]}(\text{round}(W \times \text{scale})) $$ 这里,我们先将权重乘以缩放因子,然后四舍五入并限制在 -1 到 1 之间。
反量化权重: $$ W_{\text{dequantized}} = W_q \times \text{scale}_w $$
接下来,我们将激活值量化为指定的位宽(例如,8 位),使用 absmax 量化方法(对称通道量化)。具体步骤如下:
计算激活值的最大绝对值: $$ \text{scale}_x = \frac{127}{|X|_{\text{max}, \, \text{dim}=-1}} $$
量化激活值: $$ X_q = \text{clamp}_{[-128,127]}(\text{round}(X \times \text{scale})) $$
反量化激活值: $$ X_{\text{dequantized}} = X_q \times \text{scale}_x $$
更多关于如何训练和微调 BitNet 模型的信息,请查看这篇 博客文章。
从 Hub 加载 BitNet 模型¶
BitNet 模型不能动态量化,它们需要预先训练或微调,应用量化技术(即量化感知训练)。训练完成后,这些模型已经量化完成,并以打包的形式在 Hub 上提供。
加载量化模型的方法如下: