用于纵向联邦逻辑回归学习的异构加速方法、装置及系统

文档序号:7981 发布日期:2021-09-17 浏览:37次 英文

用于纵向联邦逻辑回归学习的异构加速方法、装置及系统

技术领域

本申请涉及数据安全和隐私保护

技术领域

,具体涉及一种用于纵向联邦逻辑回归学习的异构加速方法、装置及系统。

背景技术

随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习(Federated Learning,FL)的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。

其中,逻辑回归(Logistic Regression,LR)算法经常用于解决机器学习方法中的二分类问题并得到了广泛应用,例如用于估计用户购买商品的可能性或者预测患病的概率。逻辑回归算法的基本推导过程是提出假设函数也叫做逻辑回归模型,然后构造损失函数,最后通过求解损失函数得出假设函数中的参数值如权重值。可以通过随机梯度下降法在每一次迭代中对数据集中的每一个数据求解一次梯度,再用求解得到的梯度更新权重值,重复多次迭代直到求出符合要求的权重值。其中对梯度的求解可以使用并行化加速方案例如通过多核中央处理器(central processing unit,CPU)或者图形处理器(graphicsprocessing unit,GPU)。但是,在联邦学习或者类似的隐私计算等应用场景下,原始数据分散在各个参与方手上并且模型训练或者逻辑回归学习是通过加密的方式交换模型相关信息,例如纵向联邦逻辑回归学习的场景下各个参与方分别持有数据集的一部分。因此必须在保证数据集不被泄露的前提下实现逻辑回归学习的目标。另外,加密后的数据一般是大整数位宽数据,例如原始数据为一个浮点数但是加密后则一般至少为1024比特,而且联邦学习还涉及到大量的密态运算,这样就对联邦学习或者类似的隐私计算等应用场景下进行模型训练或者逻辑回归学习提出了从存储资源到计算性能的巨大挑战。为此,需要一种异构加速方法、装置及系统,能够在保证数据集不被泄露的前提下实现模型训练目标特别是完成纵向联邦逻辑回归学习,同时还能很好应对在联邦学习或者类似的隐私计算等应用场景下的大整数位宽数据和密态运算所带来的对存储资源和计算性能的需求。

发明内容

第一方面,本申请实施例提供了一种异构加速方法,应用于纵向逻辑回归学习过程。所述方法包括:第一参与方和第二参与方根据各自的特征数据进行明文运算和加密运算分别得到第一参与方的加密后模型参数和第二参与方的加密后模型参数,其中,所述特征数据是数据集的mini-batch子集中的数据,所述第一参与方和所述第二参与方分别持有所述mini-batch子集的一部分数据;所述第一参与方或者所述第二参与方,对所述第一参与方的加密后模型参数和所述第二参与方的加密后模型参数进行密态加法运算得到与所述特征数据相对应的前向梯度;所述第一参与方和所述第二参与方分别对所述前向梯度和各自的特征数据进行密态乘法运算,得到与各自的特征数据相对应的密态乘法运算结果;和对所述密态乘法运算结果和与所述特征数据相对应的掩码进行掩码累加运算,得到与所述特征数据相对应的掩码累加运算结果,并更新与所述mini-batch子集相对应的梯度计算结果。其中,所述明文运算用于串行化处理且对应串行化计算任务,所述加密运算、所述密态加法运算、所述密态乘法运算、所述掩码累加运算中的累加计算部分用于并行化处理且各自对应并行化计算任务。

第一方面所描述的技术方案,通过对纵向逻辑回归学习过程的算法进行拆分并针对性分配相应模块进行对应运算,有利于发挥异构计算架构的优势来提升资源利用效率,并且通过不同参与方来共享运算结果可以进一步提升资源利用效率。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述明文运算用于串行化处理且对应串行化计算任务,包括:与所述明文运算相对应的串行化计算任务基于CPU执行。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述加密运算、所述密态加法运算、所述密态乘法运算、所述掩码累加运算中的累加计算部分用于并行化处理且各自对应并行化计算任务,包括:与所述加密运算相对应的并行化计算任务、与所述密态加法运算相对应的并行化计算任务、与所述密态乘法运算相对应的并行化计算任务、与所述掩码累加运算中的累加计算部分相对应的并行化计算任务均基于GPU执行。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述加密运算中的向量计算部分包括CPU-GPU的交互,所述CPU-GPU的交互包括CPU内存指针和GPU显存指针之间的交换,其中,该CPU内存指针指向GPU显存中未加密数据,该GPU显存指针指向所述GPU显存中加密后数据所述GPU将GPU显存指针传递给所述CPU,所述GPU显存指针指向所述GPU的显存中从所述CPU拷贝来的数据。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,与所述明文运算相对应的串行化计算任务基于第一类计算单元执行,与所述加密运算相对应的并行化计算任务、与所述密态加法运算相对应的并行化计算任务、与所述密态乘法运算相对应的并行化计算任务、与所述掩码累加运算中的累加计算部分相对应的并行化计算任务均基于第二类计算单元执行,其中,所述第一类计算单元和所述第二类计算单元属于同一异构计算架构且分别针对串行计算和并行计算进行优化。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述第一类计算单元包括以下至少一种:CPU,RISC,微芯片,所述第二类计算芯片包括以下至少一种:用于纵向逻辑回归学习的ASIC,针对矩阵运算优化的FPGA。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述密态加法运算以及所述掩码累加运算中的累加计算部分各自通过所述第一参与方或者所述第二参与方中的一个参与方完成且该参与方与另一参与方分享相应运算结果。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述加密运算、所述密态加法运算、所述密态乘法运算、所述掩码累加运算中的累加计算部分各自通过针对向量级计算优化后的GPU执行。

根据第一方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述密态加法运算和/或者所述掩码累加运算中的累加计算部分被执行时同时调用所述第一参与方的计算资源和所述第二参与方的计算资源。

第二方面,本申请实施例提供了一种非瞬时性计算机可读存储介质,该计算机存储介质保存计算机指令,该计算机指令被处理装置执行时,使得所述处理装置执行根据第一方面中任一项所述的方法。

第二方面所描述的技术方案,通过对纵向逻辑回归学习过程的算法进行拆分并针对性分配相应模块进行对应运算,有利于发挥异构计算架构的优势来提升资源利用效率,并且通过不同参与方来共享运算结果可以进一步提升资源利用效率。

第三方面,本申请实施例提供了一种异构加速装置。所述异构加速装置包括:明文运算模块,用于根据本地特征数据进行明文运算得到模型参数,其中,所述本地特征数据是数据集的多个mini-batch子集中的一个mini-batch子集中的数据,所述数据集用于训练联邦学习模型,所述本地特征数据是在所述异构加速装置处的私有数据;加密运算模块,用于对所述模型参数进行加密运算得到加密后模型参数;密态加法模块,用于对所述加密后模型参数和非本地的加密后模型参数进行密态加法运算得到与所述本地特征数据相对应的前向梯度,其中,所述非本地的加密后模型参数由相对于所述异构加速装置的外部所提供;密态乘法模块,用于对所述前向梯度和所述本地特征数据进行密态乘法运算,得到与所述本地特征数据相对应的密态乘法运算结果;以及累加运算模块,用于对所述密态乘法运算结果进行掩码累加运算,从而更新与包括所述本地特征数据的该mini-batch子集相对应的梯度计算结果。其中,所述加密运算模块、所述密态加法模块、所述密态乘法模块以及所述累加运算模块均针对向量级并行化计算进行优化。

第三方面所描述的技术方案,通过对纵向逻辑回归学习过程的算法进行拆分并针对性分配相应模块进行对应运算,有利于发挥异构计算架构的优势来提升资源利用效率,并且通过不同参与方来共享运算结果可以进一步提升资源利用效率。

