社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

攀登百亿亿级深度学习之巅

TensorFlow • 7 年前 • 1434 次点击  

文 / Prabhat 先生 (NERSC) 和 Mike Houston (NVIDIA)


2018 年,由美国国家能源研究科学计算中心 (NERSC) 与 NVIDIA 组成的联合团队取得了一项突破性成就。他们成功将一种科学严谨的深度学习应用扩展至 27000 多个 NVIDIA V100 Tensor 核心 GPU,攻克了此过程中百亿亿次运算的难关。凭借该项成就,研究团队由此斩获高性能计算领域的最高奖项 ACM 戈登贝尔奖。除 2018 年的技术论文与新闻稿之外,我们还将在本文中探讨这项成就对 AI 领域产生的深远影响,以及未来面临的开放性挑战。


由伯克利实验室与橡树岭国家实验室各自领导的两个研究团队共享 2018 年 ACM 戈登贝尔奖



深度学习软件:性能与生产力

低级工具能为开发者带来精确度,高级工具则可提高工作效率,这二者之间总存在一个折衷点。我们已为此找到解决方案。在本次项目中,我们用高效的 Python 和 TensorFlow 表示网络架构与整体的应用工作流。TensorFlow 反过来会利用在 C 和 C++ 环境中实施的例程来实现高性能,提供精确度,并解放开发者以提高其工作效率。因此,在 8 个月的时间里,我们的团队从头开始构建网络原型,并在全球最大的高性能计算 (HPC) 系统 Summit 上对其性能与扩展作出了优化。


我们相信,此项目能够展示出研究人员长期推测的 HPC 与 AI 软件堆栈的实际融合效果,即以 C/C++ 编写的高性能库 (CuDNN) 和框架 (TensorFlow),以及通过 Python 公开的高效接口。同理,我们还在 NCCL 和 MPI 中实施经高度优化且基于拓扑感知的通信集合,但通过简单高效的 Horovod 接口实现公开。展望未来,我们相信,在助力科学家及更广泛的研究社区探索更复杂架构的过程中,为混合并行模式(数据、模型、流水线)提供透明支持将至关重要。



深度学习硬件:GPU 和混合精度

本次项目利用 NVIDIA Volta GPU 来训练 DeepLabv3+ 分割网络。在混合精度模式下,Volta 上可达到的峰值性能为 125 万亿次浮点运算。该模式由 NVIDIA 通过 Tensor 核心 GPU 架构推出,可执行 FP16 精度计算并能以 FP32 精度模式累积结果。在本项目开展之前,该领域存在一个仍待解决的问题,即现实的科学应用能否利用 FP16(不损失精确度)并获得较高的峰值性能。我们的研究最终证明,对于科学领域的模式识别问题,16 位精度可能足以满足相关需求。此外,对于拥有 4000 多个计算核心的复杂应用而言,极高的峰值亦有可能实现:在规模庞大的 GPU 集群上,我们的应用实现了每块 GPU 大约 40 万亿次浮点运算的峰值性能。


我们相信,这些结果为科学应用打开了通往低精度加速器的一扇大门。虽然原始数据集可能具有高精度(64 位或 32 位),但我们或许仍可以在不损失收敛或稳定性的前提下,以低精度模式执行模式识别任务。



开放性挑战

如要在当代的 HPC 系统上实现百亿亿级的性能,我们需对所有组件仔细调优,包括硬件(CPU、GPU、NVLink、文件系统、网络互连)和软件。虽然我们的项目成功实现了大幅调优、优化和扩展,但我们想指出两项挑战,以便向行业及研究社区征求更多意见。


大规模数据管理

得益于 GPU 架构在加快计算方面取得的进展,我们现已能在单个硅处理器上畅享高于 100 万亿次浮点运算级的性能。随着 GPU 速度越来越快,向其输送数据的能力会逐渐限制性能。本次项目中,我们对 20 太字节的数据集展开分析,这实际上需要整个 Summit 系统保持每秒大约 4 太字节的 I/O 速率。Summit 上的 GPFS 文件系统根本无法胜任该项任务,在 NERSC Cori 系统的 Lustre 文件系统上执行的类似实验也以彻底失败而告终。对于这两种情况,在节点本地 NVMe 上暂存数据和突发缓冲区技术便显得至关重要。


传统的 HPC 文件系统主要用于支持以写入为主的工作负载;而深度学习工作负载则属于读取密集型负载,对数据带宽和元数据操作速率要求颇高。如要支持大规模深度学习工作负载,我们可能必须先对缓存分层、分片和混编操作提供透明支持。


大规模收敛

提供深度学习解决方案的时间由两部分构成:计算扩展效率和统计扩展效率。我们的研究已经展示出卓越的计算扩展性能,并且提供了许多有关系统级注意事项的建议。一个未解决的问题是,如何使用 SGD(随机梯度下降)的其中一个收敛属性取代大批量(在本项目中,批量大小高于 27000)。


在 HPC 资源上提供高度并行性具有正反两方面作用。如要以超高并发级别在大规模资源上运行,我们需在短时间内对超参数进行调优。有关收敛算法行为的启发式方法可能会或不会继承自较小规模的运行。尽管目前对于选择各类超参数所产生效果的实证评估都很合理,但我们预计,科学界将需要更好的指导原则,以及用于解决新问题的收敛保证。


我们相信,在解决收敛问题的过程中,进一步开发 LARS 与 LARC 等新算法和潜在的高阶优化方法将是至关重要的一环。



致谢

除 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 为我们提供的建议与支持。



更多 AI 相关阅读:




今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/HRmncFO8xJ
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29096
文章 [ 1 ]  |  最新文章 5 年前