【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skillsname: torch-npugraph-ex-runtime-error-diagnosis description: PyTorch 昇腾 NPU npugraph_ex 运行时报错诊断。覆盖 ACL graph 已 capture 成功之后replay / kernel launch / 通信 / 内存 / device API 阶段的报错排查包括 aclnnXxx 算子失败、HCCL 错误、stream/event 同步、segfault、device side assert、OOM 等场景。本 skill 由 dfx-triage 路由进入。触发当用户遇到 npugraph_ex replay / aclnn / HCCL / stream / OOM 等运行时报错时加载。关键词runtime、ACL、aclnn、HCCL、stream、event、device side assert、segfault、OOM、CANN plog。npugraph_ex 运行时报错诊断本 skill 处理「模型已在执行」阶段的崩溃ACL graph capture 已成功、replay 后才出现的报错。 由torch-npugraph-ex-dfx-triage路由进入如果尚未做首轮日志收集先回到 triage skill 完成采集再进入本 skill。适用范围aclnnXxx算子执行失败、ACL runtime 报错、acl errorHCCL 通信错误hccl error、ranktable、ring 异常stream/event同步错误、跨流依赖丢失device side assert、segfault、kernel illegal memory accessdevice OOM、内存碎片、workspace 不足用户脚本「训练 / 推理跑了 N 步后才崩」不属于本 skill 的场景编译期 / capture 期就报错 → 转torch-npugraph-ex-compile-error-diagnosis。边界情况capture 阶段无报错、replay 算子才 fail默认归本 skill若证据不足以判定可同时参考 compile-error skill 的 Meta / capture 部分。总原则先找首个致因报错看 runtime-error 相关日志时优先锚定首个致因报错不要被后续 task fail、stream 同步失败、graph replay 失败等次生报错带偏。优先找第一个 ACL / HCCL /aclnnXxx/ OOM / stream-event 相关致因报错不要只根据尾部 device error、统一 runtime 报错或 replay 失败做归因若后面是一串级联失败优先选择最早那个足以解释后续连锁错误的 runtime 异常推荐启用的日志开关在已收集的全量日志基础上若证据不足可补充打开ASCEND_GLOBAL_LOG_LEVEL1INFO或0DEBUG谨慎ASCEND_SLOG_PRINT_TO_STDOUT1HCCL_LOGIC_SUPERPOD_ID、HCCL_BUFFSIZE、HCCL_EXEC_TIMEOUT等通信相关变量按需收集 CANN plog默认在~/ascend/log/定位时间戳与崩溃栈对齐诊断执行规则先定界子系统报错关键字含aclnn/aclop→ 算子层kernel / tiling / shape报错关键字含HCCL/hccl→ 通信层ranktable、链路、buffer报错关键字含stream/event/synchronize→ 流 / 事件 / 同步层报错关键字含OOM/out of memory/allocate→ 内存层segfault/device side assert/ illegal memory access → 先看是否落在算子层再看是否为 host 侧指针 / 索引越界先锚定首个致因报错对齐 stdout/stderr、CANN plog、HCCL log 的时间戳优先找出第一个足以解释后续 task / replay / device 失败的 runtime 异常。就近读取源码若报错栈已指向torch_npu中具体文件 / 函数如 stream / event / NPU API先读取该上下文附近源码。直接证据不足时再补查按下方「问题定位时的本地 CANN / 桥接层检索」继续缩小范围不要直接套用 compile-error 的源码检索思路。固定输出格式问题归类算子 / 通信 / 流事件 / 内存 / device→ 证据 → 最可能根因 → 下一步最小动作包含建议的环境变量或最小化复现。默认不回到模式选型除非根因已经明确证明 npugraph_ex 不适配该模型否则不直接建议换 backend可建议局部 fallback eager 作为规避。问题定位时的本地 CANN / 桥接层检索runtime-error 的定位策略不同于compile-error优先看本地 CANN 安装产物、plog、错误码、算子规格和 HCCL/ACL 运行时线索torch_npu/ TorchAir 仓库源码只用于补桥接层证据不作为第一入口。直接证据优先报错栈、CANN plog、HCCL log 已给出 error code、算子名、stream id、task id、rank、具体 API如aclnnXxx/aclrt时先围绕这些直接证据定位不要先泛读仓库源码。本地 CANN 安装产物优先优先检查本机 CANN 安装目录如$ASCEND_HOME_PATH或/usr/local/Ascend/下可直接支撑归因的内容例如runtime / operator / compiler 相关日志与 plogACL / HCCL 错误码说明、头文件、API 声明算子规格、配置、约束说明以及与报错算子对应的文档已安装.so、符号名、版本信息、依赖关系再看本地 Python 桥接层若需要确认 PyTorch 调 CANN 的桥接路径、参数传递、stream/event 封装再读取本地site-packages/torch_npu/、site-packages/torchair/。仓库源码兜底只有当本地日志和安装产物仍不足以解释问题时再补查下列仓库仓库地址适用阶段Ascend/pytorchhttps://gitcode.com/Ascend/pytorch.gittorch_npuruntime、NPU API、stream / event、多流、内存分配器、自定义算子桥接TorchAirhttps://gitcode.com/Ascend/torchair.gitnpugraph_exreplay 链路、capture 后执行入口、replace_stream_event等 passupstream PyTorchhttps://github.com/pytorch/pytorch.gittorch.cuda风格的 stream / event 抽象仅作为torch_npu桥接对照若本地安装的 CANN 不包含可读源码不要假设一定能看到“CANN 内部实现”优先依赖 plog、错误码、算子规格、头文件、符号和版本信息做归因。本地拉取示例仅在本地日志 / 安装产物不足且确需看桥接层源码时git clone --depth 1 --filterblob:none --sparse -b v2.7.1 https://gitcode.com/Ascend/pytorch.git ~/.cache/torch-src cd ~/.cache/torch-src git sparse-checkout set torch_npu docs/zh git clone --depth 1 --filterblob:none --sparse https://gitcode.com/Ascend/torchair.git ~/.cache/torchair-src cd ~/.cache/torchair-src git sparse-checkout set npugraph_ex docs/zh按子系统补查算子失败 → 先看 CANN plog、算子名、错误码、算子规格 / 约束必要时再看torch_npu算子桥接通信失败 → 先看 HCCL 日志、ranktable、网络 / 拓扑 / 环境变量必要时再看 Ascend/pytorch HCCL 桥接流 / 事件 → 先看 ACL / CANN runtime 日志和 API 语义若怀疑桥接封装再看torch_npustream/event 实现与 TorchAirreplace_stream_event内存 → 先看 CANN/ACL 内存报错、workspace 分配信息、OOM 上下文必要时再看torch_npuallocator 与PYTORCH_NPU_ALLOC_CONF兜底文档torch-npugraph-ex-knowledge中「调试定位 / 运行时报错」小节案例集appendix/cases/runtime_cases.md若仓库中存在PyTorch NPU 参考文档stream / event / multi-stream / 内存管理章节【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考