根据第三方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述异构加速装置还包括:数据分割模块,用于对所述数据集进行分割得到所述多个mini-batch子集。

根据第三方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述异构加速装置还包括:解密运算模块,用于对所述梯度计算结果进行解密运算得到与包括所述本地特征数据的该mini-batch子集相对应的梯度。

根据第三方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述加密运算模块、所述密态加法模块、所述密态乘法模块以及所述累加运算模块均针对向量级并行化计算进行优化,包括:所述密态加法模块、所述密态乘法模块以及所述累加运算模块各自包括多个并行计算单元,所述多个并行计算单元的每一个计算单元针对封装密文条件下的矩阵加、矩阵乘以及矩阵点乘进行优化。

根据第三方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述加密运算模块的加密运算的向量计算部分包括CPU-GPU的交互,所述CPU-GPU的交互包括CPU内存指针和GPU显存指针之间的交换,其中,该CPU内存指针指向GPU显存中未加密数据,该GPU显存指针指向所述GPU显存中加密后数据GPU将GPU显存指针传递给CPU,所述GPU显存指针指向所述GPU的显存中从所述CPU拷贝来的数据。

第四方面,本申请实施例提供了一种异构加速系统。所述异构加速系统包括第一参与方的第一异构加速装置和第二参与方的第二异构加速装置,所述第一异构加速装置和所述第二异构加速装置分别包括第一密态向量计算部和第二密态向量计算部,所述异构加速系统按照以下方法进行所述第一参与方和所述第二参与方之间的纵向逻辑回归学习过程:所述第一异构加速装置根据第一参与方的私有数据进行明文运算和加密运算得到所述第一参与方的加密后模型参数,所述第二异构加速装置根据第二参与方的私有数据进行明文运算和加密运算得到所述第二参与方的加密后模型参数,其中,所述第一参与方的私有数据和所述第二参与方的私有数据是用于该纵向逻辑回归学习过程的数据集的同一mini-batch子集中的数据;所述异构加速系统选择所述第一密态向量计算部或者所述第二密态向量计算部,对所述第一参与方的加密后模型参数和所述第二参与方的加密后模型参数进行密态加法运算得到前向梯度;所述第一密态向量计算部和所述第二密态向量计算部分别对所述前向梯度和各自的私有数据进行密态乘法运算得到密态乘法运算结果;和对所述密态乘法运算结果进行掩码累加运算得到掩码累加运算结果,并更新与所述mini-batch子集相对应的梯度计算结果。其中,所述第一密态向量计算部和所述第二密态向量计算部均针对向量级并行化计算进行优化。

第四方面所描述的技术方案,通过对纵向逻辑回归学习过程的算法进行拆分并针对性分配相应模块进行对应运算,有利于发挥异构计算架构的优势来提升资源利用效率,并且通过不同参与方来共享运算结果可以进一步提升资源利用效率。

根据第四方面所述的技术方案,在一种可能的实施方式中,本申请实施例还提供了,所述第一密态向量计算部和所述第二密态向量计算部均针对向量级并行化计算进行优化,包括:所述第一密态向量计算部和所述第二密态向量计算部各自包括至少一个并行GPU,所述至少一个并行GPU的每一个GPU针对封装密文条件下的矩阵加、矩阵乘以及矩阵点乘进行优化。

附图说明

为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1示出了本申请实施例提供的异构加速方法的流程示意图。

图2示出了本申请实施例提供的用于图1所示的异构加速方法的异构加速装置的结构框图。

图3示出了本申请实施例提供的一种实施方式的多参与方的异构加速系统的框图。

图4示出了本申请实施例提供的另一种实施方式的多参与方的异构加速系统的框图。

具体实施方式

本申请实施例为了解决,如何能够在保证数据集不被泄露的前提下实现模型训练目标特别是完成纵向联邦逻辑回归学习,同时还能很好应对在联邦学习或者类似的隐私计算等应用场景下的大整数位宽数据和密态运算所带来的对存储资源和计算性能的需求,这一技术问题而提供了一种异构加速方法、装置及系统。所述方法包括:第一参与方和第二参与方根据各自的特征数据进行明文运算和加密运算分别得到第一参与方的加密后模型参数和第二参与方的加密后模型参数,其中,所述特征数据是数据集的mini-batch子集中的数据,所述第一参与方和所述第二参与方分别持有所述mini-batch子集的一部分数据;所述第一参与方或者所述第二参与方,对所述第一参与方的加密后模型参数和所述第二参与方的加密后模型参数进行密态加法运算得到与所述特征数据相对应的前向梯度;所述第一参与方和所述第二参与方分别对所述前向梯度和各自的特征数据进行密态乘法运算,得到与各自的特征数据相对应的密态乘法运算结果;和对所述密态乘法运算结果和与所述特征数据相对应的掩码进行掩码累加运算,得到与所述特征数据相对应的掩码累加运算结果,并更新与所述mini-batch子集相对应的梯度计算结果。其中,所述明文运算用于串行化处理且对应串行化计算任务,所述加密运算、所述密态加法运算、所述密态乘法运算、所述掩码累加运算中的累加计算部分用于并行化处理且各自对应并行化计算任务。

本申请实施例可用于以下应用场景,包括但是不限于,与联邦学习有关的机器学习模型训练、逻辑回归学习特别是纵向联邦逻辑回归学习、数据安全、隐私保护或者应用隐私计算框架或算法的其它应用场景。

本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。

一般来说,在联邦学习或者类似的隐私计算等应用场景下,各个参与方均在本地进行模型训练并且数据不离开本地,而是通过交换模型参数的方式来建立共享的机器学习模型。其中,纵向联邦学习中常见的算法有纵向线性回归、纵向逻辑回归(hetero logisticregression,Hetero-LR)、纵向泊松回归以及其它适合纵向联邦学习的算法如SecureBoost算法等。纵向联邦学习下常见的情况是一个参与方有一部分特征和标签,但是另一个参与方有另一部分特征却缺乏标签。缺乏标签的参与方需要得到有标签的参与方的协助才能建立联合模型,并且联合模型的效果要显著好于有标签的参与方独立建模的结果。设缺乏标签的参与方为联邦学习的Host方,而有标签的参与方为Guest方。典型的纵向逻辑回归Hetero-LR的学习过程可以参考在2017年发表的论文“Private federated learning onvertically partitioned data via entity resolution and additively homomorphicencryption”,第一作者为“Stephen Hardy”,并且仅处于说明性而非限制性目的,该论文应理解为本申请公开内容的一部分。其中,Hetero-LR的学习过程涉及到裁决方(Arbiter)作为第三方,具体地包括:Guest方向Host方请求由Host方所持有的特征数据;Host方将加密后的Host方的特征数据发送给Guest方;Guest方也对由Guest方所持有的特征数据进行加密,根据加密后的Host方的特征数据以及加密后的Guest方的特征数据,进行密态运算得到梯度因子,也根据梯度因子计算得到加密后Guest方的梯度并将梯度因子发送给Host方;Host方根据梯度因子计算得到加密后Host方的梯度;Guest方和Host方各自将加密后Guest方的梯度和加密后Host方的梯度发送给裁决方,裁决方进行拼接后解密,得到解密后Guest方的梯度和解密后Host方的梯度,再将解密后Guest方的梯度和解密后Host方的梯度分别发送给Guest方和Host方;最后Guest方和Host方各自根据解密后Guest方的梯度和解密后Host方的梯度来更新模型,从而完成一次迭代计算。其中加密后的损失函数可以由Guest方计算得到并发送给裁决方,裁决方进行解密后得到解密后的损失函数,并根据收敛性条件等判断是否终止模型训练。以上是有两个参与方再加上裁决方的Hetero-LR的学习过程或者训练纵向逻辑回归模型的过程。当存在三个或者更多个参与方的情况,也就是数据的提供者涉及至少三个以上的参与方,特别是纵向联邦学习的场景下,这些参与方有许多相同的实体但是不同的特征。可以参考上述的Hetero-LR的学习过程,在一般的涉及Guest方、Host方及Arbiter方的模型中,每两个参与方作为成对的Host方和Guest方进行上述的训练过程,或者拓展后包括更多的参与方进行加密后的特征数据的交换、梯度因子的计算以及各自的加密后梯度的求解等;此外,在Hetero-LR的学习过程中还存在扩展后涉及单个Guest方和多个Host方及Arbiter方的模型,其中的训练过程也涉及到加密后的特征数据的交换、梯度因子的计算以及各自的加密后梯度的求解等。这些可以根据实际需要和应用场景进行调整,在此不做具体限定。

