Transformers 文件

選擇量化方法

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

選擇量化方法

Transformers 中提供了多種量化方法用於推理和微調。本指南將幫助您根據用例選擇最常用且生產就緒的量化技術,並介紹每種技術的優缺點。

要全面瞭解所有支援的方法及其功能,請參閱概述中的表格。

推理

請考慮以下量化方法用於推理。

量化方法 用例
bitsandbytes 易用性,以及在 NVIDIA GPU 上的 QLoRA 微調
壓縮張量 載入特定量化格式 (FP8, 稀疏)
GPTQModel 或 AWQ 在預先校準的情況下具有良好的 4 位精度
HQQ 無需校準即可快速進行即時量化
torchao 使用 torch.compile 實現靈活性和快速推理

無需校準(即時量化)

這些方法通常更易於使用,因為它們不需要單獨的校準資料集或步驟。

bitsandbytes

優點 缺點
非常簡單,推理無需校準資料集。 主要針對 NVIDIA GPU (CUDA) 進行了最佳化。
社群支援良好,應用廣泛。 不能保證推理速度提升。

更多詳情請參閱 bitsandbytes 文件

HQQ(半二次量化)

優點 缺點
快速量化過程,無需校準資料。 在小於 4 位的位深度下,精度可能會顯著下降。
支援多種後端以實現快速推理。 除非使用 torch.compile 或後端,否則推理速度可能無法與其他方法匹配。
torch.compile 相容。
支援廣泛的位深度(8、4、3、2、1 位)。

更多詳情請參閱 HQQ 文件

torchao

優點 缺點
torch.compile 強整合,可實現潛在的速度提升。 較新的庫,生態系統仍在發展中。
提供不錯的 CPU 量化支援。 效能取決於 torch.compile 的良好執行。
量化方案靈活(int8、int4、fp8)。 4 位量化 (int4wo) 可能無法在精度上與 GPTQ/AWQ 匹敵。

更多詳情請參閱 torchao 文件

基於校準的量化

這些方法需要使用資料集進行預先校準步驟,以可能實現更高的精度。

GPTQ/GPTQModel

8B 模型校準在大約 20 分鐘內完成,使用一塊 A100 GPU。

優點 缺點
通常能達到高精度。 需要校準資料集和單獨的校準步驟。
可以提高推理速度。 可能會在校準資料上過擬合。
Hugging Face Hub 上有許多預量化的 GPTQ 模型。

更多詳情請參閱 GPTQ 文件

AWQ(啟用感知權重校準)

8B 模型校準在大約 10 分鐘內完成,使用一塊 A100 GPU。

優點 缺點
通常在 4 位精度下實現高精度。(有時在特定任務上超過 GPTQ。) 如果自行量化,則需要校準。
可以提高推理速度。
校準時間比 GPTQ 短。
Hugging Face Hub 上有許多預量化的 AWQ 模型。

更多詳情請參閱 AWQ 文件

載入特定格式

compressed-tensors

優點 缺點
支援靈活的格式,包括 FP8 和稀疏性。 主要用於載入預量化模型。
不直接在 Transformers 中執行量化。

更多詳情請參閱 compressed-tensors 文件

微調

在微調期間考慮以下量化方法以節省記憶體。

bitsandbytes

  • 描述:透過 PEFT 進行 QLoRA 微調的標準方法。
  • 優點:支援在消費級 GPU 上微調大型模型;對 PEFT 有廣泛的支援和文件。
  • 缺點:主要針對 NVIDIA GPU。

其他方法也相容 PEFT,但 bitsandbytes 是 QLoRA 最成熟和直接的路徑。

更多詳情請參閱 bitsandbytes 文件PEFT 文件

研究

諸如 AQLMSpQRVPTQHIGGS 等方法正在突破壓縮邊界(小於 2 位)或探索新穎技術。

  • 如果滿足以下條件,請考慮使用這些方法:
    • 您需要極高的壓縮率(小於 4 位)。
    • 您正在進行研究或需要從其相關論文中獲得最先進的結果。
    • 您有足夠的計算資源可用於潛在複雜的量化過程。我們建議在選擇一種方法用於生產之前,仔細查閱每種方法的文件和相關論文。

基準比較

為了對不同的量化方法進行定量比較,我們對 Llama 3.1 8B 和 70B 模型上的幾種常用技術進行了基準測試。下表顯示了精度(越高越好)、以每秒令牌數衡量的推理吞吐量(越高越好)、以 GB 為單位的峰值 VRAM 使用量(越低越好)和量化時間的結果。

效能指標是在 Llama 3.1 70B(bfloat16)上使用 2 塊 NVIDIA A100 80GB GPU,FP8 方法使用 1 塊 NVIDIA H100 80GB GPU,所有其他方法使用 1 塊 NVIDIA A100 80GB GPU 測量的。吞吐量是在批次大小為 1 且生成 64 個令牌的情況下測量的。適用於 torch.compile 和 Marlin 核心的結果已包含在內。

主要結論如下:

量化與方法 記憶體節省 (vs bf16) 準確率 其他注意事項
8 位 (bnb-int8, HQQ, Quanto, torchao, fp8) 約 2 倍 非常接近基線 bf16 模型
4 位 (AWQ, GPTQ, HQQ, bnb-nf4) 約 4 倍 相對較高的精度 AWQ/GPTQ 通常在精度上領先,但需要校準。HQQ/bnb-nf4 易於即時使用。
4 位以下 (VPTQ, AQLM, 2 位 GPTQ) 極端 (>4 倍) 顯著下降,尤其是在 2 位時 量化時間可能非常長 (AQLM, VPTQ)。效能各異。

始終在您的特定任務和硬體上對量化模型的效能(精度和速度)進行基準測試,以確保其符合您的要求。有關詳細的使用說明,請參閱上面連結的各個文件頁面。

< > 在 GitHub 上更新

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