2. 性能指南:总结

  • 2 replies
  • 128 views
*

sisiy

  • *****
  • 123
    • 查看个人资料
2. 性能指南:总结
« 于: 六月 15, 2019, 11:36:17 am »
本节简要介绍了可以用来提高性能的最重要的指南。如果您想直接跳到优化网络,请阅读本节!文件的其余部分更深入地讨论了这些指导原则的细节以及它们为什么重要;我们在适当的地方链接到带有附加信息的部分。

在讨论深度学习常用的例程时,我们区分了有限数学运算和有限带宽运算。受数学限制的例程的性能受计算速率而不是内存带宽的限制。这类典型的例子有全连接层、卷积层和递归层,它们涉及到每个输入和输出值的许多计算。张量核被设计用来加速这些程序。相反,带宽受限的例程涉及相对较少的每个输入和输出值的计算,因此它们的速度几乎总是受到内存带宽的限制。大多数其他类型的操作,包括激活函数、池和批处理规范化,都属于这一类。张量核不用于这些例程,因为加快计算速度不会提高它们的性能。

每个类别中的哪些操作取决于操作的参数和使用的加速器设备。如果计算速率足够高,任何例程都会受到内存带宽的限制。此外,通常受数学限制的例程可以用导致它们受带宽限制的参数来定义。我们将在GPU性能背景https://docs.nvidia.com/deeplearning/sdk/dl-performance-guide/index.html#gpu-perf中更详细地讨论这一点,更具体地说,是理解性能https://docs.nvidia.com/deeplearning/sdk/dl-performance-guide/index.html#understand-perf

以下建议主要适用于数学有限的深度学习程序。对于不同类型的层,包括有限的数学和有限的带宽,请在本节的末尾给出更具体的建议。

*

sisiy

  • *****
  • 123
    • 查看个人资料
Re: 2. 性能指南:总结
« 回复 #1 于: 六月 15, 2019, 11:38:22 am »
2.1。启动张量核
张量核设计用于显著加快深度学习操作;我们建议尽可能选择启用它们的参数。

如果操作的关键参数在FP16数据上可以被8整除,或者在INT8数据上可以被16整除,则使用张量核。对于全连接层,这意味着选择批量大小和输入输出的数量为8(或16)的倍数;对于卷积层,输入和输出通道的数量只需要被8(或16)整除。这一要求基于数据在内存中的存储和访问方式;进一步的细节可以在张量核要求https://docs.nvidia.com/deeplearning/sdk/dl-performance-guide/index.html#requirements-tc中找到。

*

sisiy

  • *****
  • 123
    • 查看个人资料
Re: 2. 性能指南:总结
« 回复 #2 于: 六月 15, 2019, 11:57:28 am »
 2.2。选择参数以最大化执行效率
gpu通过在多个并行进程之间划分工作来高效地执行操作。因此,使用参数,更容易平均拆分操作,从而获得最佳效率。

这意味着选择参数(包括批处理大小、输入大小、输出大小和通道计数),使其能被2的更大幂数整除(至少64,最多256)。使用大于256的2的乘方可以整除的值没有缺点,但是没有什么额外的好处。对于不同例程的更具体的需求可以在本节的末尾找到。为什么这很重要的背景可以在GPU架构基础https://docs.nvidia.com/deeplearning/sdk/dl-performance-guide/index.html#gpu-archTypical Tile Dimensions In cuBLAS And Performancehttps://docs.nvidia.com/deeplearning/sdk/dl-performance-guide/index.html#cublas-tile-dim 中找到。