PyTorch Distributed Tutorials(1) Overview

文章目录

    • 0. 前言
    • 1. 概述
    • 2. 数据并行
    • 3. RPC训练方式

0. 前言

  • 官方链接
  • 本文相当于一个目录,总结了分布式相关的tutorials有哪些。
  • 主要就是介绍 torch.distributed 包相关内容。

1. 概述

  • v1.6.0 中,torch.distributed 包主要可以分为三个方面。
  • Distributed Data-Parallel Training(DDP),参考文档
    • 数据并行训练。
    • 适用于 single-program multiple-data 训练。
    • 基本实现思路:每个进程都有一个模型副本,每个模型副本处理不同的输入数据,DDP主要处理的就是不同模型副本的梯度同步问题。
  • RPC-Based Distributed Training(RPC),参考文档
    • 适用于DDP不能使用的情况,例如 distributed pipeline parallelism, parameter server paradigm 等。
  • Collective Communication(c10d),参考文档
    • 提供了 collective communication 和P2P communication 两种通信方式。
    • DDP使用了前者,RPC使用了后者。
    • 一般情况下,开发人员不会直接使用c10d,但也有直接使用的情况,后续文档会介绍。

2. 数据并行

  • PyTorch提供了多种数据并行训练方式,从简单到复杂包括了
    • 单卡训练。
    • 使用DataParallel实现单机多卡训练,代码量少。
    • 使用DistributedDataParallel实现单机多卡训练,代码量多,但性能较好。
    • 使用DistributedDataParallel和lauching script实现集群训练。
    • 使用torchelastic实现集群训练。
  • torch.nn.DataParallel 简介
  • torch.nn.parallel.DistributedDataParallel 简介
  • DDP文档汇总
    • DDP Notes:入门样例
    • Getting Started with Distributed Data Parallel:介绍分布式训练中的一些常见问题,
    • Single-Machine Model Parallel Best Practices:单机多卡简单实现
    • Launching and configuring distributed data parallel applications:介绍laucher script的使用
    • PyTorch Distributed Trainer with Amazon AWS:AWS上的使用
  • TorchElastic
    • 要解决的问题:分布式训练经常会遇到OOM,不可避免,所以需要failure recovery功能。

3. RPC训练方式

  • 目标:更一般的分布式训练场景。

  • 主要就是 torch.distributed.rpc 的使用(参考文档),该包主要分为四个部分。

    • RPC:在远程服务器上运行一个函数。
    • RRef:管理远程对象的生命周期,相关其他文档
    • Distributed Autograd:Autograd的分布式实现,具体可以参考文档
    • Distributed Optimizer:优化器的分布式实现。
  • 文档汇总:

    • Getting Started with Distributed RPC Framework:以简单的RL为例介绍RPC与RRef。
    • Implementing a Parameter Server Using Distributed RPC Framework:借鉴了Hogwild! training的思路,实现了异步参数服务器,用于训练。
    • Distributed Pipeline Parallelism Using RPC:扩展了单机多卡的解决方案,展示如何使用RPC。
    • Implementing Batch RPC Processing Using Asynchronous Executions:介绍如何实现RPC batch processing

你可能感兴趣的:(Python)