

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 分布式训练优化
<a name="distributed-training-optimize"></a>

根据您的使用场景和数据自定义超参数，以获得最佳的扩展效率。在接下来的讨论中，我们将重点介绍一些最具影响力的训练变量，并提供对 state-of-the-art实现的参考，以便您可以更多地了解您的选择。此外，建议您参考您偏好的框架的分布式训练文档。
+  [Apache MXNet 分布式训练](https://mxnet.apache.org/versions/1.7/api/faq/distributed_training) 
+  [PyTorch 分布式训练](https://pytorch.org/tutorials/beginner/dist_overview.html) 
+  [TensorFlow 分布式训练](https://www.tensorflow.org/guide/distributed_training) 

## 批次大小
<a name="batch-size-intro"></a>

SageMaker AI 分布式工具包通常允许您进行更大规模的训练。例如，如果某个模型能够放入单个设备，但只能使用小批次大小进行训练，则模型并行训练或数据并行训练可以让您实验较大的批次大小。

请注意，批次大小会控制每次迭代时模型更新中的噪声量，进而会直接影响模型准确性。增加批次大小可以减少梯度估算中的噪声量，这在从非常小的批次大小开始增加时会有所帮助，但随着批量大小增加到较大值，可能会导致模型准确性降低。  

**提示**  
调整超参数，以确保您的模型训练随着批次大小的增加能够得到满意的收敛性。

现在已经开发了许多技术，以便在批次增加时保持良好的模型收敛性。

## 小批次大小
<a name="distributed-training-mini-batch"></a>

在 SGD 中，小批次大小量化了梯度估算中存在的噪声量。较小的小批次会产生噪声非常多的小批次梯度，这并不能代表数据集的真正梯度。较大的小批次会得到接近数据集上真实梯度的微批次梯度，并且有可能噪声不够，因而可能会保持锁定在无关的最小点中。

要了解有关这些技术的更多信息，请参阅以下文章：
+ [准确、大型 Minibatch SGD：1 小时 ImageNet 内训练，Goy](https://arxiv.org/pdf/1706.02677.pdf) a 等 
+ [PowerAI DDL](https://arxiv.org/pdf/1708.02188.pdf)，Cho 等人。
+ [大型 Minibatch SGD 的横向扩展：在 ImageNet -1K 上进行残差网络训练，提高了准确性并缩短了训练时间，Codreanu](https://arxiv.org/pdf/1711.04291.pdf) 等人 
+ [ImageNet 在几分钟内完成训练](https://arxiv.org/pdf/1709.05011.pdf)，你等 
+ [卷积网络的大批次训练](https://arxiv.org/pdf/1708.03888.pdf)，You 等人。
+ [深度学习的大批次优化：76 分钟内训练 BERT](https://arxiv.org/pdf/1904.00962.pdf)，You 等人。
+ [54 分钟内加快 BERT 预训练的大批次优化](https://arxiv.org/pdf/2006.13484.pdf)，Zheng 等人。
+ [深度渐变压缩](https://arxiv.org/abs/1712.01887)，Lin 等人。