这是OneFlow社区发布的第48期AI系统前沿动态,今天开始正式在OneFlow公众号更新。《AI系统前沿动态》主要推荐AI系统、编译器、大模型、硬件、最新活动等相关内容,每周一期。如果你想了解往期内容,请查看知乎链接:https://www.zhihu.com/org/oneflow-17
(资料图)
1. 英伟达首席科学家:深度学习硬件的过去、现在和未来
深度学习硬件究竟如何继续提升性能?英伟达首席科学家Bill Dally无疑是回答这一问题的权威,在H100 GPU发布前,他在一次演讲中回顾了深度学习硬件的现状,在他看来,其实我们手里的牌打得差不多了,这意味着必须开始研发新的技术。
以下是他认为值得关注的四个方向:首先,研究新的数字表示,比如对数(Log number),以及比EasyQuant更加巧妙的量化方案;其次,继续深入研究稀疏性;然后,研究存储电路和通信电路;最后,改良现有的工艺技术。
链接:https://mp.weixin.qq.com/s/ofWCgv-ksJjqGH0qlbW8nw
2. 大规模分布式深度神经网络(Large Scale Distributed Deep Networks)
链接:https://static.googleusercontent.com/media/research.google.com/en//archive/large_deep_networks_nips2012.pdf
作者:Jeffrey Dean, Greg Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Mark Mao, Marc’aurelio Ranzato, Andrew Senior, Paul Tucker, Ke Yang, Quoc V. Le, Andrew Y. Ng
发表时间:2012
摘要:无监督特征学习和深度学习方面的近期研究进展显示,若能成功训练出大型模型,即可大幅提升性能。本文探讨如何利用数万CPU核心训练具有数十亿参数的深度神经网络。本文作者开发出DistBelief软件框架,该框架可利用含数千台机器的计算集群训练大型模型。
本文作者还为该框架开发出两种用于大型分布式训练的算法:(i) Downpour SGD——一种异步随机梯度下降方法,可支持大批量模型复制;(ii) Sandblaster——一种支持多种分布式批次(batch)优化程序(包括L-BFGS的分布式实现)的框架。Downpour SGD与Sandblaster L-BFGS均可扩大深度神经网络训练规模并提升训练速度。
本文作者使用上述方法成功训练出规模30倍于以往文献所述模型的深度神经网络,并在ImageNet物体识别任务中取得SOTA性能表现,该识别任务含1600万张图像,涉及21,000种物体。此外,本文作者将上述方法应用于商业语音识别服务,经实践证明,上述方法亦有助于更小规模深度神经网络的提速。尽管上述方法主要针对大型神经网络训练,但其底层算法适用于所有基于梯度的机器学习算法。
3. COTS HPC系统助力深度学习(Deep Learning with COTS HPC systems)
链接:http://proceedings.mlr.press/v28/coates13.pdf
作者:Adam Coates, Brody Huval, Tao Wang, David Wu, Bryan Catanzaro, Andrew Ng
发表时间:2013
摘要:对深度学习算法进行纵向扩展有助于提升算法在基准测试任务中的性能,并使算法能发现更复杂的高级特征。而近期的超大型神经网络(参数量十亿以上)训练均依赖类云计算基础设施,并需要数以千计的CPU核心。
本文介绍基于COTS HPC技术的系统的技术细节与性能表现。该系统使用GPU服务器集群、Infiniband互联和MPI接口,可在数天内仅用3台机器完成含10亿参数神经网络的训练。此外,借助该技术还可仅用16台机器训练含110亿以上参数的神经网络。由于小规模计算集群更易普及,该技术可让更多从业者有条件参与超大型神经网络的研究。
(译注:本论文中,纵向扩展(scale up)指的是采用GPU取代CPU,从而提升算力;与之对应的是横向扩展(scale out),指的是通过增加机器数量(扩大集群规模)提升算力。)
4. More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server(SSP参数服务器提升分布式机器学习计算效率)
链接:https://assets.website-files.com/6241e60ecd4aa2049d61387c/6288655114917759436b392e_LightLDA.pdf
作者:Qirong Ho, James Cipar, Henggang Cui, Seunghak Lee, Jin Kyu Kim, Phillip B. Gibbons, Garth A. Gibson, Greg Ganger, Eric P. Xing
发表时间:2013
摘要:本文提出一个用于分布式机器学习的参数服务器(Parameter Server)系统。该系统采用延时同步并行(Stale Synchronous Parallel, SSP)模型进行计算,在保证计算准确性的同时使worker的有效计算时间最大化。该参数服务器提供易用的共享接口,用于读/写机器学习模型中的数值(包括参数和变量)。
在SSP模型中,分布式worker可从本地缓存中读取旧版本的数值,而不必耗时等待从中央储存中读取最新版数值。此方法可大幅减少worker的等待时间,将更多时间用于计算。此外,通过限制旧版本数值的最大延时时限,SSP模型可保证机器学习算法的准确性。
本文可证明SSP模型的计算准确性,并提供实验数据说明SSP模型在多种不同机器学习问题上均可实现比全同步方案和异步方案更快的算法收敛。
(译注:参数服务器系统中的节点被分为两类:parameter server和worker。其中,parameter server负责存放模型的参数,而worker负责计算参数的梯度。)
5. 通过易并行MCMC方法采得渐进精确样本(Asymptotically Exact, Embarrassingly Parallel MCMC)
链接:https://arxiv.org/pdf/1311.4780.pdf
作者:Willie Neiswanger, Chong Wang, Eric P. Xing
发表时间:2014
摘要:机器学习中,为满足同步要求而造成的通信成本可能大幅降低并行算法的速度。本文介绍一种并行马尔可夫链蒙特卡洛(MCMC)算法,将数据切分为多个子集并进行独立处理,各个子集之间几乎互不通信。首先,将数据任意切分并分配至多台机器。然后,每台机器采用任一典型MCMC方法(如吉布斯采样)对给定数据子集进行后验分布采样。最后,集合每台机器采得的数据样例组成完整数据的后验分布样例。
上述易并行(embarrassingly parallel)算法使每台机器在最终组合阶段前均可基于各自的数据子集独立运行,互不通信。经验证,此算法可采得渐进精确的样本。此外,本文提供实验数据证明此算法可为多种模型实现并行burn-in和并行采样。(译注:
“易并行”:并行的子任务中,各个子任务的数据不存在相互依赖、互不通信;
“burn-in”:采样刚开始时,马尔可夫链尚未达到稳定均衡状态,此时的采样称为burn-in,burn-in过程中采得的样本应予以舍弃。)
6. LightLDA:小型计算集群训练大型主题模型(LightLDA: Big Topic Models on Modest Compute Clusters)
链接:https://assets.website-files.com/6241e60ecd4aa2049d61387c/6288655114917759436b392e_LightLDA.pdf
作者:Jinhui Yuan, Fei Gao, Qirong Ho, Wei Dai, Jinliang Wei, Xun Zheng, Eric P. Xing, Tie-yan Liu, Wei-Ying Ma
发表时间:2015
摘要:通常认为,构建大型机器学习程序(例如包含万亿级参数和训练样例的大型主题模型或深度神经网络)需要使用含有数千节点的工业级集群,而大多数机器学习从业者和学术研究人员不具备此种硬件条件。本文探讨如何利用更小型的集群实现基于网络规模语料的主题模型构建。
本文作者使用仅包含8台机器的小型集群,基于含有2000亿词块(token)的语料文件训练出可识别100万种主题和100万词汇(参数量为1万亿)的大型主题模型——即便是含有数千节点的大型集群也尚未实现此种模型规模。
本文提出的分布式策略是通用分布式机器学习框架Petuum底层的模型及数据并行编程模型的一个例子,并基于Petuum开源系统得以实现。实验证明,通过上述策略,可实现利用小型集群训练多种模型;此外,与其他方法相比,本策略可随集群规模的扩大而按比例缩小时间成本。
7. SaberLDA:基于GPU的主题模型运用稀疏性感知学习算法(SaberLDA: Sparsity-Aware Learning of Topic Models on GPUs)
链接:https://arxiv.org/pdf/1610.02496.pdf
作者:Kaiwei Li, Jianfei Chen, Wenguang Chen, Jun Zhu
发表时间:2017
摘要:隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)是一种分析离散计数数据(如文本和图像)的常用工具。LDA在应用中通常需要处理大型数据集和大量主题。尽管分布式CPU系统已得到应用,但由于GPU的计算能力和内存带宽更高,因此使用基于GPU的系统更为理想。然而,现存的基于GPU的LDA系统无法支持大量主题,因为该类系统使用基于稠密数据结构的算法,该种算法的时间与空间复杂度均随主题数量的增加而呈线性增长。
本文提出一种基于GPU的LDA系统——SaberLDA系统。SaberLDA利用稀疏性感知算法使算法的时间复杂度与计算规模呈亚线性关系,从而使大量主题的学习成为可能。为解决稀疏性带来的问题,本文提出一种新的数据布局、一种基于线束(warp)的新采样内核和一种高效的稀疏计数矩阵更新算法,该算法可提高局部性,提高GPU线束利用率,并减少内存占用。
实验数据表明,SaberLDA可从词块规模达数十亿的数据中习得10,000种主题,这比以往同样基于GPU的系统可习得的主题多出两个数量级。若使用单个GPU,SaberLDA可在数小时内从含有数十亿词块的数据集中习得10,000种主题,这在以往必须利用含数十台机器的集群才能实现。
8. STRADS分布式框架:采用调度模型并行方法进行机器学习(STRADS: A Distributed Framework for Scheduled Model Parallel Machine Learning)
链接:https://assets.website-files.com/6241e60ecd4aa2049d61387c/6288662506854dadbf2cb0a8_STRADS.pdf
作者:Jin Kyu Kim, Qirong Ho, Seunghak Lee, Xun Zheng, Wei Dai, Garth A. Gibson, Eric P. Xing
发表时间:2016
摘要:机器学习算法常被应用于大型数据处理,利用分布式系统将数据切分并分配至不同机器,令每台机器读取并更新机器学习模型参数,这种方法被称为数据并行。另一种方法称为模型并行,即切分模型参数,以进行非共享性并行访问与更新,还可对参数进行周期性重新切分,以加快通信速度。模型并行方法的出现是因为数据并行通常无法解决以下两个问题:(1) 参数可能具有相互依赖性,因此简单的并发更新可能导致报错,进而减慢收敛速度甚至造成算法故障;(2) 各模型参数的收敛速度并不一致,因此一小部分参数尚未收敛即可阻碍整个机器学习算法的完成。
本文提出一种名为调度模型并行(SchMP)的编程方法,该方法可根据参数的相互依赖性和各参数的收敛速度对参数更新进行高效调度,从而加快机器学习算法收敛速度。为了大规模支持SchMP,本文作者开发出STRADS分布式框架。STRADS可优化SchMP程序的吞吐量。
此外,本文作者还将下列4种机器学习应用写成SchMP程序,并对其进行基准测试:LDA主题模型构建、矩阵分解、稀疏最小二乘(Lasso)回归和稀疏逻辑回归。SchMP编程可使机器学习每次迭代带来的进展更大,同时,STRADS可以提高迭代吞吐量。因此,在STRADS框架上运行SchMP程序带来的性能表现可以超越非模型并行的机器学习实现:例如,SchMP LDA和SchMP Lasso的收敛速度分别是如今既定基准线的10倍和5倍。
9. 利用强化学习实现设备布局优化(Device Placement Optimization with Reinforcement Learning)
链接:https://arxiv.org/pdf/1706.04972.pdf
作者:Azalia Mirhoseini, Hieu Pham, Quoc V. Le, Benoit Steiner, Rasmus Larsen, Yuefeng Zhou, Naveen Kumar, Mohammad Norouzi, Samy Bengio, Jeff Dean
发表时间:2017
摘要:近年来,神经网络训练与推理的规模及算力要求均有所提升。为满足算力要求,业内往往采用混合硬件设备(如CPU+GPU)组成异构分布式环境。然而,关于如何将神经网络模型的不同部分布局到不同设备上,人类专家往往只基于简单的启发式方法和直觉知识作出决策。
本文提出一种针对TensorFlow计算图的设备布局优化方法。该方法的核心是运用序列到序列(sequence-to-sequence)模型预测TensorFlow计算图中各操作子集应交由哪一设备运行。模型作出预测后,该布局的实际执行时间将作为反馈信号被用于该序列到序列模型的参数优化。
实验结果表明,无论是利用Inception-V3卷积神经网络执行ImageNet识别任务,或是运行RNN LSTM,还是进行语言模型构建和神经机器翻译,该方法均可完成复杂的设备布局,且布局的计算速度超越人工设计的启发式方法和传统算法方法所完成的布局。
10.《OneFlow:从头开始重新设计一个分布式深度学习框架(OneFlow: Redesign the Distributed Deep Learning Framework from Scratch)》
链接:https://arxiv.org/abs/2110.15032
作者:Jinhui Yuan, Xinqi Li, Cheng Cheng, Juncheng Liu, Ran Guo, Shenghang Cai, Chi Yao, Fei Yang, Xiaodong Yi, Chuan Wu, Haoran Zhang, Jie Zhao
发表时间:2021
摘要:OneFlow是一个基于SBP(split、broadcast和partial)抽象和Actor模型的新一代开源分布式深度学习框架,支持数据并行、模型并行、流水并行等各种并行范式。与PyTorch等现有框架的机制相比,OneFlow的SBP使得数据并行和模型并行的编程更容易,而其Actor模型提供了一种简洁的运行时机制来管理分布式深度学习中资源约束、数据搬运和计算所施加的复杂依赖关系。通过案例研究和广泛的实验证明,OneFlow在训练各种大型 DNN模型方面的灵活易用、高效、可扩展,优于许多现有框架。
11. Colossal-AI团队联合百图生科开源xTrimo Multimer
近日,Colossal-AI 团队( https://github.com/hpcaitech/ColossalAI )联合百图生科成功加速蛋白质单体与复合物的结构预测,行业内最前沿的同时支持蛋白质单体(Monomer)与复合物(Multimer)结构预测的 xTrimo Multimer 模型已免费开源,相比现有方案,推理速度最高提升约 11 倍!
链接:https://mp.weixin.qq.com/s/RSk_y2AIDUHtM8wVCklPOQ
12. MindSpore自定义算子:思考、挑战与实践
一个深度学习的全栈解决方案总是会遇到不同算子优化方案的竖向隔阂和图算抽象分离的横向隔阂。为了解决如上隔阂引入的表达问题,MindSpore给出了自己的解决方案,即统一自定义算子表达。
链接:https://mp.weixin.qq.com/s/wJf2EJ6aINpK4F_dG-BpQg
(注:上述8篇分布式机器学习系统经典论文推荐源自此文的references:https://petuum.medium.com/intro-to-distributed-deep-learning-systems-a2e45c6b8e7,作者Hao Zhang,OneFlow社区胡燕君翻译论文摘要)
其他人都在看
OneFlow v0.8.0正式发布
深度学习硬件的过去、现在和未来
手把手教你快速链接特征工程到模型训练
逆向工程:揭示Google Colab未公开的秘密
分布式深度学习编程新范式:Global Tensor
OneEmbedding:单卡训练TB级推荐模型不是梦
大模型训练难?效率超群、易用的“李白”模型库来了
欢迎体验OneFlow v0.8.0:GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.https://github.com/Oneflow-Inc/oneflow/