用途:帮助诊断和修复 AOTInductor (AOTI) 的常见问题,如段错误、设备不匹配错误、常量加载失败,以及运行时错误。
错误路由:先根据报错信息分流。若匹配 Assertion index out of bounds: 0 <= tmpN < ksM failed 这类 Triton 越界模式,按 triton-index-out-of-bounds.md 处理;其他错误继续使用通用检查流程。
首要检查(对所有 AOTI 错误都应先做):确认编译设备与加载设备一致、运行时输入设备与编译模型一致、输入形状与编译时形状一致(或满足动态形状约束)。AOTI 要求编译与加载使用相同设备类型:CUDA 编译须 CUDA 加载,CPU 编译须 CPU 加载,设备索引可不同,跨设备类型(如 GPU 编译 CPU 加载)不受支持。可用 AOTI_RUNTIME_CHECK_INPUTS=1 获得更明确的输入校验错误。
CUDA 非法内存访问 (IMA) 调试:先用 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 过滤指定内核。其他工具包括 TORCH_TRACE/tlparse、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 在包中存储设备元数据,加载时自动使用正确设备类型,只能改设备索引而非设备类型。
限制:资料未提供该技能的具体安装命令、价格或平台支持范围,暂未提供。