欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

腾讯深度学习平台亮相机器学习*会议ICML2014

程序员文章站 2022-12-04 08:04:00
深度学习是近年机器学习领域的重大突破,有着广泛的应用前景。随着Google公开Google Brain计划,业界对深度学习的热情高涨。百度成立深度学习研究院,腾讯也启动了深度学习的研究。腾讯在深度学习...

深度学习是近年机器学习领域的重大突破,有着广泛的应用前景。随着Google公开Google Brain计划,业界对深度学习的热情高涨。百度成立深度学习研究院,腾讯也启动了深度学习的研究。腾讯在深度学习领域持续投入,获得了实际落地的产出。本文是腾讯深度学习系列文章的第一篇。我们准备了四篇文章,阐述深度学习的原理和在腾讯的实践。

2014年6月22日,腾讯深度学习平台(Tencent Deep Learning Platform)于国际机器学习领域*会议ICML2014上首次公开亮相,揭秘了腾讯深度学习平台的目标和技术路线,及其微信语音识别、微信图像识别、广点通广告推荐等应用场景。

腾讯深度学习平台包括深度神经网络(Deep Neural Networks,DNN)的GPU数据并行框架,深度卷积神经网络(Deep Convolutional Neural Networks,CNN)的GPU数据并行和模型并行框架,以及DNN CPU集群框架。上述框架实现了深度学习的共性需求,减少新算法开发量。框架通过并行加速,加速深度学习训练。

腾讯深度学习平台的DNN GPU数据并行框架,在单机6 GPU卡配置下获得相比单卡4.6倍的加速,可在数日内完成数十亿高维度训练样本的DNN模型训练。同时通过算法优化,在模型训练提速的同时,提升了模型的分类准确度10%以上。基于此DNN框架,微信语音识别业务得到进一步完善,已于2014年初全量上线微信语音输入和语音开放平台。深度学习平台的CNN模型并行和数据并行框架,在单机4 GPU卡配置下,获得了相比单卡2.52倍的加速,这一指标处于国际领先水平。基于CNN并行框架中的模型并行,图像业务能够支持更大规模图像分类模型,在ImageNet 2012数据集中获得了87%的top5准确率,处于国际先进水平。此外,腾讯深度学习平台提供了DNN CPU集群框架,支持超大规模深度神经网络训练。

腾讯深度学习平台亮相机器学习*会议ICML2014

图1:腾讯深度学习平台在ICML2014的展区

深度学习是近年来机器学习领域最令人瞩目的方向。自2006年深度学习界泰斗Geoffrey Hinton在Science杂志上发表Deep Belief Networks的论文后,重新激活了神经网络的研究,开启了深度神经网络的新时代。学术界和工业界对深度学习热情高涨,并逐渐在语音识别、图像识别、自然语言处理等领域获得突破性进展。深度学习在语音识别领域获得相对20%到30%的准确率提升,突破了近十年的瓶颈。2012年图像识别领域在ImageNet图像分类竞赛中取得了85%的top5准确率,相比前一年74%的准确率有里程碑式的提升,并进一步在2013年获得89%的准确率。目前Google、Facebook、Microsoft、IBM等国际巨头,以及国内百度、阿里巴巴等互联网巨头争相布局深度学习。

深度学习通过构建深层神经网络,来模拟人类大脑的工作原理。如图2所示,深层神经网络由一个输入层,数个隐层,以及一个输出层构成。每层有若干个神经元,神经元之间有连接权重。每个神经元模拟人类的神经细胞,而结点之间的连接模拟神经细胞之间的连接。

腾讯深度学习平台亮相机器学习*会议ICML2014

图2:深度神经网络的结构

但是,深度神经网络面临巨大的挑战。

首先,深度神经网络模型复杂,训练数据多,计算量大。一方面,DNN需要模拟人脑的计算能力,而人脑包含100多亿个神经细胞,这要求DNN中神经元多,神经元间连接数量也相当惊人。从数学的角度看,DNN中每个神经元都包含数学计算(如Sigmoid、ReLU或者Softmax函数),需要估计的参数量也极大。语音识别和图像识别应用中,神经元达数万个,参数数千万,模型复杂导致计算量大。另一方面,DNN需要大量数据才能训练出高准确率的模型。DNN参数量大,模型复杂,为了避免过拟合,需要海量训练数据。两方面因素叠加,导致训练一个模型耗时惊人。以语音识别为例,目前业界通常使用样本量达数十亿,以CPU单机需要数年才能完成一次训练。

其次,深度神经网络训练收敛难,需要反复多次实验。深度神经网络是非线性模型,其代价函数是非凸函数,容易收敛到局部最优解。同时,深度神经网络的模型结构、输入数据处理方式、权重初始化方案、参数配置、激活函数选择、权重优化方法等均可能对最终效果有较大影响。另外,深度神经网络的数学基础研究稍显不足。虽然可以通过限制性波尔兹曼机(Restricted Boltzmann Machines,RBMs)等减少陷入局部最优的风险,但仍然不是彻底的解决方案,仍然需要在实际使用深度神经网络解决问题的时候,合理的利用海量数据,合理的选择优化方式。上述原因导致需要技巧、经验,基于大量实验来训练出一个效果好的模型。

