跳转至

推理性能调优概述

概述

vLLM 和 SGLang 等开源推理引擎具有出色的推理性能,但经过调优与未经调优的部署之间,性能差距可能比预期更大。最有效的验证方法是在目标设备上,使用实际业务流量运行基准测试。我们也针对不同推理引擎、GPU 设备、模型和配置参数组合进行了大量实验。这些实验得出的一些普遍结论,可以在深入优化之前提供初步指导。

实验观察

以下结论基于当前实验范围,可能随着测试增加或社区进展而更新、补充。有关特定模型在特定 GPU 上的优化方法和结论,请参阅对应的实验文档。

推理引擎

选择推理引擎至关重要。推理优化通常需要针对具体场景对引擎进行细致调优,例如特定模型、量化方案、GPU 等。因此,引擎是否针对目标场景进行优化,会显著影响性能。例如,在 A100 GPU 上运行 gpt-oss-20b 时,vLLM 的速度超过 SGLang/TensorRT-LLM 的十倍(查看详情)。但这并不意味着某个引擎在所有场景下都优于其他引擎。在我们的实验中,vLLM、SGLang 和 TensorRT-LLM 分别在不同场景下取得了最佳性能。

  1. vLLM 具有出色的使用体验、较强的兼容性,以及全面且及时的模型支持。其推理性能稳定出色,适用于广泛场景,是功能全面、可靠的选择。
  2. SGLang 同样具有出色的使用体验和有竞争力的推理性能。虽然其兼容性和模型支持范围略逊于 vLLM,但对新模型的支持速度仍处于领先水平。它在推测解码,以及在 Hopper GPU 上运行大型 FP8 MoE 模型时尤其出色。
  3. TensorRT-LLM 提供经过深度优化的推理性能,在某些实验配置中表现突出。但其适用范围更为专门,与硬件厂商的耦合更紧密,对新发布模型的支持也相对较慢。

量化

  1. 量化是最大化吞吐量的重要技术。
  2. 权重与激活值量化也有助于降低延迟。

推测解码

推测解码是优化延迟的有效方法,但其效果会随着批大小增加而显著下降。因此,它不适合用于提高吞吐量。

并行策略

并行策略是多 GPU 分布式推理的关键。

内核

vLLM/SGLang 通常会根据硬件环境提供合理的默认选项。在大多数场景中,默认注意力后端就是最合适的选择。DeepGEMM 等内核优化适用于特定精度或 GPU。虽然它们通常默认启用,但在某些情况下禁用可能更合适。

泛化表现

表现良好的部署配置,通常在不同输入序列长度(ISL)和输出序列长度(OSL)下都能带来性能提升,但提升比例可能差异很大。

进一步调优

部分参数需要根据实际推理请求特征调优,例如 ISL/OSL、数据中的前缀重复情况、并发量等,包括:

  1. 最大批大小(与并发量相关)
  2. 调度配置(例如 API server 横向扩展 [vLLM]、异步调度 [vLLM]、调度保守程度 [SGLang]、调度策略 [SGLang])(与多种因素相关)
  3. 扩展 KV Cache(与序列长度和前缀重复情况相关)
  4. CUDA graph(与并发量相关)
  5. Torch compile(与模型架构和并发量相关)