From 1abbcae6537e25f3db5177519aa6def5ef74a484 Mon Sep 17 00:00:00 2001 From: ZergTant Date: Fri, 11 Sep 2020 09:06:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BF=BB=E8=AF=91=E6=96=87?= =?UTF-8?q?=E7=AB=A0=EF=BC=9A=E5=A4=9AGPU=E8=AE=AD=E7=BB=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +- chapter4/distributeddataparallel/2.jpg | Bin 0 -> 38935 bytes chapter4/distributeddataparallel/3.jpg | Bin 0 -> 47625 bytes chapter4/distributeddataparallel/4.jpg | Bin 0 -> 34855 bytes chapter4/distributeddataparallel/readme.md | 269 +++++++++++++++++++++ chapter4/readme.md | 5 +- 6 files changed, 278 insertions(+), 8 deletions(-) create mode 100644 chapter4/distributeddataparallel/2.jpg create mode 100644 chapter4/distributeddataparallel/3.jpg create mode 100644 chapter4/distributeddataparallel/4.jpg create mode 100644 chapter4/distributeddataparallel/readme.md diff --git a/README.md b/README.md index 9dfa1f9..c224c5f 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,7 @@ ## 版本说明 由于PyTorch版本更迭,教程的版本会与PyTorch版本,保持一致。 - -2020.1.16 PyTorch已经发布1.4的稳定版。 - -Java bindings 被列入了支持列表,这几天准备出一个springboot的集成教程 - - - +当前版本 1.6 ## QQ 4群 @@ -121,6 +115,10 @@ Java bindings 被列入了支持列表,这几天准备出一个springboot的 #### 第五节 多GPU并行训练 [多GPU并行计算](chapter4/4.5-multiply-gpu-parallel-training.ipynb) +#### 补充翻译文章:在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练 +[在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练](chapter4/distributeddataparallel) + + ### 第五章 应用 #### 第一节 Kaggle介绍 [Kaggle介绍](chapter5/5.1-kaggle.md) diff --git a/chapter4/distributeddataparallel/2.jpg b/chapter4/distributeddataparallel/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d674b657355708dbf34c90cae3024c8ae55b87b GIT binary patch literal 38935 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 literal 0 HcmV?d00001 diff --git a/chapter4/distributeddataparallel/readme.md b/chapter4/distributeddataparallel/readme.md new file mode 100644 index 0000000..48a3612 --- /dev/null +++ b/chapter4/distributeddataparallel/readme.md @@ -0,0 +1,269 @@ +# 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练 + +注:本篇文章是我与公众号(deephub-imba)合作翻译的第一篇文章,因为是翻译别人的作品所以首先注明下来源信息吧: + +本文连接(要梯子):https://towardsdatascience.com/distributed-model-training-in-pytorch-using-distributeddataparallel-d3d3864dc2a7 + +作者:Aleksey Bilogur + + + +先进的深度学习模型参数正以指数级速度增长:去年的GPT-2有大约7.5亿个参数,今年的GPT-3有1750亿个参数。虽然GPT是一个比较极端的例子但是各种SOTA模型正在推动越来越大的模型进入生产应用程序,这里的最大挑战是使用GPU卡在合理的时间内完成模型训练工作的能力。 + +为了解决这些问题,从业者越来越多地转向分布式训练。 分布式训练是使用多个GPU和/或多个机器训练深度学习模型的技术。 分布式训练作业使您能够克服单GPU内存瓶颈,通过同时利用多个GPU来开发更大,功能更强大的模型。 + +这篇文章是使用torch.nn.parallel.DistributedDataParallel API在纯PyTorch中进行分布式训练的简介。 我们会: + +1. 讨论一般的分布式训练方式,尤其是数据并行化 +2. 涵盖torch.dist和DistributedDataParallel的相关功能,并举例说明如何使用它们 +3. 测试真实的训练脚本,以节省时间 + +## 什么是分布式训练? + +在研究分布式和数据并行之前,我们需要先了解一些关于分布式训练的背景知识。 + +目前普遍使用的分布式训练基本上有两种不同形式:数据并行化和模型并行化。 + +在数据并行化中,模型训练作业是在数据上进行分割的。作业中的每个GPU接收到自己独立的数据批处理切片。每个GPU使用这些数据来独立计算梯度更新。例如,如果你要使用两个GPU和32的批处理大小,一个GPU将处理前16条记录的向前和向后传播,第二个处理后16条记录的向后和向前传播。这些梯度更新然后在gpu之间同步,一起平均,最后应用到模型。 + +(同步步骤在技术上是可选的,但理论上更快的异步更新策略仍是一个活跃的研究领域) + +在模型并行化中,模型训练作业是在模型上进行分割的。工作中的每个GPU接收模型的一个切片,例如它的层的一个子集。例如,一个GPU负责它的输出头,另一个负责输入层,另一个负责中间的隐藏层。 + +虽然这两种技术各有优缺点,但数据并行化在这两种技术中更容易实现(它不需要了解底层网络架构),因此通常首先尝试这种策略。 + +(也可以结合使用这些技术,例如同时使用模型和数据并行化,但这是一个高级主题,我们不在这里介绍) + +因为这篇文章是对DistributedDataParallel并行API的介绍,所以我们不会再进一步讨论模型并行化的细节——但请关注以后关于这个主题的文章!😉 + +## 数据并行是如何工作的 + +在前一节中,我给出了数据并行化的概述。在这一节中,我们将深入研究细节。 + +第一个被广泛采用的数据并行技术是TensorFlow中的参数服务器策略。这个功能实际上早于TensorFlow的第一个版本,早在2012年google内部的前身DistBelief中就已经实现了。这一策略在下图中得到了很好的说明: + +![](2.jpg) + +在参数服务器策略中,worker和parameter进程的数量是可变的,每个worker进程在GPU内存中维护自己的模型独立副本。梯度更新计算如下: + +1. 在接收到开始信号后,每个工作进程为其特定的批处理片积累梯度。 +2. 这些工人以扇出的方式将更新发送到参数服务器。 +3. 参数服务器会一直等待,直到它们拥有所有worker更新,然后对它们负责的梯度更新参数空间的那部分梯度求平均。 +4. 梯度更新被分散到worker上,然后将它们加起来,应用到内存中模型权重的副本上(从而保持worker模型同步)。 +5. 一旦每个worker都应用了更新,新的一批训练就可以开始了。 + +虽然很容易实现,但是这个策略有一些主要的限制。其中最重要的一点是,每个附加的参数服务器在每个同步步骤中都需要n_workers额外的网络调用——一个O(n)复杂度代价。计算的总体速度取决于最慢的连接,因此基于大参数服务器的模型训练作业在实践中效率非常低,将网络GPU利用率推到50%或以下。 + +更现代的分布式培训策略废除了参数服务器,在DistributedDataParallel 并行策略中,每个进程都是一个工作进程。每个进程仍然在内存中维护模型权重的完整副本,但是批处理片梯度更新现在是同步的,并且直接在工作进程本身上平均。这是使用从高性能计算领域借来的技术来实现的:全归约算法(all-reduce algorithm) + +![](3.jpg) + +该图显示了全归约算法的一种特定实现方式,即循环全归约。 该算法提供了一种优雅的方式来同步一组进程之间的一组变量(在本例中为张量)的状态。 向量在直接的worker到worker连接的序列中直接传递。 这消除了worker与参数服务器之间的连接所造成的网络瓶颈,从而大大提高了性能。 + +在该方案中,梯度更新计算如下: + +1. 每个worker维护它自己的模型权重副本和它自己的数据集副本。 +2. 在接收到开始信号后,每个工作进程从数据集中提取一个分离的批处理,并为该批处理计算一个梯度。 +3. worker使用all-reduce算法来同步他们各自的梯度,本地计算所有节点上相同的平均梯度。 +4. 每个worker都将梯度更新应用到它的本地模型副本上。 +5. 下一批训练开始。 + +在2017年百度的一篇论文《Bringing HPC Techniques to Deep Learning》中,这种全精简策略被提上了日程。它的伟大之处在于它基于众所周知的HPC技术以及长期存在的开源实现。All-reduce包含在消息传递接口(MPI)的标准中,这就是为什么PyTorch不少于三个不同的后端实现:Open MPI、NVIDIA NCCL和Facebook Gloo(一般情况下建议使用NVIDIA NCCL) + +## 数据分发,第1部分:流程初始化 + +不幸的是,将训练脚本修改为使用DistributedDataParallel 并行策略并不是简单的一行更改。 + +为了演示API是如何工作的,我们将构建一个完整的分布式训练脚本(在本文后面的基准测试中,我们将继续讨论这个脚本)。 + +您需要处理的第一个也是最复杂的新事情是进程初始化。普通的PyTorch训练脚本在单个进程中执行其代码的单一副本。使用数据并行模型,情况就更加复杂了:现在训练脚本的同步副本与训练集群中的gpu数量一样多,每个gpu运行在不同的进程中。 + +考虑以下最小的例子: + +``` +# multi_init.py +import torch +import torch.distributed as dist +import torch.multiprocessing as mpdef init_process(rank, size, backend='gloo'): + """ Initialize the distributed environment. """ + os.environ['MASTER_ADDR'] = '127.0.0.1' + os.environ['MASTER_PORT'] = '29500' + dist.init_process_group(backend, rank=rank, world_size=size)def train(rank, num_epochs, world_size): + init_process(rank, world_size) + print( + f"Rank {rank + 1}/{world_size} process initialized.\n" + ) + # rest of the training script goes here!WORLD_SIZE = torch.cuda.device_count() +if __name__=="__main__": + mp.spawn( + train, args=(NUM_EPOCHS, WORLD_SIZE), + nprocs=WORLD_SIZE, join=True + ) +``` + +在MPI的世界中,WORLD_SIZE是编排的进程数量,(全局)rank是当前进程在该MPI中的位置。例如,如果这个脚本要在一个有4个gpu的强大机器上执行,WORLD_SIZE应该是4(因为torch.cuda.device_count() == 4),所以是mp.spawn会产生4个不同的进程,它们的等级 分别是0、1、2或3。等级为0的进程被赋予一些额外的职责,因此被称为主进程。 + +当前进程的等级将作为派生入口点(在本例中为训练方法)作为其第一个参数传递。 在训练时可以执行任何工作之前,它需要首先建立与对等点对点的连接。 这是dist.init_process_group的工作。 在主进程中运行时,此方法在MASTER_ADDR:MASTER_PORT上设置套接字侦听器,并开始处理来自其他进程的连接。 一旦所有进程都已连接,此方法将处理建立对等连接,以允许进程进行通信。 + +请注意,此代码仅适用于在一台多GPU机器上进行训练! 同一台机器用于启动作业中的每个流程,因此训练只能利用连接到该特定机器的GPU。 这使事情变得容易:设置IPC就像在localhost上找到一个空闲端口一样容易,该端口对于该计算机上的所有进程都是立即可见的。 跨计算机的IPC更为复杂,因为它需要配置一个对所有计算机可见的外部IP地址。 + +在本入门教程中,我们将特别关注单机训练(也称为垂直扩展)。 即使在单主机,垂直扩展也是一个非常强大的工具。 如果在云端,垂直扩展可让您将深度学习训练工作一直扩展到8xV100实例(例如AWS上的p3.16xlarge)。 + +我们将在以后的博客文章中讨论水平扩展和数据并行化。 同时,要查看显示其用法的代码配方,请查看PyTorch AWS教程。https://pytorch.org/tutorials/beginner/aws_distributed_training_tutorial.html + +## 数据分发,第2部分:流程同步 + +现在我们了解了初始化过程,我们可以开始完成所有工作的train方法的主体。 + +回想一下我们到目前为止: + +``` +def train(rank, num_epochs, world_size): + init_process(rank, world_size) + print( + f"{rank + 1}/{world_size} process initialized.\n" + ) + # rest of the training script goes here! +``` + +我们的四个训练过程中的每一个都会运行此函数直到完成,然后在完成时退出。 如果我们现在(通过python multi_init.py)运行此代码,我们将在控制台上看到类似以下内容: + +``` +$ python multi_init.py +1/4 process initialized. +3/4 process initialized. +2/4 process initialized. +4/4 process initialized. +``` + +这些过程是独立执行的,并且不能保证训练循环中任一点处于什么状态。 所以这里需要对初始化过程进行一些仔细的更改。 + +**(1)任何下载数据的方法都应隔离到主进程中。** + +否则,将在所有过程之间复制数据下载过程,从而导致四个过程同时写入同一文件,这是造成数据损坏的原因。 + +修改这很容易做到: + +``` +# import torch.distributed as dist +if rank == 0: + downloading_dataset() + downloading_model_weights() +dist.barrier() +print( + f"Rank {rank + 1}/{world_size} training process passed data download barrier.\n" +) +``` + +此代码示例中的dist.barrier将阻塞调用,直到完成主进程(rank == 0)downloading_dataset和downloading_model_weights为止。 这样可以将所有网络I / O隔离到一个进程中,并防止其他进程继续前进。 + +**(2)数据加载器需要使用DistributedSampler。** + + 代码示例: + +``` +def get_dataloader(rank, world_size): + dataset = PascalVOCSegmentationDataset() + sampler = DistributedSampler( + dataset, rank=rank, num_replicas=world_size, shuffle=True + ) + dataloader = DataLoader( + dataset, batch_size=8, sampler=sampler + ) +``` + +DistributedSampler使用rank和world_size找出如何将整个过程中的数据集拆分为不重叠的批次。 工作进程的每个训练步骤都从其本地数据集副本中检索batch_size观测值。 在四个GPU的示例情况下,这意味着有效批大小为8 * 4 = 32。 + +**(3)在正确的设备中加载张量。** + + 为此,请使用该进程正在管理的设备的rank来参数化.cuda()调用: + +``` +batch = batch.cuda(rank) +segmap = segmap.cuda(rank) +model = model.cuda(rank) +``` + +**(4)必须禁用模型初始化中的任何随机性。** + +在整个训练过程中,模型必须启动并保持同步,这一点非常重要。 否则,您将获得不正确的渐变,并且模型将无法收敛。 + +可以使用以下代码使torch.nn.init.kaiming_normal_之类的随机初始化方法具有确定性: + +``` +torch.manual_seed(0) +torch.backends.cudnn.deterministic = True +torch.backends.cudnn.benchmark = False +np.random.seed(0) +``` + +PyTorch文档有一整个页面专门讨论此主题:https://pytorch.org/docs/stable/notes/randomness.html + +**(5)任何执行文件I / O的方法都应与主进程隔离。** + +这与隔离网络I / O的原因相同,是必要的:由于并发写入同一文件而导致的效率低下和潜在的数据损坏。 同样,使用简单的条件逻辑很容易做到这一点: + +``` +if rank == 0: + if not os.path.exists('/spell/checkpoints/'): + os.mkdir('/spell/checkpoints/') + torch.save( + model.state_dict(), + f'/spell/checkpoints/model_{epoch}.pth' + ) +``` + +顺便说一句,请注意,要记录的所有全局损失值或统计信息都需要您自己同步数据。 可以使用torch.distributed中的其他MPI原语来完成此操作,本教程未对此进行深入介绍。 可以参阅Distributed Communication Package PyTorch文档页面以获取详细的API参考。https://pytorch.org/docs/stable/distributed.html + +**(6)将模型包装在DistributedDataParallel中。** + +假设您已正确完成所有其他操作,这就是神奇的地方。 ✨ + +``` +model = DistributedDataParallel(model, device_ids=[rank]) +``` + +这一步时必须的也是最后一步,如果你做完了恭喜你,你的模型现在可以在分布式数据并行模式下训练! + +## 那DataParallel呢? + +熟悉PyTorch API的读者可能知道PyTorch中还有另一种数据并行化策略,即torch.nn.DataParallel。 该API易于使用。 您要做的就是包装模型初始化,如下所示: + +``` +model = nn.DataParallel(model) +``` + + + +所有的改动只有一行! 为什么不使用它呢? + +在后台,DataParallel使用多线程而不是多处理来管理其GPU工作器。 这极大地简化了实现:由于工作进程是同一进程的所有不同线程,因此它们都可以访问相同的共享状态,而无需任何其他同步步骤。 + +但是,由于存在全局解释器锁,在Python中将多线程用于计算作业的效果很差。 如下一节中的基准测试所示,使用DataParallel并行化的模型比使用DistributedDataParallel并行化的模型要慢得多。 + +尽管如此,如果你不想花费额外的时间和精力邮箱使用多GPU训练,DataParallel实可以考虑的。 + +## 基准测试 + +为了对分布式模型训练性能进行基准测试,我在PASCAL VOC 2012数据集(来自torchvision数据集)上训练了20个轮次的DeepLabV3-ResNet 101模型(通过Torch Hub)。 我启动了五个不同版本的模型巡训练工作:一次在单个V100上(在AWS上为p3.2xlarge),一次在V100x4(p3.8xlarge)和V100x8(p3.16xlarge)上使用 DistributedDataParallel和DataParallel。 该基准测试不包括运行开始时花在下载数据上的时间-仅模型训练和节省时间计数。 + +![](4.jpg) + +DistributedDataParallel的效率明显高于DataParallel,但还远远不够完美。 从V100x1切换到V100x4是原始GPU功耗的4倍,但模型训练速度仅为3倍。 通过升级到V100x8使计算进一步加倍,只会使训练速度提高约30%,但是DataParallel的效率几乎达到了DistributedDataParallel的水平。 + +## 结论 + +在本文中,我们讨论了分布式训练和数据并行化,了解了DistributedDataParallel和DataParallel API,并将其应用于实际模型并进行了一个简单的基准测试。 + +分布式计算的领域还有很多可以改进,PyTorch团队刚刚在本月获得了新的PR,该PR承诺将对DistributedDataParallel的性能进行重大改进。 希望这些时间在将来的版本中降下来! + +我认为讨论不多的事情是分布式训练对开发人员生产力的影响。 从“需要三个小时的训练”到“需要一个小时的训练”,即使采用中等大小的模型,也可以极大地增加您可以在一天之内和使用该模型进行的实验的数量,这对开发人员而言是一个巨大的进步。 + +本文代码的github地址:https://github.com/spellml/deeplab-voc-2012 + +最后感谢,deephub翻译组,**deephub-imba**的干货非常的多,并且每天一更并且能够保证高质量,这个比我要强多了:joy:,希望大家多关注他们。 + +![](../../deephub.jpg) + + + diff --git a/chapter4/readme.md b/chapter4/readme.md index ddb6f4d..eeb8ba4 100644 --- a/chapter4/readme.md +++ b/chapter4/readme.md @@ -18,4 +18,7 @@ [Fast.ai](4.3-fastai.ipynb) ## 第五节 多GPU并行训练 -[多GPU并行计算](4.5-multiply-gpu-parallel-training.ipynb) \ No newline at end of file +[多GPU并行计算](4.5-multiply-gpu-parallel-training.ipynb) + +## 补充翻译文章:在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练 +[在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练](distributeddataparallel)