我是靠谱客的博主 称心板栗,最近开发中收集的这篇文章主要介绍torch.nn.parallel.DistributedDataParallel1、基本参数2、什么是数据并行化3、torch.nn.parallel.DistributedDataParallel,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、基本参数

Node: 一个节点, 可以理解为一台电脑.

Device: 工作设备, 可以简单理解为一张卡, 即一个GPU.

Process: 一个进程, 可以简单理解为一个Python程序.

Threading: 一个线程, 一个进程可以有多个线程, 它们共享资源.

2、什么是数据并行化

随着模型参数和数据量越来越大, 分布式训练成为了深度学习模型训练中越来越重要的一环. 分布式训练包括两类: 模型并行化 和 数据并行化. 在模型并行化中, 一个Device负责处理模型的一个切片 (例如模型的一层); 而在数据并行化中, 一个Device负责处理数据的一个切片 (即Batch的一部分). 我们今天讨论的torch.nn.parallel.DistributedDataParallel就是由pytorch提供的一种数据并行化方式.

3、torch.nn.parallel.DistributedDataParallel

torch.nn.parallel.DistributedDataParallel 实现的是 单机/多机-多进程 (Single/Multi-Node Multi-process). 即torch.nn.parallel.DistributedDataParallel中的每一个模型是由一个独立的Process来控制的.

3.1 初始化

torch.nn.parallel.DistributedDataParallel之间我们需要初始化它, 初始化需要两个参数global_rank 和 world_size:

其中world_size是指你一共有多少Process, 即world_size = 节点数量 * 每个节点上有多少Process = nnode * nproc_per_node.
而对于每一个Process, 它都有一个local_rank和global_rank, local_rank对应的就是该Process在自己的Node上的编号, 而global_rank就是全局的编号.
比如你有个Node, 每个Node上各有2个Proess (Process0, Process1, Process2, Process3). 那么对于Process2来说, 它的local_rank就是0(即它在Node1上是第0个Process), global_rank 就是2.

最后

以上就是称心板栗为你收集整理的torch.nn.parallel.DistributedDataParallel1、基本参数2、什么是数据并行化3、torch.nn.parallel.DistributedDataParallel的全部内容,希望文章能够帮你解决torch.nn.parallel.DistributedDataParallel1、基本参数2、什么是数据并行化3、torch.nn.parallel.DistributedDataParallel所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部