从上面所描述的Hetero-LR的学习过程可以看出,Host方和Guest方都需要计算加密后的特征数据以及根据梯度因子求解加密后的梯度,而Guest方还需要根据各个参与方的加密后的特征数据来进行密态运算得到共用的梯度因子。这里,加密后的特征数据和加密后的梯度均是加密后得到的大整数位宽数据例如同态加密方法加密后的数据。为了利用并行加速来提高整体计算效率,可以通过多个GPU并行处理的方式,而当训练数据或者数据集规模过大时,还可以通过mini-batch技术将训练数据或者数据集分割成若干份子集(例如分割成等量的子集),针对每一个子集进行梯度下降。其中,每一次迭代计算需要遍历所有的样本或者遍历所有的子集,而且对同一样本或者同一子集需要进行包括明文运算、加密运算以及密态运算的复杂计算,并且还可能涉及到不同的计算单元如GPU之间的数据交互,为此需要结合在算子化优化、异构加速和数据结构方面的改进,来提高整体计算效率和节省资源。下面结合附图来详细说明在本申请具体实施例在这些方面的改进及有益技术效果。

请参阅图1,图1示出了本申请实施例提供的异构加速方法的流程示意图。其中,图1所示的异构加速方法100结合下面的公式(1)至公式(6)进行说明。

上面的公式(1)至公式(6)用于对数据集S的所有数据进行遍历并计算加密后的特征数据以及求解加密后的梯度,适用于纵向联邦逻辑回归学习也适用于上述的Hetero-LR的学习过程。其中公式(1)示出了如何计算利用数据集S进行训练的损失函数,下面详细说明公式(1)。

在公式(1)中,S是数据集,数据集S表示为(X1,Y1),(X2,Y2),(X3,Y3)直到(XN,YN)。其中Y为标签量又或者是二值化标签如-1和1,X是特征数据,因此数据集S有N个成对(Xi,Yi),i是从1到N的序号,N可以理解成数据集S的样本总数。LS(θ)是损失函数,θ是权重,以及θTXi是针对特征数据Xi的模型参数。公式(1)意味着需要对属于数据集S的所有数据进行遍历,也就是i从1到N进行遍历,并且针对每对的成对的(Xi,Yi)进行相应的迭代计算。

在纵向联邦逻辑回归学习或者相似的应用场景中,数据集S是分散在不同的参与方之间,例如上述的Hetero-LR的学习过程中Host方和Guest方各自持有数据集S的一部分,而求解损失函数LS(θ)则需要Host方和Guest方贡献出各自所有的数据。为了表述方便,可以假设数据集S分成第一部分和第二部分,第一参与方持有数据集S的第一部分,第二参与方持有数据集S的第二部分。这里,第一参与方和第二参与方是相对的概念,用于在联邦学习的场景下指示持有私有数据的参与方且该参与方不希望泄露私有数据给其它参与方。第一参与方可以是扮演Guest方、Host方、裁决方(Arbiter)或者任意合适角色。相对的,第二参与方也可以是扮演任意合适的角色,只要第一参与方和第二参与方可以进行加密后的特征数据的交换并最终求解出联邦学习模型的损失函数。公式(2)示出了如何将模型参数θTXi的计算拆分成由第一参与方和第二参与方可以各自在本地进行的密态运算,下面详细说明公式(2)。

在公式(2)中,θTXi是针对特征数据Xi的模型参数,θTXi(Host)是Host方在本地进行的密态运算也就是根据Host方的特征数据进行明文运算和加密运算得到Host方的加密后模型参数。相对地,θTXi(Guest)是Guest方在本地进行的密态运算也就是根据Guest方的特征数据进行明文运算和加密运算得到Guest方的加密后模型参数。公式(2)意味着Host方和Guest与方根据各自的特征数据进行明文运算和加密运算分别得到Host方的加密后模型参数和Guest方的加密后模型参数,也可以理解为第一参与方和第二参与方根据各自的特征数据进行明文运算和加密运算分别得到第一参与方的加密后模型参数和第二参与方的加密后模型参数。公式(1)和公式(2)针对的是数据集S的整体。一般情况下,数据集S包含的样本数量巨大,也就是说数据集S的样本总数N可以是巨大的。这种情况下,可以通过mini-batch技术将数据集S分割成若干份子集(例如分割成等量的子集),针对每一个子集进行梯度下降。相应的,对数据集S的所有数据进行遍历被转化成等价地遍历所有的子集。这里设根据mini-batch技术将数据集S分割而成的多个子集中的其中一个子集为SM。公式(3)示出了如何进行数据集S的mini-batch子集SM的梯度计算,下面详细说明公式(3)。

在公式(3)中,SM是子集,公式(3)的左边是子集SM的损失函数LSM(θ)的梯度计算符,表示为倒三角形,也就是子集SM的梯度计算结果。公式(3)的右边是计算公式,适用于纵向联邦逻辑回归学习也适用于上述的Hetero-LR的学习过程。具体地,用j来表示子集SM中的数据的序号,从而与公式(1)中用来表示数据集S中的数据的序号i区分开来。设子集SM中的样本总数为SM,所以j是从1到SM的序号。θTXj是针对特征数据Xj的模型参数,Mj是掩码用于告知哪些数据是重叠的,公式(3)中针对子集SM中的所有数据进行遍历并针对其中每一个数据进行包括明文运算、加密运算以及密态运算的复杂计算。在根据公式(3)计算出梯度后,就可以据此来更新模型参数,从而完成一次mini-batch的计算任务或者说完成子集SM的计算任务。这方面可以参考上述提到的第一作者为“Stephen Hardy”的在2017年发表的论文的有关细节,该论文应理解为本申请公开内容的一部分,在此不再赘述其中相关细节特别是其中的数学推导过程。下面结合公式(4)至公式(6)来说明公式(3)中针对子集SM中的特定数据Xj的计算如何展开。

