Transformers 文件

BitNet

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

BitNet

BitNet 用專門的 BitLinear 層替換了多頭注意力(Multi-Head Attention)和前饋網路中的傳統線性層。BitLinear 層使用三元精度(值為 -1、0 和 1)量化權重,並將啟用量化為 8 位精度。

Alt Text
採用 BitLinear 層的 BitNet 架構。

BitNet 模型無法動態量化。它們需要在預訓練或微調期間進行量化,因為它是一種量化感知訓練 (QAT) 技術。在訓練期間,權重透過對稱的每張量量化被量化為三元值。

  1. 計算權重矩陣絕對值的平均值並用作尺度。
  2. 將權重除以尺度,對值進行四捨五入,將其限制在 -1 和 1 之間,然後重新縮放以繼續進行全精度計算。
  3. 啟用使用 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 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.