在当今人工智能快速发展的时代,分布式训练已成为提升模型训练效率的关键技术。对于使用 Centos 系统的开发者而言,掌握如何在多台服务器上进行协同训练尤为重要。本教程将从零开始,详细讲解如何在 Centos 环境下搭建一个基于 PyTorch 的分布式训练集群,即使你是完全的小白,也能轻松上手!

在开始之前,请确保你有以下资源:
首先,在所有节点上安装必要的软件包:
# 更新系统sudo yum update -y# 安装基础工具sudo yum install -y gcc gcc-c++ make git wget curl# 安装 Python 3.8(以 CentOS 7 为例)sudo yum install -y python38 python38-pip# 升级 pippython3.8 -m pip install --upgrade pip# 安装 PyTorch(根据你的 CUDA 版本选择)python3.8 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118为方便脚本分发和通信,建议在主节点配置 SSH 免密登录到其他工作节点。
# 在主节点生成密钥(如已存在可跳过)ssh-keygen -t rsa -b 4096# 将公钥复制到所有工作节点(假设工作节点 IP 为 192.168.1.101 和 192.168.1.102)ssh-copy-id user@192.168.1.101ssh-copy-id user@192.168.1.102# 测试免密登录ssh user@192.168.1.101 "hostname"下面是一个使用 PyTorch DistributedDataParallel (DDP) 的简单训练脚本示例。保存为 train_ddp.py。
import torchimport torch.distributed as distimport torch.multiprocessing as mpfrom torch.nn.parallel import DistributedDataParallel as DDPimport osdef setup(rank, world_size): os.environ['MASTER_ADDR'] = '192.168.1.100' # 主节点 IP os.environ['MASTER_PORT'] = '12355' dist.init_process_group("nccl", rank=rank, world_size=world_size)def cleanup(): dist.destroy_process_group()class ToyModel(torch.nn.Module): def __init__(self): super().__init__() self.net1 = torch.nn.Linear(10, 10) self.relu = torch.nn.ReLU() self.net2 = torch.nn.Linear(10, 5) def forward(self, x): return self.net2(self.relu(self.net1(x)))def train(rank, world_size): setup(rank, world_size) model = ToyModel().to(rank) ddp_model = DDP(model, device_ids=[rank]) loss_fn = torch.nn.MSELoss() optimizer = torch.optim.SGD(ddp_model.parameters(), lr=0.001) for epoch in range(10): optimizer.zero_grad() outputs = ddp_model(torch.randn(20, 10).to(rank)) labels = torch.randn(20, 5).to(rank) loss = loss_fn(outputs, labels) loss.backward() optimizer.step() if rank == 0: print(f"Epoch {epoch}, Loss: {loss.item()}") cleanup()if __name__ == "__main__": world_size = 2 # 总进程数(等于 GPU 数量或节点数 × 每节点 GPU 数) mp.spawn(train, args=(world_size,), nprocs=world_size, join=True)在主节点上执行以下命令启动训练(假设有两台机器,每台使用 1 个 GPU):
# 方法一:使用 torchrun(推荐)torchrun \ --nproc_per_node=1 \ --nnodes=2 \ --node_rank=0 \ --master_addr="192.168.1.100" \ --master_port=12355 \ train_ddp.py# 在第二台机器上(node_rank=1)torchrun \ --nproc_per_node=1 \ --nnodes=2 \ --node_rank=1 \ --master_addr="192.168.1.100" \ --master_port=12355 \ train_ddp.py注意:--master_addr 必须是主节点的 IP 地址,且所有节点都能访问该地址和端口。
ping 和 telnet 192.168.1.100 12355 检查连通性。export NCCL_DEBUG=INFO通过本教程,你已经掌握了在 Centos 系统上搭建 分布式训练 环境的核心步骤。无论是用于科研还是工业部署,深度学习集群 都能显著加速你的模型训练过程。记住,关键在于网络配置、环境一致性以及正确的 DDP 使用方式。
如果你正在构建大规模 AI 系统,不妨深入研究 Slurm、Kubernetes 或 Ray 等更高级的集群调度工具。但对于入门和中小规模任务,本文介绍的 PyTorch 分布式训练 方案已足够高效可靠。
祝你在 Centos 分布式训练的道路上一路畅通!
本文由主机测评网于2025-12-14发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025127662.html