1. 引言
毫无疑问,GPU 对于 机器学习从业者来说一直扮演着非常重要的角色,尤其是在需要大量并行计算能力的 深度学习领域。由于英伟达 CUDA 架构 [1] 的出现,开发者得以利用 GPU 的并行计算能力,不需付出额外的努力就能实现通用计算。自 2007 年初首次推出 CUDA 以来,英伟达一直在改变 GPU 市场的格局以及 深度学习等 GPU 驱动的应用。
继 2018 年秋发布最新的图灵架构并推出 GeForce 20 系列以后,英伟达最终于 2018 年末发布了 Titan RTX。表 1.1 展示了 20 系列 GPU 及 10 系列代表性 GPU 1080 Ti 之间的主要差别。除了晶体管体积、CUDA Core、内存容量、内存带宽上的升级之外,20 系列还增加了 Tensor Core 和 光线追踪(RT)核两个主要新部件。Tensor Core 使得 Titan RTX 可以实现高速浮点运算以及大型矩阵运算。Tensor Core 用 深度学习超级采样(DLSS)代替抗锯齿(anti-aliasing)。RT Core 用于生成反射和阴影。
强大的 GPU 促进了整个 机器学习和 深度学习社区的繁荣。由 GPU 支持的流行框架已经发布并迭代更新。 TensorFlow、PyTorch 和 MXNet 是具备 GPU 支持的、使用最广泛的三种框架。虽然这些框架被设计为通用 机器学习平台,但是它们的设计、架构和实现的内在差异导致了 GPU 上 机器学习性能的潜在差异。例如,在 VGG16 训练测试中, TensorFlow 的训练速度比 MXNet 快了 49%,PyTorch 比 MXNet 快了 24%。这种差异对于 机器学习从业者来说非常重要,他们在选择带有特定类型 GPU 的适当框架时必须考虑时间和金钱成本。
我们的目标是评估 TensorFlow、PyTorch 和 MXNet 在 Titan RTX 上实现的性能。此外,通过运行各种混合精度和单精度标准模型的训练阶段和推理阶段,我们不仅收集了训练/推理的进度数据,还记录了 GPU 利用率、内存利用率等实时的 操作系统(OS)指标。这些 操作系统级别的指标进一步帮助区分各个框架利用底层硬件的能力。
安装了 Titan RTX 测试台上的实验表明,在 ImageNet 和 COCO2017 这样相对较大的数据集上, TensorFlow 和 PyTorch 的训练速度可能比 MXNet 略快。但在相对较小的图像上, MXNet 有最好的训练表现。这一转变相当有趣,可能表明 TensorFlow 和 PyTorch 在数据密集型任务的优化上较有潜力,而 MXNet 在一般的 机器学习处理上较好。
另一个有趣的点在于,混合精度在 深度学习中表现非常好,在我们选择的所有实验中,我们不牺牲 准确率就能提高训练速度。这表明,混合精度有成为 深度学习训练主流的潜质。