text-generation-inference 文件

量化

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

量化

TGI 提供了多種量化方案,可根據您的用例高效快速地執行 LLM。TGI 支援 GPTQ、AWQ、bits-and-bytes、EETQ、Marlin、EXL2 和 fp8 量化。

要利用 GPTQ、AWQ、Marlin 和 EXL2 量化,您必須提供預量化的權重。而對於 bits-and-bytes、EETQ 和 fp8,權重由 TGI 動態量化。

我們建議使用官方量化指令碼來建立您的量化模型。

  1. AWQ
  2. GPTQ/Marlin
  3. EXL2

對於動態量化,您只需傳遞一種受支援的量化型別,TGI 會處理其餘部分。

使用 bitsandbytes、EETQ 和 fp8 進行量化

bitsandbytes 是一個用於對模型應用 8 位和 4 位量化的庫。與 GPTQ 量化不同,bitsandbytes 不需要校準資料集或任何後處理——權重在載入時會自動量化。然而,使用 bitsandbytes 的推理速度比 GPTQ 或 FP16 精度慢。

8 位量化使數十億引數規模的模型能夠適應較小的硬體,而不會過多降低效能。在 TGI 中,您可以透過新增 --quantize bitsandbytes 來使用 8 位量化,如下所示 👇

docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:3.3.4 --model-id $model --quantize bitsandbytes

使用 bitsandbytes 也可以進行 4 位量化。您可以選擇以下 4 位資料型別之一:4 位浮點數 (fp4) 或 4 位 NormalFloat (nf4)。這些資料型別是在引數高效微調的背景下引入的,但您可以透過在載入時自動轉換模型權重來將它們應用於推理。

在 TGI 中,您可以透過新增 --quantize bitsandbytes-nf4--quantize bitsandbytes-fp4 來使用 4 位量化,如下所示 👇

docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:3.3.4 --model-id $model --quantize bitsandbytes-nf4

您可以透過閱讀這篇博文獲取有關 8 位量化的更多資訊,透過閱讀這篇博文獲取有關 4 位量化的更多資訊。

同樣,您可以傳遞 --quantize eetq--quantize fp8 以分別使用相應的量化方案。

此外,TGI 允許透過傳遞模型權重和校準資料集直接建立 GPTQ 量化模型。

使用 GPTQ 進行量化

GPTQ 是一種訓練後量化方法,用於使模型更小。它透過找到該權重的壓縮版本來量化層,從而產生最小均方誤差,如下所示 👇

給定一個層ll權重矩陣為WlW_{l}和層輸入XlX_{l},找到量化權重hatWl\\hat{W}_{l}: (W^l=argminWl^WlXW^lX22)({\hat{W}_{l}}^{*} = argmin_{\hat{W_{l}}} ||W_{l}X-\hat{W}_{l}X||^{2}_{2})

TGI 允許您執行一個已經過 GPTQ 量化的模型(可在此處檢視可用模型 此處),或使用量化指令碼量化您選擇的模型。您可以透過傳遞 —quantize 來執行一個量化模型,如下所示 👇

docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:3.3.4 --model-id $model --quantize gptq

請注意,TGI 的 GPTQ 實現並未在底層使用 AutoGPTQ。然而,使用 AutoGPTQ 或 Optimum 量化的模型仍然可以由 TGI 提供服務。

要使用校準資料集對給定模型進行 GPTQ 量化,只需執行

text-generation-server quantize tiiuae/falcon-40b /data/falcon-40b-gptq
# Add --upload-to-model-id MYUSERNAME/falcon-40b to push the created model to the hub directly

這將建立一個包含量化檔案的新目錄,您可以將其用於

text-generation-launcher --model-id /data/falcon-40b-gptq/ --sharded true --num-shard 2 --quantize gptq

您可以透過執行 text-generation-server quantize --help 來了解更多關於量化選項的資訊。

如果您希望對 GPTQ 模型做更多操作(例如,在其上訓練一個介面卡),您可以在此閱讀關於 transformers GPTQ 整合的內容。您可以從論文中瞭解更多關於 GPTQ 的資訊。

< > 在 GitHub 上更新

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