加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

干货:如何从系统层面优化深度学习计算?

发布时间:2018-06-11 17:04:08 所属栏目:教程 来源:伍鸣
导读:【资讯】编者按:在图像、语音辨认、天然说话处理赏罚、强化进修等很多技能规模中,深度进修已经被证明长短常有用的,而且在某些题目上已经到达乃至逾越了人类的程度。然而,深度进修对付计较手段有着很大的依靠,除了改变模子和算法,是否可以从体系的层面来
副问题[/!--empirenews.page--]

  【资讯】编者按:在图像、语音辨认、天然说话处理赏罚、强化进修等很多技能规模中,深度进修已经被证明长短常有用的,而且在某些题目上已经到达乃至逾越了人类的程度。然而,深度进修对付计较手段有着很大的依靠,除了改变模子和算法,是否可以从体系的层面来优化深度进修计较,进而改进计较资源的行使服从?本文中,来自微软亚洲研究院异构计较组资深研究员伍鸣与各人分享他对深度进修计较优化的一些观点。

  深度进修在近几年里取得了庞大的前进,它已经可能是有望乐成地被应用在我们很多糊口场景中,好比自动驾驶、安防、翻译、医疗等等。可以说,计较机的计较和通讯手段的大幅晋升是促使深度进修乐成的重要身分。

  深度进修为什么依靠于超大的计较手段?

  起首,深度进修本质上是基于统计的科学,以是大局限的样本数据对付深度进修的结果是至关重要的。其次,更大局限和更伟大的神经收集模子已经被证明很是有用,并在产物中有普及的行使,这同时也发生了对计较手段的更大体求和耗损。举个例子,具有8层神经元的AlexNet收集2012年在ImageNet数据集上取得16%的错误率,该收集的一次迭代运行约莫必要1.4 GFLOP的计较劲。而微软提出的行使152层神经元的残差收集(ResNet)于2015年在该数据集上取得3.5%的错误率,其一次迭代的计较劲约莫是22.6GFLOP,是AlexNet的16倍。在当今的出产情形中,图像、语音以及天然说话处理赏罚相干的模子,譬喻人脸辨认、语音转笔墨、呆板翻译等,纵然给以相等多的计较资源,许多仍必要几周的时刻才气完成实习。

  再次,深度进修模子是敏捷迭代的。在AI规模,每年学术界和家产界城市提出大量的新模子。对每一个现实的题目,开拓者必要不绝实行差异的模子和算法,乃至对付统一种模子算法,也必要去重复调试超参数以得到最好的猜测结果。可想而知,假如模子的每次实习都要几周的时刻,那么探求最优模子的进程会很是漫长和疾苦。

  其它,模子的线上推理具有越发极致的机能要求。线上的处事具有硬性的处事品级协议(SLA),以是在现实陈设大型模子时,必要手工从头优化在深度进修框架(如TensorFlow)上已经实习好的模子,导致大量特殊工程开销的发生。

  由此可见,进一步优化深度进修计较对付深度进修的快速成长和乐成应用起着至关重要的浸染。

  深度进修计较优化的挑衅和机遇

  今朝,优化深度进修的计较存在以下几个首要的挑衅:

  1)单机单计较单位(如GPU)的资源限定每每不能满意对大局限数据和模子的处理赏罚要求,那么就必要行使多机多计较单位来横向扩展计较的局限。怎样才气最大限度地镌汰通讯的开销从而最大化多机的并行度?

  2)怎样优化神经收集的计较使得它可以或许把单个硬件计较单位的服从施展到极致?

  3)固然很多硬件计较单位(GPU、FPGA等)的计较手段很强盛,可是它们的内存资源(即装备内存)很是稀缺。当它们不能提供模子运行所必要的内存资源时,要么运算不可以或许举办下去,要么就必要将计较所需的数据在主存和装备内存之间倒来倒去,带来很大的运行开销。怎样才气更好地操作有限的装备内存资源从而不给计较服从带来负面的影响?

  4)深度进修开拓者和研究职员凡是只想存眷神经收集模子和算法自己,并不想被伟大的优化题目分手精神。这意味着深度进修框架这样的体系软件最好可以或许实现自动优化,而对模子开拓者透明。那么,怎样对特定的优化做公道的抽象使其越发机动通用、越发轻易地集成在体系框架中即是必要当真思量的题目。

  干货:怎样从体系层面优化深度进修计较?

  究竟上,任何方面的优化题目都可以从模子算法和辖档徒个角度来对待。一方面,我们可以通过改变模子和算法来优化其对计较资源的行使服从从而改造其运行速率。这样的优化对特定的算法每每很是有用,但却不轻易扩展应用到其余算法中。而另一方面,也就是微软亚洲研究院异构计较组正在举办的研究,则是在体系中实验模子算法无关的优化,这样的优化,凡是可觉得更多的应用带来机能的甜头,同时也切合我们在前文提到的透明性的要求。

  以体系优化助力深度进修计较

  为了可以或许更好地领略体系这一层面的优化,我们先来简朴先容一下深度进修框架体系的配景常识。当今家产界风行的深度进修体系(包罗TensorFlow、PyTorch、CNTK、MxNet、Caffe等)多半回收分层的系统布局计划。在前端提供高级说话(譬喻Python)的接口抽象,应承用户利便地描写神经收集布局,也就是深度进修的模子。描写好的模子在被体系运行前,起首会被转换成数据流图(Data-flow Graph)。在这个数据流图中,节点是特定的矩阵操纵(也就是Operator,如Sigmoid、Matrix Multiplication等),而毗连差异节点的边则是操纵节点的输入和输出矩阵。这个数据流图也可以被当作是深度进修计较的中间表达。然后,深度进修体系的后端将这个数据流图映射到现实硬件长举办高效地执行,而大部门体系层面的优化就是在这个阶段完成的。

  干货:怎样从体系层面优化深度进修计较?

  加快漫衍式深度进修实习

  漫衍式实习的首要瓶颈在于多机之间的通讯开销。现在计较机收集的硬件技能已经有了很大的成长,InfiniBand的RDMA网卡(Remote Direct Memory Access,这是一种硬件的收集技能,它使得计较机遇见长途的内存时无需长途呆板上CPU的过问)已经可以提供50~100Gbps的收集带宽和微秒级的传输耽误。今朝很多以深度进修为方针应用的GPU机群都陈设了这样的收集。然而深度进修体系怎样才气充实操作好硬件提供的通讯手段使漫衍式的实习得到更大的机能晋升呢?其它,行使RDMA的软件接口举办通讯可以或许绕过TCP/IP协议栈,镌汰了操纵体系内核态的运行开销。在这样的收集通讯技能的支持下,任何与通讯相干的计较处理赏罚的开销城市变得很是明显,而这正是很多原先基于TCP/IP而计划的收集通讯机制中所存在的题目。

  RPC(Remote Procedure Call,长途进程挪用)是一个被普及行使的多机之间的通讯抽象原语,它的首要计划方针是通用性。在没有思量RDMA的环境下,许多深度进修框架城市回收RPC的机制(譬喻gRPC)来实现多机之间的通讯。然而,RPC必要维护一个内部的私有缓存,从而不得不引入用户数据的存储空间和内部缓存之间的数据拷贝。这种内存拷贝的开销在行使RDMA收集的环境下会变得很是明明。我们通过micro-benchmark调查到,跟行使基于TCP/IP的gRPC对比,直接通过RDMA的接口传输动静(对差异的动静巨细)可以有2到10倍的机能晋升。

  那么针对深度进修的应用负载,怎样才气更好地操作RDMA硬件的手段?起首,我们来说明一下深度进修应用的几个特点:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读