多机训练环境中的防火墙配置问题
在分布式训练环境中,防火墙配置是影响多机通信效率的关键因素。当使用Horovod进行多机训练时,若防火墙规则设置不当,会导致训练节点间通信超时或连接失败。
问题表现
- 训练启动后出现
Horovod is not initialized错误 nccl通信初始化失败,提示NCCL_OP_FAILED- 多机节点间网络连接建立缓慢或完全中断
核心配置要求
Horovod需要开放以下端口范围:
# 常用端口范围(可根据实际需求调整)
firewall-cmd --permanent --add-port=10000-20000/tcp
firewall-cmd --permanent --add-port=10000-20000/udp
firewall-cmd --reload
PyTorch Distributed配置示例
import torch.distributed as dist
import os
def setup_distributed():
# 设置环境变量
os.environ['MASTER_ADDR'] = '192.168.1.100' # 主节点IP
os.environ['MASTER_PORT'] = '12345' # 端口范围
# 初始化分布式环境
dist.init_process_group(
backend='nccl',
world_size=4,
rank=int(os.environ['RANK'])
)
验证步骤
- 在所有节点上执行
telnet <master_ip> 12345测试端口连通性 - 使用
nmap -p 10000-20000 <node_ip>扫描开放端口 - 运行简单测试脚本验证通信正常
通过合理配置防火墙规则,可有效解决多机训练中的网络通信问题。

讨论