NVIDIA 在全球首个全行业 AI 基准测试中拔得头筹
2018-12-20 09:00
近日,MLPerf 联盟公布了其7项测试的首批结果,此7项测试构成了当前机器学习领域的全新行业基准测试。NVIDIA参与了其中6个类别的测试,在这6项测试中,从单节点测试到大规模测试,NVIDIA平台的测试结果都遥遥领先,证明了NVIDIA平台方法在加速机器学习领域的强大实力。
MLPerf 联盟的宗旨是“ 致力于确立一套通用的基准测试,助力机器学习 (ML) 领域跨移动设备和云服务测量系统的训练和推理性能。”NVIDIA 一直以来都是 MLPerf 联盟的主要成员,与其他成员一同积极构建、完善和发展首套商定一致的工作负载,以便可以跨用例范围地直接比较各平台性能。
作为快速成长的新兴市场,机器学习领域缺少用来评估平台性能的行业测试基准。虽然 ResNet-50 等网络经常用作训练和推理的性能代理,但其仍是一套主要基于图像任务的单一CNN,不能提供机器学习平台的完整性能图景。机器学习还包含许多其他用例,例如语音、翻译和推荐系统等。
认识 MLPerf
MLPerf 的关键设计目标之一是工作负载的多样化。因此,它涵盖了对图像和自然语言的使用,以及推荐系统和强化学习等,共 7 项测试。目前,这些工作负载仅可用于测试训练,未来版本的工作负载将计划以推理为重点。
NVIDIA最初致力于研究封闭组,旨在针对ML训练系统(包括硬件和软件)提供有价值的对比。为实现这一目标,封闭组要求所有提交成果均使用相同的数据准备和训练程序来训练相同的神经网络模型架构。从应用程序角度看,这将确保所有条目尽可能等同,性能的差异只归因于软件、硬件或规模不同。选择封闭组的网络模型、数据集和训练程序作为当今机器学习社区中的通用计算方法。另一方面,公开组不用于系统对比,而是用于鼓励网络模型架构和其算法方面的创新。
NVIDIA提交了7项测试类别中的6类测试结果,未提交强化学习测试,是因为这项测试基于战略游戏《GO》,该游戏最初在配备Tesla P100 GPU的服务器上进行开发。但目前情况是,服务器中包含重要的CPU组件,因此只能提供有限的扩展。
MLPerf分数的计算方法是,首先测量训练到达指定目标精度的时间,然后归一化为参考平台上未执行优化所需的时间。归一化的目的是将不同的基准测试转化为相似的分数量级,因为各基准测试所需的训练时间不同。训练时间和 MLPerf 分数均发布在 MLPerf 网站上,为此我们以分钟为单位公布训练时间。以下是 NVIDIA 达到收敛结果的时间,包括单节点和大规模的实现:
单节点封闭组 GPU 性能:
测试平台:DGX-2H – 双路Xeon Platinum 8174、1.5TB 系统 RAM、16 个 32GB Tesla V100 SXM-3 GPU通过NVSwitch互通。
大规模封闭组 GPU 性能:
测试平台:DGX-1V 集群,适用于图像分类和非重复性翻译。DGX-2H 集群,适用于重型物体检测和轻量型物体检测、重复性翻译。每个DGX-1V配备双路 Xeon E5-2698 V4、512GB 系统 RAM、8 个16GB Tesla V100 SXM-2 GPU。每个DGX-2H配备双路Xeon Platinum 8174、1.5TB系统RAM、16个32GB Tesla V100 SXM-3 GPU通过NVSwitch互通。
从以上数字可以看出:单个DGX-2节点能够在20分钟内完成多数工作负载。在大规模提交中,除1次测试外,都在7分钟内完成这些任务。与第二快的提交相比,GPU的交付速度提高达 5.3 倍。鉴于深度学习早期阶段的训练以天和周计算,上述完成时间证明我们在过去几年中取得了巨大进步。以下图表说明我们在训练 ResNet-50 模型方面取得的进步程度:
很显然,因为一系列平台创新,过去几年里性能提升巨大。这些创新包括:
-
NVLink 结构技术:Pascal 架构中引入NVLink允许GPU以300GB/秒的速度进行通信,比PCIe快近10倍。
-
Tensor Cores:Volta架构中引入Tensor Cores,加速了大型矩阵运算(这是AI的核心),在单次运算中执行混合精度矩阵乘法和累加计算。
-
NVSwitch:首款节点交换架构,在单个服务器节点中支持16个全互联GPU,并驱动全部8对GPU 分别以300GB/s的速度同时通信。这16个GPU 还可作为单个大型加速器,拥有0.5TB的统一内存空间和每秒2千万亿次的深度学习计算性能。
全栈优化:方法得当
NVIDIA的加速深度学习方法包含整套平台,并在硬件、软件和生态系统支持下持续创新。这种方法为深度学习社区带来巨大的优势,允许开发人员在任何提供商的云服务上使用任何热门框架,或者使用自己的GPU基础架构实现卓越的性能。NVIDIA向MLPerf提交的测试使用MXNet处理图像分类工作负载(ResNet-50),使用PyTorch提交涵盖翻译、对象检测和实例分割以及推荐器的工作负载。谷歌的TernsorFlow团队也展示了在谷歌云平台上使用NVIDIA V100 GPU处理ResNet-50的出色表现。
这些框架均可在NVIDIA GPU云(NGC)容器注册服务器中免费获取,并且每月更新一次,性能持续改进。此前发表的一篇博客中说明 11 月 18.11 版本的容器中对 NVIDIA 深度学习软件堆栈的最新改进。以下将简述这些改进:
MXNet
-
添加了 Horovod,改进跨多个节点训练的性能。
-
借助小批量 (<= 32) 优化大规模多节点训练的性能
-
有关更多详细信息,请参阅AWS上的博客,其中具体概述了MXNet的最新改进。
TensorFlow
-
更新了XLA图形编译器,优化了运算符融合以节省内存带宽,优化了Tensor Core数据布局。谷歌最近的一篇博客详细介绍了更具体的细节。
PyTorch
-
Apex中新添实用程序,并融合实施Adam优化器,通过减少冗余GPU设备内存通道、改进卷积翻译模型的层归一化性能以及为多进程和多节点训练改进DistributedDataParallel包装器,以提高性能。
cuDNN
-
多方面显著性改进了卷积性能,尤其在每个GPU 小批量处理数据之时;优化了Tensor Core的Persistent RNNs算法。
DALI
-
对象检测模型所需的各种图像预处理例程提速,现在它们可在GPU上运行,而无需CPU。
结束语
NVIDIA对第一组公布结果感到深受鼓舞,并对在AI社区中与各个框架开发团队的合作深感自豪。MLPerf作为一种工具,允许AI平台制造商使用一组商定的用例来比较他们的产品,我们将继续与MLPerf联盟合作,并随AI工作负载的进展,迭代这一基准。以上这些技术现已面向AI开发者社区开放,可从我们的 NGC容器注册服务器获取。敬请关注我们的开发者博客更新,了解有关 TensorFlow、PyTorch和MXNet框架中的具体优化的更多信息。www.mlperf.org 上提供MLPerf基准模型,可根据相关基准目录中的自述文件运行。