第37章:编译优化、CUDA Graph 与算子融合
1. 项目背景某推理优化团队在对vLLM进行深度优化时发现了几个奇怪的现象:第一,同一个模型、同一张A100上,enforce_eager=False(开启CUDA Graph)时的TPOT是38ms,enforce_eager=True(Eager模式)是52ms——差了37%。但团队不知道为什么Graph能快这么多。第二,团队尝试用torch.compile进一步优化模型forward,但在vLLM的Continuous Batching环境下,torch.compile的重编译(recompilation)频繁触发——因为batch大小持续变化,每次变化都触发一次图编译,编译耗时反而超过了运行收益。第三,团队发现vLLM的MoE Kernel(fused_moe_kernel)在某些专家组合下快得惊人,但在另一些组合下又变慢——后来发现是"算子融合"程度不同导致的。痛点:现代GPU的性能优化早已超越"手写CUDA Kernel"的阶段。编译优化(torch.compile+ Inductor)、图捕获(CUDA Graph)、算子融合(Fused Kernel)——这三项技术能否在vLLM的动态batch场景下发挥效果,取决于对它们的工作原理和适用边界的深刻理解。盲目开启"优化开关"可能适得其反。本章将深入vLLM的编译优化体系,理解CUDA Graph的捕获/复用/回退机制、torch.compile在

相关新闻