在PyTorch分布式训练中,环境变量配置是性能调优的关键环节。最近在部署多机多卡训练时踩了不少坑,分享一下实际配置经验。
首先,核心环境变量必须设置正确:
export MASTER_ADDR=192.168.1.100
export MASTER_PORT=12345
export WORLD_SIZE=8
export RANK=0
这里特别容易出错的是MASTER_ADDR,必须是所有节点都能访问的IP地址。
其次,为了提升通信效率,建议设置:
export NCCL_IB_DISABLE=0
export NCCL_SOCKET_IFNAME=eth0
export NCCL_NET_GDR_LEVEL=3
其中NCCL_NET_GDR_LEVEL=3能显著提升GPU间通信性能。
实际配置脚本示例:
#!/bin/bash
export MASTER_ADDR=$(hostname -I | awk '{print $1}')
export MASTER_PORT=29500
export WORLD_SIZE=4
export RANK=$1
python train.py --world-size $WORLD_SIZE --rank $RANK
常见问题:
- 网络延迟高时,可设置NCCL_BLOCKING_WAIT=1
- 内存不足时,调整NCCL_BUFFERSIZE
- 多机训练时确保防火墙开放对应端口
建议在启动前先用nc测试网络连通性。

讨论