训练大规模神经网络的并行计算平台.doc

上传人:工**** 文档编号:561399839 上传时间:2024-02-26 格式:DOC 页数:12 大小:3.94MB
返回 下载 相关 举报
训练大规模神经网络的并行计算平台.doc_第1页
第1页 / 共12页
训练大规模神经网络的并行计算平台.doc_第2页
第2页 / 共12页
训练大规模神经网络的并行计算平台.doc_第3页
第3页 / 共12页
训练大规模神经网络的并行计算平台.doc_第4页
第4页 / 共12页
训练大规模神经网络的并行计算平台.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《训练大规模神经网络的并行计算平台.doc》由会员分享,可在线阅读,更多相关《训练大规模神经网络的并行计算平台.doc(12页珍藏版)》请在金锄头文库上搜索。

1、训练大规模神经网络的并行计算平台摘 要:人工神经网络(ANN )已能成功地应用于各种模式识别和数据挖掘中。然而,在大规模数据集上训练人工神经网络会导致数据密集和计算密集。因此,为了获的更高的精度,大规模人工神经网络会有保留的进行耗时训练。在本文中,我们提出cNeural方法,自定义一个并行计算平台,用逆传算法加速训练大型神经网络。不同于许多并行神经网络训练系统作用于数千个训练样本,cNeural可以加快训练拥有数百万个训练样本的大规模数据集。为了实现这个目标,首先, cNeural用HBase存储和并行加载大规模数据集。第二,为了进行快速迭代训练,它提供了一个并行内存计算框架。第三,我们选择一

2、个紧凑的事件驱动消息通信模型,而不是传递即时消息的心跳轮询模式。实验结果表明,cNeural中的数据加载和消息传递的开销时间成本非常低,并且cNeural比基于Hadoop MapReduce解决方案的速度快50倍左右。它还实现了线性的可伸缩性和良好的负载平衡。关键字:并行计算;神经网络;大数据;快速训练;分布式存储1 引言人工神经网络(ANN)已应用于各种数据挖掘和模式识别中,如蛋白质结构分析、语音识别、,手写识别、图像和信号处理1。然而, 训练大规模神经网络时会出现计算密集和数据密集。一方面,整个训练工作流程通常需要进行成千上万次的训练步长迭代,这会导致昂贵的计算。另一方面,为了得到可靠的

3、结果,大规模训练数据集通常用于应用程序。因此, 在单一PC机上训练大规模神经网络通常是非常耗时的,有时需要几天或者几周完成,有时甚至不可能完成。因此,大规模神经网络的低训练速度慢限制了它们处理实际应用中复杂和有价值的问题。另一方面,现实世界的数据量早在前几年就已经爆炸,并且在许多相关领域里,分析大数据已变得相当受欢迎2。大数据的情况也适用于神经网络3。从直觉讲,大家普遍认为训练大规模样本比训练少量的样本效果好。因此,对于那些基于神经网络的应用程序,训练大规模神经网络在实现最高精度和结果中起着重要的作用。在本文中,我们设计和实现cNeural方法,一个为训练大规模神经网络而自定义的并行计算平台。

4、在cNeural中,训练工作流分为两个阶段: 加载训练数据和执行训练流程。为了减少数据加载的时间成本,我们把大规模训练数据集存储在HBase中,必要时通过集群会同时加载其中的一个数据到计算节点的内存中。此外, 为了加快迭代训练会采用一个并行内存计算框架。在整个训练过程中,为了合作和进一步的处理,计算节点之间需要相互沟通。在cNeural中,我们采用Apache Avro RPC建立一个事件驱动的消息传递通信框架, Apache Avro RPC有较高的通信效率并且数据结构丰富。我们的平台可以部署在商品硬件,Amazon EC2,甚至是pc机之间的网络互联。本文分八个部分。第二节描述了相关工作。

5、第三部分,提出基于反向传播训练算法的神经网络的背景。第四部分,介绍并行训练框架和cNeural算法。第五部分,描述用于支持快速训练的数据存储机制。第六部分,说明cNeural中的体系结构概述和主要组成部分。第七部分作出评估。第八部分总结全文。2 相关工作许多研究人员一直致力于在并行或分布式计算系统上实现计算上开销很高的ANN算法。相关工作可以追溯到上个世纪的70年代并且现在这个领域的研究依然保持增长。在早期,研究人员喜欢用特殊用途的硬件来提高训练速度,这些硬件被分为神经元硬件和神经计算机6。Glesner和Pochnuller11 在他们的书中提出这种特殊用途硬件的概述。应用特殊用途的硬件可以

