优化级别¶
概述¶
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 相同。
故障排除¶
常见问题¶
- 启动时间太长:使用
-O0或-O1以加快启动速度 - 编译错误:使用
debug_dump_path获取其他调试信息 - 性能问题:确保生产环境使用
-O2