公式(4)示出了如何计算前向梯度(forward gradient,FG),FG是公式(3)中的一部分。其中,如公式(4)所示,FG的计算需要用到第一参与方和第二参与方各自在本地进行的密态运算。具体地,FG的计算需要第一参与方和第二参与方根据各自的特征数据进行明文运算和加密运算分别得到第一参与方的加密后模型参数和第二参与方的加密后模型参数,然后通过交换来整合第一参与方的加密后模型参数和第二参与方的加密后模型参数从而得到完整的FG。以上述的Hetero-LR的学习过程为例,FG可以理解为根据双方加密后的特征数据进行密态运算后得到在双方之间共享的梯度因子。另外,因为涉及到明文运算和加密运算,公式(4)所示的FG的计算必须先由各个参与方在本地进行明文运算和加密运算分别得到各个参与方的加密后模型参数,再通过整合各自的加密后模型参数来计算出完整的FG。应当理解的是,因为是在联邦学习和隐私计算的应用场景下,所以公式(4)中为了计算出完整的FG需要对各个参与方所提供的加密后的特征数据进行密态加法运算,而得出的前向梯度FG也是加密后状态也就属于密态数据。在根据公式(4)计算得到针对特定数据Xj的前向梯度FGj之后,可以通过公式(5)来计算针对特定数据Xj的密态乘法运算结果MULj。在公式(5)中,针对特定数据Xj的前向梯度FGj与特定数据Xj进行乘法运算。应当理解的是,在联邦学习和隐私计算的应用场景下,取决于加密算法是属于全同态加密还是半同态加密,公式(5)的乘法运算可以是两个密态数据之间的密态乘法运算或者是密态数据和明文数据的乘法运算。具体地,当加密算法为全同态加密算法,则公式(5)的乘法运算是两个密态数据之间的密态乘法运算,也就是对加密后的前向梯度FGj与加密后的特定数据Xj进行密态乘法运算。当加密算法为半同态加密算法,则公式(5)的乘法运算是作为密态数据的加密后的前向梯度FGj与作为明文数据Xj的特定数据之间进行乘法运算。这里,出于表述简洁的目的,在公式(5)及下面相关描述中用同一个符号Xj来指代特定数据,但是应该理解为该特定数据可以是密态数据或者明文数据,取决于采用全同态加密或者半同态加密。但是,公式(5)所计算得到的乘法运算结果必然是加密后的也就是属于密态数据。在根据公式(5)计算得到针对特定数据Xj的密态乘法运算结果MULj后,可以通过公式(6)来求解公式(3)中的子集SM的损失函数LSM(θ)的梯度计算符。如上所述,将公式(3)中的针对子集SM中的特定数据Xj的计算依次展开成按照公式(4)计算针对特定数据Xj的前向梯度FGj,然后根据公式(5)计算针对特定数据Xj的密态乘法运算结果MULj,最后根据公式(6)来基于密态乘法运算结果MULj和掩码Mj完成特定数据Xj的掩码累加运算。这里,公式(6)的掩码累加运算主要是根据掩码Mj确定是否有数据重叠并进行相应掩码累加运算以得到针对特定数据Xj的掩码累加运算结果,以及对子集SM中的所有数据进行遍历也就是进行次数与子集SM的样本总数SM一致的迭代计算或循环,在每次迭代计算或循环中均完成针对相应数据的掩码累加运算,其中涉及到密态加法运算、密态乘法运算、掩码累加运算,从而求解子集SM的损失函数LSM(θ)的梯度计算符。应当理解的是,公式(6)所示的掩码累加运算,可以按照任意合适的方式展开,只要满足公式(6)所示的数学关系。在一种可能的实施方式中,可以先进行累加运算再进行掩码计算。并且,考虑到掩码是用于指示数据重叠情况,因此一个参与方有可能通过掩码而推测出另一个参与方的数据重叠情况也就是推测出另一个参与方可能持有哪些私有数据,因此掩码计算可以理解成解密运算的一部分。而在公式(3)和公式(6)的基础上,可以结合上述论文中提到的损失函数计算公式来求得损失函数,从而可以通过随机梯度下降法来实现更新模型参数。应当理解的是,对于各个参与方来说,因为是在联邦学习和隐私计算的应用场景下,在根据公式(6)来求解子集SM的损失函数LSM(θ)的梯度计算符从而得到梯度后,该梯度也是处于加密后状态也就是密态数据,为此还需要各个参与方进行解密运算或者由裁决方进行解密运算从而得到用于更新模型参数的梯度。下面结合上述公式(1)至公式(6)以及相关的细节来说明异构加速方法100的各个步骤。具体地,异构加速方法100包括以下步骤。

步骤S102:第一参与方和第二参与方根据各自的特征数据进行明文运算和加密运算分别得到第一参与方的加密后模型参数和第二参与方的加密后模型参数,其中,所述特征数据是数据集的mini-batch子集中的数据,所述第一参与方和所述第二参与方分别持有所述mini-batch子集的一部分数据。

其中,相关细节可以参考上述关于公式(1)和公式(2)的说明。在纵向联邦逻辑回归学习或者相似的应用场景中,设数据集S分成第一部分和第二部分,第一参与方持有数据集S的第一部分,第二参与方持有数据集S的第二部分,或者,所述第一参与方和所述第二参与方分别持有所述mini-batch子集的一部分数据。应当理解的是,第一参与方和第二参与方是相对的概念,用于在联邦学习的场景下指示持有私有数据的参与方且该参与方不希望泄露私有数据给其它参与方。第一参与方可以是扮演Guest方、Host方、裁决方(Arbiter)或者任意合适角色。相对的,第二参与方也可以是扮演任意合适的角色,只要第一参与方和第二参与方可以进行加密后的特征数据的交换并最终求解出联邦学习模型的损失函数。应当理解的是,虽然异构加速方法100以两个参与方也就是第一参与方和第二参与方为例子,但是也适用于三个或者更多个参与方的情况,但是因为涉及到明文运算和加密运算,所以必须由各个参与方在本地进行明文运算和加密运算分别得到各个参与方的加密后模型参数。另外,通过mini-batch技术将数据集S分割成多个子集,该特征数据是多个子集中的一个子集的数据。

步骤S104:所述第一参与方或者所述第二参与方,对所述第一参与方的加密后模型参数和所述第二参与方的加密后模型参数进行密态加法运算得到与所述特征数据相对应的前向梯度。

其中,相关细节可以参考上述关于公式(3)和公式(4)的说明。应当理解的是,在步骤S102处,必须由各个参与方在本地进行明文运算和加密运算而分别得到各个参与方的加密后模型参数。但是,在步骤S104处,因为前向梯度是在各个参与方之间共享的,例如在上述的Hetero-LR的学习过程中共享的梯度因子,所以步骤S104的密态加法运算可以由任一合适的参与方来完成,而其它参与方可以通过通信或者任意合适技术手段将加密后模型参数发送给该参与方。因为是在加密后才发送,所以暴露的是密态数据,因此具有良好的安全性和隐私保护。而完成步骤S104处的密态加法运算的参与方,可以将计算得到的前向梯度与其它参与方共享以进行下一步骤。

步骤S106:所述第一参与方和所述第二参与方分别对所述前向梯度和各自的特征数据进行乘法运算,得到与各自的特征数据相对应的密态乘法运算结果。

其中,相关细节可以参考上述关于公式(3)和公式(5)的说明。应当理解的是,在步骤S102处,因为涉及到加密运算,出于隐私和安全的考虑,必须由各个参与方在本地进行明文运算和加密运算而分别得到各个参与方的加密后模型参数。在步骤S104处,密态加法运算可以由任一参与方完成。在步骤S106处,取决于加密算法采用的是全同态加密或者半同态加密,在步骤S106处用于乘法运算的特征数据,参考上述用于公式(5)的乘法运算的特定数据,可以是密态数据(对应全同态加密)或者明文数据(对应半同态加密)。当加密算法采用的是全同态加密,这意味着不仅前向梯度是在加密后作为密态数据而在各个参与方之间共享的,特征数据也是加密后作为密态数据用于通信,因此在步骤S106处的密态乘法运算是两个密态数据之间的密态乘法运算,因此可以由任一合适的参与方来完成,而其它参与方可以通过通信或者任意合适技术手段将加密后的特征数据发送给该参与方。例如,在上述的Hetero-LR的学习过程中Host方将加密后的Host方的特征数据发送给Guest方。当加密算法采用的是半同态加密,这意味着前向梯度是密态数据而特征数据是明文数据,因此适合在本地进行步骤S106的乘法运算,也就是各个参与方之间可以共享作为密态数据的前向梯度,而各个参与方,例如第一参与方和第二参与方,分别对所述前向梯度和各自的特征数据进行乘法运算,得到与各自的特征数据相对应的密态乘法运算结果。仅处于示例性的目的,步骤S106针对半同态加密算法的情况也就是特征数据作为明文数据参与乘法运算的情况,但是在另一些示例性实施例中,步骤S106也可以被替换成上述的全同态加密算法的情况。应当理解的是,无论加密算法是全同态加密算法还是半同态加密算法,或者说无论在步骤S106是对作为密态数据的特征数据还是对作为明文数据的特征数据进行乘法运算,在步骤S106计算得到的乘法运算结果必然是加密后的也就是属于密态数据。

