Skip to content

feat(issue4): NCCL集合通信位级可复现性诊断工具 - #35

Open
cn-sys wants to merge 1 commit into
Tencent:mainfrom
cn-sys:issue4-nccl-diag
Open

feat(issue4): NCCL集合通信位级可复现性诊断工具#35
cn-sys wants to merge 1 commit into
Tencent:mainfrom
cn-sys:issue4-nccl-diag

Conversation

@cn-sys

@cn-sys cn-sys commented Jul 30, 2026

Copy link
Copy Markdown

概要

实现 Issue 要求的 NCCL 集合通信 Bitwise 可复现性诊断工具。

文件

src/code/issue4/
├── diagnose.py          主入口(8 阶段流水线)
├── config_matrix.py     硬件检测 + 配置矩阵(Ring/Tree/PAT × LL/Simple × fp32/fp16 × 多档 size)
├── data_generator.py    SHA-256 确定性逐 rank 数据生成
├── runner.py            NCCL 执行器(mp.Process 隔离,Gloo 控制面)
├── comparator.py        逐位比对 + XOR/ULP 位分解 + run/call/rank 三级对比
├── reporter.py          报告输出(控制台 + JSON + 诊断建议引擎)
├── reproduce_case.py    独立可复现的非确定性案例
├── requirements.txt
├── README.md
└── docs/                5 张 Mermaid 架构图

验收对照

要求 实现
诊断工具:同配置多次运行、逐位比对、输出首次差异 diagnose.py --mode standard,60 种配置遍历,DiffReport 含 offset/ULP/分布
可复现 non-determinism 案例 reproduce_case.py:Ring vs Tree 跨算法对比,差异率 35.39%
定位到具体算法/协议配置 Reporter 诊断引擎:按 algo/proto/dtype 归因,差异均匀分布 → 算法级根因
bitwise 一致配置建议 NCCL_ALGO=Tree NCCL_PROTO=Simple dtype=float32,已验证 run-to-run 一致

验证环境

硬件 结果
4×RTX 5090(SM120) 自检通过,需 NCCL_P2P_DISABLE=1,NCCL ≥ 2.27
4×RTX 4090D(SM89) 自检通过,需 NCCL_P2P_DISABLE=1

复现数据(4090D):

Ring vs Tree 跨算法比对:
  Diff count: 23751354 / 67108864 (35.39%)
  Max abs diff: 3.91e-03
  Distribution: uniform
4090

已知限制

  • 消费级 GPU(无 NVLink/NVSwitch)上同算法 run-to-run 完全一致,非确定性需在 H100/B200 等多路径拓扑上复现
  • PAT 算法在 5090/4090D 上静默失败(total_elements=0),根因为 NCCL 兼容性

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant