执行摘要
为 V2 模型 runner 的流水线并行添加 piecewise CUDA graph 支持,显著提升推理性能。
根据PR body描述,V2模型runner在流水线并行启用时无法使用CUDA graph捕获,导致回退到eager模式,性能受限。PR的目标是添加piecewise CUDA graph捕获支持以解决此问题,相关Issue #33960可能提供了进一步背景。PR作者提到"V2 model runner did not support CUDA graph capture with PP, falling back to eager mode. This PR adds piecewise CUDA graph capture for PP." 这明确了改进动机。
此PR值得精读,特别是对于从事CUDA graph优化或流水线并行开发的工程师。关注以下设计决策:
- 如何通过持久缓冲管理中间张量以支持图形重放。
num_reqs调整作为临时解决方案的权衡。- PP-aware的图形捕获实现细节,可作为处理分布式场景的范例。
Review评论中核心讨论点:
- 中间张量键一致性:gemini-code-assist[bot]建议在
model_runner.py中添加assertion以确保intermediate_tensors与self.intermediate_tensors的键匹配,避免潜在错误。此建议未直接回应或实现,但指出了潜在风险。 - num_reqs调整逻辑:yewentao256询问为何在cudagraph_utils.py中设置
num_reqs = 1,ZhanqiuHu解释为workaround以解决TRTLLM decode的uniform query length断言错误(flashinfer.py:1109)。调整被接受,但作者表示不确定是否为正确方法,可能需要后续改进。 - 全图形支持:WoosukKwon批准PR并提及将跟进FULL CUDA graph支持,暗示此PR是阶段性改进。
参与讨论