概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复