CN112417478B - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112417478B CN112417478B CN202011331877.0A CN202011331877A CN112417478B CN 112417478 B CN112417478 B CN 112417478B CN 202011331877 A CN202011331877 A CN 202011331877A CN 112417478 B CN112417478 B CN 112417478B
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- encrypted
- processing result
- ith
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 20
- 101100446506 Mus musculus Fgf3 gene Proteins 0.000 description 35
- 101000767160 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) Intracellular protein transport protein USO1 Proteins 0.000 description 35
- 238000004364 calculation method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种数据处理方法、装置、设备及存储介质,方法包括:在可进行并行运算的平台上对待加密数据进行加密运算。对于参与加法运算的待加密数据和参考数据,分别划分为多个第一子数据、多个第二子数据。进行加法运算时,依次获得各第一子数据与相应位数的第二子数据的处理结果,实现串行处理。在获取当前第一子数据与相应位数的第二子数据的处理结果时,对位数低于当前第一子数据一位的第一子数据与相应位数的第二子数据的处理结果进行进位处理,并对之前获取的处理结果进行累加,实现串并行处理相结合,提高加法运算效率,从而提高加密效率,且降低处理器的资源占用率,使处理器有更多的资源去处理其他任务,提高处理器的整体效率。
Description
技术领域
本发明涉及计算机运算处理技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
随着大数据时代的到来,通过机器学习算法可以从大数据中挖掘出有用信息,因此,数据对于机器学习模型的质量有着至关重要的作用,如果能获取更多高质量的数据,训练出的模型性能越好。然而,数据常常包含了用户的隐私信息,需要在保护用户隐私的前提下获取用户数据。
作为一种新型的机器学习框架,联邦学习(Federated Learning)通过数据加密运算,保障数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。
为提高加密效果,联邦学习使用的加密方式为非对称加密,其中,非对称加密中参与计算的数据的位宽较大,比如256bit、512bit、1024bit,甚至更高,当参与计算的数据的位宽较大时,运算时间长、效率低。
发明内容
本发明的主要目的在于提供一种数据处理方法、装置、设备及存储介质,旨在提高联邦学习模型训练过程中对数据的加密效率。
为实现上述目的,本发明提供一种数据处理方法,应用于第一客户终端,数据处理方法包括:
根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果,所述第一子数据与所述第二子数据的位宽相同;
在获取当前第一子数据与所述参考数据中相应位数的第二子数据的处理结果时,根据位数低于所述当前第一子数据的每个第一子数据分别与所述参考数据中相应位数的第二子数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果;
根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果,所述目标处理结果用于所述待加密数据的加密,加密后的所述待加密数据用于联邦学习。
可选的,所述根据位数低于所述当前第一子数据的每个第一子数据分别与所述参考数据中相应位数的第二子数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,包括:
根据所述位数低于所述当前第一子数据的相邻第一子数据与所述参考数据中相应位数的第二子数据的处理结果,以及所述待加密数据中位数低于所述相邻第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果。
可选的,所述根据所述位数低于所述当前第一子数据的相邻第一子数据与所述参考数据中相应位数的第二子数据的处理结果,以及所述待加密数据中位数低于所述相邻第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,包括:
针对第i个第一子数据,根据第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,其中,i为大于或等于3,且小于或等于所述第一子数据的数量;
根据前i-2个第一子数据与所述参考数据中前i-2个第二子数据的处理结果,以及更新后的第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,获得前i-1个第一子数据与所述参考数据中前i-1个第二子数据的处理结果。
可选的,所述根据第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,包括:
确定所述第i-2个第一子数据与所述第i-2个第二子数据处理结果中位数与所述第i-2个第一子数据相对应的第三子数据;
若所述第三子数据小于所述第i-2个第一子数据,和/或,所述第三子数据小于所述第i-2个第二子数据,则对第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与所述参考数据中第i-1个处理结果。
可选的,所述根据第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,包括:
若根据第i-3个第一子数据与所述参考数据中第i-3个第二子数据的处理结果,已更新第i-2个第一子数据与所述参考数据中第i-2个第二子数据的第一类型处理结果,则根据更新后的第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果。
可选的,所述根据更新后的第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,包括:
确定所述第i-2个第一子数据与所述第i-2个第二子数据处理结果中位数与所述第i-2个第一子数据相对应的第三子数据,以及确定更新的第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果中位数与所述第i-2个第一子数据相对应的第四子数据;
若所述第四子数据小于所述第三子数据,则对第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与所述参考数据中第i-1个处理结果。
可选的,所述根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果之前,还包括:
从所述待加密数据的低位到高位的顺序,依次每隔所述第一子数据的位宽对所述待加密数据进行划分,获取每个第一子数据;
从所述参考数据的低位到高位的顺序,依次每隔所述第二子数据的位宽对所述待加密数据进行划分,获取每个第二子数据。
可选的,所述待加密数据包括如下的一项或多项:所述第一客户终端本地的训练用户数据、所述第一客户终端训练得到的联邦学习模型的模型参数、所述第一客户终端训练得到的联邦学习模型的梯度信息、所述第一客户终端训练得到的联邦学习模型的损失值;
其中,所述训练用户数据用于训练所述联邦学习模型。
可选的,所述根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果之前,还包括:
接收来自第二客户终端或服务器的请求消息,所述请求消息请求获取用于联邦学习的数据;
根据用于联邦学习的数据的加密方式,获取所述参考数据;
所述根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果之后,还包括:
根据所述目标处理结果,获得加密后的待加密数据;
将所述加密后的待加密数据发送给所述第二客户终端或者所述服务器。
可选的,所述处理结果为累加处理结果。
本发明还提供一种数据处理装置,应用于第一客户终端,装置包括:
迭代获取模块,用于根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果,所述第一子数据与所述第二子数据的位宽相同;
并行模块,用于在获取当前第一子数据与所述参考数据中相应位数的第二子数据的处理结果时,根据位数低于所述当前第一子数据的每个第一子数据分别与所述参考数据中相应位数的第二子数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果;还用于根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果,所述目标处理结果用于所述待加密数据的加密,加密后的所述待加密数据用于联邦学习。
本发明还提供一种模型训练设备,所述模型训练设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的模型训练程序,所述模型训练程序被所述处理器执行时实现如前述任一项所述的数据处理方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有模型训练程序,所述模型训练程序被处理器执行时实现如前述任一项所述的数据处理方法的步骤。
本发明提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如前述任一项所述的数据处理方法的步骤。
本发明中,在可进行并行运算的平台上对待加密数据进行加密运算,其中,对于加密运算中的加法运算,对于参与加法运算的高位宽的待加密数据和高位宽的参考数据,待加密数据是划分为由多个低位宽的第一子数据组成的数据,参考数据是划分为由多个低位宽的第二子数据组成的数据。这样,高位宽的待加密数据与高位宽的参考数据进行加法运算时,依次使每个第一子数据与参考数据中相应位数的第二子数据相加,获得每个第一子数据与参考数据中相应位数的第二子数据的处理结果,实现串行处理。以及,在获取当前第一子数据与参考数据中相应位数的第二子数据的处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据中相应位数的第二子数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中相应位数的部分数据的处理结果,从而实现了并行运算。最后,根据最高位第一子数据与最高位第二子数据的处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据中相应位数的部分数据的处理结果,获得目标处理结果。由此可知,本实施例在对待加密数据进行加法运算时,在串行处理的基础上,进行并行处理,提高加法运算效率,从而提高加密效率。
并且,对待加密数据进行加法运算时,将高位宽的待加密数据划分为由多个低位宽的第一子数据,将高位宽的参考数据划分为由多个低位宽的第二子数据,以采用串行处理和并行处理相结合的方式,降低处理器的资源占用率,以使处理器有更多的资源去处理其他任务,提高了处理器的整体效率。
附图说明
图1为本发明一实施例提供的应用场景示意图;
图2为本发明一实施例提供的数据处理方法的流程示意图;
图3为本发明一实施例提供的数据划分方式示意图;
图4为本发明另一实施例提供的数据处理方法的流程图;
图5为本发明另一实施例提供的数据处理方法的流程图;
图6为本发明一实施例提供的加法运算模式结构图;
图7为本发明一实施例提供的基于pipeline的计算流程示意图;
图8为本发明实施例提供的一种数据处理装置的结构示意图;
图9为本发明实施例提供的一种数据处理设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1为本发明一实施例提供的应用场景示意图。如图1所示,在图1所示的场景中,各客户终端联合训练一个机器学习模型,它们的业务***分别拥有各自用户的相关数据,出于数据隐私和安全考虑,各客户终端之间无法直接进行数据交换。因此,借助服务器进行加密训练,服务器可以与n个客户终端通信连接,用于实现联邦学习。
如图1所示,服务器向各个客户终端下发全局的联邦学习模型,联邦学习模型为机器学习模型,比如为卷积神经网络模型。每个客户终端利用本地数据,对服务器下发的联邦学习模型进行训练,得到联邦学习模型的模型参数。各个客户终端将各自训练得到的联邦学习模型的模型参数上传至服务器。服务器将各个客户终端上传的模型参数进行聚合,得到更新后的全局的联邦学习模型。依次重复上述过程,直至全局的联邦学习模型收敛为止。
其中,联邦学习模型的模型参数例如包括联邦学习模型的神经网络权重、联邦学习模型训练后损失函数的损失值中的一项或多项、联邦学习模型的梯度信息。
在联邦学习模型训练过程中,各客户终端之间也可以进行数据交互。例如,由于不同客户终端所拥有的用户数据不同,为提高客户终端的联邦学习模型的训练效果,客户终端之间进行用户数据的交流。又例如,各客户终端根据各自拥有的用户的相关数据对模型训练后获得的数据,例如,梯度值,或用来计算梯度值的数据。
客户终端向服务器发送数据,以及各客户终端之间进行数据交互时,为保证数据安全,客户终端需要在本地对数据进行加密,将加密后的数据发送给服务器,或者其他客户终端。
在联邦学习的技术框架下,通过分布式训练和数据加密,既能够满足用户隐私保护、数据安全的要求,又能够帮助多方机构进行数据使用和机器学习。
现有技术中,对数据的加密运算采用的方案是中央处理器(CPU)串行计算方式。又由于联邦学习使用的加密方式为非对称加密,其中,非对称加密中参与计算的数据的位宽较大,比如256bit、512bit、1024bit,甚至更高。因此,采用CPU的串行加密方式进行数据加密运算时,运算时间长、效率低,占用较多的CPU资源。
因此,为解决现有技术中存在的技术问题,本发明提出一种数据处理方法,在实现并行加速的计算机硬件条件下,利用计算机硬件资源,提高加密运算中乘法运算效率。例如,计算机硬件平台可由CPU、图形处理器(Graphics Processing Unit,GPU)或其他类型的处理器(例如,数字信号处理(Digital Signal Process,DSP)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)芯片)组成。
例如,本发明的数据处理方法基于OpenCL(Open Computing Language,开放运算语言),OpenCL是一种面向异构***通用目的并行编程的开放的、跨平台的编程框架,基于OpenCL可实现并行运算。
本发明以计算机硬件平台由CPU和GPU组成为例进行说明。在本发明的实施例中,基于OpenCL的数据处理方法,对于联邦学***台GPU上进行加密运算。
其中,对于加密运算中的加法运算,通过将参与加法运算的高位宽的待加密数据划分为多个低位宽的第一子数据,以及将与待加密数据进行加法运算的参考数据划分为多个低位宽的第二子数据,分别对处于相同位数的第一子数据和第二子数据进行加法运算,实现加法运算的并行化处理,提高加法运算效率,从而提高加密运算效率,降低对可并行计算平台GPU的资源占用率。并且,将数据加密运算迁移到可并行计算平台GPU上执行,降低对CPU资源的占用,使CPU可以有空闲资源去处理其他事物,提高CPU处理其他事物的速度。
下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
图2为本发明一实施例提供的数据处理方法的流程示意图。本实施例中方法的执行主体可以为电子设备中的可并行计算平台,例如,GPU、DSP、FPGA等,电子设备例如图1所示客户终端。本实施例中的方法可以通过软件、硬件或者软硬件结合的方式来实现。如图2所示,所述方法可以包括:
S201、根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与参考数据中相应位数的第二子数据的处理结果。
其中,第一子数据与第二子数据的位宽相同。
本步骤中,对于待加密数据,待加密数据例如可存储在第一客户终端的本地的存储器中。在存储器中,待加密数据通常以特定的数据格式存储在存储器中,例如浮点数格式。
可选的,待加密数据包括如下的一项或多项:第一客户终端本地的训练用户数据、第一客户终端训练得到的联邦学习模型的模型参数、第一客户终端训练得到的联邦学习模型的梯度信息、第一客户终端训练得到的联邦学习模型的损失值。
其中,训练用户数据包括第一客户终端管理的用户数据,在联邦学习中训练用户数据可以被第一客户终端用于训练联邦学习模型。例如,训练用户数据包括用户的年龄、职业、收入额、支出额、欠债额、信用度中的一项或多项。进一步的,待加密数据的数据内容比如可以包括图像信息、文本信息等,图像信息例如用户的脸部图像,文本信息例如用户的借款记录。
其中,第一客户终端训练得到的联邦学习模型的模型参数,是指第一客户终端基于训练用户数据训练得到的联邦学习模型的模型参数。
第一客户终端训练得到的联邦学习模型的梯度信息可以为梯度值,或者用于计算梯度值的数据。
在联邦学习模型训练过程中,第一客户终端从本地存储器中读取待加密数据,对待加密数据进行加密。其中,在计算机中,数据以二进制数进行运算,因此,从存储器中获得浮点数格式的待加密数据后,将待加密数据转换为二进制整数后进行加密运算。
可选的,CPU从存储器中获取浮点数格式的待加密数据,将待加密数据转换为二进制整数后,发送给GPU,以进行加密运算。
可选的,CPU从存储器中获取浮点数格式的待加密数据后,将浮点数格式的待加密数据发送给GPU,GPU将待加密数据转换为二进制整数,以进行加密运算。
在二进制格式的待加密数据进行加密运算时,加密运算过程涉及加、减、乘、除运算,因此,在对待加密数据进行乘法运算时,可能已经对待加密数据进行了加、减、乘、除的处理。因此,在该次进行乘法运算时,其实是对之前所进行的运算操作的结果进行乘法运算。其中,为了便于区分,在以下出现的待加密数据,除非另有说明,均理解为当前进行乘法运算的数据。
由于进行加密运算的待加密数据的位宽较大,比如256bit、512bit、1024bit,甚至更高,CPU在进行数据计算时采用串行计算方式,因此,进行乘法运算时,运算时间长、效率低,占用较多的CPU资源。因此,可将待加密数据划分为位宽较小的多个第一子数据,每个第一子数据的位宽相同。
可选的,第一子数据的位宽可为二进制整数中整型数的位宽。在二进制中,整型数包括短整型数和长整型数,短整型数的位宽为16位,长整型数的位宽为32为。所以,既可以划分得到一个或多个位宽为16位的子数据,也可以划分得到一个或多个位宽为32位的子数据。
可选的,CPU从存储器中获取浮点数格式的待加密数据,将待加密数据转换为二进制整数后,按照待加密数据中的比特数据从待加密数据的低位到待加密数据的高位的顺序,将二进制的待加密数据划分为位宽较小的多个第一子数据。例如,二进制的待加密数据为1024bit,可以将待加密数据划分为8个128位的第一子数据、或者16个64位的第一子数据、或者32个32位的第一子数据。将划分为位宽较小的多个第一子数据的待加密数据发送给GPU。
可选的,GPU将浮点数格式的待加密数据转换为二进制的待加密数据后,按照待加密数据中的比特数据从待加密数据的低位到待加密数据的高位的顺序,将二进制的待加密数据划分为位宽较小的多个第一子数据。例如,二进制的待加密数据为1024bit,可以将待加密数据划分为8个128位的第一子数据、或者16个64位的第一子数据、或者32个32位的第一子数据。将划分为位宽较小的多个第一子数据的待加密数据发送给GPU。
如图3所示,示例性的示出了将32bit的二进制待加密数据划分为8个4位第一子数据的方式。
可选的,参考数据与对待加密数据加密时使用的加密算法有关,参考数据例如可以是根据加密算法而随机生成的数,或者,参考数据可以是另一个待加密数据,将两个待加密数据进行运算处理,以对两个待加密数据进行加密。
在对待加密数据进行加密时,对参考数据的处理过程可参考上述描述的待加密数据的处理过程,此处不再赘述。需要说明的是,在将高位宽的参考数据划分我低位宽的第二子数据时,每个第二子数据的位宽一致。并且,第二子数据的位宽与第一子数据的位宽一致。
对于划分的多个第一子数据的待加密数据,以及划分为多个第二子数据的参考数据,第一客户终端根据每个第一子数据,以及参考数据中与每个第一子数据相应位数的第二子数据,获取每个第一子数据,以及参考数据中与每个第一子数据相应位数的第二子数据的处理结果。可选的,处理结果为相加处理结果,即,将每个第一子数据与参考数据中相应位数的第二子数据进行加法运算,获得加法运算结果。
可选的,为了提高运算效率以及保证运算结果的准确,第一客户终端按照低位第一子数据到高位第一子数据的顺序,依次使每个第一子数据与参考数据中相应位数的第二子数据相加,获得每个子数据与参考数据的相加处理结果。
示例性的,待加密数据为:1001,划分为2个2位的第一子数据,则待加密数据中,从低位第一子数据到高位第一子数据依次为:01、10。参考数据为:0110,划分为2个2位的第二子数据,则参考数据中,从低位第一子数据到高位第一子数据依次为:10、01。依次获取第一子数据10与第二子数据01的加法处理结果,以及第一子数据01与第二子数据10的加法处理结果。
可选的,S201之前,所述方法还包括:
S2001、第一客户终端接收来自第二客户终端或服务器的请求消息。
其中,请求消息请求获取用于联邦学习的数据。
本步骤中,在n个客户终端共同训练连联邦学习模型的过程中,客户终端可以通过发送请求消息向其他客户终端主动请求用于联邦学习的数据,服务器也可以通过发送请求消息向任一客户终端主动请求用于联邦学习的数据。
其中,请求消息中可以标识具体请求的用于联邦学习的数据,例如,客户终端发送的请求消息标识获取训练用户数据、梯度信息等。服务器发送的请求消息标识获取模型参数、损失值等。
S2002、第一客户终端根据用于联邦学习的数据的加密方式,获取参考数据。
本步骤中,第一客户终端接收到请求消息后,从本地存储器中获得发送给发送请求消息的客户终端或服务器的待加密数据。并且,根据联邦学习使用的加密算法,获得参考数据。
S202、在获取当前第一子数据与参考数据中相应位数的第二子数据的处理结果时,根据位数低于当前第一子数据的每个第一子数据分别与参考数据中相应位数的第二子数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果。
本步骤中,划分后的待加密数据与划分后的参考数据的进行加法运算时,将串行处理和并行处理相结合,提高运算效率。
具体的,由于是将待加密数据划分为多个第一子数据,将参考数据划分为多个第二子数据,这样,将待加密数据与参考数据相加转换为多个第一子数据多个第二子数据进行加法运算。因此,每个第一子数据与相应位数的第二子数据进行加法运算可以为串行处理,即当当前第一子数据与相应位数的第二子数据加乘法完成后,在进行下一个第一子数据与相应位数的第二子数据的加法运算。
并且,在当前第一子数据与相应位数的第二子数据进行加法运算时,根据之前获得的位数低于当前第一子数据的每个第一子数据与相应位数的第二子数据的相加处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,实现了在串行运算时,结合并行运算,即串并行结合进行加法运算,提高运算效率。
可选的,S202的一种可能的实现方式为:
根据位数低于当前第一子数据的相邻第一子数据与参考数据中相应位数的第二子数据的处理结果,以及待加密数据中位数低于相邻第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果。
以一具体实施例对上述过程进行说明:
例如,待加密数据为10100110,参考数据为01001010,则从低位到高位的第一子数据为:10,01,10,10;从低位到高位的第一子数据为:10,10,00,01。
计算第一子数据10与第二子数据10,获得第一子数据10与第二子数据10的处理结果为100。
计算第一子数据01与第二子数据10,获得第一子数据01与第二子数据10的处理结果为11。
计算第一子数据10与第二子数据00,获得第一子数据10与第二子数据00的处理结果为10。此时,待加密数据中位数低于第一子数据01的部分数据与参考数据中对应位数的部分数据的处理结果为100。则根据第一子数据01与第二子数据10的处理结果11,以及待加密数据中位数低于第一子数据01的部分数据与参考数据中对应位数的部分数据的处理结果100,获得待加密数据中位数低于所述第一子数据10的部分数据与参考数据中对应位数的部分数据的处理结果为10000。
计算第一子数据10与第二子数据01,获得第一子数据10与第二子数据01的处理结果为11。此时,待加密数据中位数低于第一子数据10的部分数据与参考数据中对应位数的部分数据的处理结果为10000。则根据第一子数据10与第二子数据00的处理结果10,以及待加密数据中位数低于第一子数据10的部分数据与参考数据中对应位数的部分数据的处理结果10000,获得待加密数据中位数低于所述第一子数据10的部分数据与参考数据中对应位数的部分数据的处理结果为110000。
S203、根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果。
其中,目标处理结果用于待加密数据的加密,加密后的待加密数据用于联邦学习。
本步骤中,当递进到最高位第一子数据与最高位第二子数据的处理结果时,已经获得了待加密数据中位数低于最高位第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果。这样,根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果,
例如,继续参考上面的实施例,最高位第一子数据10与最高位第二子数据01的处理结果为11,待加密数据中位数低于最高位第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果为110000,则目标处理结果为11110000。
该目标处理结果用于联邦学习中对发送给服务器或其他客户终端的待加密数据进行加密。
因此,可选的,在S203之后,所述方法还包括:
S204、根据目标处理结果,获得加密后的待加密数据。
本步骤中,在获得目标处理结果后,可能还会进行其他运算。例如,将目标处理结果与其他数据进行加法运算等,获得加密后的待加密数据。
S205、将加密后的待加密数据发送给第二客户终端或者服务器。
本步骤中,第一客户终端将加密后的待加密数据发送与第一客户终端共同训练模型的给第二客户终端或者服务器,以便于第二客户终端或者服务器采用加密后的待加密数据进行联邦学习。其中,第一客户终端将加密后的待加密数据发送给至少一个第二客户终端。
例如,第一客户终端将加密后的梯度值发送给第二客户终端,第二客户终端利用第一客户终端发送的梯度值以及自身的梯度值,计算模型参数,以对模型进行训练。
例如,第一客户终端将加密后的模型参数发送给服务器,服务器对加密后的模型参数解密,根据各客户终端解密后的模型参数进行模型参数融合,例如,取加权平均,并将融合后的模型参数分发给各客户终端,以使各客户终端根据融合后的模型参数对模型进行训练。
本实施例提供的数据处理方法,在可进行并行运算的平台上对待加密数据进行加密运算,其中,对于加密运算中的加法运算,对于参与加法运算的高位宽的待加密数据和高位宽的参考数据,待加密数据是划分为由多个低位宽的第一子数据组成的数据,参考数据是划分为由多个低位宽的第二子数据组成的数据。这样,高位宽的待加密数据与高位宽的参考数据进行加法运算时,依次使每个第一子数据与参考数据中相应位数的第二子数据相加,获得每个第一子数据与参考数据中相应位数的第二子数据的处理结果,实现串行处理。以及,在获取当前第一子数据与参考数据中相应位数的第二子数据的处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据中相应位数的第二子数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中相应位数的部分数据的处理结果,从而实现了并行运算。最后,根据最高位第一子数据与最高位第二子数据的处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据中相应位数的部分数据的处理结果,获得目标处理结果。由此可知,本实施例在对待加密数据进行加法运算时,在串行处理的基础上,进行并行处理,提高加法运算效率,从而提高加密效率。
并且,对待加密数据进行加法运算时,将高位宽的待加密数据划分为由多个低位宽的第一子数据,将高位宽的参考数据划分为由多个低位宽的第二子数据,以采用串行处理和并行处理相结合的方式,降低处理器的资源占用率,以使处理器有更多的资源去处理其他任务,提高了处理器的整体效率。
在上述实施的基础上,图4为本发明另一实施例提供的数据处理方法的流程图。如图4所述,本实施例的方法包括:
S401、根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与参考数据中相应位数的第二子数据的处理结果。
本步骤中,S401的具体实现方式可参考S201,此处不再赘述。
S402a、针对第i个第一子数据,根据第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果。
其中,i为大于或等于3,且小于或等于第一子数据的数量。
本步骤中,在进行加法运算时,待加密数据中i-2第一子数据与参考数据中相应位数的第二子数据的进行加法运算,如果产生进位,则会影响第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果。因此,需要根据第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果。
其中,S402a的具体实现方式为:
S402a1、确定第i-2个第一子数据与第i-2个第二子数据处理结果中位数与第i-2个第一子数据相对应的第三子数据。
具体的,举例来说,待加密数据为0111,参考数据为1110。第一子数据为11,第二子数据为10,则处理结果为101,第三数据为处理结果为101中与第一子数据为11位数相对应的01,或者说第三数据为处理结果为101中与第二子数据为10位数相对应的01。
待加密数据为0001,参考数据为0110,第一子数据为01,第二子数据为10,则处理结果为11,第三数据为处理结果为11。
S402a2、若第三子数据小于第i-2个第一子数据,和/或,第三子数据小于第i-2个第二子数据,则对第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与参考数据中第i-1个处理结果。
具体的,如果第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果产生进位,则第三子数据小于第i-2个第一子数据,和/或第i-2个第二子数据;若第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果没有产生进位,则第三子数据大于第i-2个第一子数据以及第i-2个第二子数据。因此,通过第三子数据与第一子数据、第二子数据的大小关系,可以确定第一子数据与第二子数据相加是否产生进位。此时,将进位参与到高位的第一子数据与第二子数据的处理结果中。
继续参考S402a1中的例子,待加密数据为0111,参考数据为1110。对于第一子数据为11,第二子数据为10,其第三子数据为01,将第三子数据01分别与第一子数据11、第二子数据10比较可知,第三子数据01小于第一子数据11以及第二子数据10。因此,第一子数据11与第二子数据10相加产生进位。
此时,对第一子数据01与第二子数据11的处理结果100的最低位进行进位处理,即第一子数据01与第二子数据11的处理结果100的最低位加1,获得更新后的第一子数据01与第二子数据11的处理结果101。
需要说明的是,第-2个第一子数据与第i-2个第二子数据的相加运算本身可能不会产生进位。但是,如果第-3个第一子数据与第i-3个第二子数据的相加运算产生进位,会对第-2个第一子数据与第i-2个第二子数据的处理结果产生影响,即第-2个第一子数据与第i-2个第二子数据的处理结果加上第-3个第一子数据与第i-3个第二子数据对应的进位,可能会产生进位。因此,本实施例的方法还包括:
S402b、针对第i个第一子数据,若根据第i-3个第一子数据与参考数据中第i-3个第二子数据的处理结果,已更新第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,则根据更新后的第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果。
本步骤中,是否根据第i-3个第一子数据与参考数据中第i-3个第二子数据的处理结果,更新第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,可以参考S402a1-S402a2,此处不再赘述。
其中,S402b的具体实现方式为:
S402b1、确定所第i-2个第一子数据与第i-2个第二子数据处理结果中位数与第i-2个第一子数据相对应的第三子数据,以及确定更新的第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果中位数与第i-2个第一子数据相对应的第四子数据。
举例来说,待加密数据为101101,参考数据为110011。第一子数据01与第二子数据11相加的处理结果为100,产生进位。
第一子数据11与第二子数据00相加的处理结果为11,由此可知,第一子数据11与第二子数据00相加的处理结果本身没有产生进位。由于第一子数据01与第二子数据11相加产生进位,则对第一子数据11与第二子数据00相加的处理结果11进行更新,更新后的第一子数据11与第二子数据00相加的处理结果为100。则更新的第一子数据11与第二子数据00相加的处理结果中的第四子数据为00。
S402b2、若第四子数据小于第三子数据,则对第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与参考数据中第i-1个处理结果。
具体的,如果第一子数据与第二子数据相加本身没有产生进位,但是,第一子数据与第二子数据相加的结果与低位产生的进位相加后产生进位,第四子数据小于第三子数据。因此,根据第四子数据与第三子数据的大小,可以确认第一子数据与第二子数据相加的结果,加上低位产生的进位后是否产生进位。
继续参考S402b1的例子,第一子数据11与第二子数据00相加的处理结果11,其第三子数据为11.对于更新后的第一子数据11与第二子数据00相加的处理结果100,其第四子数据为00。将第四子数据00与第三子数据11比较,第四子数据00小于第三子数据11,说明更新后的第一子数据11与第二子数据00相加的处理结果产生进位。
第一子数据10与第二子数据11的处理结果为101,由于更新后的第一子数据11与第二子数据00相加的处理结果产生进位,此时,对第一子数据10与第二子数据11的处理结果101的低位进行进位处理,即第一子数据10与第二子数据11的处理结果101的最低位加1,获得更新后的第一子数据10与第二子数据11的处理结果为110。
需要说明的是,对于S402a和S402b,本申请不限制执行顺序,例如,执行S401后,可以先执行S402a,若S402a中,第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果产生进位,则不需要执行S402b,否则,执行完S402a后,执行S402b;或者,执行S401后,可以先执行S402b,若S402b中,更新的第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果产生进位,则不需要执行S402a,否则,执行完S402b后,执行S402a。
S403、根据前i-2个第一子数据与参考数据中前i-2个第二子数据的处理结果,以及更新后的第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果,获得前i-1个第一子数据与参考数据中前i-1个第二子数据的处理结果。
本步骤中,获得更新后的第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果后,根据前i-2个第一子数据与参考数据中前i-2个第二子数据的处理结果,以及更新后的第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果,获得前i-1个第一子数据与参考数据中前i-1个第二子数据的处理结果。
S404、根据最高位第一子数据与最高位第二子数据的处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,获得目标处理结果。
本步骤中,S404的具体实现方式可参考S203,此处不再赘述。
本实施例提供的数据处理方法,基于OpenCL在可进行并行运算的平台上对待加密数据进行加密运算,在上述所示实施例的基础上,根据第三子数据与第一子数据、第二子数据的大小,或者,根据第四子数据与第三子数据的大小,确定是否有进位产生,在基于OpenCL在可进行并行运算的平台上对待加密数据进行加法运算时,提出了一种确定是否产生进位的判断方法,提高加法运算结果的准确性。
下面,通过图5-图7对本申请的方案进行详细的说明。
S501、根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与。参考数据中相应位数的第二子数据的处理结果。
本步骤中,S501的具体实现方式可参考S201,此处不再赘述。
S502、在获取第i个第一子数据与参考数据中相应位数的第二子数据的处理结果时,更新第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果。
S503、根据前i-2个第一子数据与所述参考数据中前i-2个第二子数据的处理结果,以及更新后的第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,获得前i-1个第一子数据与所述参考数据中前i-1个第二子数据的处理结果。
对于S502和S503,在对划分后的待加密数据与划分后的参考数据进行加法运算时,采用pipeline展开。具体的,参考图6:
例如,二进制的待加密数据和参考数据均为1024bit,将待加密数据和参考数据分别划分为16个64位的第一子数据和16个64位的第二子数据,对应16级pipeline。其中,pipeline的级数与对待加密数据划分后获得的第一子数据的数量一致。
其中,如图6所示,每个第一子数据用一个数组表示,则从低位第一子数据到高位第一子数据依次为:int1[0]、int1[1]、…、int1[14]、int1[15]。每个第二子数据用一个数组表示,则从低位第二子数据到高位第二子数据依次为:int2[0]、int2[1]、…、int2[14]、int2[15]。
如图7所示,对于第一级pipeline,将int1[0]与int2[0]进行相加,获得处理结果,记为m0。
对于第二级pipeline,获取int1[1]与int2[1]进行相加,获得处理结果,记为m1。
对于第三级pipeline,获取int1[2]与int2[2]进行相加,获得处理结果,记为m2。同时,根据S402a判断int1[0]与int2[0]相加是否产生进位,若int1[0]与int2[0]相加产生进位,则int1[1]与int2[1]的处理结果的最低位加1,获得更新后的int1[1]与int2[1]的处理结果,对应图7中的m1=m1+1。
然后,根据更新后的int1[1]与int2[1]的处理结果以及int1[0]与int2[0]的处理结果,获得前2个第一子数据与第二子数据的处理结果,记为M1-2,对应图7中的M1-2=m0+m1。
否则,根据int1[1]与int2[1]的处理结果以及int1[1]与int2[1]的处理结果,获得前2个第一子数据与第二子数据的处理结果,记为M1-2,对应图7中的M1-2=m0+m1。
对于第四级pipeline,获取int1[3]与int2[3]进行相加,获得处理结果,记为m3。同时,根据S402a判断int1[1]与int2[1]的处理结果是否产生进位,或者根据S402b判断更新后的int1[1]与int2[1]的处理结果(如果根据S402a确定对int1[1]与int2[1]的处理结果进行更新)是否产生进位,若int1[1]与int2[1]的处理结果或更新后的int1[1]与int2[1]的处理结果产生进位,则int1[2]与int2[2]的处理结果的最低位加1,获得更新后的int1[2]与int2[2]的处理结果,对应图7中的m2=m2+1。
然后,根据更新后的int1[2]与int2[2]的处理结果以及前2个第一子数据与第二子数据的处理结果M1-2,获得前3个第一子数据与第二子数据的处理结果,记为M1-3,对应图7中的M1-3=M1-2+m2。
否则,根据int1[2]与int2[2]的处理结果以及前2个第一子数据与第二子数据的处理结果M1-2,获得前3个第一子数据与第二子数据的处理结果,记为M1-3,对应图7中的M1-3=M1-2+m2。
依次类推,对于第十六级pipeline,获取int1[15]与int2[15]进行相加,获得处理结果,记为m15。同时,根据S402a判断int1[13]与int2[13]的处理结果是否产生进位,或者根据S402b判断更新后的int1[13]与int2[13]的处理结果(如果根据S402a确定对int1[13]与int2[13]的处理结果进行更新)是否产生进位,若int1[13]与int2[13]的处理结果或更新后的int1[13]与int2[13]的处理结果产生进位,则int1[14]与int2[14]的处理结果的最低位加1,获得更新后的int1[14]与int2[14]的处理结果,对应图7中的m14=m14+1。
然后,根据更新后的int1[14]与int2[14]的处理结果以及前14个第一子数据与第二子数据的处理结果M1-14,获得前15个第一子数据与第二子数据的处理结果,记为M1-15,对应图7中的M1-15=M1-14+m14。
否则,根据int1[14]与int2[14]的处理结果以及前13个第一子数据与第二子数据的处理结果M1-14,获得前14个第一子数据与第二子数据的处理结果,记为M1-15,对应图7中的M1-14+m14=M1-15。
此时,对前15个第一子数据与第二子数据的相加的处理结果进行了累加。
在上述过程中,在前一级pipeline中产生的进位,将传递到下一级pipeline中,对下一级中进行加法运算的第一子数据和第二子数据的处理结果进行更新。
S504、根据最高位第一子数据与最高位第二子数据的处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,获得目标处理结果。
本步骤中,根据S502-S503所述的方式,对前15个第一子数据与第二子数据的处理结果进行了累加,最后,如图7所示,计算M1-15与m16的和,从而获得所有第一子数据与第二子数据的处理结果的累加值,即目标处理结果M1-16。
图8为本发明实施例提供的一种数据处理装置的结构示意图。如图8所示,数据处理装置可以包括:迭代获取模块81和并行模块82。其中,
迭代获取模块81,用于根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与参考数据中相应位数的第二子数据的处理结果,第一子数据与第二子数据的位宽相同;
并行模块82,用于在获取当前第一子数据与参考数据中相应位数的第二子数据的处理结果时,根据位数低于当前第一子数据的每个第一子数据分别与参考数据中相应位数的第二子数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果;还用于根据最高位第一子数据与最高位第二子数据的处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,获得目标处理结果,目标处理结果用于待加密数据的加密,加密后的待加密数据用于联邦学习。
本实施例提供的数据处理装置,可以用于执行前述任一方法实施例提供的技术方案,其实现原理和技术效果类似,在此不再赘述。
在一种可能的实现方式中,并行模块82,具体用于:
根据位数低于当前第一子数据的相邻第一子数据与参考数据中相应位数的第二子数据的处理结果,以及待加密数据中位数低于相邻第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果。
在一种可能的实现方式中,并行模块82,具体用于:
针对第i个第一子数据,根据第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果,其中,i为大于或等于3,且小于或等于第一子数据的数量;以及根据前i-2个第一子数据与参考数据中前i-2个第二子数据的处理结果,以及更新后的第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果,获得前i-1个第一子数据与参考数据中前i-1个第二子数据的处理结果。
在一种可能的实现方式中,并行模块82,具体用于:
确定第i-2个第一子数据与第i-2个第二子数据处理结果中位数与第i-2个第一子数据相对应的第三子数据;
若第三子数据小于第i-2个第一子数据,和/或,第三子数据小于第i-2个第二子数据,则对第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与参考数据中第i-1个处理结果。
在一种可能的实现方式中,并行模块82,具体用于:
若根据第i-3个第一子数据与参考数据中第i-3个第二子数据的处理结果,已更新第i-2个第一子数据与参考数据中第i-2个第二子数据的第一类型处理结果,则根据更新后的第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果。
在一种可能的实现方式中,并行模块82,具体用于:
确定更新的第i-2个第一子数据与参考数据中第i-2个第二子数据的处理结果中位数与第i-2个第一子数据相对应的第四子数据;
若第四子数据小于第三子数据,则对第i-1个第一子数据与参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与参考数据中第i-1个处理结果。
在一种可能的实现方式中,数据处理装置还可以包括:划分模块83;
划分模块83,用于从待加密数据的低位到高位的顺序,依次每隔第一子数据的位宽对待加密数据进行划分,获取每个第一子数据;以及从参考数据的低位到高位的顺序,依次每隔第二子数据的位宽对待加密数据进行划分,获取每个第二子数据。
在一种可能的实现方式中,待加密数据包括如下的一项或多项:第一客户终端本地的训练用户数据、第一客户终端训练得到的联邦学习模型的模型参数、第一客户终端训练得到的联邦学习模型的梯度信息、第一客户终端训练得到的联邦学习模型的损失值;
其中,训练用户数据用于训练联邦学习模型。
在一种可能的实现方式中,数据处理装置还可以包括:接收模块84和发送模块85;
接收模块84,用于接收来自第二客户终端或服务器的请求消息,请求消息请求获取用于联邦学习的数据;根据用于联邦学习的数据的加密方式,获取参考数据;
并行模块82获得目标处理结果之后,还用于:
根据目标处理结果,获得加密后的待加密数据;
发送模块85,用于将加密后的待加密数据发送给第二客户终端或者服务器。
处理结果为累加处理结果。
前述任一实施例提供的数据处理装置,用于执行前述任一方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
图9为本发明实施例提供的一种数据处理设备的结构示意图。如图9所示,所述设备可以包括:存储器91、处理器92及存储在所述存储器91上并可在所述处理器92上运行的数据处理程序,所述数据处理程序被所述处理器92执行时实现如前述任一实施例所述的数据处理方法的步骤。
可选地,存储器91既可以是独立的,也可以跟处理器92集成在一起。
本实施例提供的设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如前述任一实施例所述的数据处理方法的步骤。
本发明实施例还提供了一种计算机程序产品,该计算机程序产品被计算机执行时实现如前述任一实施例所述的数据处理方法的步骤。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的部分步骤。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的部分步骤。
应理解,上述处理器可以GPU、DSP、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC),或其他通用处理器。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法应用于第一客户终端,包括:
根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果,所述第一子数据与所述第二子数据的位宽相同;
在获取当前第一子数据与所述参考数据中相应位数的第二子数据的处理结果时,根据位数低于所述当前第一子数据的每个第一子数据分别与所述参考数据中相应位数的第二子数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果;
根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果,所述目标处理结果用于所述待加密数据的加密,加密后的所述待加密数据用于联邦学习;所述根据位数低于所述当前第一子数据的每个第一子数据分别与所述参考数据中相应位数的第二子数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,包括:
根据所述位数低于所述当前第一子数据的相邻第一子数据与所述参考数据中相应位数的第二子数据的处理结果,以及所述待加密数据中位数低于所述相邻第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述位数低于所述当前第一子数据的相邻第一子数据与所述参考数据中相应位数的第二子数据的处理结果,以及所述待加密数据中位数低于所述相邻第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,包括:
针对第i个第一子数据,根据第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,其中,i为大于或等于3,且小于或等于所述第一子数据的数量;
根据前i-2个第一子数据与所述参考数据中前i-2个第二子数据的处理结果,以及更新后的第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,获得前i-1个第一子数据与所述参考数据中前i-1个第二子数据的处理结果。
3.根据权利要求2所述的方法,其特征在于,所述根据第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,包括:
确定所述第i-2个第一子数据与所述第i-2个第二子数据处理结果中位数与所述第i-2个第一子数据相对应的第三子数据;
若所述第三子数据小于所述第i-2个第一子数据,和/或,所述第三子数据小于所述第i-2个第二子数据,则对第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与所述参考数据中第i-1个处理结果。
4.根据权利要求2所述的方法,其特征在于,所述根据第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,包括:
若根据第i-3个第一子数据与所述参考数据中第i-3个第二子数据的处理结果,已更新第i-2个第一子数据与所述参考数据中第i-2个第二子数据的第一类型处理结果,则根据更新后的第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果。
5.根据权利要求4所述的方法,其特征在于,所述根据更新后的第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果,更新第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果,包括:
确定所述第i-2个第一子数据与所述第i-2个第二子数据处理结果中位数与所述第i-2个第一子数据相对应的第三子数据,以及确定更新的第i-2个第一子数据与所述参考数据中第i-2个第二子数据的处理结果中位数与所述第i-2个第一子数据相对应的第四子数据;
若所述第四子数据小于所述第三子数据,则对第i-1个第一子数据与所述参考数据中第i-1个第二子数据的处理结果的最低位进行进位处理,获得更新后的第i-1个第一子数据与所述参考数据中第i-1个处理结果。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果之前,还包括:
从所述待加密数据的低位到高位的顺序,依次每隔所述第一子数据的位宽对所述待加密数据进行划分,获取每个第一子数据;
从所述参考数据的低位到高位的顺序,依次每隔所述第二子数据的位宽对所述待加密数据进行划分,获取每个第二子数据。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述待加密数据包括如下的一项或多项:所述第一客户终端本地的训练用户数据、所述第一客户终端训练得到的联邦学习模型的模型参数、所述第一客户终端训练得到的联邦学习模型的梯度信息、所述第一客户终端训练得到的联邦学习模型的损失值;
其中,所述训练用户数据用于训练所述联邦学习模型。
8.根据权利要求1-5任一项所述的方法,其特征在于,所述根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果之前,还包括:
接收来自第二客户终端或服务器的请求消息,所述请求消息请求获取用于联邦学习的数据;
根据用于联邦学习的数据的加密方式,获取所述参考数据;
所述根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果之后,还包括:
根据所述目标处理结果,获得加密后的待加密数据;
将所述加密后的待加密数据发送给所述第二客户终端或者所述服务器。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述处理结果为累加处理结果。
10.一种数据处理装置,其特征在于,应用于第一客户终端,包括:
迭代获取模块,用于根据待加密数据划分的每个第一子数据以及参考数据划分的每个第二子数据,获取每个第一子数据与所述参考数据中相应位数的第二子数据的处理结果,所述第一子数据与所述第二子数据的位宽相同;
并行模块,用于在获取当前第一子数据与所述参考数据中相应位数的第二子数据的处理结果时,根据位数低于所述当前第一子数据的每个第一子数据分别与所述参考数据中相应位数的第二子数据的处理结果,获取所述待加密数据中位数低于所述当前第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果;还用于根据最高位第一子数据与最高位第二子数据的处理结果,以及所述待加密数据中位数低于所述最高位第一子数据的部分数据与所述参考数据中对应位数的部分数据的处理结果,获得目标处理结果,所述目标处理结果用于所述待加密数据的加密,加密后的所述待加密数据用于联邦学习;
所述并行模块,具体用于:
根据位数低于当前第一子数据的相邻第一子数据与参考数据中相应位数的第二子数据的处理结果,以及待加密数据中位数低于相邻第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据中对应位数的部分数据的处理结果。
11.一种电子设备,其特征在于,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9中任一项所述的数据处理方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的数据处理方法的步骤。
13.一种计算机程序产品,其特征在于,包括:计算机程序,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011331877.0A CN112417478B (zh) | 2020-11-24 | 2020-11-24 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011331877.0A CN112417478B (zh) | 2020-11-24 | 2020-11-24 | 数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112417478A CN112417478A (zh) | 2021-02-26 |
CN112417478B true CN112417478B (zh) | 2024-06-14 |
Family
ID=74777052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011331877.0A Active CN112417478B (zh) | 2020-11-24 | 2020-11-24 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112417478B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113934678A (zh) * | 2020-06-29 | 2022-01-14 | 中科寒武纪科技股份有限公司 | 一种计算装置、集成电路芯片、板卡、设备和计算方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635462A (zh) * | 2018-12-17 | 2019-04-16 | 深圳前海微众银行股份有限公司 | 基于联邦学习的模型参数训练方法、装置、设备及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165725B (zh) * | 2018-08-10 | 2022-03-29 | 深圳前海微众银行股份有限公司 | 基于迁移学习的神经网络联邦建模方法、设备及存储介质 |
CN109787750A (zh) * | 2019-03-12 | 2019-05-21 | 广州合众互联信息技术有限公司 | 通信报文的编解码方法、装置、设备和存储介质 |
CN111898137A (zh) * | 2020-06-30 | 2020-11-06 | 深圳致星科技有限公司 | 一种联邦学习的隐私数据处理方法、设备及*** |
-
2020
- 2020-11-24 CN CN202011331877.0A patent/CN112417478B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635462A (zh) * | 2018-12-17 | 2019-04-16 | 深圳前海微众银行股份有限公司 | 基于联邦学习的模型参数训练方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
对称三进制编码的同态加密算术运算研究;傅海军;蔡斌;向宏;桑军;;密码学报;20180630(第03期);第262-270页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112417478A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11017322B1 (en) | Method and system for federated learning | |
Aïvodji et al. | Meeting points in ridesharing: A privacy-preserving approach | |
US11588643B2 (en) | Blockchain management system | |
CN112001502B (zh) | 高延时网络环境鲁棒的联邦学习训练方法及装置 | |
EP3809301B1 (en) | Privacy-preserving machine learning | |
CN111553483A (zh) | 基于梯度压缩的联邦学习的方法、装置及*** | |
CN113221183B (zh) | 实现隐私保护的多方协同更新模型的方法、装置及*** | |
CN113505882B (zh) | 基于联邦神经网络模型的数据处理方法、相关设备及介质 | |
US10785041B2 (en) | Method for providing a space puzzle | |
CN113362048B (zh) | 数据标签分布确定方法、装置、计算机设备和存储介质 | |
CN108712375B (zh) | 坐标加密方法、坐标加密***和具有该***的车辆 | |
US11792173B2 (en) | Methods and devices for increasing entropy of a blockchain using blinded outcome diversification | |
CN113449048B (zh) | 数据标签分布确定方法、装置、计算机设备和存储介质 | |
CN111428887A (zh) | 一种基于多个计算节点的模型训练控制方法、装置及*** | |
CN112990276A (zh) | 基于自组织集群的联邦学习方法、装置、设备及存储介质 | |
CN112464155B (zh) | 一种数据处理方法、多方安全计算***和电子设备 | |
CN111143862A (zh) | 数据处理方法、查询方法、装置、电子设备和*** | |
CN112417478B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112434317A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112989394B (zh) | 一种矢量地理数据加密、解密方法及*** | |
CN112668016A (zh) | 一种模型训练方法、装置和电子设备 | |
CN113094735B (zh) | 隐私模型训练的方法 | |
Bernabé-Rodríguez et al. | A decentralized private data marketplace using blockchain and secure multi-party computation | |
CN114398651A (zh) | 秘密数据共享方法及分布式*** | |
CN112434064A (zh) | 数据处理方法、装置、介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |