问题域/PD-383

CUDA Graph编译优化

CUDA Graph & Compilation

通过CUDA Graph捕获和torch.compile编译消除kernel启动开销

子问题

1.Graph捕获与padding策略

2.Piecewise vs Full模式选择

3.编译缓存管理

4.动态shape处理

5.Guard丢弃与重编译防护

6.Piecewise子图间GC与内存池协调

7.AOT编译产物的持久化与增量加载

8.LoRA等条件特化的Graph key设计

各项目的解法1 solutions

Signals

横向对比

维度vLLM
Graph捕获模式Piecewise(按splitting_ops拆分子图)+ Full(整图)双模式,CudagraphDispatcher运行时动态选择
Padding策略预计算查找表,batch size向上对齐到capture_sizes列表值,支持LoRA count特化
编译集成torch.compile + VllmBackend自定义后端,guard-free单次编译,Inductor/Eager双适配器
缓存管理CompilerManager三级缓存(内存→磁盘→AOT),SHA-256 hash key,支持增量加载
内存优化全局graph_pool共享,weak_ref_tensors释放中间输出,GC禁用减少捕获延迟
平台抽象AbstractStaticGraphWrapper Protocol + 平台解析,支持CUDA/HPU等多加速器

最佳实践

1.使用O2优化级别获得最佳性能

2.监控CUDAGraph padding率避免浪费

3.用frozen dataclass作为Graph dispatch key确保可哈希

4.Piecewise模式下禁用中间子图的GC加速捕获

5.通过CompilationCounter全局计数器实现编译流程可观测

6.用bytecode hook拦截编译产物避免Dynamo重入