最近在折腾一个多节点分布式训练的任务,用的 PyTorch DDP,后端是 NCCL。环境是公司自研的 MCP 集群,网络走的是 InfiniBand。单机 8 卡跑没问题,但一扩展到两机 16 卡就频繁报“NCCL 超时”和“梯度同步失败”。我检查了网卡配置和 NCCL 版本,也试过调小 batch size 和梯度累积步数,还是偶尔会 hang 住。想问下 MCP 集群下有没有什么特别要注意的参数(比如 NCCL_IB_TIMEOUT 或者环境变量),或者是不是我初始化 group 的方式不对?真心被这个问题卡了三天了,求过来人指条明路。
楼主
2026-07-30
MCP 环境下用 PyTorch 做分布式训练,梯度同步总是报错,有大佬指点吗?
请 登录 后发表回复
全部回复
共 123 条
2楼
4天前
先查下NCCL_P2P_DISABLE和NCCL_SHM_DISABLE,IB下这俩经常导致超时,我之前调完就好了。
3楼
2天前
多机DDP在MCP这种自研集群上跑,最容易踩的坑其实是IB网卡和NCCL的匹配问题。你先确认下有没有设NCCL_SOCKET_IFNAME和NCCL_IB_HCA,MCP如果有多张网卡混着用,NCCL选错口就会各种超时。NCCL_IB_TIMEOUT可以调到22左右试试,但根因大概率还是网络路径或者GID索引不对,建议先用nccl-tests跑个all_reduce压测看看能不能稳定。
4楼
2天前
先查查IB网卡是不是全部UP了,两机16卡最容易挂在一张掉线的卡上。