Shortcuts

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

多节点训练

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

作者:Suraj Subramanian

What you will learn
  • 使用``torchrun``启动多节点训练任务

  • 从单节点到多节点训练时需要的代码更改(以及需要注意的地方)。

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

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

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

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

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

多节点训练涉及将一个训练任务部署到多台机器上。有两种实现方式:

  • 在每台机器上运行带有相同集合参数的``torchrun``命令,或者

  • 使用工作负载管理器(例如SLURM)在计算集群上部署。

在视频中,我们将讨论从单节点多GPU训练到多节点训练所需的代码更改,并以以上两种方式运行我们的训练脚本。

请注意,多节点训练的瓶颈在于节点间的通信延迟。在单台节点上的4个GPU上运行训练任务将比在4台节点上每台1个GPU速度更快。

本地和全局等级

在单节点设置中,我们追踪每个运行训练过程的设备的``gpu_id``。torchrun``通过环境变量``LOCAL_RANK``追踪每个节点上唯一标识的GPU进程。对于跨所有节点的唯一标识符,``torchrun``提供了另一个变量``RANK,指代全局等级。

警告

不要在训练任务中的关键逻辑中使用``RANK``。当``torchrun``在故障或成员变化后重新启动进程时,不能保证进程会保持相同的``LOCAL_RANK``和``RANK``。

异构扩展

Torchrun支持*异构扩展*,即每台多节点机器在训练任务中可以有不同数量的参与GPU。在视频中,我将代码部署到两台机器上,其中一台有4个GPU,另一个只使用了2个GPU。

故障排除

进一步阅读

文档

访问 PyTorch 的详细开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源