

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

# 优化
<a name="tutorial-gpu-opt"></a>

要充分利用您的数据 GPUs，您可以优化数据管道并调整深度学习网络。如以下图表所述，神经网络的简单或基本实施对 GPU 的使用可能会不一致且不充分。当您优化预处理和数据加载时，您可以从您的 CPU 到 GPU 减少瓶颈。您可以通过使用混合化（该框架支持时）、调整批大小并同步调用来调整神经网络本身。您也可以在大多数框架中使用多精度（float16 或 int8）训练，从而可以显著提高吞吐量。

以下图表显示应用不同优化时的累积性能提升。您的结果将取决于要处理的数据和要优化的网络。

![\[的性能增强 GPUs\]](http://docs.aws.amazon.com/zh_cn/dlami/latest/devguide/images/performance-enhancements.png)


以下指南介绍将使用您的 DLAMI 并帮助您提升 GPU 性能的选项。

**Topics**
+ [

# 预处理
](tutorial-gpu-opt-preprocessing.md)
+ [

# 训练
](tutorial-gpu-opt-training.md)

# 预处理
<a name="tutorial-gpu-opt-preprocessing"></a>

通过转换或扩增的数据预处理通常可以是一个绑定 CPU 的流程，而且这可以是您的整体管道中的瓶颈。框架具有用于图像处理的内置运算符，但 DALI（数据扩增库）通过框架的内置选项展示了改进的性能。
+ NVIDIA 数据扩增库 (DALI)：DALI 将数据扩增卸载到 GPU。该项未预安装在 DLAMI 上，但您可以通过安装它或在您的 DLAMI 或其他 Amazon Elastic Compute Cloud 实例上加载支持的框架容器来访问它。有关详细信息，请参阅 NVIDIA 网站上的 [DALI 项目页面](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html)。有关示例用例和下载代码示例，请参阅[ SageMaker 预处理训练](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance)性能示例。
+ nvJPEG：一个面向 C 编程人员的 GPU 加速型 JPEG 解码器库。它支持解码单个图像或批处理以及深度学习中常见的后续转换操作。nvJPEG 具有内置 DALI，或者您可以从 [NVIDIA 网站的 nvjpeg 页面](https://developer.nvidia.com/nvjpeg)下载并单独使用它。

您可能对有关 GPU 监控和优化的以下其他主题感兴趣：
+ [监控](tutorial-gpu-monitoring.md)
  + [GPUs 使用监视器 CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [优化](tutorial-gpu-opt.md)
  + [预处理](#tutorial-gpu-opt-preprocessing)
  + [训练](tutorial-gpu-opt-training.md)

# 训练
<a name="tutorial-gpu-opt-training"></a>

利用混合精度训练，您可以使用相同的内存量部署更大的网络，或者减少内存使用量（与您的单精度或双精度网络相比），并且您将看到计算性能增加。您还将受益于更小且更快的数据传输，这在多节点分布式训练中是一个重要因素。要利用混合精度训练，您需要调整数据转换和损失比例。以下是介绍如何针对支持混合精度的框架执行此操作的指南。
+ [NVIDIA 深度学习 SDK](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/) ——NVIDIA 网站上描述了 MXNet PyTorch、和的混合精度实现的文档。 TensorFlow

**提示**  
请务必针对您选择的框架检查网站，并且搜索“混合精度”或“fp16”，了解最新的优化方法。下面是可能对您有帮助的一些混合精度指南：  
[混合精度训练 TensorFlow （视频）](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/)-在 NVIDIA 博客网站上。
[使用 float16 进行混合精度训练，其中包含网站 MXNet](https://mxnet.apache.org/api/faq/float16)上的常见问题解答文章。 MXNet 
[NVIDIA Apex：一款用于轻松进行混合精度训练的工具 PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) ——NVIDIA 网站上的一篇博客文章。

您可能对有关 GPU 监控和优化的以下其他主题感兴趣：
+ [监控](tutorial-gpu-monitoring.md)
  + [GPUs 使用监视器 CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [优化](tutorial-gpu-opt.md)
  + [预处理](tutorial-gpu-opt-preprocessing.md)
  + [训练](#tutorial-gpu-opt-training)