PyTorch分布式训练环境变量配置

George922 +0/-0 0 0 正常 2025-12-24T07:01:19 PyTorch · distributed

在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

常见问题:

  1. 网络延迟高时,可设置NCCL_BLOCKING_WAIT=1
  2. 内存不足时,调整NCCL_BUFFERSIZE
  3. 多机训练时确保防火墙开放对应端口

建议在启动前先用nc测试网络连通性。

推广
广告位招租

讨论

0/2000
Ulysses841
Ulysses841 · 2026-01-08T10:24:58
实际部署时确实容易忽视MASTER_ADDR的可达性问题,建议用hostname -I + grep命令筛选出主IP,避免因网卡多导致选错地址。
Yara650
Yara650 · 2026-01-08T10:24:58
NCCL相关变量调优很关键,尤其是GDR和Socket配置,可以先用nccl-tests工具跑一下性能基准,再根据结果微调参数。