世界第一超算跑深度学习模型2.76万块V100GPU将分布式训练扩展到极致

2019-10-02 19:11:08  阅读:1782+ 作者:责任编辑NO。石雅莉0321 责任编辑:责任编辑NO。石雅莉0321

编者按:本文来自微信大众号“机器之心”(ID:almosthuman2017),作者:Nouamane Laanait、Joshua Romero等,机器之心编译,36氪经授权发布。

分布式核算的确需求在许多 GPU 上练习,但你见过在排名榜首的超算上练习深度模型,在 2.76 万块 V100 GPU 练习模型的办法吗?重要的是,经过新的通讯战略,这么多 GPU 还能完结近线性的加快比,橡树岭国家实验室和英伟达等组织的这项研讨真的 Amazing。

论文链接:https://arxiv.org/pdf/1909.11150.pdf

在这篇论文中,研讨者介绍了同步分布式 DL 中一种新式通讯战略,它首要由梯度减缩编列和梯度张量分组战略组成。这些新技能令核算和通讯之间发生了最完美的堆叠,而且完结了近线性的 GPU 扩展。

也便是说,在 Summit 超算中,它能运用 2.76 万块 V 100 GPU 高效地练习模型,且扩展系数到达了惊人的 0.93。0.93 是个什么概念?咱们可以经过 TensorFlow 的官方 Benchmark 了解一番。如下所示,60 块 GPU 抱负状况下能取得 60 倍的加快,可是曾经 TF 练习 ResNet-152 只能取得 50 倍的加快。

图片来历:https://www.tensorflow.org/guide/performance/benchmarks

这还仅仅 60 块 GPU,它的扩展系数就只有 0.83。此外,假如 GPU 扩展到 1000 甚至更多,那么这个系数还会急剧下降。

虽然近来许多分布式练习战略也能到达近线性扩展,例如 Ring All Reduce 或刘霁等研讨者提出的 DoubleSqueeze(ICML 2019) 等等,但如这篇论文能在超算、在 2.76 万块 V 100 GPU 上完结近线性的加快功能,仍是十分罕见。

此外,重要的是,研讨者展现了大规划分布式 DL 练习在科学核算问题中的强壮才能,它能更合理地运用超算的才能。本文并不要点介绍这一部分,感兴趣的读者可查阅原论文。

什么是分布式练习

直观上,分布式练习只不过是由一块 GPU 扩展到多块 GPU,但随之而来的是各种问题:模型、数据怎样切割?梯度怎样传达、模型怎样更新?

在分布式核算中,一般咱们可以将不同的核算机视为不同的核算节点,它们经过互联网相连而组成整个核算集群。现在重要的便是找到一种办法将核算力与模型练习相「结合」,也便是分布式战略。最直观的两种战略或许便是模型并行与数据并行,它们从不同的视点考虑怎么切割模型练习进程。

其间模型并行指的是从逻辑大将模型切割为不同的部分,然后再布置到不同的核算节点,就像 AlexNet 那样。这种办法首要处理的是模型参数量过大等耗显存的状况。数据并行指的是将数据集切割为不同的子模块,然后馈送到不同的节点中。与模型不同,数据天然便是可并行的,因而实践中大部分问题都选用数据并行战略。

在数据并行中,详细还有多种并行战略,例如同步 SGD 和异步 SGD 等。它们是最常见的分布式练习办法,TensorFlow、PyTorch 等结构都可以直接调用这几种形式。

同步 SGD 与异步 SGD 的更新进程,其间同步 SGD 会等一切服务器完结核算,异步 SGD 不同的服务器会独立更新参数。

数据并行的问题在哪?

虽然数据并行是运用最广泛的办法,但它缺陷也十分显着。作为一种分布式战略,数据并行需求的通讯量十分大,需求在练习进程中履行堵塞通讯调集来同步 DNN 梯度。在单个练习过程中,核算和通讯操作之间的次优堆叠会带来通讯开支,或形成数据并行分布式深度学习功率低下。

在运用 10 到 100 块 GPU/TPU 加快器的中小规划体系中,因为体系噪声和负载改变的存在,这些扩展低效或许很难检测并得到体系地优化。可是,需求留意的是,即便仅仅 5-10% 的扩展低效也会在许多练习过程和练习进程中堆集,然后进一步加深深度学习对环境的损坏。

数据并行完结的扩展低效在大规划体系中体现最为显着,如在 1000-10000 块芯片的加快体系中,许多分布式战略会发生许多丢失。在本文中,研讨者提出,超级核算机是开发和测验能完结数据并行近线性扩展的梯度减缩战略的抱负体系。

将数据并行扩展到大规划的超级核算机体系也是由后者的传统负载(包含科学的数值模仿)推进的。特别重要的是,将深度学习运用到科学模仿中来加快履行、减少算力需求,一般需求运用 DNN 来迫临长期存在的逆问题的解。在本文中,研讨者经过改善梯度减缩战略展现了这一方向的榜首步。

用超算测测数据并行

本文中展现的一切丈量数据都是在橡树岭国家实验室的超级核算机 Summit 上得到的,它也是现在世界上核算速度排名榜首的超级核算机。

Summit 体系包含 256 个机架,上面遍及 IBM Power System AC922 核算节点(总共有大约 4600 个节点),每个核算节点配有 2 个 IBM POWER9 CPU 和 6 块 NVIDIA V100 GPU。