步骤S108:对所述密态乘法运算结果和与所述特征数据相对应的掩码进行掩码累加运算,得到与所述特征数据相对应的掩码累加运算结果,并更新与所述mini-batch子集相对应的损失函数的梯度计算结果,其中所述掩码累加运算的累加计算部分通过所述第一参与方或者所述第二参与方,所述掩码累加运算的掩码计算部分通过Arbiter方或者得到Arbiter方授权的参与方。

其中,相关细节可以参考上述关于公式(3)和公式(6)的说明。应当理解的是,在步骤S102处,必须由各个参与方在本地进行明文运算和加密运算而分别得到各个参与方的加密后模型参数。在步骤S104处,密态加法运算可以由任一参与方完成。在步骤S106处,当加密算法是半同态加密算法时,适合在本地进行乘法运算。另外,在步骤S106计算得到的乘法运算结果必然是加密后也就是属于密态数据。应当理解的是,在步骤S108处的掩码累加运算,可以按照任意合适的方式展开,只要满足公式(6)所示的数学关系。在一种可能的实施方式中,可以先进行累加运算再进行掩码计算。并且,考虑到掩码是用于指示数据重叠情况,因此一个参与方有可能通过掩码而推测出另一个参与方的数据重叠情况也就是推测出另一个参与方可能持有哪些私有数据,因此掩码计算或者说公式(6)所示的掩码累加运算可以理解成解密运算的一部分。具体地,针对数据集的mini-batch子集中的每一个数据,得到每一个数据的掩码累加运算结果,并更新公式(6)所示的梯度计算结果。当全部数据的掩码累加运算结果计算完成则完成了mini-batch子集的损失函数的梯度计算,得到mini-batch子集的梯度。这里,对数据集的mini-batch子集中的每一个数据进行遍历,意味着参考公式(6)中对子集SM中的所有数据进行遍历。如此,针对mini-batch子集中的特定数据的计算依次包括:在步骤S102处根据该特定数据进行明文运算和加密运算得到加密后模型参数;然后在步骤S104处进行密态加法运算得到针对该特定数据的前向梯度;再然后在步骤S106处进行乘法运算得到针对该特定数据的密态乘法运算结果;再然后在步骤S108处进行掩码累加运算得到与所述特征数据相对应的掩码累加运算结果从而更新mini-batch子集的损失函数的梯度计算。其中,在步骤S108处的掩码累加运算中的累加计算部分是密态数据之间的加法,因此可以由任一参与方完成。至于掩码累加运算中的掩码计算部分,考虑到掩码是用于指示数据重叠情况,并且一个参与方有可能通过掩码而推测出另一个参与方的数据重叠情况也就是推测出另一个参与方可能持有哪些私有数据,因此出于数据安全和隐私性考虑,掩码累加运算中的掩码计算部分适合通过Arbiter方或者得到Arbiter方授权的参与方来完成。

因此,在步骤S102处,由各个参与方在本地进行明文运算和加密运算分别得到各个参与方的加密后模型参数。在步骤S104处,由任一参与方进行密态加法运算得到前向梯度,前向梯度是作为密态数据。在步骤S106处,当加密算法是半同态加密算法时适合各个参与方在本地进行乘法运算,并且在步骤S106计算得到的乘法运算结果必然是加密后也就是属于密态数据。在步骤S108处,掩码累加运算中的累加计算部分可以由任一参与方完成而掩码累加运算中的掩码计算部分适合通过Arbiter方或者得到Arbiter方授权的参与方来完成。总之,步骤S102必须在本地完成,步骤S104可以在本地或者非本地完成,步骤S106也适合在本地完成,步骤S108中的累加计算部分可以在本地或者非本地完成而掩码计算部分适合在Arbiter方完成。如此,本地完成意味着调用本地资源而非本地完成意味着可以调用非本地资源也就是其它参与方的计算资源。通过上述公式(1)至公式(6)的拆分,以及上述步骤S102至步骤S108的说明,可以得出适合于非本地完成的计算包括:步骤S104处的密态加法运算以及步骤S108处的掩码累加运算中的累加计算部分。这些适合非本地完成的计算可以通过调用其它参与方的计算资源来完成。因此,通过调用各个参与方的整体上的空闲计算资源,可以协调完成上述的各种运算,从而提高联邦学习任务的整体资源利用效率和计算性能。

另外,结合上述的公式(1)至公式(6)以及步骤S102至步骤S108可知,明文运算涉及到较复杂的实现需求,而加密运算、解密运算、密态加法运算以及密态乘法运算这四种特定算子操作可以简化成向量级运算也适合通过算子并行化进行加速处理。这意味着可以通过异构加速的方式例如采用异构计算架构来提高整体计算效率。这里,异构计算(heterogenous computing)或称之为异构运算,指的是使用不同类型的指令集或者不同的体系架构的计算单元来组成系统进行计算的方式。用于异构计算的一种计算单元是中央处理器CPU。CPU一般采用基于控制流的指令集体系,通过指令集来执行计算机的软件层操作和数据运算,适用于执行具有不规则数据结构且逻辑复杂灵活的串行程序。用于异构计算的另一种计算单元是图形处理器GPU,GPU适用于大规模并行运算特别是用于密集计算且高度并行化的计算任务。用于异构计算的计算单元还可以是专用集成电路(Application-Specific Integrated Circuit,ASIC),ASIC是针对特定需求而设计制造的专用硬件电路。用于异构计算的计算单元还可以是现场可编程逻辑门阵列(Field Programmable GateArray,FPGA),FPGA提供细粒度的可编程硬件逻辑计算和存储单元,根据算法需求以静态全局重构的方式定制化设计计算通路结构。用于异构计算的计算单元还可以是可重构计算(Coarse-grained Reconfigurable Architecture,CGRA),CGRA让功能配置好的硬件资源互连形成可配置的计算部分,通过配置信息来使计算部分重构为不同的计算通路,从而实现对硬件结构的动态配置并简化互连配置。其它用于异构计算的计算单元可以是基于数字信号处理(Digital Signal Processing,DSP)或者任意适合技术的计算装置。本申请所提及的异构计算架构可以理解成包括至少两种计算单元,该至少两种计算单元分别在以下至少一个方面上不相同:指令集、指令体系、硬件架构、控制流、数据流、可重构性特别是动态可重构性,以及其它任意适合的指标或者特征,并且本申请旨在包括在本申请提交或公布之后随着异构计算这一概念的演变而被包括在异构计算的概念相关理解中的特征。

