一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于智能网卡的深度学习训练网络迭代更新方法与流程

2021-11-05 22:31:00 来源:中国专利 TAG:


1.本发明属于网络安全技术领域,尤其涉及基于智能网卡的深度学习训练网络迭代更新方法。


背景技术:

2.对于深度学习训练网络,常用的架构有两种,一种是参数服务器架构,一种是环形归约架构(ring

allreduce)。
3.对于参数服务器架构,采用一台专门的参数服务器与多个训练节点,训练节点在进行完一次或多次训练后,将梯度交于参数服务器,参数服务器在汇总梯度后更新参数,将参数广播至各训练节点。
4.对于环形归约架构,各个训练节点采用环形布置,每个训练节点只有一个输入端,一个输出端,在一次训练后,每个训练节点将自己的梯度传递至下一个训练节点,并接收上一个训练节点的梯度进行参数更新。
5.对于参数服务器架构,需要各个训练节点均训练完毕后,等待参数服务器回馈参数,需要额外的gpu进行参数计算,而且需要等待参数汇总的时间;对于环形归约架构,难以容忍训练较慢的训练节点,对于异构(运算速度差距较大)的训练网络,一个训练较慢的训练节点可能成为整个训练网络速度的瓶颈。


技术实现要素:

6.本发明提供一种基于智能网卡的深度学习训练网络,采用建立局域网,在局域网内广播的方式进行梯度的传递,以在采用多主机分布式训练时,有效提高迭代的速度。
7.为解决以上现有技术中存在的问题,本发明提出了一种基于智能网卡的深度学习训练网络迭代更新方法,包括:
8.将所需要训练的模型与数据分发至训练网络中的训练节点;
9.各训练节点根据自己得到的数据与模型,进行前向和后向运算,得到梯度结果;
10.所述各训练节点得到训练的梯度时,选择合适的时机进行广播;
11.所述各训练节点得到其他节点的梯度,由智能网卡进行累加,汇集结果,进行模型参数更新。
12.优选地,所述将所需要训练的模型与数据分发至训练网络中的训练节点之后包括:
13.将要并入训练网络中的随机一台主机进行广播,代表训练网络建立的开始。
14.优选地,所述将所需训练的模型与数据分发至训练网络中的训练节点具体包括:
15.用户在建立训练网络之前,将训练模型与数据置于任意一台训练节点上;
16.在训练网络建立结束后,各训练节点进入等待接收数据阶段;
17.由得到数据的训练节点进行广播,将模型广播至各训练节点;
18.在模型广播结束后,得到数据的训练节点发出特殊通知,进行训练数据的广播;
19.各训练节点按照自己在训练节点序列的序号,仅储存自己序号对应的数据;
20.在训练数据广播结束后,得到数据的训练节点进行广播,各训练节点进入训练状态。
21.优选地,所述各训练节点根据自己得到的数据与模型,进行前向和后向运算,得到梯度结果具体包括:
22.用户需在传入模型之前,实现训练网络提供的接口,将模型参数的梯度以固定的形式保存为json格式的文件中。
23.优选地,所述在训练网络的训练数据广播完毕后,还包括训练节点序列的第一个训练节点将产生一个“token”的步骤,token设置在mac帧的头部,可由已编程的智能网卡进行识别;token中包含下一个将要接受token的训练节点的序号信息。
24.优选地,所述各训练节点得到训练的梯度时,选择合适的时机进行广播具体包括:
25.在训练过程中,仅有得到token的训练节点才可以进行梯度的广播;
26.在训练网络训练中,未训练完毕的训练节点得到token会更改token中的序号并交给下一个训练节点;
27.已训练完毕的训练节点在得到token后,会马上广播自己得到的结果,在结果广播完毕后,将token交给下一个节点;
28.在一段时间未收到广播后,最后发出广播的训练节点会重新发出一次广播,并标记这是重发的广播;
29.在收到重发的广播一段时间后,token所属的节点的下一个节点会发出节点脱离广播,各训练节点收到后,更新子节点训练节点序列。
30.优选地,对于所述建立深度学习训练网络,还包括:
31.对于单个节点,在收到自己已经退出训练网络的通知后,停止该节点的所有运算,更改自身状态为待机状态,但保留自己原网络序号,模型数据;
32.在训练过程中发生有节点脱离训练网络的,可在批次数据结束后进行广播查找,待机状态的训练节点在收到广播后会同时发出信号,训练节点序号为1的接收到信号后,会重新发出指令,进行网络重建;
33.在大量节点退出网络后,此时序号为1的训练节点会发出网络异常广播,所有节点运行完当前数据后,进入待机状态,序号1节点将模型保存,提醒用户进行操作。
34.优选地,对于所述在收到重发的广播一段时间后,token所属的节点的下一个节点会发出节点脱离广播,各训练节点收到后,更新子节点训练节点序列,具体包括;
35.后一个节点的等待时间为t,后第n节点等待时间为n*t,当等待时间超过k*t未收到广播时,后第k个节点会发出广播。
36.所述各训练节点得到其他节点的梯度,由智能网卡进行累加,汇集结果具体包括:
37.用户在进行训练之前,需实现从json读入梯度的接口。
38.优选地,所述进行模型参数更新之后还包括:对于同一批次的数据训练至90%时,放弃批次中其他数据,其中目的是为了减少对运行速度较慢的节点的等待。
39.与现有技术相比,本发明所述的基于智能网卡的深度学习训练网络,具有如下有益效果:
40.本发明提供了一种基于智能网卡的深度学习训练网络迭代更新方法,对异构训练
节点的支持,即便训练速度差距较大的训练节点也可以布置在同一训练网络中;采用轮回广播方式,减少了广播冲突,提高了网络利用效率;采用智能网卡进行网络传输与梯度收集,保证了较大规模神经网络的梯度与参数也可以一次性传递,与更加自由的网络建立,打破了传统网卡的限制。
41.本发明在4个具有智能网卡的节点组成的训练网络进行训练,达到了预期的加速效果,加速比平均在3以上。
附图说明
42.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
43.图1为本发明实施例提供的基于智能网卡的深度学习训练网络迭代更新方法流程图。
44.图2为本发明实施例提供的基于智能网卡的深度学习训练网络迭代更新方法建立训练网络流程图。
45.图3为本发明实施例提供的基于智能网卡的深度学习训练网络迭代更新方法选取合适时机进行广播的流程图。
46.图4为本发明实施例提供的基于智能网卡的深度学习训练网络迭代更新方法更新训练网络的流程图。
具体实施方式
47.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
48.请参阅图1,本发明实施例提供了一种可应用于深度学习模型训练的基于智能网卡的深度学习训练网络,该方法应用于局域网时,执行步骤s110至s160:
49.步骤s110:用户点击开始,上传模型与数据。用户在建立训练网络之前,将训练模型与数据置于任意一台训练节点上。将所需要训练的模型与数据分发至训练网络中的训练节点。
50.其中,用户将其所需训练的模型与数据上传至任一训练节点主机,在本实施例中,使用的是pytorch1.8.0框架构建的模型,并实现了将梯度数据存入json文件的函数。
51.所述将所需训练的模型与数据分发至训练网络中的训练节点具体包括:
52.用户在建立训练网络之前,将训练模型与数据置于任意一台训练节点上;
53.在训练网络建立结束后,各训练节点进入等待接收数据阶段;
54.由得到数据的训练节点进行广播,将模型广播至各训练节点;
55.在模型广播结束后,得到数据的训练节点发出特殊通知,进行训练数据的广播;
56.各训练节点按照自己在训练节点序列的序号,仅储存自己序号对应的数据;
57.在训练数据广播结束后,得到数据的训练节点进行广播,各训练节点进入训练状
态。
58.步骤s120:开始建立训练网络,将要并入训练网络中的随机一台主机进行广播,代表训练网络建立的开始。
59.步骤s130:广播模型与数据。用户上传数据的训练节点开始广播模型与数据。
60.同样的,广播头部具有特殊的标志,广播模型与数据的mac帧经过特殊设计,可由其余训练节点智能网卡识别。局域网中将要并入训练网络的节点收到广播后,在局域网发出特殊内容的广播进行回应;
61.各个节点记录广播的顺序与mac地址,在训练期间,智能网卡主动忽略所有非记录mac地址的数据帧;
62.在一段时间内没有接到广播之后,第一个发出广播的训练节点发出训练网络建立结束的广播,各训练节点进入等待接受数据状态;
63.在接到训练网络建立结束的广播后,即使没有进入训练网络的节点也不在进行广播。
64.各训练节点收到数据时,仅保留属于自己的训练数据。
65.步骤s140:训练节点进行计算,求取梯度。各训练节点根据自己得到的数据与模型,进行前向和后向运算,得到梯度结果。用户需在传入模型之前,实现训练网络提供的接口,将模型参数的梯度以固定的形式保存为json格式的文件中。
66.步骤s150:当一节点计算梯度完毕后,选取合适时机进行广播。在训练过程中,仅有得到token的训练节点才可以进行梯度的广播;
67.在训练网络训练中,未训练完毕的训练节点得到token会更改token中的序号并交给下一个训练节点;
68.已训练完毕的训练节点在得到token后,会马上广播自己得到的结果,在结果广播完毕后,将token交给下一个节点;
69.在一段时间未收到广播后,最后发出广播的训练节点会重新发出一次广播,并标记这是重发的广播;
70.在收到重发的广播一段时间后,token所属的节点的下一个节点会发出节点脱离广播,各训练节点收到后,更新子节点训练节点序列。
71.步骤s160:训练完毕,得到模型。所述各训练节点得到其他节点的梯度,由智能网卡进行累加,汇集结果,进行模型参数更新。
72.当一批次的数据训练完毕后,序号为0的节点判断是否达到训练完成要求,如已满足,则进行结束广播,所有训练节点保存模型,进入待机状态。
73.进行模型参数更新。模型参数的更新公式为:w

