跳到内容

优化级别

概述

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