viable/strict/1786337491: Fix dynamic output sizes for adaptive avg pool lowering (#185369)
PyTorch 的 Inductor 在 torch.compile(dynamic=True) 下处理 aten._adaptive_avg_pool2d 时,当 output_size 为符号 Python 参数时,最大池化窗口可能为 SymPy 表达式,导致 Python 控制流和循环边界使用符号表达式而崩溃。修复通过 sizevars.guard_or_true 保护大窗口回退谓词,并保护小窗口展开边界,同时添加 CPU 回归测试。
Development
- First Reportviable/strict/1786337491: Fix dynamic output sizes for adaptive avg pool lowering (#185369)PyTorch Core
- Industry Responsetrunk/f4ae962662c5bf1b3bc9b4f179d426546edf30c0: Fix dynamic output sizes for adaptive avg pool lowering (#185369)PyTorch Core
- Current Assessment该修复反映了 PyTorch 在动态形状编译方面的持续改进,对依赖 torch.compile 动态形状的 AI 框架和推理优化有积极影响。Agent Pulse · analysis
PyTorch 的 Inductor 在 torch.compile(dynamic=True) 下处理 aten._adaptive_avg_pool2d 时,当 output_size 为符号 Python 参数时,最大池化窗口可能为 SymPy 表达式,导致 Python 控制流和循环边界使用符号表达式而崩溃。修复通过 sizevars.guard_or_true 保护大窗口回退谓词,并保护小窗口展开边界,同时添加 CPU 回归测试。
该修复表明 PyTorch 的 Inductor 在动态形状下对自适应池化的降级处理存在符号表达式误用问题,通过显式守卫符号决策来保持静态路径的代码生成策略,避免 SymPy 真值错误。
该修复反映了 PyTorch 在动态形状编译方面的持续改进,对依赖 torch.compile 动态形状的 AI 框架和推理优化有积极影响。
该修复提升了 PyTorch 在动态形状场景下的稳定性和可用性,对使用 torch.compile 的 AI 应用开发和部署有直接价值。
未来可能进一步重构为真正的 Reduction.create 路径以支持符号窗口大小,但当前修复优先保证正确性。