=w η
×
sum/n,其中w为模型参数,η为更新步长,n为接收到的梯度数量。
74.请结合参阅图2,在本实施例中,所述步骤s120中,对所述建立训练网络的方式包括:
75.步骤s121:任一节点发出开始建立训练网络广播。
76.建立训练节点广播的mac帧,是由编程过的智能网卡发出的,且可以被其余已编程智能网卡识别。
77.可选的,通常发出建立训练网络广播的是用户上传模型与数据的训练节点。
78.步骤s122:所有训练节点发出广播响应。
79.各训练节点按照局域网规则进行广播。
80.同样的,训练节点的响应广播也是由编程过的智能网卡发出的。
81.步骤s123:所有节点按广播顺序记录其余训练节点。
82.其中:发出建立广播的训练节点在第一次发出广播时即被记录。
83.在无响应广播发出后一段时间,所有训练节点进入等待数据阶段。
84.请结合参阅图3,在本实施例中,所述步骤s150中,对所述当一节点计算梯度完毕后,选取合适时机进行广播的方式包括:
85.步骤s131:在训练开始前,序号为1的训练节点生成token。
86.步骤s132:token以广播的形式传递,每个节点交出token时更改token中下一个接收token的节点序号。
87.同样的,token的广播在mac层实现,由智能网卡发出。
88.步骤s133:与token中序号相同的节点接收token,判断是否得到梯度,如已经得到,进行梯度广播,进入步骤s134,否则进入步骤s135。
89.与token中序号相同的训练节点会接收token。
90.一段时间后未收到token,则认为token丢失,进入步骤s136。
91.步骤s134:将梯度的json文件广播至所有训练节点。
92.步骤s135:更改token中的序号,并广播至所有训练节点。
93.步骤s136:更新训练网络。
94.请结合参阅图4,在本实施例中,所述步骤s136中,对所述更新训练网络的方式包括:
95.步骤s310:每个训练节点在收到广播时,都会记录最后接收广播时间,即当前token序号,并计算自己的节点丢失等待时间,序号相对靠后的节点等待时间越长。
96.步骤s320:在超过等待时间后依然未受到广播,则发出节点丢失广播。
97.计算等待时间,判断超时,发出节点丢失广播的工作由智能网卡完成。
98.步骤s330:各训练节点将丢失节点去掉,更新节点列表。步骤s136结束。
99.可选的,对于丢失的节点,可在一个批次训练完毕后进行训练网络重建。
100.可选的,对于丢失的节点,可在一个批次的训练完毕后选择将其数据重新分发到训练网络的各个节点。
101.步骤s137:其余节点收到梯度进行梯度累加
102.其中:各训练节点收到梯度后,进行累加并保存。累加的工作由智能网卡完成。
103.可选的,步骤s160之后用户可选择在训练结束或一个批次数据训练结束时,进入测试阶段,此时不再广播梯度,只广播测试的成功与否,其中测试成功的规则由用户定义。
104.应该注意的是所述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项
来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
105.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献