请继续参阅图1,在一种可能的实施方式中,异构加速方法100可以采用CPU-GPU联合加速方法也就是CPU-GPU的异构计算架构。如上所述,加密运算、解密运算、密态加法运算以及密态乘法运算这四种特定算子操作可以简化成向量级运算也适合通过算子并行化进行加速处理。具体地,步骤S102处的明文运算涉及到较高复杂度的运算也往往要应对变化多端的数据结构例如数据位宽等,因此适合于通过CPU来实现。关于后续的操作,包括在步骤S102处进行的加密运算,在步骤S104处进行的密态加法运算并得到针对该特定数据的前向梯度,在步骤S106处进行的密态乘法运算及得到针对该特定数据的密态乘法运算结果,在步骤S108处进行的掩码累加运算中的累加计算及得到与所述特征数据相对应的掩码累加运算结果,以及解密运算操作,这些操作中的每一个操作都是符合密集计算且高度并行化的特点,因此适合于通过GPU来实现。如此,结合上述的公式(1)至公式(6)以及步骤S102至步骤S108,通过对纵向联邦逻辑回归学习如上述的Hetero-LR的学习过程中所用到的梯度求解的算法进行拆分,特别是将基于mini-batch技术将数据集分割成若干份子集后进行某个mini-batch子集的损失函数的梯度计算的算法进行拆分,从而将纵向联邦逻辑回归学习的梯度求解算法的计算任务分割成适合CPU来执行的较复杂的串行任务和适合GPU来执行的高度并行任务。如此,通过将Hetero-LR计算过程中的一次迭代计算所包括的各种复杂计算任务进行拆分得到原子级别的算子操作如明文运算、加密运算、解密运算、密态加法运算以及密态乘法运算,有利于通过并行加速来提高整体计算效率例如通过多个GPU并行处理的方式,同时也有利于CPU-GPU的异构计算架构来实现加速目的。并且,相对于全部通过CPU来实现的方式例如当前流行的开源框架FATE,本申请实施例所公开的CPU-GPU的异构计算架构以及对计算任务的拆分方式可以避免在多个参与方的情况下因密态运算耗时长以及停等式计算任务(也即一方必须等待另一方计算完成)而导致的整体计算任务完成时间过长。另外,相对于全部通过GPU来实现的方式例如将数据集的子集整个拷贝到GPU的显存后通过GPU的计算资源同时计算的做法,本申请实施例所公开的CPU-GPU的异构计算架构以及对计算任务的拆分方式可以将明文运算作为适合CPU来执行的较复杂的串行任务,并将上述的加密运算、解密运算、密态加法运算、密态乘法运算作为适合GPU来执行的高度并行任务,这样就使得GPU在处理计算任务时不会包含串行步骤也不需要应对复杂度较高且数据结构多变的运算,从而简化了GPU的设计难度和硬件结构,有效提高了GPU的资源效率,达到更好的并行加速效果。并且,本申请实施例所公开的计算任务的拆分方式,还可以有效的减少负责不同的运算的计算单元之间的数据交互,这是因为上述的步骤S102至步骤S108需要依次序逐个步骤执行并且每个步骤所对应的运算可以分配给不同的计算单元执行,例如密态加法运算、密态乘法运算、掩码累加运算分别由密态加法模块、密态乘法模块以及累加模块完成。另外加密运算和解密运算其中的向量计算部分可以利用GPU进行并行化加速,因此,加密运算和解密运算可以通过GPU并行化处理其中的向量计算部分。如此,通过本申请实施例所公开的计算任务的拆分方式以及相应的CPU-GPU的异构计算架构,可以实现仅将密文状态下的向量计算任务(包括加密运算和解密运算中的向量计算部分,还有密态加法运算、密态乘法运算、掩码累加运算)交给GPU完成,并将其它计算任务交给CPU完成,从而充分发挥了CPU-GPU的异构计算架构的优势。总之,本申请所公开的异构加速方法100结合在算子化优化和异构加速方面的改进,提高了整体计算效率和节省资源。

并且,如上所述,针对将该特定数据作为私有数据而持有的参与方而言,步骤S102必须在本地完成,通过上述公式(1)至公式(6)的拆分,以及上述步骤S102至步骤S108的说明,可以得出适合于非本地完成的计算包括:步骤S104处的密态加法运算以及步骤S108处的掩码累加运算中的累加计算部分。这意味着,步骤S104处的密态加法运算以及步骤S108处的掩码累加运算中的累加计算部分,不仅可以通过本地的GPU来执行,还可以通过非本地的GPU例如另一参与方的GPU来执行,从而可以灵活调用不同参与方各自的GPU,并且共享相关的中间计算结果。这样可以将多个参与方各自的GPU看成一个计算资源池或者称之为共享GPU池,而这些可以通过本地或者非本地的GPU来执行的高度并行任务则通过共享GPU池内空闲的GPU来并行执行,从而进一步提升资源利用效率。

此外,本申请所公开的异构加速方法100还可以包括数据结构方面的改进,从而进一步提高整体计算效率。如上所述,明文运算和加密运算以及在梯度计算完成后所需的解密运算需要在本地完成也就是由持有私有数据的参与方的计算资源也即本地计算资源来完成基于该私有数据的明文运算和加密运算,并将加密后的密态数据交换给本地或者非本地的GPU,以及由本地计算资源来完成解密运算从而得到梯度用于更新模型参数。这里,因为用来交互的是密态数据,往往有较大的数据规格,例如原始数据为一个浮点数但是加密后的密态数据位宽可以是1024比特。而且,与CPU对应的存储器中的数据一般以离散的方式存储,而GPU显存中的数据一般以连续的方式存储例如batch类数据格式。为了提高数据交互方面的效率,在异构加速方法100中,涉及到CPU与GPU之间的数据交互,可以通过直接交换指针的方式。具体地,在一种可能的实施方式中,先对与CPU对应的存储器中的离散数据进行数据拼接,然后将拼接后数据拷贝到GPU的显存中,获得GPU显存指针,该GPU显存指针指向在GPU显存中从CPU拷贝而来的数据。这样,只需要对在CPU侧的离散数据进行一次数据拼接操作,然后将拼接后数据拷贝到GPU显存,就可以建立起拼接后的数据与GPU显存指针之间的映射关系,从而可以通过GPU显存指针获得GPU侧的数据。这样改进后的数据交互方式特别是指针交互方式,使得后续的CPU-GPU交互中可以不需要再进行离散数据的拼接操作,有利于降低损耗。在另一种可能的实施方式中,可以将CPU侧的离散数据进行重新排布以使得连续存储在CPU侧,但是在后续的CPU-GPU交互中仍需要对连续存储的数据进行整体拷贝。因此,CPU与GPU之间的数据交互通过直接交换指针的方式,可以仅需要进行一次数据拼接操作就在后续的数据拷贝等方面降低了损耗。以加密运算和解密运算为例子,可以通过在封装底层配置加密算子和解密算子,其中加密运算与解密运算使用矩阵方式完成,例如根据矩阵中的行分配计算单元以实现并行加速或者通过其它合适的优化的矩阵运算的处理器。封装明文条件下的矩阵加、矩阵乘、矩阵点乘则通过Python中的重载算符方法实现。在CPU侧例如CPU的内存中,Python类承载包括:GPU显存指针、公钥等非指针类数据以及用于将GPU中恢复至CPU侧的nparray或者tensor承载。如此,封装密文条件下的矩阵加、矩阵乘、矩阵点乘,通过Python中的重载算符方法实现。Python类承载中的GPU显存指针用于指向在GPU显存中从CPU拷贝而来的数据,而nparray或者tensor承载可用于从GPU恢复数据至CPU侧。结合上述的基于mini-batch技术的分割可知,在通过CPU对数据集进行基于mini-batch技术的分割得到若干个子集后,每个子集可以表示成矩阵,其中行数据包括编号、特征向量和标签。将该矩阵形式的子集可以从CPU侧拷贝到GPU显存中,将指向GPU显存中的该矩阵形式的子集的GPU显存指针存储在CPU的Python类承载中,并形成加密算子和解密算子,接着将GPU显存指针添加到数据中例如数据头部的区间,从而完成基于指针交换的CPU-GPU之间的数据交互。并且,通过重载算符和定义算子层的方式,可以仅交换指针而不涉及具体数据拷贝,还可以通过nparray或者tensor承载实现数据恢复,从而降低损耗。

