一种联合学习系统、训练结果聚合的方法及设备
文献发布时间:2023-06-19 10:51:07
技术领域
本申请涉及人工智能(artificial intelligence,AI)技术领域,具体涉及一种联合学习系统、训练结果聚合的方法及设备。
背景技术
联合学习(Federated Learning)是一种模型训练方案,云设备可以联合多个终端设备共同训练模型,同时解决隐私问题。联合学习有多轮训练过程,每轮按照一定的规则筛选多个终端设备共同参与训练,一定程度上解决了端侧样本数据量较少的问题。联合学习过程中用户隐私数据在端侧本地使用,无需上传到云侧,可以解决隐私泄露问题。每个端侧训练得到的训练结果要上传到云侧,云侧对多个端侧上传的训练结果进行聚合,然后再将聚合后的结果下发给端侧。
考虑到通过训练结果可以反推出来训练数据,如果训练结果在从终端设备传输到云设备的过程中泄露或者在云设备执行聚合操作前泄露都会导致训练数据泄露。所以联合学习利用安全聚合(secure aggregation,SA)方法来保证训练结果不会泄露。SA方法中使用秘密共享(secret sharing,SS)的方式来对训练结果进行加密,从而保证训练结果的安全性。
采用SS的方式,每一次聚合需要执行以下过程:用户集U中的终端设备在本地生成对称密钥对,并将带有签名的公钥发送给云设备,云设备收到了用户集U1(U1∈U)的公钥,并将公钥列表广播给U1中的所有终端设备。U1中的终端设备根据公钥列表中终端设备的数量将训练结果切分为对应数量的共享片(share),并为每一个share随机加上一个噪声向量b,分别使用不同终端设备的公钥加密各个带有噪声b的share。终端设备将各个带有噪声b的share的密文发送给云设备。云设备收到了用户集U2(U2∈U1)的密文。云设备将收到的密文下发给U2中的终端设备,U2中的终端设备使用自己的密钥解密出使用自己公钥加密的密文,计算出中间结果y并发送给云设备,云设备收到了用户集U3(U3∈U2)的中间结果y。云设备广播U3用户的名单,如果U3中终端设备的数量小于要求实现聚合计算的最少终端设备数量t则终止聚合,如果U3中终端设备的数量不小于t,则收到名单的终端设备返回签名给云设备;云设备收集到了用户集U4(U4∈U3)的签名。云设备广播U4中终端设备的签名列表以确定存活用户,存活用户指的是没有掉线的终端设备。如果U4中存活用户的数量少于t则终止聚合。如果U4中存活用户的数量不少于t,则存活用户将生成噪声b的明文,并为掉线用户重新生成采用自身公钥加密的share密文,将噪声b的明文和采用自身公钥加密的share密文先发送给云设备,再将为掉线用户生成的密文对应的私钥送给云设备。云设备采用接收到的私钥解密掉线用户的密文,生成掉线用户的中间结果,并使用噪声b的明文对用户集U3的中间结果进行去噪处理,使用掉线用户的中间结果和存活用户去噪后的中间结果进行计算,得到聚合结果明文,聚合流程结束。
由上述SS的方式可知,实现一次聚合需要每个参与计算的终端设备与云设备进行多轮通信,并且终端设备也要切分训练数据以及计算中间结果,导致通信开销大,计算效率低下。
发明内容
本申请实施例提供一种联合学习系统以及训练结果聚合的方法,可以在保证训练数据隐私性的前提下降低通信开销,提高计算效率。本申请实施例还提供了相应的设备。
本申请第一方面提供一种联合学习系统,该联合学习系统包括M个聚合节点和N个训练节点,M和N都为正整数,N个训练节点上配置有相同的训练模型,M个聚合节点中都配置有第一富执行环境(rich execution environment,REE)和第一可信执行环境(trustedexecution environment,TEE),M个聚合节点中包括第一聚合节点。
第一聚合节点接收P个训练节点发送的针对该训练模型的P个第一训练结果,该第一训练结果是训练节点对第二训练结果进行加密得到的,该第二训练结果是训练节点训练该训练模型得到的,P为正整数,且P≤N。所述第一聚合节点将所述P个第一训练结果从所述第一聚合节点的第一REE中调度到到所述第一聚合节点的第一TEE中;第一聚合节点在所述第一TEE中解密所述P个第一训练结果,以得到P个第二训练结果;第一聚合节点在所述第一TEE中聚合所述P个第二训练结果,以得到第一聚合结果,所述第一聚合结果用于更新所述训练模型或者用于下一级聚合。
该第一方面中,聚合节点和训练节点可以是在不同的计算机设备上,也可以是在同一计算机设备上。当聚合节点和训练节点在不同的计算机设备上时,聚合节点可以是服务器或者其他计算设备,训练节点可以是服务器,也可以是例如手机、电脑、个人计算机(personal computer,PC)、平板电脑、智能手表、智能手环等终端设备。当聚合节点和训练节点在同一计算机设备上时,聚合节点和训练节点可以是该计算机设备上的不同虚拟机(virtual machine,VM)。第一TEE可以是在聚合节点的主处理器内分离出的一块安全区域,也可以是一个独立于主处理器的TEE芯片,第一TEE对外提供安全服务,能够保证在其中加载的代码和数据在机密性和完整性方面受到保护。第一REE与第一TEE是并行运行的,相对于第一TEE来说,第一REE没有第一TEE的安全性高,聚合节点从外界接收的第一训练结果会先到达第一REE,然后从第一REE中被调度到第一TEE中,调度过程可以基于REE和TEE的通信来实现。训练节点采用训练数据对训练模型进行训练会得到第二训练结果,对该第二训练结果进行加密就得到第一训练结果。第一聚合结果可以是P个第二训练结果的平均值或者加权后的平均值。第二训练结果可以梯度,梯度是训练模型中权重的导数。第一聚合结果可以是梯度聚合后得到的聚合梯度。M的取值可以是1,也可以是其他更大的数值。当M=1时,一个聚合节点就可以对N个训练节点的训练结果进行聚合,这时,第一聚合结果就是最终的聚合结果,可以直接用于更新训练模型。当M>1时,可能是因为有很多个训练节点,一个聚合节点可能无法处理太多的数据,这时就需要多个聚合节点来组成分级聚合结构,先由第一级的聚合节点对训练节点的训练结果进行一级聚合,然后再由下一级聚合节点对第一聚合结果进行聚合。
由该第一方面可知,从训练节点到聚合节点传输的是加密的第一训练结果,可以确保训练结果传输过程中不会被泄露。第一聚合节点在第一TEE中对第一训练结果进行解密,然后再聚合,可以确保聚合过程中训练结果不会被泄露。训练结果传输和聚合都不会被泄露保证了数据的隐私性,而且训练节点和聚合节点只需要传输一次加密的训练结果就可以实现训练结果的聚合,降低了通信开销,提高了计算效率。
在第一方面的一种可能的实现方式中,M个聚合节点中还包括第二聚合节点。
所述第二聚合节点接收Q个所述第一聚合节点发送的加密后的Q个第一聚合结果,Q为大于1的正整数;
所述第二聚合节点将所述加密后的Q个第一聚合结果从所述第二聚合节点的第一REE调度到第一TEE中进行解密,以得到Q个第一聚合结果;
所述第二聚合节点在所述第一TEE中聚合所述Q个第一聚合结果,以得到第二聚合结果,所述第二聚合结果用于更新所述训练模型或者用于下一级聚合。
该种可能的实现方式中,第二聚合节点是第二层级的聚合节点,若聚合层级只有两层,则该第二聚合节点聚合后得到的第二聚合结果可以用于更新训练模型,若聚合结构中还有第三层级或者更多层级,则该第二聚合结果会被传递给第三层级。该种可能的实现方式中,无论有多少个聚合层级,在每个聚合层级的聚合节点中都是在第一TEE中执行聚合操作,从而保证了每一层级聚合结果的隐私性,另外,通过分层聚合的方式更有利于训练节点较多的场景下实现高效聚合。
在第一方面的一种可能的实现方式中,若M=1,则第一聚合节点还根据第一聚合结果更新训练模型,或者第一聚合节点向N个训练节点发送加密后的第一聚合结果,从而使N个训练节点根据第一聚合结果更新训练模型。
更新训练模型的过程可以是用聚合梯度更新训练模型上的权重,权重更新的过程可以是用本轮当前的权重减去本轮产生的聚合梯度,得到更新后的权重,该更新后的权重用于下一轮训练,更新权重后的训练模型就是更新后的训练模型。
在第一方面的一种可能的实现方式中,所述N个训练节点中分别配置有第二TEE,针对所述N个训练节点中的每个第一训练节点;
所述第一训练节点在所述第一训练节点的第二TEE中对所述训练模型进行训练,并对训练得到的结果进行加密,以得到所述第一训练节点的训练结果,所述第一训练节点的训练结果为所述N个第一训练结果中的一个。
该种可能的实现方式中,训练节点中配置有第二TEE,在第二TEE中训练模型,可以确保训练模型不会泄露,确保了训练模型的隐私性。
在第一方面的一种可能的实现方式中,所述第一训练节点在所述第一训练节点的第二TEE中对所述训练模型进行训练之前,所述第一训练节点在所述第一训练节点的第二TEE中对加密的训练模型进行解密,以得到解密后的所述训练模型。
该种可能的实现方式中,第一训练节点在第二TEE中对加密的训练模型进行解密,可以进一步确保训练模型的隐私性。
在第一方面的一种可能的实现方式中,所述第一训练节点在训练数据中加入噪声;所述第一训练节点使用加入噪声后的训练数据对所述训练模型进行训练。
该种可能的实现方式中,加入噪声的过程在行业内的学名可以称为差分隐私处理,加入噪声可以理解为是在训练数据中加入一点微小的改动,在最小化影响训练数据使用的情况下,最大限度减少对数据源中单个数据的识别的效果,从而有效的避免训练数据泄露。该种可能的实现方式中,通过在训练数据中加入噪声使得训练模型难以反推出原本的训练数据,由此保证训练模型难以记录训练数据,从而进一步保证了训练数据的隐私性。
在第一方面的一种可能的实现方式中,所述第一训练节点响应于随机响应策略的第一指示信息发送所述第一训练节点的训练结果;所述第一训练节点响应于随机响应策略的第二指示信息删除所述第一训练节点的训练结果。
该种可能的实现方式中,随机响应策略可以是预先配置好的,例如:该随机响应策略可以包括第一指示信息或第二指示信息,例如:该第一指示信息可以是1,该第二指示信息可以是0。该第一指示信息可以是ture,该第二指示信息可以是false。第一训练节点得到训练结果后,可以根据第一指示信息或第二指示信息确定是否发送训练结果。随机响应策略可以相当于二次差分隐私处理,第一训练节点根据随机响应策略确定是否将训练结果发送给第一聚合节点。随机响应策略是可以周期性变化的,可以在本训练周期是第一指示信息指示发送训练结果,在下一个训练周期是第二指示信息指示不发送训练结果,这样使第一聚合节点不能连续得到同一个训练节点的训练结果可以进一步防止从训练模型反推出训练数据,从而进一步保证了训练数据的隐私性。
在第一方面的一种可能的实现方式中,所述联合学习系统还包括控制节点,所述控制节点接收所述训练模型;所述控制节点向所述N个训练节点发送所述训练模型。
该种可能的实现方式中,控制节点可以根据训练模型的需求,为该训练模型选择合适的训练节点,再将训练模型发送到这些合适的训练节点上。
在第一方面的一种可能的实现方式中,所述联合学习系统还包括调度装置,
所述控制节点向所述调度装置发送对于聚合节点的聚合节点需求信息,所述需求信息包括需要所述聚合节点的数量和/或聚合层级信息;
所述调度装置根据所述聚合节点需求信息确定用于聚合的所述M个聚合节点。
该种可能的实现方式中,控制节点可以根据所选择的训练节点的数量来确定聚合节点的数量和/或聚合层级信息等。调度装置可以根据该需求信息,从聚合资源中为本次训练模型配置相应的M个聚合节点。
本申请第二方面提供一种训练结果聚合的方法,该方法应用于联合学习系统,该联合学习系统包括M个聚合节点和N个训练节点,M和N都为正整数,所述N个训练节点上配置有相同的训练模型,所述M个聚合节点中都配置有第一REE和第一TEE,M个聚合节点中包括第一聚合节点;该方法可以包括:第一聚合节点接收所述P个训练节点发送的针对所述训练模型的P个第一训练结果,所述第一训练结果是所述训练节点对第二训练结果进行加密得到的,所述第二训练结果是所述训练节点训练所述训练模型得到的,P为正整数,且P≤N;第一聚合节点将所述P个第一训练结果从所述第一聚合节点的第一REE中调度到所述第一聚合节点的第一TEE中;第一聚合节点在所述第一TEE中解密所述P个第一训练结果,以得到P个所述第二训练结果;第一聚合节点在所述第一TEE中聚合所述P个第二训练结果,以得到第一聚合结果,所述第一聚合结果用于更新所述训练模型或者用于下一级聚合。
该第二方面中,聚合节点和训练节点可以是在不同的计算机设备上,也可以是在同一计算机设备上。当聚合节点和训练节点在不同的计算机设备上时,聚合节点可以是服务器或者其他计算设备,训练节点可以是服务器,也可以是例如手机、电脑、PC等终端设备。当聚合节点和训练节点在同一计算机设备上时,聚合节点和训练节点可以是该计算机设备上的不同VM。TEE可以是在聚合节点的主处理器内分离出的一块安全区域,也可以是一个独立于主处理器的TEE芯片,TEE对外提供安全服务,能够保证在其中加载的代码和数据在机密性和完整性方面受到保护。REE与TEE是并行运行的,相对于TEE来说,REE没有TEE的安全性高,聚合节点从外界接收的第一训练结果会先到达第一REE,然后从第一REE中被调度到第一TEE中。训练节点采用训练数据对训练模型进行训练会得到第二训练结果,对该第二训练结果进行加密就得到第一训练结果。第一聚合结果可以是P个第二训练结果的平均值或者加权后的平均值。第二训练结果可以梯度,梯度是训练模型中权重的导数。第一聚合结果可以是梯度聚合后得到的聚合梯度。M的取值可以是1,也可以是其他更大的数值。当M=1时,一个聚合节点就可以对N个训练节点的训练结果进行聚合,这时,第一聚合结果就是最终的聚合结果,可以直接用于更新训练模型。当M>1时,可能是因为有很多个训练节点,一个聚合节点可能无法处理太多的数据,这时就需要多个聚合节点来组成分级聚合结构,先由第一级的聚合节点对训练节点的训练结果进行一级聚合,然后再由下一级聚合节点对第一聚合结果进行聚合。
由该第二方面可知,从训练节点到聚合节点传输的是加密的第一训练结果,可以确保训练结果传输过程中不会被泄露。第一聚合节点在第一TEE中对第一训练结果进行解密,然后再聚合,可以确保聚合过程中训练结果不会被泄露。训练结果传输和聚合都不会被泄露保证了数据的隐私性,而且,训练节点和聚合节点只需要传输一次加密的训练结果就可以实现训练结果的聚合,降低了通信开销,提高了计算效率。
在第二方面的一种可能的实现方式中,所述M个聚合节点中还包括第二聚合节点,所述方法还包括:
所述第一聚合节点向所述第二聚合节点发送加密后的第一聚合结果,所述加密后的第一聚合结果被所述第二聚合节点在所述第二聚合节点的第一TEE中解密得到所述第一聚合结果,来自于Q个第一聚合节点的Q个第一聚合结果用于所述第二聚合节点在所述第二聚合节点的第一TEE中聚合以得到第二聚合结果,所述第二聚合结果用于更新所述训练模型或者用于下一级聚合,Q为大于1的正整数。
该种可能的实现方式中,第二聚合节点是第二层级的聚合节点,若聚合层级只有两层,则该第二聚合节点聚合后得到的第二聚合结果可以用于更新训练模型,若聚合结构中还有第三层级或者更多层级,则该第二聚合结果会被传递给第三层级。该种可能的实现方式中,无论有多少个聚合层级,在每个聚合层级的聚合节点中都是在第一TEE中执行聚合操作,从而保证了每一层级聚合结果的隐私性,而且通过多级聚合还可以提高聚合的效率。
本申请第三方面提供一种训练结果聚合的方法,该方法应用于联合学习系统,该联合学习系统包括M个聚合节点和N个训练节点,M和N都为正整数,N个训练节点上配置有相同的训练模型,所述M个聚合节点中都配置有第一富执行环境REE和第一可信执行环境TEE,所述M个聚合节点中包括第一聚合节点,所述N个训练节点中分别配置有第二TEE,针对所述N个训练节点中的每个第一训练节点,该方法可以包括:所述第一训练节点在所述第一训练节点的第二TEE中对所述训练模型进行训练;所述第一训练节点在所述第二TEE中对训练得到的结果进行加密,以得到所述第一训练节点的第一训练结果;所述第一训练节点向第一聚合节点发送所述第一训练结果,所述第一训练结果用于所述第一聚合节点在第一TEE中进行结果聚合。
第三方面中,训练节点中配置有第二TEE,第二TEE可以参阅第一方面中对第一TEE的描述进行理解。在第二TEE中训练模型,可以确保训练模型不会泄露,确保了训练模型的隐私性。
在第三方面的一种可能的实现方式中,所述第一训练节点在所述第一训练节点的第二TEE中对训练模型进行训练之前,所述方法还可以包括:
所述第一训练节点在所述第一训练节点的第二TEE中对加密的训练模型进行解密,以得到解密后的所述训练模型。
训练节点中配置有第二TEE,这样可以确保训练模型在第二TEE中被训练,不会泄露,确保了训练模型的隐私性。
在第三方面的一种可能的实现方式中,该方法还可以包括:
所述第一训练节点在训练数据中加入噪声;
所述第一训练节点使用加入噪声后的训练数据对所述训练模型进行训练。
该种可能的实现方式中,加入噪声的过程在行业内的学名可以称为差分隐私处理,加入噪声可以理解为是在训练数据中加入一点微小的改动,在最小化影响训练数据使用的情况下,最大限度减少对数据源中单个数据的识别的效果,从而有效的避免训练数据泄露。该种可能的实现方式中,通过在训练数据中加入噪声使得训练模型难以反推出原本的训练数据,由此保证训练模型难以记录训练数据,从而进一步保证了训练数据的隐私性。
在第三方面的一种可能的实现方式中,该方法还可以包括:
所述第一训练节点响应于随机响应策略的第一指示信息发送所述第一训练节点的训练结果;
所述第一训练节点响应于随机响应策略的第二指示信息删除所述第一训练节点的训练结果。
该种可能的实现方式中,随机响应策略可以是预先配置好的,例如:该随机响应策略可以包括第一指示信息或第二指示信息,例如:该第一指示信息可以是1,该第二指示信息可以是0。该第一指示信息可以是ture,该第二指示信息可以是false。第一训练节点得到训练结果后,可以根据第一指示信息或第二指示信息确定是否发送训练结果。随机响应策略可以相当于二次差分隐私处理,第一训练节点根据随机响应策略确定是否将训练结果发送给第一聚合节点。随机响应策略是可以周期性变化的,可以在本训练周期是第一指示信息指示发送训练结果,在下一个训练周期是第二指示信息指示不发送训练结果,这样使第一聚合节点不能连续得到同一个训练节点的训练结果可以进一步防止从训练模型反推出训练数据,从而进一步保证了训练数据的隐私性。
本申请第四方面提供一种聚合节点,该聚合节点具有实现上述第二方面或第二方面任意一种可能实现方式的方法的功能。或该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的单元,例如:接收单元、处理单元和发送单元。
本申请第五方面提供一种训练节点,该训练节点具有实现上述第三方面或第三方面任意一种可能实现方式的方法的功能。或该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的单元,例如:接收单元、处理单元和发送单元。
本申请第六方面提供一种计算机设备,该计算机设备包括至少一个处理器、存储器、输入/输出(input/output,I/O)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当所述计算机执行指令被所述处理器执行时,所述处理器执行如上述第二方面或第二方面任意一种可能的实现方式所述的方法。
本申请第七方面提供一种计算机设备,该计算机设备包括至少一个处理器、存储器、输入/输出(input/output,I/O)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当所述计算机执行指令被所述处理器执行时,所述处理器执行如上述第三方面或第三方面任意一种可能的实现方式所述的方法。
本申请第八方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当所述计算机执行指令被处理器执行时,所述处理器执行如上述第二方面或第二方面任意一种可能的实现方式所述的方法。
本申请第九方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当所述计算机执行指令被处理器执行时,所述处理器执行如上述第三方面或第三方面任意一种可能的实现方式所述的方法。
本申请第十方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当所述计算机执行指令被所述处理器执行时,所述处理器执行上述第二方面或第二方面任意一种可能实现方式的方法。
本申请第十一方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当所述计算机执行指令被所述处理器执行时,所述处理器执行上述第三方面或第三方面任意一种可能实现方式的方法。
本申请第十二方面提供了一种芯片系统,该芯片系统包括处理器,用于支持训练节点实现上述第二方面或第二方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存训练节点必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请第十三方面提供了一种芯片系统,该芯片系统包括处理器,用于支持训练节点实现上述第三方面或第三方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存训练节点必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第四、第六、第八、第十和第十二方面或者其中任一种可能实现方式所带来的技术效果可参见第二方面或第二方面不同可能实现方式所带来的技术效果,此处不再赘述。
其中,第五、第七、第九、第十一和第十三方面或者其中任一种可能实现方式所带来的技术效果可参见第三方面或第三方面不同可能实现方式所带来的技术效果,此处不再赘述。
本申请实施例提供的联合学习系统以及训练结果聚合的方法,从训练节点到聚合节点传输的是加密的第一训练结果,可以确保训练结果传输过程中不会被泄露。第一聚合节点在第一TEE中对第一训练结果进行解密,然后再聚合,可以确保聚合过程中训练结果不会被泄露。训练结果传输和聚合都不会被泄露保证了数据的隐私性,而且训练节点和聚合节点只需要传输一次加密的训练结果就可以实现训练结果的聚合,降低了通信开销,提高了计算效率。
附图说明
图1是本申请实施例提供的计算机设备的一结构示意图;
图2是本申请实施例提供的联合学习系统的一场景实施例示意图;
图3是本申请实施例提供的联合学习系统的另一场景实施例示意图;
图4是本申请实施例提供的联合学习系统的另一场景实施例示意图;
图5是本申请实施例提供的联合学习系统的另一场景实施例示意图;
图6是本申请实施例提供的联合学习系统的另一场景实施例示意图;
图7是本申请实施例提供的联合学习系统的另一场景实施例示意图;
图8是本申请实施例提供的训练结果聚合的方法的一实施例示意图;
图9是本申请实施例提供的训练结果聚合的方法的另一实施例示意图;
图10是本申请实施例提供的聚合节点的一实施例示意图;
图11是本申请实施例提供的训练节点的一实施例示意图;
图12是本申请实施例提供的计算机设备的另一实施例示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种联合学习系统以及训练结果聚合的方法,可以在保证训练数据隐私性的前提下降低通信开销,提高计算效率。本申请实施例还提供了相应的设备。以下分别进行详细说明。
联合学习系统简单来说就是聚合节点结合训练节点实现模型训练的系统。训练节点可以是终端设备,也可以是服务器等类型的计算机设备,还可以是计算机设备上的虚拟机。聚合节点可以有一个,也可以有多个,聚合节点有多个时可以分层级聚合训练结果。无论是聚合节点有一个还是有多个,每个聚合节点上都配置有第一可信执行环境(trustedexecution environment,TEE),第一EE可以是在聚合节点的主处理器内分离出的一块安全区域,也可以是一个独立于主处理器的TEE芯片,第一TEE对外提供安全服务,能够保证在其中加载的代码和数据在机密性和完整性方面受到保护。第一富执行环境(rich executionenvironment,REE)与第一TEE是并行运行的,相对于第一TEE来说,第一REE没有第一TEE的安全性高。训练节点上也可以配置有TEE,本申请实施例中,训练节点上的TEE称为第二TEE,无论是在聚合节点上,还是在训练节点上,REE与TEE的结构都是相同的,下面结合图1所示的计算机设备的一结构示意图进行理解。
该图1所示的计算机设备上部署有
上述描述了本申请实施例提供的联合学习系统可以有多种场景,下面分别针对不同场景的联合学习系统进行介绍。
1、训练节点是终端设备,聚合节点有一个的场景。
图2为本申请实施例提供的联合学习系统的一场景实施例示意图。
如图2所示,该联合学习系统中训练节点可以为手机、平板电脑、笔记本电脑、个人电脑、智能手表、智能手环等终端设备。第一聚合节点与多个训练节点之间通过网络通信。第一聚合节点上配置的第一TEE和第一REE可以参阅上述图1中TEE和REE的描述进行理解。
每个训练节点上都存储有相同的训练模型,每个训练节点可以使用各自的训练数据对训练模型进行训练,从而得到训练结果,然后对该训练结果加密,将加密后的训练结果通过网络发送给第一聚合节点。
第一聚合节点接收到加密后的第一训练结果后,该第一训练结果会先进入第一REE,可以将该第一训练结果从第一REE中调度到第一TEE中解密,然后在第一TEE中对解密后得到第二训练结果进行聚合,得到第一聚合结果。将该第一训练结果从第一REE中调度到第一TEE中的过程结合上述图1的架构可以理解为CA端发起访问操作,将第一训练结果通过REE通信代理、硬件层的消息通道以及TEE通信代理传递到第一TEE中。
因为该场景中,只需要一个第一聚合节点就可以完成聚合,所以该第一聚合结果就是用于本轮训练模型更新的聚合结果。
第一聚合节点可以使用该第一聚合结果,更新训练模型,然后再将更新后的训练模型发送给各训练节点,在训练没结束的情况下开始下一轮训练。也可以是第一聚合节点将第一聚合结果发送给各训练节点,由各训练节点各自更新本地的训练模型,在训练没结束的情况下开始下一轮训练。
第二训练结果可以梯度,梯度是训练模型中权重的导数。第一聚合结果可以是梯度聚合后得到的聚合梯度。更新训练模型的过程可以是用聚合梯度更新训练模型上的权重,权重更新的过程可以是用本轮当前的权重减去本轮产生的聚合梯度,得到更新后的权重,该更新后的权重用于下一轮训练,更新权重后的训练模型就是更新后的训练模型。
本申请实施例提供的联合学习系统,从训练节点到聚合节点传输的是加密的第一训练结果,可以确保训练结果传输过程中不会被泄露。第一聚合节点在第一TEE中对第一训练结果进行解密,然后再聚合,可以确保聚合过程中训练结果不会被泄露。训练结果传输和聚合都不会被泄露保证了数据的隐私性,而且训练节点和聚合节点只需要传输一次加密的训练结果就可以实现训练结果的聚合,降低了通信开销,提高了计算效率。
2、训练节点是服务器,聚合节点有一个的场景。
图3为本申请实施例提供的联合学习系统的另一场景实施例示意图。
如图3所示,该联合学习系统中训练节点可以为服务器等数据中心设备。第一聚合节点与多个训练节点之间通过网络通信。
该场景实施例与上述图2对应的场景实施例只是训练节点不同,其他思想与过程与上述图2对应的实施例基本相同,可以参阅上述图2对应的实施例进行理解,此处不再重复赘述。
3、训练节点是终端设备,聚合节点有多个分层级的场景。
图4为本申请实施例提供的联合学习系统的另一场景实施例示意图。
如图4所示,该联合学习系统中的训练节点可以参阅图2部分进行理解。该联合学习系统中的聚合节点有多个,而且做了层级划分。虽然图4中只示出了两个层级,但不应将其理解为是对层级数量的限定,实际上也可以是三层或者更多层级。
第二层级的聚合节点可以称为第二聚合节点,第二聚合节点上也配置有第一TEE和第一REE,该第二聚合节点上的第一TEE和第一REE的相关内容可以参阅图1所对应的相关内容进行理解。
该场景下,以有5000个训练节点为例,每100个训练节点的训练结果会通过一个第一聚合节点来聚合。这样,第一聚合节点有50个。50个第一聚合节点会得到50个第一聚合结果,这50个第一聚合节点将这50个第一聚合结果发送给第二层级的第二聚合节点。第二聚合节点将这50个第一聚合结果从该第二聚合节点的第一REE中调度到第一TEE中解密,并对解密后的聚合结果执行聚合操作,得到第二聚合结果。第二聚合节点种调度第一聚合结果的过程可以参阅上述图2所示场景中调度第一训练结果的过程进行理解。
因为该场景中有两个层级,所以第二聚合结果就是用于本轮训练模型更新的聚合结果。
第二聚合节点可以使用该第二聚合结果,更新训练模型,然后再将更新后的训练模型发送给各训练节点,在训练没结束的情况下开始下一轮训练。也可以是第二聚合节点将第二聚合结果发送给各训练节点,由各训练节点各自更新本地的训练模型,在训练没结束的情况下开始下一轮训练。
本申请实施例中,虽然只示出了两个聚合层级,但无论有多少个聚合层级,在每个聚合层级的聚合节点中都是在TEE中执行聚合操作,从而保证了每一层级聚合结果的隐私性,另外,通过分层聚合的方式更有利于训练节点较多的场景下实现高效聚合。
4、训练节点是服务器,聚合节点有多个分层级聚合的场景。
图5为本申请实施例提供的联合学习系统的另一场景实施例示意图。
如图5所示,该联合学习系统中训练节点可以为服务器等数据中心设备。第一聚合节点与多个训练节点之间通过网络通信。该第二聚合节点上的第一TEE和第一REE的相关内容可以参阅图1所对应的相关内容进行理解。
该场景实施例与上述图4对应的场景实施例只是训练节点不同,其他思想与过程与上述图4对应的实施例基本相同,可以参阅上述图4对应的实施例进行理解,此处不再重复赘述。
上述图2至图5所描述的场景都是聚合节点与训练节点不在同一个计算机设备上的场景,下面结合图6描述聚合节点和训练节点在同一个计算机设备上的场景。这种场景下的计算机设备通常都具有高计算能力与高通信能力,可以在该计算机设备上配置多个虚拟机,将其中的一个或多个VM设置为聚合节点,将其他的VM设置为训练节点。
如图6所示,VM0至VMx,VM(x+1)至VMn都是训练节点,VMk和VMp是第一层级的聚合节点,也可以称为第一聚合节点。VMq是第二层级的聚合节点,也可以称为第二聚合节点。其中,x>1,n>(x+1),且x、n、k、p和q都为正整数。当然,此处只是以两层聚合层级为例进行举例,实际上,聚合层级可以只有一级,也可以有三级或更多级。
关于虚拟机作为聚合节点时的工作过程可以参阅上述图4所描述的过程进行理解。
图6所描述的虚拟机形式的联合学习系统只描述了聚合节点和训练节点都位于一个计算机设备上的情况,还可能是这些聚合节点和训练节点位于两个或多个不同的计算机设备上,共同组成类似于图6中一个计算机设备中的联合学习系统。
上述图2至图6中都只介绍了第一聚合节点和第二聚合节点中配置了TEE,实际上训练节点中也可以配置TEE。
一种可能的实施例中,当训练节点中配置有第二TEE时,训练节点在第二TEE中对训练模型进行训练,并对训练得到的结果进行加密。这样在第二TEE中训练模型,可以确保训练模型不会泄露,确保了训练模型的隐私性。
一种可能的实施例中,当训练节点中配置有第二TEE时,训练节点可以在第二TEE中对加密的训练模型进行解密,以得到解密后的所述训练模型。这样训练节点也不会获知该训练模型,从而进一步确保了训练模型的隐私性。
一种可能的实施例中,为了避免通过训练模型的记录反推出训练数据,训练节点还可以对训练数据进行加入噪声;使用加入噪声后的训练数据对所述训练模型进行训练。
加入噪声的过程在行业内的学名可以称为差分隐私处理,加入噪声可以理解为是在训练数据中加入一点微小的改动,在最小化影响训练数据使用的情况下,最大限度减少对数据源中单个数据的识别的效果,从而有效的避免训练数据泄露。通过在训练数据中加入噪声使得训练模型难以反推出原本的训练数据,由此保证训练模型难以记录训练数据,从而进一步保证了训练数据的隐私性。
一种可能的实施例中,所述训练节点响应于随机响应策略的第一指示信息发送所述第一训练节点的训练结果;所述训练节点响应于随机响应策略的第二指示信息删除所述第一训练节点的训练结果。
随机响应策略可以是预先配置好的,例如:该随机响应策略可以包括第一指示信息或第二指示信息,例如:该第一指示信息可以是1,该第二指示信息可以是0。该第一指示信息可以是ture,该第二指示信息可以是false。第一训练节点得到训练结果后,可以根据第一指示信息或第二指示信息确定是否发送训练结果。随机响应策略可以相当于二次差分隐私处理,第一训练节点根据随机响应策略确定是否将训练结果发送给第一聚合节点。随机响应策略是可以周期性变化的,可以在本训练周期是第一指示信息指示发送训练结果,在下一个训练周期是第二指示信息指示不发送训练结果,这样使第一聚合节点不能连续得到同一个训练节点的训练结果可以进一步防止从训练模型反推出训练数据,从而进一步保证了训练数据的隐私性。
上述图3和图5所示场景中的训练节点可以是数据中心中的服务器,这些数据中心可以是银行数据中心、医院数据中心、学校数据中心等。
上述几个场景中都只简单介绍了聚合节点在TEE中进行聚合的,下面结合图7所示的场景,进一步介绍本申请实施例提供的联合学习系统。
图7为本申请实施例提供的联合学习系统的另一场景实施例示意图。
如图7所示,该联合学习系统中的训练节点位于第一数据中心、第二数据中心和第三数据中心,当然也不限于只有这三个数据中心,该场景中只是以这三个数据中心为例进行介绍。若要训练的模型是肿块识别的模型,则第一数据中心、第二数据中心和第三数据中心例如可以是几家大医院的数据中心。
该联合学习系统中还包括控制节点和调度装置,该控制节点可以与模型持有节点通信,接收模型持有节点的模型训练请求和需要训练的训练模型。
控制节点接收到训练模型后,若是提前已经确定好了训练节点,则可以向训练节点发送训练模型。若是提前没有确定好训练节点,则可以通过每个数据中心中的协调装置来选择训练节点。
每个数据中心中的协调装置与控制节点可以预先建立可信任连接,例如:都配置了可信任网关(trusted gateway)。每个数据中心中的协调装置与聚合中心中的调度装置也可以预先建立可信任连接,控制节点与聚合中心中的调度装置也可以预先建立可信任连接。
控制节点可以根据训练模型确定需要持有哪种数据类型的训练节点,以及所需要训练节点的数量,然后将这些对训练节点的需求信息发送给数据中心中的协调装置,协调装置根据对训练节点的需求信息确定各自数据中的训练节点,然后将需要训练的训练模型发送给确定的训练节点,如控制节点需要N个训练节点,则数据中心侧会提供N个训练节点,N是正整数,通常N的取值都会是至少几十,大多是成百上千。
训练节点接收到的训练模型可以是加密的训练模型,对训练模型解密所使用的密钥可以是与控制节点预先协商好的。训练节点将该训练模型放入第二TEE中,并使用密钥解密该训练模型,得到该训练模型的明文。然后,训练节点使用训练数据对解密后的训练模型进行训练,会得到训练结果,对该训练结果进行加密,加密后的训练结果可以称为第一训练结果,加密前的训练结果可以称为第二训练结果。训练节点可以通过协调装置将该第一训练结果发送给聚合中心中的调度装置。
控制节点还可以预先向调度装置发送对聚合节点的需求信息,对聚合节点的需求信息可以是需要聚合节点的数量,以及聚合层级的信息等。调度装置会根据对聚合节点的需求信息准备好相应数量以及层级的聚合节点,例如:需要M个聚合节点,需要聚合节点的层级是一层或两层,在聚合层级是一层时,M的取值可以为1,当聚合层级是两层时,M通常是大于2的整数。
调度装置接收到第一训练结果后,会将N个第一训练结果中的P个第一训练结果调度给一个第一聚合节点,该第一聚合节点接收到P个第一训练结果后,会将所述P个第一训练结果调度到所述第一聚合节点的第一TEE中;在所述第一TEE中解密所述P个第一训练结果,以得到P个第二训练结果;然后,第一聚合节点聚合所述P个第二训练结果,以得到第一聚合结果,所述第一聚合结果用于更新所述训练模型或者用于下一级聚合。
若只有一个第一聚合节点时,N=P。若有Q个第一聚合节点时,P<N。Q个第一聚合节点执行聚合的过程基本相同,都是在第一TEE中执行解密以及聚合的过程,Q为大于1的正整数。
Q个第一聚合节点将Q个第一聚合结果发送给第二聚合节点,第二聚合节点将所述加密后的Q个第一聚合结果从第二聚合节点的第一REE中调度到所述第二聚合节点的第一TEE中进行解密,以得到Q个第一聚合结果;所述第二聚合节点聚合所述Q个第一聚合结果,以得到第二聚合结果,所述第二聚合结果用于更新所述训练模型或者用于下一级聚合。
上述描述了以训练节点是数据中心中的服务器的场景,实际上,终端设备也是可以采用上述图7所描述的中心化的处理过程进行操作的,可以采用地域的划分方式划分终端设备。例如:将北京的终端设备划分到第一数据中心,将上海的终端设备划分到第二数据中心,将深圳的终端设备划分到第三数据中心。通过这三个区域的终端设备来训练用于“外卖点餐”的模型。具体的训练过程和训练原理都可以参阅上述图7部分的相应描述进行理解。
聚合节点与训练节点之间解密的密钥可以是预先协商好的。
以上多个场景实施例对联合学习系统做了介绍,基于上述联合学习系统,下面结合附图介绍本申请实施例梯度的训练结果聚合的方法。
图8是本申请实施例提供的训练结果聚合的方法的一实施例示意图。
如图8所示,本申请实施例提供的训练结果聚合的方法的一实施例可以包括:
101、第一训练节点对训练模型进行训练。
第一训练节点为N个训练节点中的任意一个。
102、第一训练节点对训练得到的结果进行加密,以得到第一训练结果。
103、第一训练节点向第一聚合节点发送所述第一训练结果,相应地,第一聚合节点接收所述P个训练节点发送的针对训练模型的P个第一训练结果。
除只有一个聚合节点的情况外,第一聚合节点是M个聚合节点中位于第一层级的一个聚合节点。当只有一个聚合节点时,P=N,当有多个聚合节点时,P<N。
104、第一聚合节点将所述P个第一训练结果从所述第一聚合节点的第一REE中调度到所述第一聚合节点的第一TEE中。
105、第一聚合节点在所述第一TEE中解密所述P个第一训练结果,以得到P个第二训练结果。
106、第一聚合节点在所述第一TEE中聚合所述P个第二训练结果,以得到第一聚合结果,所述第一聚合结果用于更新所述训练模型或者用于下一级聚合。
本申请实施例中,从训练节点到聚合节点传输的是加密的第一训练结果,可以确保训练结果传输过程中不会被泄露。第一聚合节点在第一TEE中对第一训练结果进行解密,然后再聚合,可以确保聚合过程中训练结果不会被泄露。训练结果传输和聚合都不会被泄露保证了数据的隐私性,而且,训练节点和聚合节点只需要传输一次加密的训练结果就可以实现训练结果的聚合,降低了通信开销,提高了计算效率。
一种可能的实施例中,当所述M个聚合节点中还包括第二聚合节点时,上述步骤106之后,该方法还可以包括:
所述第一聚合节点向所述第二聚合节点发送加密后的第一聚合结果,所述加密后的第一聚合结果被所述第二聚合节点在所述第二聚合节点的第一TEE中解密得到所述第一聚合结果,来自于Q个第一聚合节点的Q个第一聚合结果用于所述第二聚合节点在所述第二聚合节点的第一TEE中聚合以得到第二聚合结果,所述第二聚合结果用于更新所述训练模型或者用于下一级聚合,Q为大于1的正整数。
本申请实施例中,无论有多少个聚合层级,在每个聚合层级的聚合节点中都是在第一TEE中执行聚合操作,从而保证了每一层级聚合结果的隐私性,而且通过多级聚合还可以提高聚合的效率。
一种可能的实施例中,若M=1,则第一聚合节点还根据第一聚合结果更新训练模型,或者第一聚合节点向N个训练节点发送加密后的第一聚合结果,从而使N个训练节点根据第一聚合结果更新训练模型。
若M>1,则第二聚合节点还根据第二聚合结果更新训练模型,或者第二聚合节点向N个训练节点发送加密后的第二聚合结果,从而使N个训练节点根据第二聚合结果更新训练模型。
更新训练模型的过程可以是用聚合梯度更新训练模型上的权重,权重更新的过程可以是用本轮当前的权重减去本轮产生的聚合梯度,得到更新后的权重,该更新后的权重用于下一轮训练,更新权重后的训练模型就是更新后的训练模型。
一种可能的实施例中,若训练节点配置有第二TEE,则上述步骤101包括:第一训练节点在第二TEE中对所述训练模型进行训练,并对训练得到的结果进行加密,以得到所述第一训练结果,所述第一训练节点的训练结果为所述N个第一训练结果中的一个。
本申请实施例中,训练节点中配置有第二TEE,在第二TEE中训练模型,可以确保训练模型不会泄露,确保了训练模型的隐私性。
一种可能的实施例中,所述第一训练节点在第二TEE中对所述训练模型进行训练之前,所述第一训练节点在第二TEE中对加密的训练模型进行解密,以得到解密后的所述训练模型。
第一训练节点在第二TEE中对加密的训练模型进行解密,可以进一步确保训练模型的隐私性。
一种可能的实施例中,在步骤101之前,还可以包括:第一训练节点在训练数据中加入噪声;所述第一训练节点使用加入噪声后的训练数据对所述训练模型进行训练。
加入噪声的过程在行业内的学名可以称为差分隐私处理,加入噪声可以理解为是在训练数据中加入一点微小的改动,在最小化影响训练数据使用的情况下,最大限度减少对数据源中单个数据的识别的效果,从而有效的避免训练数据泄露。该种可能的实现方式中,通过在训练数据中加入噪声使得训练模型难以反推出原本的训练数据,由此保证训练模型难以记录训练数据,从而进一步保证了训练数据的隐私性。
一种可能的实施例中,所述第一训练节点响应于随机响应策略的第一指示信息发送所述第一训练节点的训练结果;所述第一训练节点响应于随机响应策略的第二指示信息删除所述第一训练节点的训练结果。
随机响应策略可以是预先配置好的,例如:该随机响应策略可以包括第一指示信息或第二指示信息,例如:该第一指示信息可以是1,该第二指示信息可以是0。该第一指示信息可以是ture,该第二指示信息可以是false。第一训练节点得到训练结果后,可以根据第一指示信息或第二指示信息确定是否发送训练结果。随机响应策略可以相当于二次差分隐私处理,第一训练节点根据随机响应策略确定是否将训练结果发送给第一聚合节点。随机响应策略是可以周期性变化的,可以在本训练周期是第一指示信息指示发送训练结果,在下一个训练周期是第二指示信息指示不发送训练结果,这样使第一聚合节点不能连续得到同一个训练节点的训练结果可以进一步防止从训练模型反推出训练数据,从而进一步保证了训练数据的隐私性。
上述模型训练执行之前,控制节点会与训练节点之间协商加密训练模型的密钥。聚合节点会与训练节点之间协商加密训练结果所使用的密钥,要是多级聚合的情形,第一聚合节点与第二聚合节点之间也会协商加密第一聚合结果所使用的密钥。模型持有节点与控制节点之间也可以协商加密训练模型所使用的密钥。
例如可以是:模型持有节点使用控制节点的公钥加密训练模型,并将加密后的模型发送给控制节点。控制节点使用私钥解密该训练模型,然后控制节点用与训练节点协商好的密钥重新加密训练模型,再将训练模型发送给训练节点。训练节点已预先与控制节点协商的密钥,则训练节点可以使用该密钥解密该训练模型。若训练节点配置有第二TEE,则训练节点可以在第二TEE中解密该训练模型,以得到训练模型的明文。然后训练节点在第二TEE中执行模型训练,以得到第二训练结果,对该第二训练结果进行加密,得到第一训练结果。然后训练节点使用与聚合节点协商好的密钥加密后发送各第一聚合节点,第一聚合节点在第一TEE中解密该第一训练结果后,执行聚合操作,得到第一聚合结果。以只有一个聚合节点为例,第一聚合节点使用第一聚合结果更新训练模型,若训练没有结束,则第一聚合节点可以将更新后的聚合模型使用密钥加密后再发送给各训练节点,也可以是第一聚合节点将第一聚合结果加密后发送给各训练节点,由训练节点使用第一聚合结果更新本地的训练模型。若训练达到收敛条件,模型训练结束,则第一聚合节点可以将更新后的训练模型发送给控制节点,由控制节点发送给模型持有节点。
上述密钥协商的过程的一个示例可以参阅图9的示例进行理解。
如图9所示,本申请实施例提供的训练结果聚合的方法的另一实施例可以包括:
201、控制节点生成非对称密钥对,将公钥A.pubkey同步给模型持有节点、聚合节点和训练节点。
202、训练节点生成对称密钥C.key,并使用A.pubkey加密C.key。
203、训练节点向控制节点和聚合节点发送使用A.pubkey加密的C.key。
204、聚合节点将各个训练节点的对称密钥C.key存储在第一TEE中,控制节点也存储C.key。
205、模型持有节点生成包括公钥O.pubkey和私钥O.privkey的非对称密钥对。
206、模型持有节点使用A.pubkey加密训练模型。
207、模型持有节点将使用A.pubkey加密训练模型和公钥O.pubkey发送给控制节点。
208、控制节点使用A.pubkey对加密的训练模型进行解密,以得到训练模型的明文,并保存公钥O.pubkey。
209、控制节点使用C.key加密训练模型。
210、控制节点将使用C.key加密后的训练模型发送给训练节点。
也可以将该使用C.key加密后的训练模型发送给聚合节点。
211、训练节点在第二TEE中使用C.key解密该训练模型,得到训练模型的明文。
212、训练节点使用训练数据对训练模型进行训练,得到第二训练结果,使用C.key加密第二训练结果,以得到第一训练结果。
213、训练节点向聚合节点发送第一训练结果。
214、聚合节点在第一TEE中使用C.key解密第一训练结果,并对多个训练结果执行聚合操作,以得到第一聚合结果。
第一聚合结果用于更新训练模型。
215、若模型训练结束,聚合节点可以将训练好的模型使用C.key加密发送给控制节点。
216、控制节点使用C.key解密训练好的模型。
217、控制节点使用O.pubkey加密该训练好的模型。
218、控制节点向模型持有节点发送使用O.pubkey加密该训练好的模型。
219、模型持有节点使用O.privkey解密,以得到该训练好的模型的明文。
由该实施例可知,只需要通过少量的协商就可以确保训练数据和训练模型的隐私性,极大的降低了通信开销,提高了计算效率。
以上介绍了联合学习系统和训练结果聚合的方法,下面结合附图介绍本申请实施例提供的聚合节点和训练节点。
如图10所示,本申请实施例提供的聚合节点应用于联合学习系统,所述联合学习系统还包括N个训练节点,所述N都为正整数,所述聚合节点中配置有第一富执行环境REE和第一可信执行环境TEE,该聚合节点30可以包括:
接收单元301,用于接收所述P个训练节点发送的针对所述训练模型的P个第一训练结果,所述第一训练结果是所述训练节点对第二训练结果进行加密得到的,所述第二训练结果是所述训练节点训练所述训练模型得到的,P为正整数,且P≤N;
处理单元302用于:
将所述P个第一训练结果从所述第一聚合节点的第一REE中调度到所述第一聚合节点的第一TEE中;
在所述第一TEE中解密所述P个第一训练结果,以得到P个所述第二训练结果;
在所述第一TEE中聚合所述P个第二训练结果,以得到第一聚合结果,所述第一聚合结果用于更新所述训练模型或者用于下一级聚合。
本申请实施例中,从训练节点到聚合节点传输的是加密的第一训练结果,可以确保训练结果传输过程中不会被泄露。第一聚合节点在第一TEE中对第一训练结果进行解密,然后再聚合,可以确保聚合过程中训练结果不会被泄露。训练结果传输和聚合都不会被泄露保证了数据的隐私性,而且,训练节点和聚合节点只需要传输一次加密的训练结果就可以实现训练结果的聚合,降低了通信开销,提高了计算效率。
一种可能的实施例中,该聚合节点30还可以包括:
发送单元303,用于向所述第二聚合节点发送加密后的第一聚合结果,所述加密后的第一聚合结果被所述第二聚合节点在所述第二聚合节点的第一TEE中解密得到所述第一聚合结果,来自于Q个第一聚合节点的Q个第一聚合结果用于所述第二聚合节点在所述第二聚合节点的第一TEE中聚合以得到第二聚合结果,所述第二聚合结果用于更新所述训练模型或者用于下一级聚合,Q为大于1的正整数。
需要说明的是,上述聚合节点30的各单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
参阅图11,本申请实施例提供的训练节点应用于联合学习系统,所述联合学习系统还包括M个聚合节点,所述M为正整数,所述N个训练节点上配置有相同的训练模型,所述M个聚合节点中都配置有第一富执行环境REE和第一可信执行环境TEE,所述训练节点中配置有第二TEE,该训练节点40可以包括:
处理单元401用于:
在所述第一训练节点的第二TEE中对所述训练模型进行训练;
在所述第二TEE中对训练得到的结果进行加密,以得到所述第一训练节点的第一训练结果;
发送单元402,用于向第一聚合节点发送所述第一训练结果,所述第一训练结果用于所述第一聚合节点在第一TEE中进行结果聚合。
本申请实施例中,训练节点中配置有第二TEE,第二TEE可以参阅第一方面中对第一TEE的描述进行理解。在第二TEE中训练模型,可以确保训练模型不会泄露,确保了训练模型的隐私性。
一种可能的实施例中,处理单元401还用于在所述第一训练节点的第二TEE中对加密的训练模型进行解密,以得到解密后的所述训练模型。
一种可能的实施例中,所述处理单元401还用于:
在训练数据中加入噪声;
使用加入噪声后的训练数据对所述训练模型进行训练。
一种可能的实施例中,所述发送单元402,用于响应于随机响应策略的第一指示信息发送所述第一训练节点的训练结果;
所述处理单元401,用于响应于随机响应策略的第二指示信息删除所述第一训练节点的训练结果。
需要说明的是,上述训练节点40的各单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
图12所示,为本申请的实施例提供的上述实施例中所涉及的计算机设备50的一种可能的逻辑结构示意图。该计算机设备50可以是上述聚合节点,也可以是训练节点。计算机设备50包括:处理器501、通信接口502、存储器503以及总线504。处理器501、通信接口502以及存储器503通过总线504相互连接。在本申请的实施例中,处理器501用于对计算机设备50的动作进行控制管理,例如,处理器501用于执行图8中的步骤101、102、104至106和/或用于本文所描述的技术的其他过程。通信接口502用于支持计算机设备50进行通信。存储器503,用于存储计算机设备50的程序代码和数据。
其中,处理器501可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线504可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述聚合节点或训练节点实现其所涉及的功能,例如,例如接收或处理上述方法实施例中所涉及的数据。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存终端设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图8至图9部分实施例所描述的方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图8至图9部分实施例所描述的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。
- 一种联合学习系统、训练结果聚合的方法及设备
- 一种基于联合学习的能源数据模型训练方法、装置、终端设备及存储介质