用途:诊断并修复 AOTInductor(AOTI)常见问题,适用于出现段错误、异常、崩溃、输出错误、设备不匹配、常量加载失败等场景。
主要能力:按错误信息分流,例如匹配到 Assertion index out of bounds: 0 <= tmpN < ksM failed 时转入 triton-index-out-of-bounds.md 指南;其余错误按通用流程处理。核心第一步是核对编译设备与加载设备类型一致、运行时输入设备与编译模型一致、输入形状与编译时形状一致(或满足动态形状约束)。AOTI 要求编译与加载使用相同设备类型,跨设备加载(如 GPU 编译、CPU 加载)不受支持,仅设备索引可不同。
使用方式:运行时可用 AOTI_RUNTIME_CHECK_INPUTS=1 校验输入设备、dtype、尺寸和步长,得到更明确的报错。排查 CUDA 非法内存访问时,先用 AOTI_RUNTIME_CHECK_INPUTS=1 与 TORCHINDUCTOR_NAN_ASSERTS=1(编译期生效);再用 PYTORCH_NO_CUDA_MEMORY_CACHING=1 与 CUDA_LAUNCH_BLOCKING=1(运行期生效)使错误可复现;随后用 AOT_INDUCTOR_DEBUG_INTERMEDIATE_VALUE_PRINTER=3 逐个打印内核,配合 AOT_INDUCTOR_FILTERED_KERNELS_TO_PRINT 检查特定内核输入。还可使用 tlparse / TORCH_TRACE、TORCH_LOGS="+inductor,output_code"、TORCH_SHOW_CPP_STACKTRACES=1 辅助定位。
适用场景与限制:动态形状和 C++ 自定义算子(尤其动态形状下 meta 函数可能需要 Symint 化)是常见问题来源。API 方面,torch._export.aot_compile() 与 torch._export.aot_load() 已弃用,当前使用 torch._inductor.aoti_compile_and_package() 与 torch._inductor.aoti_load_package(),新 API 在包中存储设备元数据,加载时自动使用正确设备类型,只能改设备索引而非设备类型。具体修复步骤与更多细节以对应子指南为准。