应当理解的是,本申请实施例所公开的异构加速方法100可以采用CPU-GPU联合加速方法也就是CPU-GPU的异构计算架构,只是异构加速方法100可能采用的异构计算架构中一种实施方式。异构加速方法100还可以采用其它组合或者结合的异构计算架构,只要根据对计算任务的拆分方式而相应配置合适的计算单元,从而分别针对较复杂的串行任务配置串行计算单元和高度并行任务配置并行计算单元,从而在整体上形成合适的具有异构计算架构的系统。例如,可以将明文运算通过适合处理复杂运算和多变数据规格但仍针对联邦学习和隐私计算的应用场景做出优化的计算单元来执行,如精简指令集计算机(ReducedInstruction Set Computing,RISC)或者微芯片等。同时将加密运算、解密运算、密态加法运算、密态乘法运算、掩码累加运算,通过适合处理高度并行化任务的计算单元来执行,如用于纵向联邦逻辑回归学习的ASIC或者针对矩阵运算优化的FPGA。也就是说,异构加速方法100可以采用例如适合处理复杂串行任务的微芯片与适合处理高度并行化任务的ASIC的组合的异构计算架构或者其它任意合适的异构计算架构。这些可以根据实际需求和实际应用场景,在此不做具体限定。

请参阅图2,图2示出了本申请实施例提供的用于图1所示的异构加速方法的异构加速装置的结构框图。如图2所示,异构加速装置200包括数据分割模块202,明文运算模块204,模型更新模块206,交互计算部210和密态向量计算部220。交互计算部210包括加密运算模块212和解密运算模块214。密态向量计算部220包括密态加法模块222,密态乘法模块224以及累加运算模块226。其中,数据分割模块202用于通过mini-batch技术将训练数据或者数据集分割成若干份子集(例如分割成等量的子集),从而可以针对每一个子集进行梯度下降。结合图1和图2,数据分割模块202配置成接收数据集S并通过mini-batch技术将数据集S分割成若干份子集。数据分割模块202将分割得到的子集发送给明文运算模块204以针对每一个子集求解梯度,例如将子集SM发送给明文运算模块204。明文运算模块204用于根据特征数据进行明文运算,也就是计算出与异构加速装置200相对应的参与方的模型参数,例如针对特征数据Xi的模型参数θTXi。因为涉及到参与方的私有数据,因此明文运算模块204必须在本地运行。明文运算模块204将计算得到的模型参数发送给交互计算部210中的加密运算模块212。加密运算模块212用于进行加密运算得到加密后模型参数。因此,明文运算模块204和交互计算部210中的加密运算模块212一起用于执行图1所示的异构加速方法100中的步骤S102,也就是第一参与方和第二参与方根据各自的特征数据进行明文运算和加密运算分别得到第一参与方的加密后模型参数和第二参与方的加密后模型参数。这里,第一参与方或者第二参与方可以理解为与异构加速装置200相对应的参与方。如上所述,明文运算适合于通过CPU来实现,而加密运算中的向量计算部分可以利用GPU进行并行化加速。因此,图2中的明文运算模块204适合于通过CPU来实现相应的明文运算,而加密运算模块212则适合于通过GPU来实现加密运算中的向量计算部分,因此加密运算模块212所在的交互计算部210指的是适用于在CPU和GPU之间进行数据交互。加密运算模块212在得到加密后模型参数后,将该加密后模型参数发送给密态向量计算部220的密态加法模块222。密态加法模块222用于执行图1所示的异构加速方法100中的步骤S104,也就是对第一参与方的加密后模型参数和第二参与方的加密后模型参数进行密态加法运算得到与所述特征数据相对应的前向梯度。密态加法模块222将得到的前向梯度发送给密态乘法模块224。密态乘法模块224用于执行图1所示的异构加速方法100中的步骤S106,也就是对与所述特征数据相对应的前向梯度和该特征数据进行乘法运算,得到与所述特征数据相对应的密态乘法运算结果。应当理解的是,当加密算法采用的是半同态加密,这意味着前向梯度是密态数据而特征数据是明文数据,因此适合在本地进行步骤S106的乘法运算,这意味着密态乘法模块224必须在本地运行。密态乘法模块224将得到的密态乘法运算结果发送给累加运算模块226。累加运算模块226用于执行图1所示的异构加速方法100中的步骤S108,也就是对与所述特征数据相对应的密态乘法运算结果和与所述特征数据相对应的进行掩码累加运算,得到与所述特征数据相对应的掩码累加运算结果,从而完成mini-batch子集的损失函数的梯度计算。在一种可能的实施方式中,因为掩码是用于指示数据重叠情况,并且一个参与方有可能通过掩码而推测出另一个参与方的数据重叠情况也就是推测出另一个参与方可能持有哪些私有数据,因此出于数据安全和隐私性考虑,掩码累加运算中的掩码计算部分可以理解成解密运算的一部分。也就是说,累加运算模块226仅处理掩码累加运算中的累加计算部分,而掩码累加运算中的掩码计算部分通过解密运算模块214完成,或者,掩码累加运算中的掩码计算部分通过异构加速装置200外部完成(通过Arbiter方或者得到Arbiter方授权的参与方来完成)。应当理解的是,由明文运算模块204,加密运算模块212,密态加法模块222,密态乘法模块224以及累加运算模块226所组成的模块组合,可以用于进行步骤S102至步骤S108中所提及的,针对数据集的mini-batch子集中的每一个数据,得到每一个数据的掩码累加运算结果并完成梯度计算。其中,累加运算模块226所得出的梯度是密态下的梯度,累加运算模块226将密态下的梯度发送给交互计算部210的解密运算模块214。解密运算模块214对密态下的梯度进行解密得到解密后的梯度,再将解密后的梯度发送给模型更新模块206。模型更新模块206根据梯度进行模型更新。与加密运算模块212适合于通过GPU来实现加密运算中的向量计算部分相似,解密运算中的向量计算部分也可以利用GPU进行并行化加速。因此,图2中的解密运算模块214适合于通过GPU来实现解密运算中的向量计算部分,解密运算模块214所在的交互计算部210指的是适用于在CPU和GPU之间进行数据交互。如此,通过本申请实施例所公开的计算任务的拆分方式以及相应的CPU-GPU的异构计算架构,可以实现仅将密文状态下的向量计算任务(包括加密运算和解密运算中的向量计算部分,还有密态加法运算、密态乘法运算、掩码累加运算)交给GPU完成,并将其它计算任务交给CPU完成,从而充分发挥了CPU-GPU的异构计算架构的优势。

请继续参阅图2,对于特定参与方的异构加速装置200而言,该异构加速装置200的明文运算模块204涉及该特定参与方的私有数据,因此明文运算模块204和相应的明文运算必须在该特定参与方处进行也就是本地进行。而加密运算模块212和相应的加密运算,以及解密运算模块214和相应的解密运算,因为涉及到对明文运算模块204所输出的该特定参与方的模型参数(未加密)进行加密和对累加运算模块226所输出的密态下的梯度进行解密,所以也必须在该特定参与方处进行也就是本地进行。不同于明文运算模块204适合于通过CPU进行串行处理也就是通过该特定参与方的CPU计算资源处理,交互计算部210所包括的加密运算模块212和解密运算模块214可以利用GPU并行化加速来处理其中的向量计算部分也就是通过该特定参与方的GPU计算资源处理。因此,对于特定参与方而言,明文运算、加密运算和解密运算都是通过该特定参与方的计算资源处理,也即通过本地的CPU-GPU异构计算架构所包括的计算单元来处理,并且其中加密运算和解密运算都需要CPU与GPU之间的数据交互。

