[源码解析] PyTorch 分布式(4)------分布式应用基础概念

[源码解析] PyTorch 分布式(4)------分布式应用基础概念

0x00 摘要

本文以 PyTorch 官方文档 https://pytorch.org/tutorials/intermediate/dist_tuto.html 为基础,对如何编写分布式进行了介绍,并且加上了自己的理解。

PyTorch 的分布式包(即 torch.distributed)使研究人员和从业人员能够轻松地跨进程和跨机器集群并行计算。它利用消息传递语义来允许每个进程与任何其他进程通信数据。与 multiprocessing ( torch.multiprocessing) 包相反,进程可以使用不同的通信后端,并且不限于在同一台机器上执行。

在这个简短的教程中,我们将介绍 PyTorch 的分布式包。我们将看到如何设置分布式,使用不同的通信策略,并了解包的一些内部结构。

本系列其他文章如下:

深度学习利器之自动微分(1)

深度学习利器之自动微分(2)

[源码解析]深度学习利器之自动微分(3) --- 示例解读

[源码解析]PyTorch如何实现前向传播(1) --- 基础类(上)

[源码解析]PyTorch如何实现前向传播(2) --- 基础类(下)

[源码解析] PyTorch如何实现前向传播(3) --- 具体实现

[源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎

[源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构

[源码解析] Pytorch 如何实现后向传播 (3)---- 引擎动态逻辑

[源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法

[源码解析] PyTorch 分布式(1)------历史和概述

[源码解析] PyTorch 分布式(2) ----- DataParallel(上)

[源码解析] PyTorch 分布式(3) ----- DataParallel(下)

0x01 基本概念

我们首先介绍一些 torch.distributed 中的关键概念,这些概念在编写程序时至关重要。

  • Node - 物理实例或容器。

  • Worker - 分布训练环境中的worker。

  • Group(进程组):我们所有进程的子集,用于集体通信等。