From 8b5ec40f0f9b8a7f708c57a4a4de847481a44829 Mon Sep 17 00:00:00 2001 From: Ziyan Date: Mon, 27 Jul 2020 17:10:50 +0800 Subject: [PATCH] add data parallel internel design --- .../design/mindspore/dp_internal_design.md | 68 ++++++++++++++++++ .../design/mindspore/images/data_parallel.png | Bin 0 -> 80391 bytes .../advanced_use/distributed_training.md | 1 + .../advanced_use/distributed_training.md | 1 + 4 files changed, 70 insertions(+) create mode 100644 docs/source_zh_cn/design/mindspore/dp_internal_design.md create mode 100644 docs/source_zh_cn/design/mindspore/images/data_parallel.png diff --git a/docs/source_zh_cn/design/mindspore/dp_internal_design.md b/docs/source_zh_cn/design/mindspore/dp_internal_design.md new file mode 100644 index 00000000..5641f215 --- /dev/null +++ b/docs/source_zh_cn/design/mindspore/dp_internal_design.md @@ -0,0 +1,68 @@ +# 分布式训练架构设计概述 + + +- [分布式训练架构设计概述](#分布式训练架构设计概述) + - [背景](#背景) + - [概述](#概述) + - [集合通信](#集合通信) + - [同步模式](#同步模式) + - [数据并行](#数据并行) + - [设计原理](#设计原理) + - [代码实现](#代码实现) + - [其他并行](#其他并行) + + + +## 背景 +随着深度学习的快步发展,为了提升神经网络的精度和泛化能力,数据集和参数量都在呈指数级向上攀升。分布式并行训练成为一种解决超大规模网络性能瓶颈的发展趋势。MindSpore支持了当前主流的分布式训练范式并开发了一套自动混合并行解决方案。本篇设计文档将会集中介绍几种并行训练方式的设计原理,同时指导用户进行自定义开发。 + + +## 概念 +### 集合通信 +集合通信指在一组进程间通信,组内所有进程满足一定规则的发送和接收数据。MindSpore通过集合通信的方式进行并行训练过程中的数据传输工作,在Ascend芯片上它依赖于华为集合通信库HCCL完成。 + +### 同步模式 +在同步模式下,所有的设备同时读取参数的取值,并且当反向传播算法完成之后同步更新参数的取值。MindSpore目前采用的是同步训练模式。 + +## 数据并行 +这个小节介绍了在MindSpore中`ParallelMode.DATA_PARALLEL`数据并行模式是如何工作的。 + +### 设计原理 + +![数据并行图解](./images/data_parallel.png) + +1. 环境依赖 + + 每次开始进行并行训练前,通过调用`mindspore.communication.init`接口初始化通信资源,并自动创建全局通信组`HCCL_WORLD_GROUP`。 + +2. 数据分发 + + 数据并行的核心在于将数据集在样本维度拆分并下发到不同的卡上。在`mindspore.dataset`模块提供的所有数据集加载接口中都有`num_shards`和`shard_id`两个参数,它们用于将数据集拆分为多份并循环采样的方式,采集`batch`大小的数据到各自的卡上,当出现数据量不足的情况时将会从头开始采样。 + +3. 网络构图 + + 数据并行网络的书写方式与单机网络没有差别,这是因为在正反向传播过程中各卡的模型间是独立执行的,只是保持了相同的网络结构。唯一需要特别注意的是为了保证各卡间训练同步,相应的网络参数初始化值应当是一致的,这里建议通过`numpy.random.seed`在每张卡上设置相同的随机数种子达到模型广播的目的。 + +4. 梯度聚合 + + 数据并行理论上应该实现和单机一致的训练效果,为了保证计算逻辑的一致性,在梯度计算完成后插入`AllReduce`算子实现各卡间的梯度聚合操作。这里我们设置了`mean`开关,用户可以选择是否要对求和后的梯度值进行求平均操作,也可以将其视为超参项,类比于学习率倍数放大或缩小。 + +5. 参数更新 + + 因为引入了梯度聚合操作,所以各卡的模型会以相同的梯度值一起进入参数更新步骤。因此MindSpore实现的是一种同步数据并行训练方式。理论上最终每卡训练出来的模型是相同的,如果网络中含有在样本维度的归约类型操作,网络的输出可能会有所差别,这是由数据并行的切分性质决定的。 + +### 代码实现 +1. 集合通信 + + - management.py: 这个文件中涵盖了集合通信过程中常用的`helper`函数接口,例如获取集群数量和卡的序号等。当在Ascend芯片上执行时,框架会加载环境上的`libhccl.so`库文件,通过它来完成从Python层到底层的通信接口调用。 + - comm_ops.py: MindSpore将支持的集合通信操作都包装为算子的形式放在这个文件下,包括`AllReduce`、`AllGather`、`ReduceScatter`和`Broadcast`等。`PrimitiveWithInfer`中除了定义算子所需属性外,还包括构图过程中输入到输出的`shape`和`dtype`推导。 + +2. 梯度聚合 + + - grad_reducer.py: 这个文件实现了梯度聚合的过程。对入参`grads`用`HyperMap`展开后插入`AllReduce`算子,这里采用的是全局通信组,用户也可以根据自己网络的需求仿照这个模块进行自定义开发。MindSpore中单机和分布式执行共用一套网络封装接口,在`Cell`内部通过`ParallelMode`来区分是否要对梯度做聚合操作,网络封装接口建议参考`TrainOneStepCell`代码实现。 + + +### 其他并行 +建设中,即将上线 + + diff --git a/docs/source_zh_cn/design/mindspore/images/data_parallel.png b/docs/source_zh_cn/design/mindspore/images/data_parallel.png new file mode 100644 index 0000000000000000000000000000000000000000..41d1bcfc2404ec399ce70bef15de5bcfccaef97c GIT binary patch literal 80391 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