相对的,密态向量计算部220所包括的密态加法模块222,密态乘法模块224以及累加运算模块226,分别对应图1所示的在步骤S104处进行密态加法运算得到针对该特定数据的前向梯度,在步骤S106处进行密态乘法运算得到针对该特定数据的密态乘法运算结果,以及在步骤S108处进行掩码累加运算得到与所述特征数据相对应的掩码累加运算结果。如上所述,针对将该特定数据作为私有数据而持有的参与方而言,通过上述公式(1)至公式(6)的拆分,以及上述步骤S102至步骤S108的说明,可以得出适合于非本地完成的计算包括:步骤S104处的密态加法运算以及步骤S108处的掩码累加运算中的累加计算部分。因此,密态向量计算部220所包括的密态加法模块222以及累加运算模块226所负责的累加计算部分,这些模块和功能可以利用本地计算资源完成也可以通过非本地的计算资源完成,而且这些模块自身也可以用于完成其它参与方的计算任务。因此,密态加法模块222和负责累加计算部分的累加运算模块226可以理解为特定参与方的异构加速装置200对外共享的计算资源,也就是该特定参与方对共享GPU池的贡献。另外,假设将掩码累加运算中的掩码计算部分理解为解密计算的一部分,则累加运算模块226只负责累加计算部分,这意味着密态加法模块222和累加运算模块226都是对外共享的计算资源。换句话说,异构加速装置200的密态向量计算部220不仅通过GPU并行化加速向量计算,而且可以用于与其它参与方的异构加速装置中类似的密态向量计算部一起形成共享的计算资源池。假设还有另一个参与方与该特定参与方一起协同训练联邦学习模型,可以通过该另一个参与方处也即非本地的计算资源来执行本应由密态向量计算部220所包括的密态加法模块222以及累加运算模块226来完成的计算任务。如此,可以通过本地或者非本地的GPU来执行的高度并行任务则通过共享GPU池内空闲的GPU来并行执行,从而进一步提升资源利用效率。

请参阅图3,图3示出了本申请实施例提供的一种实施方式的多参与方的异构加速系统的框图。如图2所示,异构加速系统300包括两个参与方,分别具有异构加速装置310和异构加速装置320。例如,该两个参与方可以是纵向联邦学习的场景下如上述的Hetero-LR的学习过程中的成对的Host方和Guest方,并且出于表述简洁的目的在图3中没有示出裁决方(Arbiter)。如上所述,在该两个参与方也就是Host方和Guest方进行纵向逻辑回归学习过程中,需要Host方和Guest方各自计算加密后的特征数据以及根据梯度因子求解加密后的梯度。其中,异构加速装置310和异构加速装置320可以被理解为分别具有与图2所示的异构加速装置200类似的结构和功能,也用于执行图1所示的异构加速方法100。其中,异构加速装置310包括数据分割模块311,明文运算模块312,交互计算部313,密态向量计算部314以及模型更新模块315。这些模块的结构和功能可以参考图2中所示的相同名称的模块及有关说明,在此不再赘述。类似地,异构加速装置320包括数据分割模块321,明文运算模块322,交互计算部323,密态向量计算部324以及模型更新模块325。这些模块的结构和功能可以参考图2中所示的相同名称的模块及有关说明,在此不再赘述。应当理解的是,异构加速装置310的密态向量计算部314和异构加速装置320的密态向量计算部324一起组成计算资源池302。这意味着,异构加速装置310可以通过自身的密态向量计算部314来进行GPU并行化加速向量计算,包括进行步骤S104的密态加法运算、步骤S106的密态乘法运算以及步骤S108的掩码累加运算,也就是在本地完成向量计算任务;或者,异构加速装置310可以通过另一个参与方的异构加速装置320的密态向量计算部324来完成这些向量计算任务。对于该两个参与方而言,计算资源池302的GPU计算资源是共享的,可以通过共享GPU池内空闲的GPU来并行执行计算任务,从而进一步提升资源利用效率。

请参阅图4,图4示出了本申请实施例提供的另一种实施方式的多参与方的异构加速系统的框图。图4所示的异构加速系统400涉及三个参与方,分别具有异构加速装置410和其中的密态向量计算部412,异构加速装置420和其中的密态向量计算部422,异构加速装置430和其中的密态向量计算部432。图4所示的各个密态向量计算部分别用于在本地完成各自所在的异构加速装置的向量计算任务,包括用于各个参与方分别执行图1所示的步骤S104的密态加法运算、步骤S106的密态乘法运算以及步骤S108的掩码累加运算。而密态向量计算部412、密态向量计算部422以及密态向量计算部432一起组成计算资源池402,对于三个参与方中的任一参与方而言,原本由该参与方本地的密态向量计算部来完成的向量计算任务,可以由在计算资源池402中空闲的计算资源来完成,如此通过共享计算资源池402内空闲的GPU来并行执行,从而进一步提升资源利用效率。

请参阅图3和图4,图3说明了包括两个参与方(未示出裁决方)的情况而图4说明了包括三个参与方的情况。当存在多于三个的更多个参与方的情况,特别是纵向联邦学习的场景下,可能涉及上百个参与方一起参与同一个纵向联邦逻辑回归学习过程。这些参与方有许多相同的实体但是不同的特征。可以参考上述的Hetero-LR的学习过程,每两个参与方作为成对的Host方和Guest方进行上述的训练过程,或者拓展后包括更多的参与方进行加密后的特征数据的交换、梯度因子的计算以及各自的加密后梯度的求解等,这些可以根据实际需要和应用场景进行调整,在此不做具体限定。

请参阅图1至图4,结合上述的公式(1)至公式(6),本申请实施例提供了,对纵向联邦逻辑回归学习如上述的Hetero-LR的学习过程中所用到的梯度求解的算法进行拆分,特别是将基于mini-batch技术将数据集分割成若干份子集后进行某个mini-batch子集的损失函数的梯度计算的算法进行拆分,从而将纵向联邦逻辑回归学习的梯度求解算法的计算任务分割成适合CPU来执行的较复杂的串行任务和适合GPU来执行的高度并行任务。具体地,将Hetero-LR计算过程中的一次迭代计算所包括的各种复杂计算任务进行拆分得到原子级别的算子操作如明文运算、加密运算、解密运算、密态加法运算以及密态乘法运算,有利于通过并行加速来提高整体计算效率例如通过多个GPU并行处理的方式,同时也有利于CPU-GPU的异构计算架构来实现加速目的。其中,明文运算作为适合CPU来执行的较复杂的串行任务,而四种特定算子操作也就是加密运算、解密运算、密态加法运算以及密态乘法运算均适合被简化成向量级运算也适合通过算子并行化进行加速处理例如通过多个GPU。这样拆分得到的原子级别的算子操作在软件层操作和电路实现上具有结构简单、利用效率高等优点,适合应对不同的应用场景和硬件平台的需求。另外,通过拆分得到多个原子级的算子操作,其中的密态加法运算和掩码累加运算中的累加计算部分可以在本地完成或者在非本地完成,从而使得不仅可以通过算子并行化加速处理还可以利用其它参与方的计算资源来协调完成原本由本地计算资源完成的计算,从而提高联邦学习任务的整体资源利用效率和计算性能。并且,其中的掩码累加运算中的掩码计算部分可以单独列出来,并通过Arbiter方完成,从而进一步提高隐私安全。并且,图2至图4中所示出的各个参与方的密态向量计算部,其中的密态加法模块和累加运算模块可以理解为各个参与方对外共享的计算资源,这些对外共享的计算资源构成如图4所示的计算资源池,并且可以根据资源利用率、系统负担等来选择计算资源池中合适的参与方的计算资源,从而有利于同一个联邦学习任务的各个参与方,例如上述的有多个Host方的Hetero-LR的学习过程,协调完成任务。

本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。

本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。

以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:数据标注系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类