跳到內容

FP8 INC

vLLM 支援在 Intel® Gaudi® 2 和 Intel® Gaudi® 3 AI 加速器上使用 Intel® Neural Compressor (INC) 進行 FP8(8 位浮點)權重和啟用量化。目前,量化僅在 Llama 模型中進行了驗證。

Intel Gaudi 支援各種模組和函式的量化,包括但不限於 `Linear`、`KVCache`、`Matmul` 和 `Softmax`。欲瞭解更多資訊,請參閱:支援的模組\支援的函式\自定義修補模組

注意

在 Gaudi 加速器上使用 vLLM 執行量化模型需要測量檔案。FP8 模型校準過程在 vllm-hpu-extention 包中有所描述。

注意

`QUANT_CONFIG` 是一個環境變數,指向測量或量化的 JSON 配置檔案。測量配置檔案用於校準過程中,以收集給定模型的測量資料。量化配置用於推理期間。

使用 FP8 執行線上推理

完成模型校準過程並收集測量資料後,您可以使用以下命令執行 vLLM 的 FP8 推理。

export QUANT_CONFIG=/path/to/quant/config/inc/meta-llama-3.1-405b-instruct/maxabs_measure_g3.json
vllm serve meta-llama/Llama-3.1-405B-Instruct --quantization inc --kv-cache-dtype fp8_inc --tensor_paralel_size 8

提示

如果您只是使用 FP8 進行模型原型設計或測試,可以使用環境變數 `VLLM_SKIP_WARMUP=true` 來停用預熱階段,該階段可能需要很長時間。但是,我們不建議在生產環境中停用此功能,因為它會導致顯著的效能下降。

提示

使用 FP8 模型時,您可能會遇到由 FP8 操作長時間編譯引起的超時問題。為了緩解此問題,您可以使用以下環境變數:`VLLM_ENGINE_ITERATION_TIMEOUT_S` - 用於調整 vLLM 伺服器超時。您可以以秒為單位設定值,例如,600 等於 10 分鐘。`VLLM_RPC_TIMEOUT` - 用於調整 OpenAI 相容 API 使用的 RPC 協議超時。該值以微秒為單位,例如,600000 等於 10 分鐘。

使用 FP8 執行離線推理

要執行離線推理(在完成模型校準過程後)

  • 將環境變數 "QUANT_CONFIG" 設定為指向包含 QUANTIZE 模式的 JSON 配置檔案。
  • 將 `quantization=inc` 和 `kv_cache_dtype=fp8_inc` 作為引數傳遞給 `LLM` 物件。
  • 在執行結束時呼叫 `model_executor` 的 shutdown 方法。
from vllm import LLM
llm = LLM("llama3.1/Meta-Llama-3.1-8B-Instruct", quantization="inc", kv_cache_dtype="fp8_inc")
...
# Call llm.generate on the required prompts and sampling params.
...
llm.llm_engine.model_executor.shutdown()

模型權重上傳裝置

未量化的權重首先載入到 CPU,然後進行量化並傳輸到目標裝置 (HPU) 以執行模型。這減少了模型權重在裝置記憶體中的佔用,因為只有量化後的權重儲存在裝置記憶體中。