• Tutorials >
  • 使用DDP进行“真实世界”模型训练
Shortcuts

教程介绍 || 什么是DDP || 单节点多GPU训练 || 容错机制 || 多节点训练 || minGPT训练

使用DDP进行“真实世界”模型训练

Created On: Sep 27, 2022 | Last Updated: Jan 23, 2025 | Last Verified: Nov 05, 2024

作者:Suraj Subramanian

What you will learn
  • 编写分布式训练脚本的最佳实践

  • 保存/加载云端制品时的灵活性提升

  • 当DDP不适用时

查看此教程中使用的代码,请访问`GitHub <https://github.com/pytorch/examples/tree/main/distributed/minGPT-ddp>`__

Prerequisites
  • 熟悉`多GPU训练 <../beginner/ddp_series_multigpu.html>`__和`torchrun <../beginner/ddp_series_fault_tolerance.html>`__

  • [可选]熟悉`多节点训练 <ddp_series_multinode.html>`__

  • 2台或以上通过TCP连接的GPU机器(此教程使用了AWS p3.2xlarge实例)

  • 所有机器上安装了支持CUDA的PyTorch 安装教程

可以跟随以下视频,或者访问`YouTube <https://www.youtube.com/watch/XFsFDGKZHh4>`__。

在视频中,我们将回顾使用多节点DDP训练GPT模型的过程。我们首先克隆`minGPT代码库 <https://github.com/karpathy/minGPT>`__并将Trainer类调整为与本系列教程类似的结构。观看视频以了解这些更改的详细信息。

我们使用`hydra <https://hydra.cc/>`__集中管理训练运行的所有配置。一旦代码被调整,我们先在一台单节点的机器上用4个GPU运行,然后在slurm集群上运行。

训练中使用的文件

  • trainer.py 包含了运行分布式训练迭代的Trainer类。

  • model.py 定义了模型架构。

  • char_dataset.py 包含了字符级数据集的``Dataset``类。

  • gpt2_train_cfg.yaml 包含了数据、模型、优化器以及训练运行的配置。

  • main.py 是训练任务的入口点。它设置了DDP进程组,读取所有配置并运行训练任务。

从云端保存和加载

在以上视频中,我们将训练快照直接保存到云端。这使我们能够从任何具有云存储访问权限的节点继续训练。

使用混合精度

为了加快速度,可以尝试使用`混合精度训练 <https://pytorch.org/docs/stable/amp.html>`__来训练模型。在混合精度模式中,某些训练过程将以降低的精度进行,而某些对精度更敏感的步骤则保持在FP32精度。

当DDP不足以处理时

典型训练任务的内存占用包括模型权重、激活值、梯度值、输入批次以及优化器状态。由于DDP在每个GPU上都复制模型,它仅在GPU有足够容量容纳完整占用时有效。当模型变得更大时,可以使用更为激进的技术:

文档

访问 PyTorch 的详细开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源