在当今人工智能快速发展的时代,RockyLinux分布式训练已成为提升模型训练效率的关键技术。本文将面向初学者,详细讲解如何在 Rocky Linux 操作系统上搭建一套完整的深度学习环境搭建流程,并实现多节点间的分布式训练。即使你是 Linux 新手,也能轻松跟做!

一、准备工作
你需要至少两台安装了 Rocky Linux 8 或 9 的服务器(物理机或虚拟机均可),并确保以下条件:
所有节点之间网络互通(建议使用内网) 每台机器拥有 GPU(如 NVIDIA 显卡) 已配置好静态 IP 地址 拥有 sudo 权限二、基础环境配置(所有节点)
1. 更新系统并安装必要工具
sudo dnf update -ysudo dnf install -y epel-releasesudo dnf install -y git wget htop vim net-tools openssh-server
2. 安装 NVIDIA 驱动与 CUDA
首先添加 NVIDIA 官方仓库:
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.reposudo dnf module install -y nvidia-driver:latest-dkmssudo dnf install -y cuda-toolkit-12-3
重启后验证驱动是否加载:
nvidia-smi
3. 安装 Python 与 Conda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3source ~/.bashrcconda init bash
三、配置 SSH 免密登录(主节点到所有从节点)
假设你的主节点 IP 为
192.168.1.10,从节点为
192.168.1.11和
192.168.1.12。
在主节点生成 SSH 密钥:
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa
将公钥复制到所有从节点:
ssh-copy-id user@192.168.1.11ssh-copy-id user@192.168.1.12
测试免密登录:
ssh user@192.168.1.11 'hostname'
四、安装 PyTorch 与分布式依赖
在所有节点创建统一的 Conda 环境:
conda create -n dist_train python=3.10 -yconda activate dist_trainpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121pip install opencv-python numpy pandas
五、编写分布式训练脚本
创建一个简单的
train.py文件,使用 PyTorch 的
torch.distributed模块:
import torchimport torch.distributed as distimport osdef setup(): dist.init_process_group("nccl") rank = dist.get_rank() print(f"Rank {rank} initialized.") return rankdef cleanup(): dist.destroy_process_group()if __name__ == "__main__": rank = setup() # 示例:每个 GPU 创建一个张量并进行 all-reduce tensor = torch.ones(2, 2).cuda() * rank print(f"Rank {rank} before all_reduce: {tensor}") dist.all_reduce(tensor, op=dist.ReduceOp.SUM) print(f"Rank {rank} after all_reduce: {tensor}") cleanup()六、启动分布式训练
在主节点上创建主机文件
hostfile.txt:
192.168.1.10 slots=1192.168.1.11 slots=1192.168.1.12 slots=1
使用
torchrun启动训练(假设每台机器1个GPU):
conda activate dist_traintorchrun \ --nnodes=3 \ --nproc_per_node=1 \ --node_rank=0 \ --master_addr="192.168.1.10" \ --master_port=29500 \ train.py
注意:在其他节点上需设置对应的
--node_rank=1和
--node_rank=2。更推荐使用
torch.distributed.run结合 hostfile 自动调度(高级用法可参考 PyTorch 官方文档)。
七、常见问题排查
端口被占用:更换--master_port(如 29501) NCCL 错误:确保所有节点 CUDA 版本一致,设置环境变量:
export NCCL_DEBUG=INFOSSH 连接失败:检查防火墙:
sudo firewall-cmd --add-port=22/tcp --permanent
结语
通过以上步骤,你已经成功搭建了一套基于 RockyLinux多机训练 的分布式深度学习环境。这套环境适用于 PyTorch分布式训练 任务,能显著加速大型模型的训练过程。后续可进一步集成 Horovod、DeepSpeed 等框架以支持更大规模训练。
希望这篇教程能帮助你在 AI 工程化道路上迈出坚实一步!如有疑问,欢迎在评论区交流。
