温馨提示×

如何在Ubuntu上搭建PyTorch分布式训练环境

小樊
33
2025-11-29 01:44:35
栏目: 智能运维

在Ubuntu上搭建PyTorch分布式训练环境需要以下几个步骤:

1. 安装必要的软件和依赖

安装Python和pip

确保你已经安装了Python 3和pip。你可以使用以下命令来安装:

sudo apt update
sudo apt install python3 python3-pip

安装CUDA和cuDNN(如果使用GPU)

如果你有NVIDIA GPU并打算使用GPU进行训练,你需要安装CUDA和cuDNN。

  1. 安装CUDA Toolkit

    • 下载CUDA Toolkit:NVIDIA CUDA Toolkit
    • 根据你的系统架构选择合适的版本并安装。
  2. 安装cuDNN

    • 下载cuDNN:NVIDIA cuDNN
    • 解压并安装cuDNN到CUDA Toolkit目录。

安装PyTorch

使用pip安装PyTorch,确保选择与你的CUDA版本兼容的PyTorch版本。例如:

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

2. 配置SSH无密码登录

为了在多台机器上进行分布式训练,你需要配置SSH无密码登录。

  1. 生成SSH密钥

    ssh-keygen -t rsa
    
  2. 将公钥复制到其他机器

    ssh-copy-id user@remote_host
    

3. 设置环境变量

确保所有机器上的环境变量一致,特别是CUDA和cuDNN的路径。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

4. 编写分布式训练脚本

使用PyTorch的torch.distributed模块编写分布式训练脚本。以下是一个简单的示例:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.nn.parallel import DistributedDataParallel as DDP
import torch.distributed as dist
import os

def main(rank, world_size):
    # 初始化分布式环境
    dist.init_process_group(backend='nccl', init_method='env://', world_size=world_size, rank=rank)

    # 创建模型并将其移动到GPU
    model = nn.Linear(10, 10).to(rank)
    ddp_model = DDP(model, device_ids=[rank])

    # 创建损失函数和优化器
    criterion = nn.MSELoss()
    optimizer = optim.SGD(ddp_model.parameters(), lr=0.01)

    # 模拟数据
    inputs = torch.randn(20, 10).to(rank)
    targets = torch.randn(20, 10).to(rank)

    # 训练循环
    for epoch in range(10):
        optimizer.zero_grad()
        outputs = ddp_model(inputs)
        loss = criterion(outputs, targets)
        loss.backward()
        optimizer.step()
        print(f'Rank {rank}, Epoch {epoch}, Loss {loss.item()}')

    # 清理分布式环境
    dist.destroy_process_group()

if __name__ == '__main__':
    world_size = 4  # 总共的进程数
    torch.multiprocessing.spawn(main, args=(world_size,), nprocs=world_size, join=True)

5. 运行分布式训练脚本

使用mpiruntorch.distributed.launch来运行分布式训练脚本。

使用mpirun

mpirun -np 4 python3 your_script.py

使用torch.distributed.launch

python3 -m torch.distributed.launch --nproc_per_node=4 your_script.py

6. 验证分布式训练

确保所有进程都能正常运行并输出结果。你可以通过检查日志或输出来验证分布式训练是否成功。

通过以上步骤,你应该能够在Ubuntu上成功搭建PyTorch分布式训练环境。

0