[发明专利]一种基于多GPU的BPNN训练方法和装置有效
| 申请号: | 201310054733.9 | 申请日: | 2013-02-20 | 
| 公开(公告)号: | CN103996069B | 公开(公告)日: | 2018-04-03 | 
| 发明(设计)人: | 欧阳剑;王勇 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 | 
| 主分类号: | G06N3/08 | 分类号: | G06N3/08 | 
| 代理公司: | 北京鸿德海业知识产权代理事务所(普通合伙)11412 | 代理人: | 袁媛 | 
| 地址: | 100085 北京*** | 国省代码: | 北京;11 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 基于 gpu bpnn 训练 方法 装置 | ||
【技术领域】
本发明涉及神经网络训练技术,尤其涉及一种基于多GPU的BPNN训练方法和装置。
【背景技术】
BPNN(Back-Propagation Nueral Networks)反向传播神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出的一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。
BPNN模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。输入层负责接收来自外界的输入数据,并传递给隐层;隐层是内部信息处理层,负责数据处理,隐层可以设计为单隐层或者多隐层结构;最后一层隐层传递到输出层各神经元的数据,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的数据正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程。
BPNN训练过程的复杂度,与BPNN的规模和用于训练的数据规模有关。通常,商业或工业应用中的BPNN的规模较大,且用于训练的数据量也非常之大,传统的单机CPU已无法满足BPNN的训练需求。随着GPU计算的通用化,利用GPU进行BPNN的训练成为一种有效的加速BPNN训练过程的手段。然而,随着BPNN规模的不断增大,单GPU也已经无法满足训练需求,基于多GPU的BPNN训练成为研究热点。
目前,现有的多GPU的BPNN训练方法通常是在每个GPU上保存一个各层初始权重相同的BPNN,每次训练时将输入数据分为多份,每个GPU分别针对一份数据进行训练,即每个GPU针对一份数据进行BPNN的正向计算、反向误差计算和权重更新。在所有GPU完成各自的计算后,同步各个GPU所保存的BPNN的各层的权值,使得每个GPU的BPNN都获得完整的权重值,进行下一次训练。
然而,上述这样多GPU的BPNN训练方法中在同步GPU的BPNN之间的同步权重数据时存在较大的开销,大规模BPNN的权重值数据量可达数百兆,在多个GPU之间同步该些BPNN的权重值时的通信用时开销可达数百毫秒,导致利用多GPU对BPNN进行训练的效率低下,而单个GPU上训练过程通常只需耗时几十毫秒,可见,由于多个GPU之间数据同步开销较大,导致利用多GPU对BPNN进行训练的效率低下,有时甚至不如利用单GPU进行BPNN的训练。
【发明内容】
本发明提供了一种基于多GPU的BPNN训练方法和装置,能够减少多GPU的BPNN训练时的数据同步开销,提高多GPU的BPNN训练效率。
具体技术方案如下:
一种基于多图形处理器GPU的反向传播神经网络BPNN训练方法,该方法包括:
S1、控制各GPU进行BPNN的正向计算,并在各GPU间同步正向计算输出;
S2、控制各GPU进行BPNN的反向误差计算,并在各GPU间同步反向误差计算输出;
S3、控制各GPU根据所述同步得到的正向计算输出与所述同步得到的反向误差计算输出更新BPNN的权重。
根据本发明一优选实施例,所述步骤S1具体包括:
控制各GPU进行正向计算,针对每一层执行:在BPNN的当前层正向计算结束后将正向计算输出传递至下一层的同时,在各GPU之间同步当前层的正向计算输出。
根据本发明一优选实施例,所述步骤S2具体包括:
根据BPNN正向输出数据与预期值的差异,控制各GPU进行反向误差计算,针对每一层执行:在BPNN的当前层反向误差计算结束后将反向误差计算输出传递至下一层的同时,在各GPU之间同步当前层的反向误差计算输出。
根据本发明一优选实施例,调用GPU之间的PCI-E总线在各GPU之间同步所述正向计算输出并保存在GPU内存中。
根据本发明一优选实施例,调用GPU之间的PCI-E总线在各GPU之间同步所述反向误差计算输出并保存在GPU内存中
一种基于多图形处理器GPU的反向传播神经网络BPNN训练装置,该装置包括:
正向计算单元,用于控制各GPU进行BPNN的正向计算,并在各GPU间同步正向计算输出;
反向误差计算单元,用于控制各GPU进行BPNN的反向误差计算,并在各GPU间同步反向误差计算输出;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310054733.9/2.html,转载请声明来源钻瓜专利网。





