首页 理论教育 深度学习训练加速:云计算大数据处理技术的发展与应用

深度学习训练加速:云计算大数据处理技术的发展与应用

更新时间:2025-01-18 工作计划 版权反馈
【摘要】:利用GPU来训练深度神经网络,可以充分发挥其数以千计计算核心的高效并行计算能力,在使用海量训练数据的场景下,所耗费的时间大幅缩短,占用的服务器也更少。如果针对适当的深度神经网络进行合理优化,一块GPU卡的计算能力可相当于数十甚至上百台CPU服务器的计算能力,因此GPU已经成为业界在深度学习模型训练方面的首选解决方案。结合GPU计算和集群计算技术,构建GPU集群正在成为加速大规模深度神经网络训练的有效解决方案。

深度学习模型训练需要各种技巧,例如网络结构的选取、神经元个数的设定、权重参数的初始化、学习率的调整、Mini-batch的控制等。即便对这些技巧十分精通,实践中也需要多次训练,反复摸索尝试。此外,深层模型参数多,计算量大,训练数据的规模更大,需要消耗大量计算资源。如果可以让训练加速,就可以在同样的时间内多尝试几个新方案,多调试几组参数,工作效率会明显提升,对于大规模的训练数据和模型来说,更可以将难以完成的任务变成可能。

(一)GPU加速

矢量化编程是提高算法速度的一种有效方法。为了提升特定数值运算操作(如矩阵相乘、矩阵相加、矩阵—向量乘法等)的速度,数值计算和并行计算的研究人员已经努力了几十年。矢量化编程强调单一指令并行操作多条相似数据,形成单指令流多数据流(SIMD)的编程泛型。深层模型的算法,如BP、Auto-Encoder、CNN等,都可以写成矢量化的形式。然而,在单个CPU上执行时,矢量运算会被展开成循环的形式,本质上还是串行执行。

GPU(Graphic Process Units,图形处理器)的众核体系结构包含几千个流处理器,可将矢量运算并行化执行,大幅缩短计算时间。随着nVIDIA、AMD等公司不断推进其GPU的大规模并行架构支持,面向通用计算的GPU(General-Purposed GPU,GPGPU)已成为加速可并行应用程序的重要手段。得益于GPU众核(Many-core)体系结构,程序在GPU系统上的运行速度相较于单核CPU往往提升几十倍乃至上千倍。目前GPU已经发展到了较为成熟的阶段,受益最大的是科学计算领域,典型的成功案例包括多体问题(N-Body Problem)、蛋白质分子建模、医学成像分析、金融计算、密码计算等。

利用GPU来训练深度神经网络,可以充分发挥其数以千计计算核心的高效并行计算能力,在使用海量训练数据的场景下,所耗费的时间大幅缩短,占用的服务器也更少。如果针对适当的深度神经网络进行合理优化,一块GPU卡的计算能力可相当于数十甚至上百台CPU服务器的计算能力,因此GPU已经成为业界在深度学习模型训练方面的首选解决方案。

(二)数据并行

数据并行是指对训练数据做切分,同时采用多个模型实例,对多个分片的数据并行训练(图3-9)。

图3-9 数据并行的基本架构

要完成数据并行需要做参数交换,通常由一个参数服务器(Parameter Server)来帮助完成。在训练过程中,多个训练过程相互独立,训练的结果(模型的变化量ΔW)需要汇报给参数服务器,由参数服务器负责更新为最新的模型W'=W-η·ΔW,然后将最新的模型分发给训练程序,以便从新的起点开始训练。

数据并行有同步模式和异步模式之分。同步模式中,所有训练程序同时训练一个批次的训练数据,完成后经过同步,再同时交换参数。参数交换完成后所有的训练程序就有了共同的新模型作为起点,再训练下一个批次。而异步模式中,训练程序完成一个批次的训练数据,立即和参数服务器交换参数,不考虑其他训练程序的状态。异步模式中一个训练程序的最新结果不会立刻体现在其他训练程序中,直到它们进行下次参数交换。

参数服务器只是一个逻辑上的概念,不一定部署为独立的一台服务器。有时候它会附属在某一个训练程序上;有时也会将参数服务器按照模型划分为不同的分片,分别部署。(www.xing528.com)

(三)模型并行

模型并行是指将模型拆分成几个分片,由几个训练单元分别持有,共同协作完成训练(图3-10)。当一个神经元的输入来自另一个训练单元上的神经元的输出时,会产生通信开销。

图3-10 模型并行的基本架构

多数况下,模型并行带来的通信开销和同步消耗超过数据并行,因此加速比也不及数据并行。但对于单机内存无法容纳的大模型来说,模型并行是一个很好的选择。令人遗憾的是,数据并行和模型并行都不能无限扩展。数据并行的训练程序太多时,不得不减小学习率,以保证训练过程的平稳;模型并行的分片太多时,神经元输出值的交换量会急剧增加,效率会大幅下降。因此,同时进行模型并行和数据并行也是一种常见的方案。如图3-11所示,4个GPU分为两组,GPU0和GPU1为一组模型并行,GPU2和GPU3为另一组,每组模型并行在计算过程中交换输出值和残差。两组GPU之间形成数据并行,Mini-batch结束后交换模型权重,考虑到模型的黑色部分由GPUO和GPU2持有,而白色部分由GPU1和GPU3持有,因此只有同色的GPU之间需要交换权重。

图3-11 4个GPU的数据并行和模型并行混合架构

(四)计算集群

搭建CPU集群用于深度神经网络模型训练也是业界常用的解决方案,其优势在于利用大规模分布式计算集群的强大计算能力,利用模型可分布式存储、参数可异步通信的特点,达到快速训练深层模型的目的。

CPU集群方案的基本架构包含用于执行训练任务的Worker、用于分布式存储分发模型的参数服务器(Parameter Server)和用于协调整体任务的主控程序(Master)。CPU集群方案适合训练GPU内存难以容纳的大模型,以及稀疏连接神经网络。Andrew Ng和Jeff Dean在Google用1000台CPU服务器,完成了模型并行和Downpour SGD数据并行的深度神经网络训练。

结合GPU计算和集群计算技术,构建GPU集群正在成为加速大规模深度神经网络训练的有效解决方案。GPU集群搭建在CPU-GPU系统之上,采用万兆网卡或Infmiband等更加快速的网络通信设施,以及树形拓扑等逻辑网络拓扑结构。在发挥出单节点较高计算能力的基础上,充分挖掘集群中多台服务器的协同计算能力,进一步加速大规模训练任务。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