作者​:昇腾实战派
知识地图​:https://blog.csdn.net/Lumos_Lovegood/article/details/161601003

背景概述

在系统功能持续迭代过程中,为保障新版本环境的兼容性与稳定性,需将原有测试用例迁移至新部署的分布式测试环境进行验证。近期在执行从旧环境向新环境的用例迁移时,部分分布式测试用例出现执行失败现象,初步判断可能与环境配置、依赖版本或执行逻辑差异有关。本文旨在梳理该类问题的复现路径与排查方法,为后续类似场景提供标准化处理参考。


问题复现流程

当遇到用例执行异常时,可按照以下步骤进行系统性复现与定位:

  1. 查看日志溯源
    查看完整执行日志。

  2. 定位关键日志片段
    在日志中查找与问题现象相符的输出内容,重点关注错误堆栈、状态码、超时信息或异常提示。可参考如下典型日志。

    时间 级别 线程 ID 模块 内容
    2026-04-16 09:48:19.976 INFO ThreadID:281467863200832 lib.common.SSHClient-line:479 Send command: cd /autotest/pytorch/torch_autotest/model/scripts/ && bash start_train_container.sh -i drivingsdk_atk:py3.10_torch2.7.1 -m 8p -p /bin/bash
    2026-04-16 09:48:21.493 INFO ThreadID:281467863200832 lib.common.SSHClient-line:479 Send command: source /usr/local/Ascend/ascend-toolkit/set_env.sh && cd /autotest/pytorch/torch_autotest/pt_framework/distributed && python3 -m torch.distributed.launch --nproc_per_node=8 test_ddpmodel.py --bucket-cap-mb=25 --is-broadcast-buffers --precision=fp32
  3. 执行用例并观察结果

    • 若用例执行失败,且错误信息与日志中一致,则可确认问题已复现,进入深入分析阶段。
    • 若用例执行成功,但日志内容不符合预期,需进一步核查测试框架的校验逻辑。可能存在校验规则过于严格或预期输出未更新的情况,需结合用例代码与框架实现共同分析。

提示:若无法复现问题,建议优先确认测试环境状态是否稳定,包括网络、资源分配、依赖服务可用性等,排除环境干扰因素。


典型用例示例

以下为迁移过程中涉及的典型用例及其执行情况,供参考:

样例一

用例名称PT_Feature_ddp_base_class_bb_True_bcm_25MB_fup_False_gabv_False_sg_False_PT_2.1
执行命令

python run_test.py --case PT_Feature_ddp_base_class_bb_True_bcm_25MB_fup_False_gabv_False_sg_False_PT_2.1

执行结果

2026-04-20 02:19:29,691 - root - INFO - Deinit default process group success on rank0
Testcase OK
2026-04-20 02:19:29,707 - root - INFO - Deinit default process group success on rank4
Testcase OK
2026-04-20 02:19:29,748 - root - INFO - Deinit default process group success on rank5
Testcase OK
2026-04-20 02:19:29,761 - root - INFO - Deinit default process group success on rank7
Testcase OK
2026-04-20 02:19:29,805 - root - INFO - Deinit default process group success on rank3
Testcase OK
2026-04-20 02:19:29,823 - root - INFO - Deinit default process group success on rank2
Testcase OK
2026-04-20 02:19:29,870 - root - INFO - Deinit default process group success on rank1
Testcase OK
2026-04-20 02:19:29,945 - root - INFO - Deinit default process group success on rank6
Testcase OK

样例二

用例名称PT_Feature_ddp_base_class_bb_False_bcm_25MB_fup_False_gabv_True_sg_False_PT_2.1
执行命令

python run_test.py --case PT_Feature_ddp_base_class_bb_False_bcm_25MB_fup_False_gabv_True_sg_False_PT_2.1

执行结果

2026-04-20 02:58:25,342 - root - INFO - Deinit default process group success on rank0
Testcase OK
2026-04-20 02:58:25,375 - root - INFO - Deinit default process group success on rank5
Testcase OK
2026-04-20 02:58:25,381 - root - INFO - Deinit default process group success on rank7
Testcase OK
2026-04-20 02:58:25,430 - root - INFO - Deinit default process group success on rank1
Testcase OK
2026-04-20 02:58:25,492 - root - INFO - Deinit default process group success on rank2
Testcase OK
2026-04-20 02:58:25,524 - root - INFO - Deinit default process group success on rank6
Testcase OK
2026-04-20 02:58:25,536 - root - INFO - Deinit default process group success on rank3
Testcase OK
2026-04-20 02:58:25,582 - root - INFO - Deinit default process group success on rank4
Testcase OK

样例三

用例名称PT_Device_Mesh
执行命令

python run_test.py --case PT_Device_Mesh

执行结果

warnings.warn(  # warn only once
/usr/local/lib/python3.10/dist-packages/torch/distributed...
et by the user.
    warnings.warn(  # warn only once

排查建议与处理思路

  • 优先确认环境一致性:检查新环境的CUDA版本、PyTorch版本、网络配置及资源分配是否与原环境一致。
  • 分析日志上下文:结合错误信息定位具体模块,如通信层、参数同步、设备初始化等。
  • 核对用例代码与预期行为:若用例成功但日志异常,需审查测试框架的断言逻辑,确认是否误判。
  • 复现与隔离:在最小化环境中复现问题,逐步排除干扰项,提升定位效率。

总结

通过建立标准化的复现流程与日志分析机制,可有效提升分布式用例迁移过程中的问题定位效率。建议在后续迭代中完善用例执行前的环境校验机制,并统一日志输出规范,以增强测试结果的可追溯性与可比性。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