跳到內容

最佳化級別

概述

vLLM 現在支援最佳化級別(-O0-O1-O2-O3)。最佳化級別為使用者提供了一種直觀的機制,可以在啟動時間和效能之間進行權衡。級別越高,效能越好,但啟動時間也越長。這些最佳化級別帶有相關的預設設定,以幫助使用者獲得期望的開箱即用效能。重要的是,最佳化級別設定的預設值純粹是預設值;顯式的使用者設定不會被覆蓋。

級別摘要和使用示例

# CLI usage
python -m vllm.entrypoints.api_server --model RedHatAI/Llama-3.2-1B-FP8 -O0

# Python API usage
from vllm.entrypoints.llm import LLM

llm = LLM(
    model="RedHatAI/Llama-3.2-1B-FP8",
    optimization_level=0
)

-O1: 快速最佳化

  • 啟動:中等啟動時間
  • 效能:Inductor 編譯,CUDAGraphMode.PIECEWISE
  • 用例:平衡大多數開發場景
# CLI usage
python -m vllm.entrypoints.api_server --model RedHatAI/Llama-3.2-1B-FP8 -O1

# Python API usage
from vllm.entrypoints.llm import LLM

llm = LLM(
    model="RedHatAI/Llama-3.2-1B-FP8",
    optimization_level=1
)

-O2: 完全最佳化(預設)

  • 啟動:啟動時間較長
  • 效能-O1 + CUDAGraphMode.FULL_AND_PIECEWISE
  • 用例:對效能要求較高的生產工作負載。這是預設用例。它也與之前的預設設定非常相似。主要區別在於啟用了 noop 和 fusion 標誌。
# CLI usage (default, so optional)
python -m vllm.entrypoints.api_server --model RedHatAI/Llama-3.2-1B-FP8 -O2

# Python API usage
from vllm.entrypoints.llm import LLM

llm = LLM(
    model="RedHatAI/Llama-3.2-1B-FP8",
    optimization_level=2  # This is the default
)

-O3: 完全最佳化

仍在開發中。已新增基礎架構以防止在未來版本中更改 API。目前表現與 O2 相同。

故障排除

常見問題

  1. 啟動時間太長:使用 -O0-O1 以加快啟動速度
  2. 編譯錯誤:使用 debug_dump_path 獲取其他除錯資訊
  3. 效能問題:確保生產環境使用 -O2