基于多机多卡的神经网络负载均衡优化方法和系统与流程

文档序号:12363177阅读:326来源:国知局
基于多机多卡的神经网络负载均衡优化方法和系统与流程
本发明涉及多机多卡架构的性能优化领域,具体地涉及一种基于多机多卡的神经网络负载均衡优化方法和系统。
背景技术
:随着深度学习在各个领域的普及,神经网络参数的规模越来越大,训练的周期也越来越长,多GPU加速训练成了必然的硬件解决方案。在多机多卡的硬件方案中,如何提高硬件的利用率,成为了研究的热点。在实际的应用场景中,GPU会增量增加,当硬件架构中出现计算能力不同的GPU硬件时。架构的负载均衡问题就出现了,如表1所示:表1架构中不同型号GPU利用率与性能分析GTX980TI利用率TITIANX利用率80%96%由于常见的架构设计并没有考虑出现不同显卡的情况,当其中一台机器上有两块显卡,分别为GTX980TI和TITIANX时,这两块显卡的利用率不一样,其中GTX980TI的利用率仅为80%,造成了较为严重的硬件资源浪费。如图1所示,常见架构中,其假设所有参与计算的硬件的计算能力是相同的,所以每次迭代过程中分配给一个计算设备的计算量也是相等的。随着硬件的增量加入,计算设备的计算能力会出现明显的差异,这种设计方法会造成比较严重的负载均衡问题。在实际应用中,发现有多重因素造成节点的计算能力不均衡,如GPU设备的计算能力不同,网络通信延迟等,每个设备都固定执一次迭代并不能做到很好的负载均衡。技术实现要素:针对上述存在的技术问题,本发明目的是:提供一种基于多机多卡的神经网络负载均衡优化方法和系统,可以根据GPU设备的计算能力合理分配不同规模的计算任务,提高了硬件的利用率和架构的负载均衡能力。本发明的技术方案是:一种基于多机多卡的神经网络负载均衡优化方法,包括多个节点,所述节点包括至少一个GPU,每个GPU负责一个模型副本的训练,其特征在于,包括以下步骤:(1)在参数服务器上启动一个计数器,然后通知所有节点开始迭代,单位时间后参数服务器获取每个节点累计的迭代次数fetchi、残差和计算参数服务器的本次迭代参数i表示第i个GPU,n为模型副本的数量,也就是GPU的数量;(2)参数服务器更新下一次迭代的参数wserver,计算公式如下:hserver=hserver×momentum+w′scrver×rate+wserver×decaywserver=wserver-hserver其中,hserver表示本次迭代更新的变化量;momentum表示势,其取值范围为[0,1];rate表示学习率,取值范围为[0,1];decay取值为一个较小的常量;(3)将wserver分发到所有GPU上,每个模型副本都使用wserver作为模型最新参数进行下一次迭代。本发明又公开了一种基于多机多卡的神经网络负载均衡优化系统,其特征在于,包括多个节点,所述节点包括至少一个GPU,每个GPU负责一个模型副本的训练,所述多个节点连接参数服务器,所述参数服务器分配不同规模的计算任务,在参数服务器上启动一个计数器,然后通知所有节点开始迭代,单位时间后参数服务器获取每个节点累计的迭代次数fetchi、残差和计算参数服务器的本次迭代参数i表示第i个GPU,n为模型副本的数量,也就是GPU的个数;参数服务器更新下一次迭代的参数wserver,计算公式如下:hserver=hserver×momentum+w′server×rate+wserver×decaywserver=wserver-hserver其中,hserver表示本次迭代更新的变化量;momentum表示势,其取值范围为[0,1];rate表示学习率,取值范围为[0,1];decay取值为一个较小的常量;将wserver分发到所有GPU上,每个模型副本都使用wserver作为模型最新参数进行下一次迭代。本发明通过将计算操作和数据传输操作抽象成为一个二分图,系统根据二分图中的数据依赖关系去寻找异步的时机,最大化计算操作和数据传输操作的并行性。相对于其他的系统设计而言,基于二分图的架构在性能上表现更优。本方法相当于将任务分块,每个计算设备根据自己的计算能力在单位时间内完成不同的规模的任务,取得了很好的负载均衡效果。与现有技术相比,本发明的优点是:当多机多卡架构中出现不同型号的GPU时,每个GPU硬件的利用率都能够达到95%以上,提高架构的负载均衡能力,从每秒钟处理的数据数量来看,经过负载均衡优化,其性能提高了23.7%。附图说明下面结合附图及实施例对本发明作进一步描述:图1为常见数据并行架构示意图;图2为改进后负载均衡数据并行示意图;图3为多机多卡硬件体系结构示意图;图4为CIFAR-10神经网络结构图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。实施例:一种基于多机多卡的神经网络负载均衡优化系统,包括多个节点,所述节点包括至少一个GPU,每个GPU负责一个模型副本的训练,所述多个节点连接参数服务器,所述参数服务器分配不同规模的计算任务。神经网络的训练比较多采用数据并行方案,在多机多卡的情况下,每个GPU设备负责一个模型副本的训练,经过前向传导和反向传导之后,得到第i个GPU设备上对应的残差wi′。接下来的训练步骤如下:如图2所示,在参数服务器上启动一个计数器,通知所有节点开始迭代,单位时间后参数服务器获取每个节点累计的迭代次数fetchi、残差和计算参数服务器的参数n为模型副本的数量;参数服务器更新下一次迭代的参数wserver,计算公式如下:hserver=hserver×momentum+w′server×rate+wserver×decaywserver=wserver-hserver其中,hserver表示本次迭代更新的变化量;momentum表示势,其取值范围为[0,1],一般取值为0.9;rate表示学习率,取值范围为[0,1],训练过程中根据实际情况逐渐减小;decay一般取值为一个较小的常量,如0.001。将wserver分发到所有的GPU设备上,每个模型副本都使用wserver作为模型最新参数进行下一次迭代。本发明通过对使用多机多卡进行神经网络训练的性能优化,提高了GPU硬件的利用率,由于该系统用于神经网络训练的性能加速,对应产品可以是图片搜索,语音识别,人脸识别等互联网产品。这些产品都广泛使用了神经网络算法,性能优化是其需要解决的核心问题。在具体的实现方面,本发明将该算法落实到Purine架构中,通过负载均衡改进和优化之后的架构称为NPurine,NPruine架构的性能得到了有效地提升,具体实验验证如下。表3实验硬件配置表CPU型号GPU-1GPU-2Node1Intelcorei7-5930kGTX980TI6GBDDR5TITIANX12GBDDR5Node2Intelcorei5-4590GTX750TI2GBDDR5Node3Intelcorei5-4590GTX750TI2GBDDR5Node4Intelcorei5-4590GTX750TI2GBDDR5本实验所采用的硬件详细参数如表3所示,硬件体系结构示意如图3所示:如图3所示,本文所使用的多机多卡硬件体系结构由四个节点构成,其中节点Node1上有两块显卡,其他节点都只有一块显卡,每个节点都有一个CPU。由于本实验所需数据集比较小,目前还未引入分布式文件系统,每个节点的磁盘都上拥有完整的数据集副本。所有节点连接在一个交换机上,使用的是千兆网络带宽的网络。实验使用的数据集为CIFAR-10,该数据集总共有10个类别,训练样本为50000个,测试样本为10000个。样本规格为32x32,彩色3通道。实验的神经网络如图4所示。其中NIN层由三个卷积层串联而成,NIN(a,b,c)中的a表示卷积层核数为a,卷积核规格为5x5的卷积层;b表示卷积层的核数为b,卷积核规格为1x1的卷积层,c表示卷积层核数为c,卷积核规格为1x1的卷积层。POOL(2x2,3x3)表示最大值池化层,其中skip=2,size=3。DROPOUT(0.5)表示以0.5的概率随机将上一层的输出置为0。AVR_POOL为平均值池化层,该层将上一层的输入的二维特征图的规格统一处理为1x1作为输出。表4Purine与Npurine多机多卡性能对比如表4所示,固定了同步的频率为2秒钟一次,每个GPU设备的batch_size设置为64。随着节点的增加,Purine的运算速度不仅没有增加反而变慢,配置较好的Node1节点的加入使得它的性能稍微提高了一些。Npurine架构运行速度得到了有效的提升,当四个节点都参与计算的时候,Npurine的速度是Purine的12.34倍。Npurine不仅使得能够用普通网线连接的集群来加快训练速度,同时也做好了不同节点计算能力不均等的情况下的负载均衡。应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1