面对机遇和挑战,腾讯在2013年初,由WXG微信技术架构部联合TEG数据平台部启动了深度学习的合作研究。微信技术架构部完成了DNN的单机多GPU模型并行训练框架,数据平台部着力打造DNN的CPU集群训练框架。2013年5月,基于DNN训练的语音业务正式上线。随后以数据平台部为主,融合双方优势,开发出升级版的DNN GPU数据并行框架,以及全新的CNN GPU模型并行和数据并行训练框架,打造了统一的腾讯深度学习平台。2014年初开始,全面应用于语音识别、图像识别、广告推荐等应用领域。腾讯深度学习平台致力于通过并行技术加速训练,并提供并行框架和算法以简化算法工程师的工作。

腾讯深度学习平台以GPU服务器为主,每台服务器配置4或者6块Nvidia Tesla系列高端科学计算用GPU卡。利用每块GPU卡2000多个流处理器的强大计算能力,并实现多GPU卡并行以加速训练。

腾讯深度学习平台重点研究多GPU卡的并行化技术,完成DNN的数据并行框架,以及CNN的模型并行和数据并行框架。数据并行和模型并行是Google分布式大神Jeff Dean和深度学习大佬Andrew Ng在2012年NIPS会议上发表的DistBelief论文中针对深度学习的CPU集群框架提出的定义。数据并行指将训练数据划分为多份,每份数据有一个模型实例进行训练,再将多个模型实例产生的梯度合并后更新模型。模型并行指将模型划分为多个分片,每个分片在一台服务器,全部分片协同对一份训练数据进行训练。我们学习并借鉴了这两种并行方式,并成功应用于单机多GPU卡的并行。

DNN的数据并行框架通过同步随机梯度下降进行训练。数据并行训练中,每个GPU卡各自训练,并各自产生一份梯度值,然后进行参数交换。图3展示了参数交换过程。每台GPU服务器配置6块GPU卡,其中四块通过树状的PCIe连接,并与另外两块GPU卡通过IOH连接。参数交换过程从逻辑上看,梯度收集阶段将全部梯度值累加起来,然后应用到当前模型以更新参数得到新模型,最后在模型分发阶段将新模型下发给全部GPU卡。采用数据并行后,相对于单卡训练过程,关键的问题是参数交换过程引入额外时间消耗,拖累了并行性能,使得加速比很难提高。我们通过一个精心设计的拓扑完成参数交换,提升整体性能。此外,我们采用近似的自适应学习率算法,使得支持自适应学习率所需交换的数据量降低了一个数量级。

腾讯深度学习平台亮相机器学习*会议ICML2014

图3:DNN GPU框架数据并行的参数交换过程

DNN的数据并行框架在微信语音识别中得到应用。微信中语音识别功能的入口是语音输入法、语音开放平台以及长按语音消息转文本等。对微信语音识别任务,通过腾讯深度学习平台,识别准确率获得了极大的提升,目前识别能力已经跻身业界一流水平。同时可以满足语音业务海量的训练样本需求,通过缩短模型更新周期,使得微信语音业务可以及时满足各种新业务需求。

卷积神经网络CNN的模型并行和数据并行框架的结构如下图所示:

腾讯深度学习平台亮相机器学习*会议ICML2014

图4: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竞赛冠军用的网络,我们取得了两卡模型并行1.71倍加速比,4 GPU卡数据并行加模型并行时比单卡2.52倍的加速比,处于国际领先水平。通过CNN并行框架的模型并行,单个GPU上CNN网络占用的GPU显存从3.99 GB减少到2.15 GB,使得可以训练更大规模的图像分类模型。通过模型并行获得ImageNet 2012数据集87%的top5准确率,处于国际先进水平。CNN并行训练框架在微信图像业务中得到应用,图像识别,图像检索,人脸识别,OCR识别等,都已尝试接入本框架。同时数据平台部支持的广点通广告推荐也开始应用探索。

腾讯深度学习平台亮相机器学习*会议ICML2014

图5:CNN GPU框架对Hinton的网络在ImageNet 2012的并行加速性能

DNN CPU集群框架实现基于CPU集群的数据并行和模型并行,其总体架构如下图所示:

腾讯深度学习平台亮相机器学习*会议ICML2014

图6:DNN CPU集群框架总体架构

DNN CPU集群框架提供Vertex+Message的API,实现Bulk Synchronous 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训练框架有互补性。

经过一年多的沉淀,深度学习在腾讯产生了落地的成果。腾讯深度学习平台逐步成型,形成了包括DNN GPU数据并行框架,CNN GPU模型并行和数据并行框架,以及DNN CPU集群模型并行和数据并行框架。上述框架实现了深度学习的共性需求,大幅节约算法开发时间。框架通过数据并行和模型并行,解决了深度学习耗时冗长的问题,成为深度学习研究的有效助力。腾讯深度学习平台在GPU加速性能上已达到国际先进水平,并提交了两项并行加速的专利。目前,腾讯深度学习平台已在微信语音识别、微信图像识别中得到深入应用,有效支持了产品,此外,在广告推荐及个性化推荐等领域,也正在积极探索和实验中。