bPk0Y@g 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 z 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 literal 0 HcmV?d00001 diff --git a/tutorials/source_en/advanced_use/distributed_training.md b/tutorials/source_en/advanced_use/distributed_training.md index d98bdf3e..f97f2c0a 100644 --- a/tutorials/source_en/advanced_use/distributed_training.md +++ b/tutorials/source_en/advanced_use/distributed_training.md @@ -226,6 +226,7 @@ The `Momentum` optimizer is used as the parameter update tool. The definition is - `parallel_mode`: parallel distributed mode. The default value is `ParallelMode.STAND_ALONE`. The options are `ParallelMode.DATA_PARALLEL` and `ParallelMode.AUTO_PARALLEL`. - `parameter_broadcast`: whether to broadcast initialized parameters. The default value is `True` in `DATA_PARALLEL` and `HYBRID_PARALLEL` mode. - `mirror_mean`: During backward computation, the framework collects gradients of parameters in data parallel mode across multiple hosts, obtains the global gradient value, and transfers the global gradient value to the optimizer for update. The default value is `False`, which indicates that the `allreduce_sum` operation is applied. The value `True` indicates that the `allreduce_mean` operation is applied. +- `enable_parallel_optimizer`: a developing feature. Whether to use optimizer model parallel, which improves performance by distributing the parameters to be updated to each worker, and applying Broadcast among workers to share updated parameters. > You are advised to set `device_num` and `global_rank` to their default values. The framework calls the HCCL API to obtain the values. diff --git a/tutorials/source_zh_cn/advanced_use/distributed_training.md b/tutorials/source_zh_cn/advanced_use/distributed_training.md index 423c979c..ed8115fd 100644 --- a/tutorials/source_zh_cn/advanced_use/distributed_training.md +++ b/tutorials/source_zh_cn/advanced_use/distributed_training.md @@ -227,6 +227,7 @@ class SoftmaxCrossEntropyExpand(nn.Cell): - `parallel_mode`:分布式并行模式,默认为单机模式`ParallelMode.STAND_ALONE`。可选数据并行`ParallelMode.DATA_PARALLEL`及自动并行`ParallelMode.AUTO_PARALLEL`。 - `parameter_broadcast`: 参数初始化广播开关,`DATA_PARALLEL`和`HYBRID_PARALLEL`模式下,默认值为`True`。 - `mirror_mean`:反向计算时,框架内部会将数据并行参数分散在多台机器的梯度值进行收集,得到全局梯度值后再传入优化器中更新。默认值为`False`,设置为True对应`allreduce_mean`操作,False对应`allreduce_sum`操作。 +- `enable_parallel_optimizer`:开发中特性。优化器模型并行开关,通过拆分权重到各卡分别进行更新再同步的方式以提升性能。 > `device_num`和`global_rank`建议采用默认值,框架内会调用HCCL接口获取。 -- GitLab