

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

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

根据您的使用场景和数据自定义超参数，以获得最佳的扩展效率。在下面的讨论中，我们重点介绍了一些最具影响力的训练变量，并提供了对先进实施方案的参考，以便您了解更多的可用选项。此外，建议您参考您偏好的框架的分布式训练文档。
+  [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 分布式工具包通常允许您进行更大规模的训练。例如，如果某个模型能够放入单个设备，但只能使用小批次大小进行训练，则模型并行训练或数据并行训练可以让您实验较大的批次大小。

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

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

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

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

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

要了解有关这些技术的更多信息，请参阅以下文章：
+ [准确，1 小时内完成大批 SGD:Training ImageNet 量迷你批次](https://arxiv.org/pdf/1706.02677.pdf)，Goya 等 
+ [PowerAI DDL](https://arxiv.org/pdf/1708.02188.pdf)，Cho 等人。
+ [大型 Minibatch SGD 的横向扩展：在提高准确性并缩短训练时间的情况下 ImageNet-1K 进行残差网络训练](https://arxiv.org/pdf/1711.04291.pdf)，Codreanu 等人 
+ [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 等人。