torch.compile的dynamic=True?动态shape的优化困境?torch.compile的dynamic=True?
动态 shape:batch、seq_len 等维度在运行时变化(如不同请求不同长度)。困境:(1)编译/优化:TensorRT、torch.compile 等常针对固定 shape 做 kernel 选择与融合,动态时需为多种 shape 编译或 runtime 选择,增加编译时间与缓存复杂度;(2)CUDA Graph:图内 size 固定,shape 变需重捕或多图;(3)性能:同一 kernel 在不同 shape 下效率不同,动态难以「每 shape 最优」。
torch.compile(…, dynamic=True):告诉编译器 batch 或某些维是动态的,生成的代码会保留动态分支或参数化 shape,在运行时按实际 shape 执行,而非为单一 shape 特化。好处:一套编译结果可应对多种 shape,减少 recompile。代价:可能无法做某些强依赖固定 shape 的优化(如部分融合、静态分配),性能可能略逊于固定 shape 的专门编译。适用:推理请求 batch/seq 多变、或训练中 batch 不固定时使用。
| 返回模块 | 返回总览 |