https://blog.tensorflowcn.cn/2019/02/scaling-summit-of-exascale-deep-learning.html
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAxxxkS0Tu6h4aQjjX3lNC6RazU6Va7ZEdezineHW2R9j_pXEJLSZVshzaivF94BmSASb15rLUAY6ZE2_216lC8jTwqS7yrSED8GBcrMcxtvuNpaOKu4QVjnyFlBNTovbcvDpiXsBIitw/s1600/team.png
由 Prabhat 先生 (NERSC) 和 Mike Houston (NVIDIA) 撰写的客座文章
在 2018 年的一项
突破性成就 中,我们来自
NERSC 和 NVIDIA 的联合团队成功地将一个科学深度学习应用程序扩展到 27,000 多个
Nvidia V100 Tensor Core GPU,在此过程中突破了艾级计算的障碍。这项成就获得了
ACM 高登贝尔奖,这是高性能计算领域最崇高的荣誉。除了 2018 年的
技术论文 和新闻稿之外,这篇博文还提供了一个关于这项成就对人工智能领域更广泛影响的视角以及未来面临的开放挑战。
|
由伯克利实验室领导的一个 研究团队 和橡树岭国家实验室领导的另一个研究团队共同获得了 2018 年 ACM 高登贝尔奖。 |
深度学习软件:性能和生产力
一直以来都存在着一种权衡:低级工具为开发人员提供精确性,而高级工具则让他们可以快速工作。我们找到了解决这个问题的方法。在我们的项目中,我们使用高生产力的 Python 和 TensorFlow 来表达网络架构和整体应用程序工作流程。TensorFlow 反过来利用在 C 和 C++ 中实现的例程来实现高性能,提供精确性并解放开发人员,让他们可以快速行动。因此,在八个月的时间里,我们的团队从头开始对网络进行原型设计,并优化了其在 Summit 上的性能和扩展性,Summit 是世界上最大的高性能计算系统。
我们相信,这个项目体现了人们长期以来推测的高性能计算和人工智能软件堆栈融合的实际情况:用 C/C++ 编写的性能极高的库 (CuDNN) 和框架 (TensorFlow),以及通过 Python 公开的生产力接口。同样,高度优化、拓扑感知的通信集合是在 NCCL 和 MPI 中实现的,但通过生产力和简单的 Horovod 接口公开。展望未来,我们相信,对混合并行模式(数据、模型、管道)的透明支持对于使科学家和更广泛的研究界能够探索更复杂的架构至关重要。
深度学习硬件:GPU 和混合精度
我们的项目利用了 NVIDIA Volta GPU 来训练 DeepLabv3+ 分割网络。Volta 的峰值性能在混合精度模式下可以达到 125 teraflops。这种模式由 NVIDIA 随着 Tensor Core GPU 架构引入,在 FP16 中执行计算,并在 FP32 中累积结果。在该项目之前,该领域存在一个悬而未决的问题,即现实的科学应用是否可以利用 FP16(不会损失精度)并获得接近峰值性能的比例。我们的工作最终证明,对于科学中的模式识别问题,16 位精度可能就足够了。此外,对于具有 4000 多个计算内核的复杂应用程序,可以实现非常高的峰值比例:我们的应用程序在海量规模下获得了约 40 teraflops/GPU 的峰值性能。
我们相信,这些结果为科学应用打开了低精度加速器的大门。虽然原始数据集可能处于高精度(64 位或 32 位),但模式识别任务很可能可以在不损失收敛性或稳定性的情况下以低精度进行。
开放挑战
在当代高性能计算系统上实现艾级计算性能需要对所有组件进行仔细调整:硬件(CPU、GPU、NVLink、文件系统、网络互连)和软件。虽然我们的项目在很大程度上成功地进行了调整、优化和扩展,但我们想指出两个挑战,这些挑战可以利用来自行业和研究界的更广泛的投入。
海量数据管理
由于 GPU 架构在更快的计算方面的进步,我们现在可以在单个硅处理器上享受 100 多 teraflop 的性能。随着 GPU 的速度越来越快,性能受到为其提供数据的能力的限制。在我们的项目中,我们分析了一个 20 terabyte 的数据集,这实际上需要在整个 Summit 系统中达到约 4 terabyte/秒的持续 I/O 速率。Summit 上的 GPFS 文件系统根本无法完成这项任务;在 NERSC 的 Cori 系统上进行的类似实验在 Lustre 文件系统上也遭遇了惨败。在这两种情况下,将数据暂存到
节点本地 NVMe 和
Burst Buffer 技术 被证明至关重要。
传统的高性能计算文件系统主要设计为支持面向写入的工作负载;深度学习工作负载是读密集型的,对数据带宽和元数据操作速率都提出了很高的要求。对缓存分层、分片和混洗的透明支持很可能成为支持深度学习工作负载规模化运行的先决条件。
规模化融合
深度学习的求解时间包含两个组成部分:计算扩展效率和统计扩展效率。我们的工作展示了出色的计算扩展性,并提供了一些关于系统级考虑因素的指针。一个悬而未决的问题是,在采用大批量大小(在我们的案例中为 27,000 多个)的情况下,SGD(随机梯度下降)的收敛特性。
在高性能计算资源上获得高度并行性既是福音,也是诅咒。在空前的并发性下运行大型资源需要在很短的时间窗口内进行超参数调整。收敛算法行为的启发式方法可能也可能不会从较小规模的运行中延续下来。虽然目前对各种超参数选择的影响进行经验评估是合理的,但我们预计科学界需要更好的指导原则以及针对新问题的收敛保证。
致谢
除了 Mike Houston 和 Prabhat 之外,高登贝尔奖团队还包括 Thorsten Kurth (NERSC)、Sean Treichler (NVIDIA)、Josh Romero (NVIDIA)、Massimiliano Fatica (NVIDIA)、Nathan Luehr (NVIDIA)、Everett Philips (NVIDIA)、Ankur Mahesh (加州大学伯克利分校)、Mayur Mudigonda (加州大学伯克利分校)、Jack Deslippe (NERSC) 和 Michael Matheson (OLCF)。我们感谢来自 Google TensorFlow 团队的 Paul Tucker、Rajat Monga 和 Thiru Palanisamy 提供的建议和支持。
我们相信,进一步开发新的算法,例如 LARS 和 LARC,以及可能更高阶的优化方法,对于解决收敛问题至关重要。