论文笔记——Mariana:Tencent Deep Learning Platform and its Applications

来源:互联网 发布:侠客风云传优化怎么样 编辑:程序博客网 时间:2024/05/20 02:22

文章首先阐述Tencent搭建深度学习平台应满足的需求:

(1)要求平台有能够训练大量的参数和数据的能力;

(2)平台能够训练大模型;

(3)平台在实际应用中能够简便的使用;

介绍了Google DistBelief系统for cpu、COTS系统for GPU中使用的两种并行方式:数据并行和模型并行。数据并行把数据分成几部分,同时训练一个模型,前向传播完成后,收集梯度、更新模型参数;模型并行把模型拆分、多组worker进行一个模型的训练。

为了适应不同的业务需求,Tencent搭建了三个深度学习的框架:(1)用于深度神经网络的基于multi-gpu的数据并行框架;(2)用于卷积神经网络的基于multi-gpu的数据并行和模型并行框架;(3)用于大规模的深度神经网络的基于multi-gpu的数据并行和模型并行框架。

首先介绍的是用于深度神经网络的基于multi-gpu的数据并行框架。该框架主要用于自动语音识别,模型是由含4到6隐含层的、有5千万个参数组成的深度神经网络组成,模型并行在增加gpu的情况下,并不能得到更好的加速效果,所以框架采用数据并行。数据并行框架在cpu上有一个驱动程序来控制训练过程中的随机梯度下降的同步,该驱动程序每次从磁盘中读取mini-batch数据到gpu中,直到所有的gpu完成了mini-batch的处理,再协调处理各个gpu的参数交换。参数交换过程分为三步:首先收集各个gpu的梯度,再根据梯度更新模型,最后分发更新后的模型给各个gpu。从物理链路上来看,各个gpu是通过PCIe连接的,而一个gpu服务器的多块板卡是通过IOH连接的,这两者的带宽,会影响框架的效率。为了在参数交换过程中,最小化数据的拷贝、最大化的利用的gpu之间的传输带宽,文章提出一种分区线性拓扑结构(Partitioned Linearity Topology)来实现快速的参数交换,交换过程如下图(此处不理解)。这一部分的最后,文章提出一种Approximate AdaGrad训练方法来减少AdaGrad方法的过拟合(此处也不是很理解)。


图1 分区线性拓扑结构(Partitioned Linearity Topology

文章接着介绍了第二个——用于卷积神经网络的基于multi-gpu的数据并行和模型并行框架,该框架主要用来处理计算机视觉应用,如图像识别,也可用于自动语音识别。因为卷积神经网络模型较大,所以模型并行是必须的,同时,数据并行可以加速模型并行的训练。该框架的结构如下图,有两个worker group作为数据并行,每个worker group由两个gpu组成,为模型并行。分区线性拓扑结构(Partitioned Linearity Topology)在数据并行中同样被采用,用来实现快速的参数交换。文中提出一个transfer layer来简化代码和提高模型并行的计算性能,transfer layer通过gpu之间的数据传输,来保证只有本地的gpu内存中的数据被访问,相邻的层会自动创建transfer layer。最后,采用了一个三阶段的流水线来加速训练。


图2 CNN并行框架


图3 三阶段流水线

最后一个框架是用于大规模的深度神经网络的基于multi-gpu的数据并行和模型并行框架,该框架适合占用大量内存、中等计算量,但需大量计算数据的大型模型。结构如下图所示,该cpu集群框架提供Vertex+Message的API,实现BulkSynchronous Parallel(BSP)模式。Vertex可能是一个或一组神经元,甚至可能是整个DNN模型,Vertex API包括梯度序列化和为了参数交换而参数反序列化的方法。DNN模型在集群中的训练采用多次异步迭代的随机梯度下降法(SGD)。(看不明白)


图4 用于DNNs的CPU集群架构

1 0