论文:《深度神经网路并行研究》

    为减少深度神经网络的训练时间,基于各种高性能计算平台设计并行深度神经网络算法逐渐成为研究热点。由于功耗墙的存在,用于计算的CPU硬件架构从单核变成多核,并行计算的方式也从指令级并行变成线程级并行。近年来,以GPU、MIC和FPGA为代表的异构计算平台具有高能效的优点,被广泛用于不同研究领域的加速。异构计算的理念也被用来制造超级计算机[10],如我国研制的异构计算集群天河一号(采用GPU作为加速器)其计算能力在2010年11月排世界第一,天河二号(采用MIC作为协处理器)其计算能力在2013 年6 月排世界第一。采用国产异构多核CPU 制造的神威太湖之光超级计算机在TOP500 世界超算大会夺得世界第
一。由于并行计算设备的多样性,并行编程框架也日趋丰富,目前主要的编程框架有CUDA(ComputeUnified Device Architecture , 统一计算架构)、OpenCL(Open Computing Language,开放计算语言)、OpenMP(Open Multiple Processing,开放式多处理)、MPI(Message Passing Interface,消息传递接口)、Spark 等[11]硬件的快速发展为深度神经网络的并行化提供了物质基础,并行编程框架为其并行化架起了桥梁,因此如何结合深度神经网络的算法特点,利用并行编程框架来设计能充分发挥多核众核平台计算能力的并行化方法显得十分迫切。近年来,各种深度神经网络模型如雨后春笋般涌现出来,随着网络模型种类的逐渐增多,网络深度也从开始的几层到现在的成百上千层,虽然大大提高了精确率,但也使得深度神经网络的训练时间越来越长,成为其快速发展和广泛应用的一大阻碍。

    虽然深度神经网络由于优异的性能得到了广泛的使用,在许多的应用领域取得了成功,但其日趋复杂的网络模型为其应用的时效性带来了挑战。为减少深度神经网络的训练和测试时间,针对各种应用场景,在不同架构的并行计算硬件平台上,利用合适的软件接口来设计并行深度学习计算系统并优化其性能成为研究热点。

2.1 硬件架构

   用于深度学习的硬件设备在计算性能、并行机理和应用开发周期等方面存在巨大的差异,计算能力和带宽是决定硬件应用性能的主要因素、

   1)多核CPU:随着频率墙、功耗墙、存储墙等问题越来越突出,单核CPU很难继续通过提高时钟频率来提升性能,因此具有多核结构的计算设备逐渐成为主流。多核结构指的是在同一个处理器上集成两个或两个以上的计算内核,不同计算内核之间相互独立,可以并行的执行指令。

  2)GPU:GPU以前主要用于图形学处理,由于其强大的计算能力现在已经被用作加速器来加速计算密集型应用。GPU是以大量线程并行执行面向高吞吐量设计,具有高带宽、高并行性的特点,因此GPU适用于大量数据的并行计算.

  3)MIC:Intel公司2012年推出了第一代MIC架构的Xeon Phi融合处理器KNC(Knights Corner),拥有57个以上的CPU物理核心,每个物理核心可以并行执行4个硬件线程,核心频率约为1.1GHz,并且包含一个512 bit线宽的矢量处理单元VPU,可提供约1TFLOPS双精度峰值计算能力

  4)FPGA:由成百上千的加法器、乘法器和数字信号处理器DSP等模块组成,可以同时进行大规模的并行运算,具有高性能、低功耗、可编程等特点。FPGA作为一种计算密集型加速部件,通过将算法分解并映射到相应的硬件模块上进行加速。流水结构是FPGA作为加速器的一大优势,可以很好地和深度神经网络算法相匹配,充分利用算法网络结构内部的并行性,提高运算速度的同时减小功耗。

  5)专用加速器:为了最大化计算速度和最小化能量消耗,针对深度学习设计专用集成电路(Application-Specific Integrated Circuit,ASIC)并将其应用于大规模云计算数据中心和嵌入式计算设备成为热门研究方向。

2.2 并行编程框架

  1)CUDA是2007年由NVIDIA公司推出的只能运行在本公司各种型号GPU上的并行编程语言[50],使用扩展的C语言来进行GPU编程

  2)OpenCL是Khronos组织制定的异构计算统一编程标准[51],得到了AMD、Apple、Intel、NVIDIA、TI等公司的支持,因此可以运行在多核CPU、GPU、DSP、FPGA以及异构加速处理单元上。OpenCL计算模型在具体硬件上执行时,由各个厂家的运行环境负责将代码在线编译成机器码并建立软硬件映射机制。当OpenCL执行的核心kernel启动后会创建大量的线程同时执行,每个线程即工作单元(work-item)完成kernel函数定义的操作。当映射到OpenCL硬件上执行时,采用两级并行机制,work-group并发运行在异构计算设备的计算单元上,同一个work-group里的多个work-item相互独立并在处理单元上并行执行。

  3)OpenMP:OpenMP程序是通过将for循环分解到多个线程上进行并行,可以通过调整线程数目和调度方式(静态调度、动态调度)等手段来优化性能

  4)MPI:MPI是一种基于消息传递的并行程序编程框架[53]

  5)Spark:5)Spark是UC Berkeley大学AMP实验室在2009年开源的一种通用并行计算框架,最大可支持上千个节点的并行数据处理[54]。它扩展了广泛使用的MapReduce计算模型,并添加了交互式查询以及流处理功能,同时支持Scala、Java和Python语言,易于使用,能够与Yarn、Mesos、Hive、HBase、HDFS等多个框架进行很好的兼容。高效的容错机制使其在面对故障问题时可及时恢复正常。目前Spark 已被广泛应用于大数据处理领域。

4 深度神经网络的模型并行和数据并行  

模型并行(图5a)是指将网络模型分解到各个计算设备上,依靠设备间的共同协作完成训练。数据并行(图5b)是指对训练数据做切分,同时采用多个模型实例,对多个分片的数据并行训练,由参数服务器[56,57]来完成参数交换。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值