Mariana DNN多GPU数据并行框架 java微信开发框架语音是怎么来的

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
基于多GPU并行框架的DNN语音识别研究
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于多GPU并行框架的DNN语音识别研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Access denied | www.125135.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (www.125135.com) has banned your access based on your browser's signature (3df9e02a454e6c04-ua98).sponsored links
深度学习系列2Mariana DNN多GPU数据并行框架
【深度学习系列2】Mariana DNN多GPU数据并行框架
&本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架。
深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点[1][2],产生了广泛的应用。DNN具有深层结构、数千万参数需要学习,导致训练非常耗时。GPU有强大的计算能力,适合于加速深度神经网络训练。DNN的单机多GPU数据并行框架是Mariana的一部分,Mariana技术团队实现了数据并行技术加速DNN训练,提供公用算法简化实验过程。对微信语音识别应用,在模型收敛速度和模型性能上都取得了有效提升&&相比单GPU 4.6倍加速比,数十亿样本的训练数天收敛,测试集字错率降低约10%。目前基于此框架训练的模型成功上线到微信语音输入法、微信语音开放平台和微信语音消息转文字。
DNN数据并行导论
典型应用分析:语音识别
语音识别是深度神经网络获得成功的一个应用范例。
语音识别应用,简单来说由声学模型建模,语言模型建模以及解码三部分构成。其中声学模型用来模拟发音的概率分布,语言模型用来模拟词语之间的关联关系,而解码阶段就是利用上述两个模型,将声音转化为文本。神经网络具有模拟任何分布的能力,深度神经网络比浅层神经网络表达能力更强,它模拟了人脑的深层结构,能够更准确地&理解&事物的特征。因此相较于其他方法,深度神经网络可以更为准确地模拟声学模型和语言模型。这里将深度神经网络应用于语音识别中的声学模型建模。
图 1揭示了一个深度神经网络表达的具有4个隐藏层的声学模型结构,训练这样的具有深层结构的模型,其优势在于逐层的特征学习过程是由初级到高级的过程:第一层学习初始特征(例如最基本的发声),在后面的层次逐渐学习到越来越高级的特征(例如声音的组合),直到通过模型的输出层来有效地识别声音。
& & & & & & 图1深层、稠密、包含4隐藏层的声学模型
现有的加速方法
Mariana技术团队在语音识别研究中率先引入了GPU技术用于DNN训练,获得了良好的成果,相比单台CPU服务器达到千倍加速比。随着训练数据集扩充、模型复杂度增加,即使采用GPU加速,在实验过程中也存在着严重的性能不足,往往需要数周时间才能达到模型的收敛,不能满足对于训练大规模网络、开展更多试验的需求。目前服务器上安装多个GPU卡已经非常普遍,在通用计算领域使用多GPU并行加速技术[3]扩展计算密集型应用程序的并行性、提高程序性能也是越来越热门的发展方向。
由于语音业务中DNN模型采用多层全连接的网络结构,Mariana技术团队在单机多GPU模型并行的实践中发现拆分其模型存在较大的额外开销,无论采用普通模型拆分还是流式控制,扩展性有限:相比GPU的计算能力,如果模型参数量不能匹配,模型并行不能有效地利用多个高计算能力的GPU卡,表现为使用2GPU时已有较好的性能提升,但使用更多GPU却无法取得更好效果。
Mariana技术团队考虑到上述问题,在Mariana的DNN多GPU并行训练框架中,选择了数据并行的技术路线,完成了升级版的单机多GPU数据并行版本。
本文描述了多GPU加速深度神经网络训练系统的数据并行实现方法及其性能优化,依托多GPU的强大协同并行计算能力,结合数据并行特点,实现快速高效的深度神经网络训练。
框架设计目标
由于训练深层网络使用的训练数据规模庞大、计算开销大,从而训练过程收敛难,训练用时久,通过开发多GPU数据并行版本期望达到下述目标:充分利用单机多GPU计算资源和DNN的数据并行特性,加速模型训练过程;提供默认的深度学习算法实现,以帮助提升语音识别准确率;提供更好的易用性支持,方便进行模型训练。
上述目标完成后,系统可以支持目标模型的快速训练,达到更好的收敛效果。另外,作为Mariana中的DNN数据并行框架,其训练算法具有一定的通用性,可通过简单配置快速适用于其他DNN应用场景中。
在语音识别应用中,深度模型包含数万神经元,采用全连接结构,具有数千万参数需要训练,计算量大;需要海量语音数据进行训练,在避免过拟合的前提下提高模型准确率、提高模型泛化能力。因此,如何充分利用计算资源实施数据并行以加速训练是框架设计首要解决的问题。
数据并行中参数交换容易成为整体性能瓶颈,因为在参数交换时需要将各个Model Replica在本次mini-batch训练中得到的梯度合并后用于更新参数服务器上的模型,之后再将最新模型推送到各个数据并行单元上用于下一轮计算。如何解决参数交换瓶颈以提高性能,成为并行方法设计的重中之重。
自适应学习率算法[4]对于随机梯度下降(Stochastic Gradient Descent, 简称SGD)过程有利于加速收敛并获得更好的结果。但是它需要对模型中每个参数存储helper_sum并频繁更新对应的学习率,影响性能。因此,如何将其有效地应用到数据并行框架中,是我们所需要解决的另一个重点问题。
如何数据并行?
数据并行:指对源数据集合中的元素同时(即并行)执行相同操作的情况。在数据并行操作中,将对源数据集合进行分区,以便多个并行处理单元能够同时对不同的子数据集合进行操作。
图2揭示了从单GPU训练到多GPU数据并行训练的变化,主要在于:单GPU每个周期训练1个mini-batch,mini-batch训练结束后即顺带在GPU显存中完成了更新模型参数的操作;在多个GPU同时训练多组mini-batch数据,每个数据并行组(Worker Group)充分利用本组上独占的GPU资源,在mini-batch训练结束时还需要一个将参数从各个GPU上交换并更新的过程,最终使得每个GPU上都持有最新模型副本,继续进行下一个周期训练过程。
& & & & & & & & & & & 图2从单GPU训练到多GPU数据并行训练的概要视图
多GPU并行系统从功能上划分为用于读取和分发数据的Training Data Dispatcher和用于做数据并行训练的GPU Worker Group,如图3所示。训练数据从磁盘文件读取到CPU主存再拷贝到GPU显存,故此设计在各Worker Group计算每batch数据时,由Training Data Dispatcher从文件中读取并分发下一batch数据,以达到用计算时间掩盖I/O时间的设计目标。
& & & & & & & & & & & & & & & 图3 2 GPU数据并行系统框架示意
GPU Worker Group: 数据并行的承载体
数据并行以Worker Group为基本组织形式,调度来源于CPU,计算资源来源于GPU卡。GPU卡通常被看成是加速卡或协处理器卡,必须在基于CPU的主机上下文中被调用来做计算,因此1个CPU线程绑定1个Worker Group中的1张GPU卡能够发挥多GPU的并行效能。
在实际生产环境中,安装多GPU服务器的硬件体系结构如图4所示,示例中揭示了一个8 GPU节点服务器的硬件配置,每两个GPU Slot安装在一个GPU专用PCI槽位上再通过PCIe Switch将GPU Slot 0,1,2,3安装在一颗CPU上,GPU Slot 4,5,6,7安装在另一颗CPU上,两颗CPU通过IOH(Input Output Hub)连接。
在数据并行的场景下,将每颗GPU绑定一个Worker Group,即形成8路数据并行的并行化训练配置。
数据并行中参数交换的线形拓扑
数据并行的关键问题:参数交换是瓶颈
使用基于mini-batch的随机梯度下降算法时,每计算完成1个mini-batch后需要将本次计算得到梯度(图中记为&Dw)应用到相应参数(图中记为w)上,朴素的参数更新公式为:
公式中,i是参数更新的次数,weight指代某个参数,&是学习速率,&Dw是本次BP计算出的梯度。
& & & & & & & & & & & & & &图5 Model Replicas参数交换过程示意
在数据并行的实现中,影响性能的瓶颈在于多GPU间的参数交换。这是因为按照参数更新公式来看,需要将所有模型replica的梯度交换到参数服务器并更新到相应参数上,而参数服务器的带宽成为瓶颈。
最优化的参数交换解决方案应具有的特征:尽量减少总的通信量;尽量减少所用交换周期数;每个周期用满PCIe总线通信带宽;GPU间数据传输没有等待;可扩展性强,适用于不同GPU数目的场景。
常见的解法
解决这一问题,直观的想法是依靠多GPU之间点到点的数据传输,即在每两个GPU之间建立数据传输连接,交换各自的&DW。但是这样的解决方案提升的性能有限,主要在于任一GPU上计算出的&DW在PCIe总线上需要多次传输才能更新到所有GPU的参数模型上,过多占用和消耗PCIe总线带宽。而随着GPU数增多,交换时间随之呈平方量级增加,这无疑是不适合的。
另一种常见思路是采用分治法+树形结构,为此可设计树形拓扑:模型2分片,奇/偶Worker Group负责归并模型不同分片,Worker Group间总是两两归并;当最终将2个分片归并结束后,开始反向的分发过程。但在多GPU场景下这种也存在着局限,主要在于每个归并周期后,总有一半GPU不再参与之后的归并过程,闲置了其计算能力和所在节点上的通信带宽。
当前最优解:线形拓扑
我们针对多GPU场景设计了参数交换的线形拓扑:
线形拓扑从空间上来看,如图6所示,将存储参数的矩阵、存储梯度的矩阵等量划分了Partition,Partition数量是Worker Group数的一半。令持有某一Partition最终累加结果的Worker Group(一般为Group ID为奇数的GPU),称之为该Partition的Partition Owner。对该Partition的更新参数操作会在该Partition Owner上执行,同时该Partition最新参数的分发过程也由该Partition Owner发起。
& & & & & & & & & & &图6 Partition拆分及Partition Owner分布示意
线形拓扑从时间上来看,如图7所示,将参数交换过程划分了周期,每个周期内将所有Partition从上游Worker Group向下游Worker Group推送一次,推送过程包括从上游Worker Group拷贝Partition数据和本地Merge两步操作,推送阶段的最后1个周期推送该Partition到Partition Owner上以使其持有参数的最新副本。推送所用周期数为数据并行组数-1。
之后参数分发过程,亦占用与推送相同的周期数分发Partition Owner上的最新副本给所有Worker Group。
& & & & & & & & & & & & & & & & & & & 图7线形拓扑参数交换全部过程
我们比较容易给出线形拓扑的性能模型。PCIe总线带宽一定(设为W),取数据并行的Worker Group数目为2N,模型大小为M。在采用点到点全量参数交换的情景下,每两个Worker Group均需要进行对等的数据交换,因此数据传输的最短周期为2(2N-1)次,每次在总线上传输数据量为M,故推导出参数交换用时2(2N-1)(M/W)。在采用线形拓扑的情景下,在每个组号为单数(1,3,5,&)的组上维护着整个模型参数相应的1/N,按照线形拓扑,单次数据交换中只传输了(1/N)&M的数据量,参数归并周期为2N-1,参数分发周期也为2N-1,因此推导出参数交换用时为2(2N-1)(M/(N*W)),仅是点到点用时的1/N(N=1,2,3,&)。可见,数据并行的并发量越大,线形拓扑的性能收益效果越显著。
表1线形拓扑的性能分析
线形拓扑可以很容易地扩展到偶数个数据并行组的参数交换,其收集(推送)用时随数据并行组数增长而缓慢增长,且具有上界&&2T0,这说明线形拓扑非常适用于更多GPU做数据并行。
多GPU数据并行的自适应学习率(AdaGrad)算法
应用自适应学习率算法,对第i个位置上参数的学习率更新,需要借助helper_sum,其定义如下:
在数据并行情景下,helper_sum的跨组更新规则与的数据并行参数交换过程中的推送阶段完全相同,由于梯度是在Partition Owner上最先持有的完全累积结果,可以根据Adagrad参数更新公式Apply到参数上,而这时只用到了Partition Owner上的helper_sum,因此只需要在Partition Owner上持有其&Own&的Partition的最新helper_sum即可,其它非Partition Owner在推送之后即需要将helper_sum清零,以便为下一次计算重新累积所用。由于helper_sum不需要分发,则交换helper_sum的过程只需要一次推送阶段即可完成。
结合Adagrad算法实际应用场景:即helper_sum的累积其实是对每个学习率调整的量化过程,其本身具有一定的近似性。基于性能考量,实际项目中使用一种近似的helper_sum收集:在每个mini-batch结束后所有partition上做本地累积helper_sum计算,而在M个mini-batch结束后才将其推送到所属的Partition Owner完成最终累积。这样兼顾了算法效果和训练性能。
在语音识别上的应用
微信语音识别产品
微信中主要有三款语音识别产品:微信语音输入法、语音开放平台和语音消息转文字。多GPU数据并行框架训练的模型正在由这些产品使用。
微信语音输入法
语音消息转文字
语音开放平台图8微信语音识别产品
模型训练实验性能
实验环境为一台搭载8核心Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz的服务器,内存为48GB,服务器安装了6块NVIDIA Tesla K20c GPU,单GPU显存大小为4.8GB。
训练同样的语音目标模型,相比于单GPU,使用6 GPU数据并行获得了4.6倍加速比。
模型准确率
采用6 GPU数据并行,使用数十亿语音训练样本,在训练目标模型的实验中,数个迭代时取得了在测试集上的最佳模型,取得了10%的字错率降低。同时相比模型并行训练,基于数据并行的Mariana可在数天内完成DNN模型训练。
框架提供良好的易用性支持,主要在于实验者不需要过多干预训练过程即可完成训练,实时获知训练进度和模型准确率等信息。框架主要的易用性支持包括:重要配置参数在运行时可手工改变,可自动衰减;按指定频率输出模型snapshot并进行自动化测试;训练中断点恢复,可从任意模型snapshot继续训练;微信监控帐号自动向实验者推送测试结果。
& & & & & & & & & & & & & & & & & & 图9微信监控帐号自动推送测试结果
本文描述了腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架,通过多个Worker Group实现了数据并行,设计线形拓扑解决了参数交换性能瓶颈,实现了数据并行场景下的近似自适应学习率算法。此框架有效支持了微信语音识别,成功提升了微信语音识别的模型训练速度,并且模型字错率降低10%,模型全量上线到微信语音输入法、微信语音开放平台和微信语音消息转文字。
[1] & &Hinton G.E., Osindero S. and Teh Y. (2006) A Fast Learning Algorithm for Deep Belief Nets. Neural Computation, 2006.
[2] & &Hinton, G. E. and Salakhutdinov, R. R. (2006) Reducing the Dimensionality of Data with Neural Networks. Science, Vol. 313, No. 5786, pp. 504-507, 28 July 2006.
[3] & &David B. Kirk, Wen-mei Hwu. 大规模处理器编程实战(第2版). 清华大学出版社, 2013.
[4] & &J. Duchi, E. Hazan and Y. Singer. (2011) Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine learning Research, 12(2011): , 2011.
[5] & &Jeffrey Dean, Greg S. Corrado, Rajat Monga, et al, and Andrew Y. Ng. (2012) Large Scale Distributed Deep Networks. In Advances in Neural Information Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.
本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架.深度学习系列:深度学习在腾讯的平台化和应用实践(一)深度学习系列:Mariana DNN多GPU数据并行框架 微信语音是怎么来的?(二)深度学习系列:Mariana CNN并行框架与图像识别(三)深度学习系列:解密最接近人脑的智能学习机器--深 ...
深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能力,适合于加速深度神经网络训练.DNN的单机多GPU数据并行框架是腾讯深度学习平台的一部分,腾讯深度学习平台技术团队实现了数据并行技术加速DNN ...
本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框架.深度学习系列:深度学习在腾讯的平台化和应用实践(一)深度学习系列:Mariana DNN多GPU数据并行框架 微信语音是怎么来的?(二)深度学习系列:Mariana CNN并行框架与图像识别(三)深度学习系列:解密最接 ...
深度学习是近年机器学习领域的重大突破,有着广泛的应用前景.随着Google公开Google Brain计划,业界对深度学习的热情高涨.腾讯在深度学习领域持续投入,获得了实际落地的产出.我们准备了四篇文章,阐述深度学习的原理和在腾讯的实践,介绍腾讯深度学习平台Mariana,本文为第一篇.深度学习系列:深度学习在腾讯的平台化和应用实践(一)深度学习系列:Mar ...
[深度学习系列4]深度学习及并行化实现概述 摘要: 深度学习可以完成需要高度抽象特征的人工智能任务,如语音识别.图像识别和检索.自然语言理解等.深层模型是包含多个隐藏层的人工神经网络,多层非线性结构使其具备强大的特征表达能力和对复杂任务建模能力.训练深层模型是长期以来的难题,近年来以层次化.逐层初始化为代表的一系列方法的提出给训练深层模型带来了希望,并在多个 ...荷露叮咚网络学苑 |
深度学习系列:Mariana DNN多GPU数据并行框架 微信语音是怎么来的?(二) | 荷露叮咚大数据
深度学习系列:Mariana DNN多GPU数据并行框架 微信语音是怎么来的?(二) | 荷露叮咚大数据您的位置:深度学习系列:Mariana DNN多GPU数据并行框架 微信语音是怎么来的?(二) | 荷露叮咚大数据
订单信息(价格单位:积分)
*商品名称:
*商品单价:
*商品数量:
收货信息商店(虚拟商品除邮箱外可不填)
收货姓名:
收货地址:
收货邮编:
用户邮箱:
电话号码:
手机号码:
留言备注:
总金额:1.00 积分提示:用户名只能修改一次,请慎重选择名字,大讲堂建议用户使用真实姓名作为用户名。
【深度学习系列1】 深度学习在腾讯的平台化和应用实践
引言:深度学习是近年机器学习领域的重大突破,有着广泛的应用前景。随着Google公开Google Brain计划,业界对深度学习的热情高涨。腾讯在深度学习领域持续投入,获得了实际落地的产出。我们准备了四篇文章,阐述深度学习的原理和在腾讯的实践,介绍腾讯深度学习平台Mariana,本文为第一篇。
深度学习(Deep Learning)是近年来机器学习领域的热点,在语音识别、图像识别等领域均取得了突破性进展。腾讯提供广泛的互联网服务,在2014年第一季度,即拥有3.96亿月活跃用户的微信,8.48亿月活跃用户的QQ,以及6.44亿月活跃用户的Qzone等平台,拥有海量数据和众多应用,深度学习在腾讯有广泛的潜在应用场景。
深度学习是近年来机器学习领域最令人瞩目的方向。自2006年深度学习界泰斗Geoffrey Hinton在Science杂志上发表Deep Belief Networks [1]的论文后,重新激活了神经网络的研究,开启了深度神经网络的新时代。学术界和工业界对深度学习热情高涨,并逐渐在语音识别、图像识别、自然语言处理等领域获得突破性进展。深度学习在语音识别领域获得相对20%到30%的准确率提升,突破了近十年的瓶颈。2012年图像识别领域在ImageNet图像分类竞赛中取得了85%的top5准确率 [2],相比前一年74%的准确率有里程碑式的提升,并进一步在2013年获得89%的准确率。目前Google、Facebook、Microsoft、IBM等国际巨头,以及国内百度、阿里巴巴等互联网巨头争相布局深度学习。
深度学习通过构建深层神经网络,来模拟人类大脑的工作原理。如图1所示,深层神经网络由一个输入层,数个隐层,以及一个输出层构成。每层有若干个神经元,神经元之间有连接权重。每个神经元模拟人类的神经细胞,而结点之间的连接模拟神经细胞之间的连接。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图1:深度神经网络的结构
然而,深度学习要在腾讯落地,面临巨大的挑战。
首先,深度神经网络模型复杂,训练数据多,计算量大。一方面,DNN需要模拟人脑的计算能力,而人脑包含100多亿个神经细胞,这要求DNN中神经元多,神经元间连接数量也相当惊人。从数学的角度看,DNN中每个神经元都包含数学计算(如Sigmoid、ReLU或者Softmax函数),需要估计的参数量也极大。语音识别和图像识别应用中,神经元达数万个,参数数千万,模型复杂导致计算量大。另一方面,DNN需要大量数据才能训练出高准确率的模型。DNN参数量大,模型复杂,为了避免过拟合,需要海量训练数据。两方面因素叠加,导致训练一个模型耗时惊人。以语音识别为例,目前业界通常使用样本量达数十亿,以CPU单机需要数年才能完成一次训练,用流行的GPU卡也需要数周才能完成训练。
其次,深度神经网络需要支持大模型。以图像识别为例,已有工作证明通过增加卷积层的filter数量,加大模型深度等,可以获得更好的模型质量,但模型参数也随之增加。然而,以ImageNet 2012竞赛冠军的网络为例,其占用3.99 GB的显存,已接近主流GPU的显存容量,试图增大模型则会超过GPU显存范围。因此,如何支持更大模型是一个大的挑战。
再次,深度神经网络训练收敛难,需要反复多次实验。深度神经网络是非线性模型,其代价函数是非凸函数,容易收敛到局部最优解。同时,深度神经网络的模型结构、输入数据处理方式、权重初始化方案、参数配置、激活函数选择、权重优化方法等均可能对最终效果有较大影响。另外,深度神经网络的数学基础研究稍显不足。虽然可以通过限制性波尔兹曼机(Restricted Boltzmann Machines,RBMs),或者(DenoisingAutoencoder,DAEs)等产生式建模方法初始化网络模型,以达到减少陷入局部最优的风险,但仍然不是彻底的解决方案,仍然需要在实际使用深度神经网络解决问题的时候,合理的利用海量数据,合理的选择优化方式。上述原因导致需要技巧、经验,基于大量实验来训练出一个效果好的模型。
因此,深度学习成为一个效果很好但门槛极高的方向,如何落地产生实际应用效果成为关注的焦点。
面对机遇和挑战,我们打造了腾讯深度学习平台Mariana。Mariana包括三个框架:深度神经网络(Deep Neural Networks,DNN)的GPU数据并行框架,深度卷积神经网络(Deep ConvolutionalNeural Networks,CNN)的GPU数据并行和模型并行框架,以及DNN CPU集群框架。Mariana通过此三个框架完成并行加速,针对多种应用场景,以解决深度学习训练极慢的问题;Mariana通过模型并行,支持大模型;Mariana提供默认算法的并行实现以减少新算法开发量,简化实验过程。Mariana面向语音识别、图像识别、广告推荐等众多应用领域。
腾讯深度学习平台Mariana以GPU服务器为主,每台服务器配置4或者6块Nvidia Tesla系列高端科学计算用GPU卡。利用每块GPU卡2000多个流处理器的强大计算能力,并实现多GPU卡并行以加速训练。
腾讯深度学习平台Mariana重点研究多GPU卡的并行化技术,完成DNN的数据并行框架,以及CNN的模型并行和数据并行框架。数据并行和模型并行是Google分布式大神Jeff Dean和深度学习大佬Andrew Ng在2012年NIPS会议上发表的DistBelief[3] 论文中针对深度学习的CPU集群框架提出的定义。数据并行指将训练数据划分为多份,每份数据有一个模型实例进行训练,再将多个模型实例产生的梯度合并后更新模型。模型并行指将模型划分为多个分片,每个分片在一台服务器,全部分片协同对一份训练数据进行训练。我们学习并借鉴了这两种并行方式,并成功应用于单机多GPU卡的并行。
DNN的数据并行框架通过同步随机梯度下降进行训练。数据并行训练中,每个GPU卡各自训练,并各自产生一份梯度值,然后进行参数交换。图2. 展示了参数交换过程。每台GPU服务器配置6块GPU卡,其中四块通过树状的PCIe连接,并与另外两块GPU卡通过IOH连接。参数交换过程从逻辑上看,梯度收集阶段将全部梯度值累加起来,然后应用到当前模型以更新参数得到新模型,最后在模型分发阶段将新模型下发给全部GPU卡。采用数据并行后,相对于单卡训练过程,关键的问题是参数交换过程引入额外时间消耗,拖累了并行性能,使得加速比很难提高。我们通过一个精心设计的拓扑完成参数交换,提升整体性能。此外,我们采用近似的自适应学习率算法,使得支持自适应学习率所需交换的数据量降低了一个数量级。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图2:DNN GPU框架数据并行的参数交换过程
DNN的数据并行框架在微信语音识别中得到应用。微信中语音识别功能的入口是语音输入法、语音开放平台以及长按语音消息转文本等。对微信语音识别任务,通过Mariana,识别准确率获得了极大的提升,目前识别能力已经跻身业界一流水平。同时可以满足语音业务海量的训练样本需求,通过缩短模型更新周期,使得微信语音业务可以及时满足各种新业务需求。
卷积神经网络CNN的模型并行和数据并行框架的结构如下图所示:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图3:CNN GPU框架的模型并行和数据并行架构
CNN模型并行和数据并行框架对GPU卡分组,组内两个GPU卡做模型并行,组间做数据并行。如上图所示,4个GPU卡分成Worker Group 0和1。组内两卡各持有CNN模型的一部分,称为partition,协作完成单个模型的训练。模型并行中,卡间数据传输通过引入Transfer Layer透明的完成。组间数据并行按同步随机梯度下降进行训练,并采用精巧的拓扑完成参数交换,但注意只有各组内属于同一个partition的数据各自交换,即图中GPU0和GPU2、GPU1和GPU3分别进行参数交换。引入数据并行和模型并行后,从磁盘读取训练数据,训练数据预处理,CNN训练分别占用磁盘、CPU、GPU资源,且均耗时较大。因此,我们引入流水线,使得磁盘、CPU、GPU资源可以同时得到利用,提升整体性能。
CNN数据并行和模型并行框架已在图像识别应用中初见成效。针对Hinton在2012年获得ImageNet竞赛冠军用的网络 [2],我们取得了两卡模型并行1.71倍加速比,4 GPU卡数据并行加模型并行时比单卡2.52倍的加速比。通过CNN并行框架的模型并行,单个GPU上CNN网络占用的GPU显存从3.99 GB减少到2.15 GB,使得可以训练更大规模的图像分类模型。通过模型并行获得ImageNet 2012数据集87%的top5准确率。CNN并行训练框架在微信图像业务中有众多潜在应用都已尝试接入本框架。同时在广点通广告推荐也开始应用探索。
&&&&&&&&&&& 图4:CNN GPU框架对Hinton的网络[2]在ImageNet 2012的并行加速性能
DNN CPU集群框架实现基于CPU集群的数据并行和模型并行,其总体架构如下图所示:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图5:DNN CPU集群框架总体架构
DNN CPU集群框架提供Vertex+Message的API,实现BulkSynchronous Parallel(BSP)模式。每次DNN训练作业作为一个DNN Job,其执行包含多个迭代,用户通过Client工具提交DNN Job。DNN Master负责任务调度,将训练数据分发到不同的Worker Group进行训练,并完成任务的failover等,以支持数据并行。Master将DNN Job的状态变化通过LogStore系统同步到数据库,便于从WebUI展示全部作业状态。此外,Master负责Counter的收集,并在WebUI上可视化展示。每个Worker Group中有1个Coordinator协调全部Worker完成模型并行,而Worker完成具体训练任务。模型通过参数服务器Parameter Server划分,并可靠存储在分布式文件系统中。在微信语音业务中,证明DNN CPU集群可取得与GPU相当的训练结果,而且CPU集群训练和GPU训练框架有互补性。
经过一年多的沉淀,深度学习在腾讯产生了落地的成果。腾讯深度学习平台Mariana逐步成型,形成了3个框架,包括:DNN GPU数据并行框架,CNN GPU模型并行和数据并行框架,以及DNN CPU集群模型并行和数据并行框架。Mariana通过数据并行和模型并行,解决了深度学习耗时冗长的问题,成为深度学习研究的有效助力。Mariana通过模型并行,有效支持了大模型。Mariana完成众多工作增强易用性,简化深度学习实验,大幅节约算法开发时间。Mariana的DNN GPU数据并行框架,针对微信语音识别应用,在单机6 GPU卡配置下获得相比单卡4.6倍的加速,可在数日内完成数十亿高维度训练样本的DNN模型训练,同时模型字错率降低10%以上。Mariana的CNN模型并行和数据并行框架,针对ImageNet图像分类问题,在单机4 GPU卡配置下,获得了相比单卡2.52倍的加速,并支持更大模型,在ImageNet 2012数据集中获得了87%的top5准确率。目前,腾讯深度学习平台Mariana已支持了微信语音识别的语音输入法、语音开放平台、长按语音消息转文本等产品,在微信图像识别中开始应用。此外,在广告推荐及个性化推荐等领域,也正在积极探索和实验中。
参考文献:
1.Hinton, G. E. andSalakhutdinov, R. R. (2006) Reducing the dimensionality of data with neuralnetworks. Science, Vol. 313. no.5786, pp. 504 - 507, 28 July 2006.
2. Alex Krizhevsky, IlyaSutskever. and Geoffrey E. Hinton. (2012) ImageNet Classification with DeepConvolutional Neural Networks. in Advancesin Neural Information Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.
3. Jeffrey Dean, Greg S. Corrado,Rajat Monga, et al, and Andrew Y. Ng (2012) Large Scale Distributed DeepNetworks. in Advances in NeuralInformation Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.
请选择禁言时间:
Copyright (C) 1998 - 2013 Tencent. All Rights Reserved.&&腾讯公司 版权所有

我要回帖

更多关于 微信框架 的文章

 

随机推荐