CANN 组织链接: https://atomgit.com/cann
oam-tools 仓库链接: https://gitcode.com/cann/oam-tools
1. oam-tools 在异构系统运维中的核心价值
在复杂的异构计算环境中,深度学习模型的失败点难以定位,因为故障可能发生在 Host 侧的框架、CANN 编译器(GE)、运行时(Runtime)、自定义算子(Ascend C)或底层硬件(NPU Driver/Firmware)中的任何一环。oam-tools 项目提供了一套高效、可靠的故障定位工具集,旨在通过自动化手段收集故障现场的关键信息,显著提升故障排查的效率(MTTR)。
该工具集的核心职能是克服日志分散性、环境漂移和硬件异常难以解析的"黑盒"挑战,为开发者和运维人员提供结构化的诊断报告。
2. 自动化信息采集与系统快照生成
故障定位的第一步是捕获执行失败时的精确上下文。oam-tools 提供了自动化脚本和 CLI 接口来收集多层次的系统信息。
2.1 层次化日志收集机制
工具支持采集并聚合跨越不同软件层的日志数据:
- 应用与框架日志: 收集 PyTorch/TensorFlow 适配层(Plugin)的报错信息,用于判断问题是否发生在算子调用前。
- CANN 运行时日志: 收集 GE(图引擎)的编译日志和 Runtime 的 Stream 调度信息。这些日志有助于判断图编译是否成功,以及是否存在显存分配失败或同步事件(Event)挂起的问题。
- 驱动与固件日志: 访问
/var/log等系统路径,获取 NPU 驱动层的错误记录和固件的初始化状态,用于判断是否为底层硬件或驱动问题。
2.2 环境一致性快照
为了解决环境漂移导致的测试不可复现问题,工具自动化采集了关键配置信息:
- 软件版本校验: 自动收集 CANN Toolkit 版本、驱动版本、操作系统内核版本以及 Python 依赖库的版本列表。
- 硬件状态快照: 执行
npu-smi info的结果会被捕获并格式化。这包括了 NPU 的温度、功耗、当前负载以及最关键的 HBM 内存使用情况,帮助判断是否是资源耗尽或过热导致的间歇性故障。
3. AI Core 错误(AI Core Error)的深度溯源机制
当 Ascend C 编写的算子或 ops-nn 算子执行失败时,硬件会触发异常中断,这是最难解析的故障类型。oam-tools 具备解析这些硬件转储数据的能力。
3.1 二进制 Dump 文件的解析流程
当 AI Core 发生非法操作(如内存越界、指令错误)时,硬件会将当前状态转储(Dump)到特定内存区域。
- 寄存器上下文捕获: 工具能够读取并解析转储的二进制数据,获取关键寄存器的值,包括程序计数器(PC)、状态标志位(Status Register)以及向量/矩阵单元的寄存器堆栈。
- 错误码翻译: 硬件生成的原始十六进制错误码会被工具自动翻译成可读的、具有明确含义的描述。
3.2 算子级错误关联与定位
故障定位的关键在于将硬件异常关联回上层逻辑。
- Task ID 关联: Runtime 记录的执行任务 ID 被用于索引相应的算子。工具利用此 ID,将硬件异常与算子的输入、输出张量上下文以及其在计算图中的位置关联起来。
- Ascend C 源码回溯: 结合编译时生成的调试信息(如果开发环境开启了调试模式),工具可以尝试将错误发生的 PC 地址映射到 Ascend C 源代码的具体行号,直接指向代码中的错误源头(例如,错误的边界检查或未初始化的指针使用)。
4. 性能分析与分布式诊断的支撑
oam-tools 不仅用于定位错误,也为性能分析提供了关键的上下文数据。
4.1 性能数据关联
当 Profiling 工具(如 PyTorch Profiler)生成执行时间线报告时,oam-tools 收集的详细日志可以作为上下文补充。如果 Profiling 显示某个算子耗时异常,开发者可以通过工具定位到该时段的系统日志,查看当时是否存在内存碎片化或硬件过热的警告信息。
4.2 分布式环境的同步故障诊断
在多机多卡训练中,通信错误是主要的稳定性挑战。
- Rank 间日志对齐: oam-tools 支持按 Rank ID 对日志进行筛选和排序。这使得开发者可以对比不同 Rank 在发生通信死锁或 AllReduce 超时时的执行状态。
- HCOMM/HCCL 链路诊断: 工具能够获取 HCOMM 层面报告的通信错误码,并关联到具体的物理链路(HCCS 或 RoCE),从而快速判断是软件逻辑错误还是物理网络层面的抖动。
5. 生产环境的自动化集成与流程左移
oam-tools 的 CLI 接口设计使其可以无缝集成到 CI/CD 流水线中。
5.1 自动化构建后的熔断机制
在持续集成流程中,测试用例执行失败后,工具可以自动触发一键信息收集。如果收集到的日志包含致命的 AI Core 错误,CI 流程可以立即熔断(Fail Fast),阻止带有硬件级错误的算子代码被合并到主分支。
5.2 故障报告的标准化输出
工具最终生成一个打包好的诊断 Artifact。该包结构清晰,包含所有必要的软硬件版本信息、故障时刻的精确日志片段和核心寄存器状态。这极大地提升了故障反馈的效率,使得 CANN 平台的开发和维护工作能够快速进入修复阶段。
6. 总结
oam-tools 项目构建了 CANN 异构计算系统可靠性的重要保障体系。它通过自动化、标准化的方式解决了复杂分布式环境下的故障信息采集难题,特别是对 AI Core 级别错误的解析能力,极大地加速了自定义算子(如 Ascend C 开发的 TBE 算子)的迭代速度和系统维护的可靠性。
CANN 组织链接: https://atomgit.com/cann
oam-tools 仓库链接: https://gitcode.com/cann/oam-tools