微软亚洲研究院霍强:实现并行训练的线性增长,突破数据处理极限-阿里云开发者社区

开发者社区> 开发者小助手-bz8> 正文

微软亚洲研究院霍强:实现并行训练的线性增长,突破数据处理极限

简介: 如何在增加CPU 或 GPU 数量的同时,保证训练的线性加速以及性能?这是并行训练中存在的一个矛盾问题。微软亚洲研究院首席研究员霍强博士的研究团队就较好地解决了这个经典的两难问题,让大规模并行训练在增加GPU的条件下几乎实现了线性加速并保证了模型性能,这一突破对大数据机器学习的效率提升意义重大。机器之心对霍强博士进行了专访。
+关注继续查看

微信图片_20211126190313.jpg

微软亚洲研究院首席研究员霍强博士


近年来,深度学习的爆发在很大程度上取决于大数据和与之相匹配的计算能力,深度学习的特性决定了它需要更多的数据进行学习,从而得出模型来完成特定任务,比如说用庞大的语料库去训练语音模型;伴随出现的 CPU 和 GPU 集群也保障了计算能力,使得算法和数据能够完美结合起来,从而带来了深度学习的大发展,特别是语音和图像识别精度的显著提升。

 

但是,计算能力和训练速度的提升并非计算资源的简单堆砌,这里有一个「鱼与熊掌不可兼得」的矛盾——如何在增加CPU 或 GPU 数量的同时,保证训练的线性加速以及性能。如果把深度学习的实施比作盖房子的话,那房子是需要建立的模型,工人则可以看做是 CPU 和 GPU,建筑材料就是数据。为保证房子的质量,我们需要保证一定的建筑材料,同时需要组织工人用最高效的方式去完成建造过程。但由于工人之间存在沟通成本和资源浪费,因此无法实现工作成果随工人数量的增多呈线性增长。这对应到机器学习领域就是如何在扩大并行训练(parallel training)规模的情况下,在保证模型性能的同时实现训练速度线性增长。而最近,微软亚洲研究院首席研究员霍强博士的研究团队在 ICASSP 2016 大会上提交的论文《Scalable Training of Deep Learning Machines by Incremental Block Training with Intra-Block Parallel Optimization and Blockwise Model-Update Filtering》就较好地解决了这个经典的两难问题,让大规模并行训练在增加GPU的条件下几乎实现了线性加速并保证了模型性能,这一突破对大数据机器学习的效率提升意义重大。 

 

这篇论文中的实验结果显示,该技术对语音识别中神经网络模型的训练提升十分显著,在保证模型性能的前提下,当使用16 块 GPU 卡时,训练速度提高了 15 倍,而当使用 64 块卡时,训练速度提高到了 56 倍。在对手写识别所采用的双向长短期记忆递归神经网络的 CTC (Connectionist Temporal Classification)训练过程中,该并行训练算法的有效性也得到了证明。霍强及团队也与微软产品部门合作验证了该方案的有效性,霍强表示,正在将该并行训练算法用于卷积神经网络。

 

在霍强的团队提出该方法之前,业内普遍有三种方法来解决并行计算问题:

 

最知名的方法是 ASGD(异步随机梯度下降,Asynchronous stochastic gradient descent),通过大量 GPU 做异步计算,这是 Google 从 2012 年起就在采用的方法。但这个方法的问题在于,增加 GPU 时需要的通信代价很高,增加了系统设计优化和维护成本,同时基于同样数据的两次训练结果也会不同。

 

第二种方法是 ASGD 加模型平均,在对大数据做并行处理时,将数据分配给每块GPU去处理,之后把计算结果取一个平均值生成新的模型,再给GPU分配数据进行处理,以此类推。这种方法很简单,但坏处在于卡数上去时模型性能会下降。

   

第三种方法是1-bit SGD,该方法由微软一位研究员提出,通过梯度量化和压缩技术减少通信代价,实现了 Geoffrey Hinton 30 年前提出的单机训练经典方法 mini-batch SGD 的并行化。它的主要缺点是, 在保证训练模型性能的情况下,卡数增加时无法做到训练线性加速。

 

霍强博士的团队此次提出的解决方案是在模型平均的基础上增加了一个模型更新滤波步骤,将每一轮模型更新的信息收集起来,结合历史信息和当前信息进行学习,这样一来能够保证每一轮的更新更为平滑,不会出现巨大波动,最终生成模型的性能也大大提升。霍强博士认为,和模型平均法相比,这种全新的解决方案有两个优势,第一是将历史信息考虑进来,模型平均方法每一轮迭代只利用当前获得的信息更新模型,历史更新信息被忽略了。「就像我们在学习新东西时,大部分过去的经验教训你都忘掉了,从某一个新的起点开始,有时候是好事情,但更多时候是坏事情,少了吸取经验教训这个环节嘛。」霍强说到。第二个优势是数据块层级的训练,即每个 GPU 处理的是子任务,把所有的子任务数据合在一起就是一个数据块,子任务加起来是更大的任务。整个训练过程称为 Incremental Block Training,每次只关心一个数据块,依次处理。「这样设计的最大好处就是对处理的数据量没有限制,」霍强解释到,「因为不管数据有多少,每次都是看一个数据块,处理完一个数据块以后,看下一个数据块。因此,有多少计算能力,就能处理多大数据。」

 

这次研究突破看似是灵光一现,但实际上是水到渠成的结果,和霍强及研究小组的长期研究积淀密不可分,而更重要的则是他们把过去几种方法研究到极致的理念,「我们觉得每一个优秀的研究人员都能做到这一点,因为他要做创造发明,一定要寻根究底,否则你怎么能想出新方法来,要不然你想出来的方法还不如一个旧方法。」霍强说到。比如说,他发现 Geoffrey Hinton 30 年前的方法有一个细节在很长一段时间内被很多人忽略了,它不是标准的 SGD,而是带有冲量(momentum)的 SGD,即在做 mini-batch SGD 的时候,也会考虑历史信息,基于上一个模型的变动情况去更新新模型。这个冲量让训练过程变得平滑,从而带来了更好的学习效果,其实这是保证这个方法有长久生命力的重要原因之一。

 

正是这种研究理念促使霍强及团队对历史上的各类方法都有透彻了解,弄清楚了各种方法的优缺点,从而提出了完全创新的方法。由于这种新方案能够在保证模型性能的同时实现并行训练的线性加速,而且对处理数据量没有上限,因此具有很强的通用性。除了在微软内部的使用之外,更重要的影响还在于让更多的研究者可以使用。「我觉得这个方法最大的影响就是降低门槛,让中小规模的研究组,或者没有系统专门知识的人也可以利用大数据去做大规模的深度学习,去利用现在越来越便宜的GPU卡。」霍强表示。

 

并行训练效率的提升可以继续提高语音识别和图像识别的精度,或者处理更加复杂的应用场景。比如说远场及噪音环境下的语音识别还是一个没有完全解决的问题,需要开发新模型,而利用大数据的深度学习在其中可以发挥重要作用,这也凸显了并行训练的重要性。


「现在所谓的人工智能,很重要的一个环节,也是进步最快的部分,就是如何用大量有用的数据学到一些比较有价值的信息去解决实际问题。」霍强说到。而实现大规模并行训练的线性加速为我们带来了更好的利用数据的工具。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8523 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26508 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2803 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10362 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12207 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11766 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4557 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6581 0
1574
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载