基于状态通道的去中心训练方法、装置、存储介质及设备与流程

文档序号:29735336发布日期:2022-04-21 16:07阅读:79来源:国知局
基于状态通道的去中心训练方法、装置、存储介质及设备与流程

1.本发明涉及计算机技术领域,具体而言涉及一种基于状态通道的去中心训练方法、装置、存储介质及设备。


背景技术:

2.当前的机器学习训练大多采用中心化或分布式的计算方法,例如集中式训练、分布式机器训练以及联邦训练。其中,区块链是一种去中心化的信任机器,被许多人用于实现去中心化训练,即通过区块链的共识机制随机选举出一个节点来完成聚合全部的参数。但是,仅利用单个节点来完成全部参数的聚合,在数据量很大时,会出现单个节点加载不下大量的参数而导致无法进行训练的问题。


技术实现要素:

3.有鉴于此,本发明实施例提供了一种基于状态通道的去中心训练方法、装置、存储介质及设备,以解决仅利用单个节点来完成全部参数的聚合,在数据量很大时,会出现单个节点加载不下大量的参数而导致无法进行训练的问题。
4.第一方面,本发明实施例提供了一种基于状态通道的去中心训练方法,包括:
5.任务分发节点获取区块链上的计算合约,所述计算合约包括计算任务分发策略、状态通道开启策略、状态通道关闭策略及任务回调策略;
6.所述任务分发节点基于所述计算任务分发策略,向各执行任务节点发送训练任务请求,所述计算任务分发策略包括训练模型或相应的链接、全局聚合迭代轮次、本地迭代轮次及目标执行任务节点的数量,所述目标执行任务节点为接受所述计算任务请求的执行任务节点;
7.在满足状态通道开启条件的情况下,基于所述状态通道开启策略,开启所述任务分发节点与各目标执行任务节点之间的状态通道;
8.所述任务分发节点通过所述状态通道将所述训练模型或相应的链接及本地迭代轮次发送给各目标执行任务节点,以使各目标执行任务节点基于所述训练模型或相应的链接及本地迭代轮次进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果;
9.基于所述计算合约的状态通道关闭策略,关闭所述任务分发节点与各目标执行任务节点之间的状态通道;
10.所述任务分发节点将所述模型聚合结果写入所述任务回调策略。
11.具体地,所述在满足状态通道开启条件的情况下,基于所述状态通道开启策略,开启所述任务分发节点与各目标执行任务节点之间的状态通道,包括:
12.所述任务分发节点获取所述目标执行任务节点的数量;
13.判断所述目标执行任务节点的数量是否大于或等于预设节点数量,如果所述目标执行任务节点的数量大于或等于预设节点数量,则基于所述状态通道开启策略,开启所述
任务分发节点与各目标执行任务节点之间的状态通道。
14.具体地,所述任务分发节点将所述计算合约中的训练模型或相应的链接及本地迭代轮次通过所述状态通道发送给各目标执行任务节点,以使各目标执行任务节点基于所述训练模型或相应的链接及本地迭代轮次进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果,包括:
15.所述任务分发节点将所述计算合约中的训练模型或相应的链接及本地迭代轮次通过所述状态通道发送给各目标执行任务节点;
16.各目标执行任务节点基于所述训练模型或相应的链接及本地迭代轮次,利用本地样本数据进行本地迭代训练,并将训练结果通过所述状态通道发送给所述任务分发节点;
17.所述任务分发节点对接收的训练结果进行全局聚合,得到全局聚合结果;
18.所述任务分发节点基于所述全局聚合结果进行所述全局聚合迭代轮次的迭代训练,得到训练模型聚合结果。
19.具体地,在所述计算任务分发策略包括所述训练模型的链接地址的情况下,所述各目标执行任务节点基于所述训练模型或相应的链接及本地迭代轮次,利用本地样本数据进行本地迭代训练,并将训练结果通过所述状态通道发送给所述任务分发节点,包括:
20.各目标执行任务节点接收所述训练模型的连接地址;
21.各目标执行任务节点基于所述链接地址,获得到存储在其他存储空间的训练模型;
22.各目标执行任务节点利用本地数据对所述训练模型进行所述本地迭代轮次的迭代训练,得到训练结果;
23.各目标执行任务节点将所述训练结果通过所述状态通道发送给所述任务分发节点。
24.具体地,所述任务分发节点基于所述全局聚合结果进行所述全局聚合迭代轮次的迭代训练,得到训练模型聚合结果之前还包括:
25.如果所述任务分发节点关闭与部分目标执行任务节点之间的状态通道,则所述目标执行任务节点基于关闭状态通道事件,判断是否停止本地迭代训练。
26.具体地,所述任务分发节点基于所述全局聚合结果进行所述全局聚合迭代轮次的迭代训练,得到训练模型聚合结果之前还包括:
27.如果部分目标执行任务节点关闭与所述任务分发节点之间的状态通道,则所述任务分发节点增加接收所述目标执行任务节点的训练结果的时长,以在所述时长内,所述目标执行任务节点重新开启与所述任务分发节点之间的状态通道并继续进行训练,得到训练结果。
28.具体地,所述任务分发节点对接收的训练结果进行全局聚合,得到全局聚合结果包括:
29.所述任务分发节点对接收的训练结果进行校验;
30.所述任务分发节点基于校验结果,确定各目标执行任务节点的训练结果的准确率;
31.所述任务分发节点将准确率大于或等于预设准确率的目标执行任务节点确定为较优的目标执行任务节点;
32.所述任务分发节点将较优的目标执行任务节点的训练结果进行全局聚合,得到全局聚合结果。
33.具体地,所述任务分发节点基于所述全局聚合的结果进行所述全局聚合迭代轮次的迭代训练,得到训练模型聚合结果之后,还包括:
34.所述任务分发节点在每一轮次全局聚合迭代后,根据如下公式,确定分配给每个较优的目标执行任务节点的总激励资源;
35.inci=stake*epoch;
36.其中,inci为较优的目标执行任务节点在每一轮次全局聚合迭代后被分配的总激励资源,epoch为该轮次全局聚合迭代的轮次数,stake表示目标执行任务节点在每一轮次全局聚合迭代后被分配的激励资源。
37.具体地,所述方法还包括:
38.在所有目标执行任务节点的准确率均小于预设准确率的情况下,所述任务分发节点向各目标执行任务节点发送空模型,以使各目标执行任务节点基于上一次全局聚合迭代得到的全局聚合结果重新进行本地迭代训练。
39.第二方面,本发明实施例提供了一种基于状态通道的去中心训练装置,包括:
40.获取模块,用于任务分发节点获取区块链上的计算合约,所述计算合约包括计算任务分发策略、状态通道开启策略、状态通道关闭策略及任务回调策略;
41.请求发送模块,用于所述任务分发节点基于所述计算任务分发策略,向各执行任务节点发送训练任务请求,所述计算任务分发策略包括训练模型或相应的链接、全局聚合迭代轮次、本地迭代轮次及目标执行任务节点的数量,所述目标执行任务节点为接受所述计算任务请求的执行任务节点;
42.状态通道开启模块,用于在满足状态通道开启条件的情况下,基于所述状态通道开启策略,开启所述任务分发节点与各目标执行任务节点之间的状态通道;
43.聚合训练模块,用于所述任务分发节点通过所述状态通道将所述训练模型或相应的链接及本地迭代轮次发送给各目标执行任务节点,以使各目标执行任务节点基于所述训练模型或相应的链接及本地迭代轮次进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果;
44.状态通道关闭模块,用于基于所述计算合约的状态通道关闭策略,关闭所述任务分发节点与各目标执行任务节点之间的状态通道;
45.写入模块,用于所述任务分发节点将所述模型聚合结果写入所述任务回调策略。
46.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,其中,所述存储器中存储有计算机程序,所述处理器被配置为运行所述计算机程序以执行上述的基于状态通道的去中心训练方法。
47.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序被配置为运行时执行上述的基于状态通道的去中心训练方法。
48.根据本发明实施例所提供的一种基于状态通道的去中心训练方法、装置、存储介质及设备,该方法通过开启任务分发节点与各目标执行任务节点之间的状态通道,然后任务分发节点通过链接状态通道将训练模型或相应的发送给各目标执行任务节点,以使各目
标执行任务节点基于训练参数进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果,这样通过区块链链下的多个目标执行任务节点进行集群化训练,降低了每个目标执行任务节点加载的数据量,避免了大量的参数很难被单个节点加载而导致无法进行训练的问题,并且提高了训练速度。
附图说明
49.本发明的下列附图在此作为本发明实施例的一部分用于理解本发明。附图中示出了本发明的实施例及其描述,用来解释本发明的原理。
50.附图中:
51.图1为根据本发明的一个可选实施例的一种基于状态通道的去中心训练方法的流程图;
52.图2为步骤s103的流程图;
53.图3为步骤s104的流程图;
54.图4为步骤s302的流程图;
55.图5为步骤s303的流程图;
56.图6为根据本发明的一个可选实施例的一种基于状态通道的去中心训练装置的结构图。
具体实施方式
57.在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
58.应予以注意的是,这里所使用的术语仅是为了描述具体实施例,而非意图限制根据本发明的示例性实施例。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。
59.现在,将参照附图更详细地描述根据本发明的示例性实施例。然而,这些示例性实施例可以多种不同的形式来实施,并且不应当被解释为只限于这里所阐述的实施例。应当理解的是,提供这些实施例是为了使得本发明的公开彻底且完整,并且将这些示例性实施例的构思充分传达给本领域普通技术人员。
60.第一方面,如图1所示,本发明实施例提供了一种基于状态通道的去中心训练方法,包括:
61.步骤s101:任务分发节点获取区块链上的计算合约,计算合约包括计算任务分发策略、状态通道开启策略、状态通道关闭策略及任务回调策略。
62.区块链上部署有计算合约,任务分发节点和执行任务节点在本身地生成区块链相关的身份认证,从而加入区块链网络。其中,任务执行节点为加入区块链网络的客户端,客户端设备可以但不限于手机、个人电脑、平板电脑等。
63.区块链技术是一种分布式的数据库,具有去中心化、不可篡改和可扩展等特点。在区块链系统中,所有数据保存在区块中,新写入的数据组成新的区块,添加在当前区块链末端链。每个区块在保存数据的同时,还要保存前一个区块中所有记录的数据唯一对应的一个数,这个数往往是所有数据的哈希值,如果有人试图单独修改前一块中的数据,那么后面这块中保存的这个数就会对不上,不能成链。于是,区块链系统可以认为是,由分布式网络上的互相不完全信任的计算机,通过共识规则,共同维护一套可追溯、不可篡改的链式数据的系统。由于数据和平台不被任何机构单方面控制,区块链系统可看作是高安全、高可靠、可信的去中心化的基础计算框架。
64.步骤s102:任务分发节点基于计算任务分发策略,向各执行任务节点发送训练任务请求,计算任务分发策略包括训练模型或相应的链接、全局聚合迭代轮次、本地迭代轮次及目标执行任务节点的数量,目标执行任务节点为接受计算任务请求的执行任务节点。
65.步骤s103:在满足状态通道开启条件的情况下,基于状态通道开启策略,开启任务分发节点与各目标执行任务节点之间的状态通道。
66.步骤s104:任务分发节点通过状态通道将训练模型或相应的链接及本地迭代轮次发送给各目标执行任务节点,以使各目标执行任务节点基于训练模型或相应的链接及本地迭代轮次进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果。
67.任务分发节点通过状态通道与各目标执行任务节点进行数据交互。任务分发节点将训练模型或相应的链接及本地迭代轮次发送给各目标执行任务节点,然后各目标执行任务节点基于训练模型或相应的链接及本地迭代轮次进行训练,之后任务分发节点通过各目标执行任务节点的训练结果再进行全局聚合,再将全局聚合的结果分发到各目标执行任务节点,由各目标执行任务节点再基于全局聚合的结果进行本地迭代轮次的训练,再将该训练结果发送给任务分发节点进行聚合,以此类推,重复全局聚合迭代轮次为止;这样将区块链链上训练转移到区块链链下的多个节点进行集群训练,降低了每个目标执行任务节点加载的数据量,避免了单个节点加载不下大量的参数而导致无法进行训练的问题,并且提高了训练速度;
68.步骤s105:基于计算合约的状态通道关闭策略,关闭任务分发节点与各目标执行任务节点之间的状态通道。
69.步骤s106:任务分发节点将模型聚合结果写入任务回调策略。
70.通过任务回调策略将最终的训练结果,即模型聚合结果传送给区块链,并由区块链储存。进一步地,任务分发节点还能够对最终的训练结果进行筛选,将最优的训练结果的哈希至传回到任务回调策略中。
71.根据本发明实施例所提供的一种基于状态通道的去中心训练方法,该方法通过开启任务分发节点与各目标执行任务节点之间的状态通道,然后任务分发节点通过链接状态通道将训练模型或相应的发送给各目标执行任务节点,以使各目标执行任务节点基于训练参数进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果,这样通过区块链链下的多个目标执行任务节点进行集群化训练,降低了每个目标执行任务节点加载的数据量,避免了大量的参数很难被单个节点加载而导致无法进行训练的问题,并且提高了训练速度。
72.进一步地,如图2所示,在上述实施例中,步骤s103具体包括如下步骤:
73.步骤s201:任务分发节点获取目标执行任务节点的数量。
74.步骤s202:判断目标执行任务节点的数量是否大于或等于预设节点数量,如果目标执行任务节点的数量大于或等于预设节点数量,则执行步骤s203。
75.步骤s203:基于状态通道开启策略,开启任务分发节点与各目标执行任务节点之间的状态通道。
76.在目标执行任务节点的数量达到预设节点数量之后,开启任务分发节点与各目标执行任务节点之间的状态通道,从而保证有足够的目标执行任务节点进行集群训练。
77.进一步地,在上述实施例中,如图3所示,步骤s104具体包括如下步骤:
78.步骤s301:任务分发节点将计算合约中的训练模型或相应的链接及本地迭代轮次通过状态通道发送给各目标执行任务节点。
79.步骤s302:各目标执行任务节点基于训练模型或相应的链接及本地迭代轮次,利用本地样本数据进行本地迭代训练,并将训练结果通过状态通道发送给任务分发节点。
80.各目标执行任务节点通过模型中指定的方法完成本地的每一次数据的更新,如采用随机梯度下降方法(sgd)等。各目标执行任务节点本地存储有足够的样本数据,从而无需任务分发节点向各目标执行任务进行传送样本数据。
81.在一些实施例中,为了便于储存一些较为复杂的训练模型,将训练模型存储在其他存储空间,如云端,而训练模型的链接地址存储在任务分发策略中。
82.具体地,如图4所示,在计算任务分发策略包括训练模型的链接地址的情况下,该步骤具体包括:
83.步骤s3021:各目标执行任务节点接收训练模型的连接地址。
84.步骤s3022:各目标执行任务节点基于链接地址,获得到存储在其他存储空间的训练模型。
85.步骤s3023:各目标执行任务节点利用本地数据对训练模型进行本地迭代轮次的迭代训练,得到训练结果。
86.步骤s3024:各目标执行任务节点将训练结果通过状态通道发送给任务分发节点。
87.步骤s303:任务分发节点对接收的训练结果进行全局聚合,得到全局聚合结果。
88.具体地,如图5所示,该步骤具体包括如下步骤:
89.步骤s3031:任务分发节点对接收的训练结果进行校验。
90.步骤s3032:任务分发节点基于校验结果,确定各目标执行任务节点的训练结果的准确率。
91.步骤s3033:任务分发节点将准确率大于或等于预设准确率的目标执行任务节点确定为较优的目标执行任务节点。
92.步骤s3034:任务分发节点将较优的目标执行任务节点的训练结果进行全局聚合,得到全局聚合结果。
93.在上述步骤中,任务分发节点本地存储着个性化数据,例如测试数据存储地址、模型存储地址获取相应的测试数据、训练模型,从而通过任务分发节点本地存储的小部分个性化数据来验证目标执行任务节点提供的训练结果,如果目标执行任务节点训练的模型参数输出的正确率低于预设准确率,则该目标执行任务节点的训练结果不参与聚合;任务分
发节点验证完所有目标执行任务节点的训练结果之后,将超过预设准确率的目标执行任务节点所得到的训练结果进行聚合。
94.进一步地,步骤s303还包括:
95.在所有目标执行任务节点的准确率均小于预设准确率的情况下,任务分发节点向各目标执行任务节点发送空模型,以使各目标执行任务节点基于上一次全局聚合迭代得到的全局聚合结果重新进行本地迭代训练;之后再将新的训练结果重新传送给任务分发节点,任务分发节点再重新执行步骤s3033-步骤s3034,从而保证训练结果的有效性及准确性。
96.步骤s304:任务分发节点基于全局聚合结果进行全局聚合迭代轮次的迭代训练,得到训练模型聚合结果。
97.在该步骤中,任务分发节点通过各目标执行任务节点的训练结果再进行全局聚合,再将全局聚合的结果分发到各目标执行任务节点,再重复步骤s302-步骤s303,即由各目标执行任务节点再基于全局聚合的结果进行本地迭代轮次的训练,再将该训练结果发送给任务分发节点进行聚合,以此类推,重复全局聚合迭代轮次为止。任务分发节点可采用指定的聚合方式完成全局参数的更新,如采用联邦平均算法(fedavg)等。
98.进一步地,任务分发节点可能会由于通信故障等原因,提前关闭状态通道,由此在上述实施例中,步骤s303之前还包括:
99.如果任务分发节点关闭与部分目标执行任务节点之间的状态通道,则目标执行任务节点基于关闭状态通道事件,判断是否停止本地迭代训练。
100.在本步骤中,在任务分发节点关闭状态通道的情况下,目标执行任务节点基于关闭状态通道事件,确定停止本地迭代训练。
101.进一步地,目标执行任务节点能够主动或者由于通信故障导致任务通道关闭,由此在上述实施例中,步骤s303之前还包括:
102.如果部分目标执行任务节点关闭与任务分发节点之间的状态通道,则任务分发节点增加接收目标执行任务节点的训练结果的时长,以在该时长内,目标执行任务节点重新开启与任务分发节点之间的状态通道并继续进行训练,得到训练结果。
103.该步骤能够在目标执行任务节点关闭与任务分发节点之间的状态通道的情况下,延长任务分发节点接收该目标执行任务节点的训练结果的时长,从而使目标执行任务节点有足够的时间重新开启与任务分发节点之间的状态通道并继续进行训练,得到训练结果,以保证训练过程的可靠性及训练结果的准确性。
104.其中,延长的时长可由其他目标执行任务节点提交的平均时间向下取整及一定的区块高度的和,区块高度可由任务分发节点指定。
105.进一步地,为了提高目标执行任务节点参与集群训练的积极性,步骤s303之后,还包括:
106.任务分发节点在每一轮次全局聚合迭代后,根据如下公式,确定分配给每个较优的目标执行任务节点的总激励资源;
107.inci=stake*epoch;
108.其中,inci为较优的目标执行任务节点在每一轮次全局聚合迭代后被分配的总激励资源,epoch为该轮次全局聚合迭代的轮次数,stake表示目标执行任务节点在每一轮次
全局聚合迭代后被分配的激励资源。
109.在本步骤中,目标执行任务节点参与该轮次全局聚合迭代,也就是被任务分发节点采用训练结果进行聚合的交友的目标执行任务节点可获得相应的激励资源,参加的全局聚合迭代轮次越高,得到的激励资源越多。
110.示例性的,如果每轮次全局聚合迭代后被分配的激励资源为3,任务分发节点进行第五轮次全局聚合迭代,并采用了一较优的目标执行任务节点的训练结果,这样该较优的目标执行任务节点获得的该轮次的总激励资源5*3,共15。
111.第二方面,如图6所示,本发明实施例提供了一种基于状态通道的去中心训练装置,包括:
112.获取模块401,用于任务分发节点获取区块链上的计算合约,计算合约包括计算任务分发策略、状态通道开启策略、状态通道关闭策略及任务回调策略;
113.请求发送模块402,用于任务分发节点基于计算任务分发策略,向各执行任务节点发送训练任务请求,计算任务分发策略包括训练模型或相应的链接、全局聚合迭代轮次、本地迭代轮次及目标执行任务节点的数量,目标执行任务节点为接受计算任务请求的执行任务节点;
114.状态通道开启模块403,用于在满足状态通道开启条件的情况下,基于状态通道开启策略,开启任务分发节点与各目标执行任务节点之间的状态通道;
115.聚合训练模块404,用于任务分发节点通过状态通道将训练模型或相应的链接及本地迭代轮次发送给各目标执行任务节点,以使各目标执行任务节点基于训练模型或相应的链接及本地迭代轮次进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果。
116.状态通道关闭模块405,用于基于计算合约的状态通道关闭策略,关闭任务分发节点与各目标执行任务节点之间的状态通道;
117.写入模块406,用于任务分发节点将模型聚合结果写入任务回调策略。
118.根据本发明实施例所提供的一种基于状态通道的去中心训练装置,该装置通过开启任务分发节点与各目标执行任务节点之间的状态通道,然后任务分发节点通过链接状态通道将训练模型或相应的发送给各目标执行任务节点,以使各目标执行任务节点基于训练参数进行训练,并将各目标执行任务节点的训练结果进行全局迭代训练,得到训练模型聚合结果,这样通过区块链链下的多个目标执行任务节点进行集群化训练,降低了每个目标执行任务节点加载的数据量,避免了单个节点加载不下大量的参数而导致无法进行训练的问题,并且提高了训练速度。
119.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,其中,存储器中存储有计算机程序,处理器被配置为运行计算机程序以执行上述的基于状态通道的去中心训练方法。
120.第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,其中,计算机程序被配置为运行时执行上述的基于状态通道的去中心训练方法。
121.本发明已经通过上述实施例进行了说明,但应当理解的是,上述实施例只是用于举例和说明的目的,而非意在将本发明限制于所描述的实施例范围内。此外本领域技术人
员可以理解的是,本发明并不局限于上述实施例,根据本发明的教导还可以做出更多种的变型和修改,这些变型和修改均落在本发明所要求保护的范围以内。本发明的保护范围由附属的权利要求书及其等效范围所界定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1