6、实现快速和高效的运行。但是,它们几乎不具有灵活性和可伸缩性。在上世纪90年代以后,在普通用途的框架上设计并行神经网络成为了主流12,13,如并行计算模型或网格计算模型。这些系统大多应用于集群和多处理器计算机上。但是,以前的工作在管理大规模训练数据集上并没有做出太多的努力。他们通常致力于怎样使神经网络训练并行化以及只在数千个训练样本和兆字节大小的数据上执行实验。近年来,许多研究人员在大数据上研究训练神经网络。10 用HDFS存储大型数据集并且用MapReduce方法训练它们。然而,Hadoop适用处理离线数据密集型的问题而不适用于处理计算密集型问题。因此,在Hadoop上训练神经网络的速度是缓慢

7、的。GPU也被用于人工神经网络训练,但是训练数据集的大小受限于GPU的全局内存16。文献18 利用大规模的无监督学习可以从无标签数据中提取特性。他们在训练算法上花费很多努力,如模型并行机制和异步随机梯度下降。与以上的研究相比,cNeural不仅考虑了能加速神经网络训练的并行算法,而且对大数据的管理可以更好地支持并行算法的快速运行作出很多努力。由于Hadoop并不适用于迭代处理,很多研究提出了改进的方法,如Twister19和HaLoop20。他们试图降低初始化工作中的时间成本以及迭代节点之间的数据缓存。21提出Spark方法,一个完全新的内存计算的并行分布式系统。与这些处理引擎相比,cNeur

8、al也实现了并行神经网络训练算法。cNeural中底层的处理引擎也支持内存计算。此外,我们为了更好的支持一流算法和应用程序而采用自定义的执行程序。3 背景在本节中,简要介绍神经网络训练中的反向传播算法。利用多层感知器作为一个典型的例子来描述训练算法。前馈反向传播神经网络4是现在最流行的一种神经网络构架5。4中证明了被反向传播算法训练的三层前馈神经网络可以逼近任何连续的有任意精度的隐层神经元的非线性函数,如多层感知器。因此, 本节介绍一个与三层前馈感知器的描述相关的算法。三层感知器的结构如图1所示。它包括一个输入层、隐藏层和输出层。同一层的神经元不相通,而相邻层的神经元的权重和偏差完全相连。基于

9、梯度递减技术的反向传播(BP)31是一种监督训练多层前馈神经网络的算法。反向传播算法有两个阶段:前期阶段和后期阶段。在前期阶段中,输入层接收输入信号并且给隐藏层的每个神经元传播信息。然后,隐藏层局部的处理这些信息,并把这些信息传播给输出层。例如一个输入向量,隐藏层中每个神经元的输入和输出信息,表示为和,定义如(1)和(2)所示。 (1) (2)其中,表示输入神经元和隐藏神经元之间的权重,指偏差。输入层也需要处理从隐藏层得到的输入信息,输入层中每个神经元的输入和输出是用(3)和(4)计算:= (3) (4)其中,是隐藏神经元和输出神经元之间的权重,是偏差。这是前期过程中一次性通过信息的结束。权重

10、,和偏差,在前期阶段值不会改变。如果神经网络的实际输出等于输入向量的预期输出,那么就把一个新的输入向量放入神经网络中并且重新启动前期阶段,否则算法进入后期阶段。实际输出和预期输出之间的差异被称为误差。在后期阶段, 输出层中神经元的误差用公式(5)计算。然后, 隐藏层中神经元的误差用公式(6)计算。 (5) (6)输出层和隐藏层之间的误差逆向传播并且层与层之间的连接权重用(7)式中的逆向误差更新。使用(8)式更新隐含层和输入层之间的权重。 (7) (8)在上面的公式中,其中;。和是0到1 的学习参数。是训练步长ID.一般来说,BP算法有两种权重更新模式:在线模式和批处理模式。在线模式中的训练样本