研讨者着眼于一个用于 DNN 分布式练习的数据并行办法。现在规划最大的分布式 DNN 练习是由 Kurth 等人(2018)施行的,用来在气候模仿数据上学习一个切割使命。他们运用一个修改正的 DNN 切割模型(DeepLabV3),该模型的单个 GPU 核算功能可以到达 38.45 TFLOP_16(16 指的是 float 16 精度),相当于 V100 GPU 理论峰值速度的 31%。

在下图 1 中,研讨者丈量了分级 allreduce 多达 1024 个 Summit 节点的扩展功率。这种次线性扩展十分显着,原因在于大型节点上的 worker 协作低效,导致通讯和核算之间的堆叠较差。

图 1:不同梯度减缩战略关于扩展功率的影响。

中心思维:梯度减缩战略

要在超算这种超大规划算力上完结近线性的扩展,那么就需求构建更好的分布式战略。研讨者表明,他们首要的奉献即完结了新的梯度减缩(gradient reduction)战略,然后在核算与通讯之间完结了最优的堆叠,这令 GPU 扩展功能到达了新的 SOTA。

直观而言,梯度减缩战略包含(1)轻量级的服务器和谐技能(BitAllReduce)、(2)梯度张量分组战略(Grouping)。这两种编列战略从不同层面提高了用 Horovod 完结的分布式深度学习功能。

BitAllReduce 和 Grouping 对 GPU 扩展功率的影响分别在图 1 顶用黑线和红线显现。一起,它们带来了超越 8 倍的缩放功率(图 1、2)。这些梯度减缩战略与核算渠道无关,而且不对节点的连通网络拓扑结构进行任何假定。

图 2:Horovod 时刻线展现了经过编列 Bitvector Allreduce 和 Grouping 带来的提高,其间蓝色的垂直线为环(cycle)符号。

首要,Bitvector Allreduce 批改了经过调集(collective)进行梯度张量减缩的和谐办法(参见图 3)。Bitvector Allreduce 的首要思维是运用缓存的元数据,并令它与每个梯度张量相相关,然后答应本地拜访每个 MPI-rank,以全局地和谐履行调集操作(collective operation)。从本质上讲,咱们用单个调集(Bitvector 上的 MPI Allreduce)替换了 Horovod 的原始服务器战略(请参见图 3b)。

图 3:和谐战略比照,3a:在原始和谐战略中,Rank 0:(i) 搜集恳求 T_n;(ii) 确认一切等级中的通用恳求;(iii) 构建相关呼应 R_n;(iv) 将呼应的有序列表广播到一切等级的履行进程中。3b:改善后的和谐战略,每一个等级都查看呼应是不是在缓存中,并相应地在 Bitvector 中的设置位。

其次,研讨者引入了「分组」计划,它将梯度张量看做图上色算法。本质上来说,每一个 MPI 等级依据它的核算依赖性图对节点进行上色,其间节点就等于梯度张量。然后,咱们就能依据不同的色彩将梯度张量分组(如图 4 所示)。然后,仅针对一切等级上都现已预备彻底的组进行调集操作(Collective operation)。「分组」的优势之一是运用户可以灵敏地以开发 DNN 模型体系结构的办法拟定调集,然后完结更高的功率。

图 4:分组图示。左边展现了由生成恳求 T_n 构建的使命图,其间不同的使命为不同的节点,该使命图经过虚线框表明 Horovod 在三个子环中可见的恳求。节点经过不同的色彩表明使命可以分为两组:蓝色实线的节点和绿色虚线的节点。

最终,研讨者发现 Grouping 和 Bitvector Allreduce 能独登时运用,可是联合运用能取得更多的功能提高。这儿仅仅扼要介绍了梯度减缩战略的思维,更多的完结细节可以查阅原论文第四章节。

实验作用

超级核算机上履行运用程序功率的一个重要目标是测得的功耗。特别是,运用 Allreduce 这样的堵塞调集,会导致在 GPU / CPU 上履行的一切操作中止,直到回来来自调集的成果。

下图 5 展现了作者运用 Bitvector Allreduce 和 Grouping 进行分布式练习时 Summit 上首要硬件组件的功耗。

图 5:在 4600 个节点上进行分布式练习时,Summit 的功耗剖析。功耗信息搜集自一次分布式练习中 Summit 的首要硬件组件(GPU,CPU 等)。

除了功耗之外,作者还运用新的梯度减缩战略概述了分布式练习的核算功能。给出的功能丈量均包含:(1)I / O(数据读取和模型查看点的写入),(2)DNN 正向和反向传达履行的核算,以及(3)嵌入核算图中的通讯运算。

在表 1 中,作者运用前面描绘的功能评价办法,总结了在单个 Summit 节点上履行运用(一个练习步)时的数学运算、时刻以及全体功能。

最终,运用第 2.3 节中描绘的通讯战略,研讨者们可以在分布式深度学习期间(图 6)在 4600 个节点上完结 0.93 的扩展功率,并到达 1.54(2)(2.15(2)))EFLOPS_16。

图 6:运用改善的梯度减缩战略扩展至 27,600 个 V100 GPU 时分布式深度学习的扩展功率和继续功能

“如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!