| feat(comm-bench): comm_bench增加多机 inter-pod 数据采集 Co-authored-by: Hudingyi<305949481@qq.com> # message auto-generated for no-merge-commit merge: !223 merge feat/comm-bench-multinode into develop feat(comm-bench): comm_bench增加多机 inter-pod 数据采集 Created-by: Hudingyi Commit-by: Hudingyi Merged-by: ascend-robot Description: ## 背景 GLM5 适配以及 inter-pod 仿真场景需要 topology_tier=0 的通信参考数据,但现有 run_comm_bench.sh 仅支持单机采集。本 PR 在同一入口脚本里增加多机 (inter-pod) 采集路径,并提交一份基于 ATLAS_800_A3 双机 32 die 的v8.5 inter-pod 数据。 **单机路径完全未改动**:脚本顺序调整为单机分支在前、多机分支在后,通过 [ "${NNODES:-1}" -lt 2 ] / -ge 2 ] 两个条件守门互斥。仅当调用方显式设置 NNODES>=2 时进入多机分支,调用torchrun --nnodes/--node_rank/--master_addr/--master_port 拉起多机session,并强制 --topology-tier 0,避免 32 die 在 grid_shape=[48,8,2] 下被误判为 tier-1 group。 ## 改动清单 | 文件 | 变更 | |---|---| | tools/perf_data_collection/comm_bench/run_comm_bench.sh | 单机块加 NNODES<2 守门置于上方;末尾追加 NNODES>=2 多机块。单机内部逻辑一字未改 | | tensor_cast/performance_model/profiling_database/data/ATLAS_800_A3_752T_128G_DIE/hccl/v8.5/hcom_{allReduce,allGather,reduceScatter,alltoallv}_.csv | 每个文件 +23 行 (topology_tier=0, num_devices=32, dtype=DT_BF16),git-lfs 管理,diff 仅为 pointer 变化 | | tests/tools/test_generate_comm_microbench.py | +1 个 case (TestRunCommBenchShellMultiNode::test_multinode_dispatches_inter_pod_torchrun),仅验证多机分发契约。原有 case 一字未改 | ## 用法 ### 单机用法(未变更) bash run_comm_bench.sh [OUTPUT_DIR] # 默认输出 ./hccl_bench_data/ 多机用法(新增路径) 每个节点都执行同一行,仅 NODE_RANK 不同: # 主节点: NNODES=2 NODE_RANK=0 MASTER_ADDR=<主节点IP> bash run_comm_bench.sh # Worker 节点: NNODES=2 NODE_RANK=1 MASTER_ADDR=<主节点IP> bash run_comm_bench.sh 可选环境变量:NPROC(默认 16)、MASTER_PORT(默认 29700,每 round +1)、QUICK=1(5 点 sanity 网格)。 数据采集方法 Inter-pod 数据在 2 台 ATLAS_800_A3(world_size=32, tier=0)上采集,覆盖23 个 power-of-2 消息长度(128B ~ 512MB)。独立采集 2 轮后按 (msg_bytes, num_devices, tier) 取 min(Duration) 聚合,用以抑制小消息在 HCCL JIT 预热阶段的随机 jitter。 ## 测试结论 T1 bash 语法检查 bash -n run_comm_bench.sh ✅ syntax OK T2 单元测试 pytest tests/tools/test_generate_comm_microbench.py ✅ 34 passed (含 1 个新增 case + 33 个原有 case,6 个 NPU mark deselected) 新增 case: TestRunCommBenchShellMultiNode - 验证 NNODES>=2 时 torchrun 收到 --nnodes=2 / --node_rank=1 / --master_addr - 验证 Python 调用包含 --topology-tier 0 - 验证 --num-devices = NNODES * NPROC = 32 T3 dispatch 双路径手工 dry-run(torchrun stub) 单机模式 (NNODES unset): ✅ 12 个 torchrun session (4 nd × 3 round) 多机模式 (NNODES=2): ✅ 3 个 torchrun session (3 round) ✅ 含 --nnodes=2 / --node_rank=1 / --master_addr ✅ 含 --topology-tier 0 / --num-devices 32 NPU 真实硬件验证✅ # 主节点: NNODES=2 NODE_RANK=0 MASTER_ADDR=<ip> QUICK=1 bash run_comm_bench.sh ./_pr_smoke # Worker 节点: NNODES=2 NODE_RANK=1 MASTER_ADDR=<ip> QUICK=1 bash run_comm_bench.sh ./_pr_smoke 测试数据见附件的 See merge request: Ascend/msmodeling!223 | 17 天前 |