Text Generation Inference 文件
量化
並獲得增強的文件體驗
開始使用
量化 (Quantization)
TGI 提供了多種量化方案,可根據您的使用情境高效且快速地執行大型語言模型 (LLM)。TGI 支援 GPTQ、AWQ、bits-and-bytes、EETQ、Marlin、EXL2 和 fp8 量化。
若要使用 GPTQ、AWQ、Marlin 和 EXL2 量化,您必須提供預先量化好的權重。至於 bits-and-bytes、EETQ 和 fp8,權重則由 TGI 在執行時(on the fly)動態進行量化。
我們建議使用官方提供的量化腳本來建立您的量化模型。
對於即時量化,您只需要傳入其中一種支援的量化類型,TGI 便會處理其餘事項。
使用 bitsandbytes、EETQ 與 fp8 進行量化
bitsandbytes 是一個用於對模型應用 8-bit 和 4-bit 量化的函式庫。與 GPTQ 量化不同,bitsandbytes 不需要校準資料集或任何後處理——權重會在載入時自動量化。然而,使用 bitsandbytes 進行推論的速度會比 GPTQ 或 FP16 精度慢。
8-bit 量化使數十億參數規模的模型能夠在效能損失不大的情況下,在較小的硬體上執行。在 TGI 中,您可以透過增加 --quantize bitsandbytes 來使用 8-bit 量化,如下所示 👇
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:3.3.5 --model-id $model --quantize bitsandbytes使用 bitsandbytes 也可以進行 4-bit 量化。您可以選擇下列其中一種 4-bit 資料類型:4-bit float (fp4) 或 4-bit NormalFloat (nf4)。這些資料類型最初是在參數高效微調(PEFT)的背景下引入的,但您也可以透過在載入時自動轉換模型權重的方式,將它們應用於推論。
在 TGI 中,您可以透過增加 --quantize bitsandbytes-nf4 或 --quantize bitsandbytes-fp4 來使用 4-bit 量化,如下所示 👇
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:3.3.5 --model-id $model --quantize bitsandbytes-nf4您可以閱讀這篇 部落格文章 了解更多關於 8-bit 量化的資訊,並閱讀 這篇部落格文章 了解 4-bit 量化。
同樣地,您可以傳入 --quantize eetq 或 --quantize fp8 來使用相應的量化方案。
此外,TGI 允許透過傳入模型權重和校準資料集來直接建立 GPTQ 量化模型。
使用 GPTQ 進行量化
GPTQ 是一種訓練後量化方法,用於縮小模型大小。它透過尋找權重的壓縮版本來量化層,使平均平方誤差最小化,如下所示 👇
給定一層具有權重矩陣和層輸入,尋找量化權重:
TGI 允許您執行已經過 GPTQ 量化的模型(請參閱此處可用的模型 here),也可以使用量化腳本量化您選擇的模型。您只需傳入 —quantize 即可執行量化模型,如下所示 👇
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:3.3.5 --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 模型執行更多操作(例如在頂部訓練適配器 adapter),您可以在 此處 閱讀關於 Transformers GPTQ 整合的資訊。您也可以從 論文 中了解更多關於 GPTQ 的資訊。
在 GitHub 上更新