极客前沿

AI 入门:用 Micro-DDP 跑通你的第一个分布式训练

2026-06-27 01:30
freeCodeCamp
查看原文

零基础学会安装 PyTorch 和 Micro-DDP,用多 GPU 跑通分布式训练,避开常见坑。

准备环境

在开始之前,你需要一台有多个 GPU 的电脑(或者用云服务器)。我们使用 PyTorch(一个流行的深度学习框架)和 Micro-DDP(一个帮你把训练任务分到多个 GPU 上的小工具)。

Tutorial Image
  1. 检查你的系统:推荐 Ubuntu 20.04 或更高版本,Windows 也可以但建议用 Linux。
  2. 安装 Python 3.8 或更高版本:去 python.org 下载安装包,记得勾选“Add Python to PATH”。
  3. 安装 CUDA(NVIDIA 的并行计算平台):去 NVIDIA 官网 下载对应版本,安装后重启。
  4. 验证 CUDA:在终端输入 nvcc --version,看到版本号就对了。

安装 PyTorch 和 Micro-DDP

  1. 打开终端(Windows 用命令提示符或 PowerShell)。
  2. 安装 PyTorch:去 pytorch.org 选择你的配置(比如 Linux + CUDA 11.8),复制给出的命令运行。例如:pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  3. 安装 Micro-DDP:运行 pip install micro-ddp。如果报错,先升级 pip:pip install --upgrade pip
  4. 验证安装:在 Python 里输入 import torch; print(torch.cuda.is_available()),返回 True 表示 GPU 可用;再输入 import micro_ddp,没有报错就成功了。

跑通第一个训练

我们用一个最简单的例子:训练一个模型对数字图片分类。Micro-DDP 会自动把你的数据分到多个 GPU 上并行计算。

Tutorial Image
  1. 复制以下代码保存为 train.py
    import torch
    import torch.nn as nn
    from torch.utils.data import DataLoader
    from torchvision import datasets, transforms
    from micro_ddp import MicroDDP
    
    # 定义模型
    model = nn.Sequential(nn.Flatten(), nn.Linear(784, 10))
    model = MicroDDP(model)
    
    # 准备数据
    transform = transforms.ToTensor()
    train_data = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
    train_loader = DataLoader(train_data, batch_size=64, shuffle=True)
    
    # 训练
    criterion = nn.CrossEntropyLoss()
    optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
    for epoch in range(2):
        for images, labels in train_loader:
            outputs = model(images)
            loss = criterion(outputs, labels)
            loss.backward()
            optimizer.step()
            optimizer.zero_grad()
    print('训练完成!')
  2. 运行:python train.py。你会看到多个 GPU 的利用率都上去了,训练速度明显比单 GPU 快。
  3. 常见坑:如果报错“CUDA out of memory”,试试减小 batch_size(比如从 64 改成 32)。

下一步可以做什么

现在你已经跑通了分布式训练!接下来可以:

  • 尝试更大的模型,比如用 ResNet(一种深度神经网络)做图像分类。
  • 调整 batch size(每次训练用的样本数)和 learning rate(学习率)来优化效果。
  • 阅读 Micro-DDP 的文档,学习更高级的功能,比如梯度累积。

记住,分布式训练的核心就是让多个 GPU 同时干活,减少等待时间。多试试,你就能掌握它!

内容来源

freeCodeCamp

发布时间

2026-06-27 01:30

返回 AI技术