11、是逐个处理的,而批处理模式的所有训练样本是成批处理的。在一个训练步长中每个样本生成的逐渐积累(表示两个训练步长中,和值的改变)。在此之后,累计被用于更新链接层之间的权重。这个训练工作一直持续到满足终止条件。采用的主要终止条件是均方误差低于特定的阈值或训练步长所到达的有限值。为了计算总误差,整个训练数据集需要通过神经网络传播。这样会使反向传播算法在处理大型训练数据集时出现训练慢速度的结果。4在CNEURAL中的并行神经网络训练算法在本节中,我们首先分析了广泛使用的并行训练策略。然后,介绍cNeural中的并行训练算法及并行计算框架。A.分析训练神经网络中的并行化策略有很多并行方法可以加速训练神经

12、网络6。大多数的方法可以分为两类:节点并行性和训练数据集并行性。节点并行性是神经网络定向的。这些方法通过映射神经元到不同的计算神经节点而实现并行性。每个计算节点只负责计算一部分神经网络。 7,8,9 中提出的方法采用这种方式。相反地,在训练数据集并行性时,每个计算节点在局部范围类有一个完整的神经网络并且对整个神经网络进行计算。为了并行计算,训练数据集分成若干子集,而且这些字集被分配成不同的计算节点。不同的并行化方法适合于不同的场景中。对于节点的并行性,每一个训练样本需要逐步处理节点之间的计算。它通常用于小型训练数据集和复杂的神经网络结构。这种方法适合应用在通信成本较低的多核或众核架构中。当应用

13、在拥有大量训练样本的分布式系统中,系统承受不起I / O的超负荷开销和集群网络通信成本。由于I / O和网络通信是分布式环境的主要时间成本,因此这种方法不是非常高效的。因此,可节点并行性方法并不适用于分布式计算环境中。文献10中也得出类似的结论。在另一方面,对训练数据的并行性来说,每个训练数据子集是一个计算节点上处理的,并且在整个训练过程中不需要传给其他的计算节点。由于训练数据集并行方法可以减少数据访问和网络通信的成本,因此它适用于处理分布式系统中大规模训练数据集。B. cNeural中的并行BP 算法和计算框架cNeural是一种训练大规模数据集的方法。为减少访问和转移训练数据的时间成本,我

14、们采用训练数据集并行机制作为基本的并行方法。根据训练数据集并行性方法,我们构建了一个分布式的并行计算框架,用它实现批处理模式的反向传播算法。这种并行计算框架是一个典型的master-worker并行模型。它包括一个主节点和n个作为副节点的计算节点。主节点的主要负责协调整个训练过程。实际的训练过程就是运算计算节点。在训练之前, 就把训练数据集的子集分布给计算节点。每一个计算节点包括整个神经网络并且负责训练其范围内的训练子集。cNeural中的并行训练算法如图2所示。如图2所示, 首先,需要初始化主节点和计算节点。初始化阶段之后,主节点向计算节点传送初始权重。当收到时,每个计算节点同时对其范围内的

15、训练数据子集执行训练任务。在前期阶段和后期阶段,它都要处理子集中的每个样本。在就地训练中,每个计算节点需要积累每个训练样本自己。当完成自己的训练任务后,每个计算节点把训练数据子集的发送给主节点。在主节点端,当接收完所有计算节点的之后,它把所有的应用于前一阶段的中并更新这些权重。整个训练过程是迭代的。最终,再检查训练终止条件是否满足。如果满足终止条件,整个训练过程就终止,否则开启下一个训练阶段。5训练数据的存储和加载大规模训练数据集的加载和转移的时间成本是整个训练过程的主要开销 10。在本节中,我们讨论cNeural中的训练数据存储机制,它支持大规模数据的快速加载和训练。cNeural的存储模型如图3所示。我们选择Apache HBase存储训练数据集,它是一个模仿Google中BigTable的分布式数据管理系统。HBase中的训练数据集以表的形式存储。每个表包含一组训练数据集,根据数据的大小它可占据不同的区域。对于一个训练数据集而言,每个样品都被存储为表中的一个记录,其中每个表中的记录都有相同的ID作为行健。样本的内容依据记录的内容领域

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号