掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置、设备及存储介质

文献发布时间:2023-06-19 10:05:17


数据处理方法、装置、设备及存储介质

技术领域

本发明涉及计算机运算处理技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。

背景技术

随着大数据时代的到来,通过机器学习算法可以从大数据中挖掘出有用信息,因此,数据对于机器学习模型的质量有着至关重要的作用,如果能获取更多高质量的数据,训练出的模型性能越好。然而,数据常常包含了用户的隐私信息,需要在保护用户隐私的前提下获取用户数据。

作为一种新型的机器学习框架,联邦学习(Federated Learning)通过数据加密运算,保障数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。

为提高加密效果,联邦学习使用的加密方式为非对称加密,其中,非对称加密中参与计算的数据的位宽较大,比如256bit、512bit、1024bit,甚至更高,当参与计算的数据的位宽较大时,运算时间长、效率低。

发明内容

本发明的主要目的在于提供一种数据处理方法、装置、设备及存储介质,旨在提高联邦学习模型训练过程中对数据的加密效率。

为实现上述目的,本发明提供一种数据处理方法,应用于第一客户终端,数据处理方法包括:

对待加密数据划分的每个第一子数据,获取每个第一子数据与参考数据的第一类型处理结果;

在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果;

根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果,目标处理结果用于待加密数据的加密,加密后的待加密数据用于联邦学习。

可选的,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果,包括:

针对第i个第一子数据,根据第i-1个第一子数据与参考数据的第一类型处理结果,以及前i-2个第一子数据对应的第二类型处理结果,获得前i-1个第一子数据与参考数据的第二类型处理结果。

可选的,获取当前第一子数据与参考数据的第一类型处理结果之前,还包括:

针对第i个第一子数据,获取左移i-1次后的参考数据,其中,每次左移的位宽等于第一子数据的位宽;

获取当前第一子数据与参考数据的第一类型处理结果,包括:

获取第i个第一子数据与左移i-1次后的参考数据的第一类型处理结果。

可选的,获取第i个第一子数据与左移i-1次后的参考数据的第一类型处理结果,包括:

同时获取第i个第一子数据分别与获得的各第二子数据的第一类型处理结果,其中,各第二子数据是对左移i-1次后的参考数据划分后获得的;

根据各第二子数据对应的第一类型处理结果,获得第i个第一子数据与左移i-1次后的参考数据的第一类型处理结果。

可选的,对待加密数据划分的每个第一子数据,获取每个第一子数据与参考数据的第一类型处理结果之前,还包括:

从待加密数据的低位到高位的顺序,依次每隔第一子数据的位宽对待加密数据进行划分,获取每个第一子数据。

可选的,待加密数据包括如下的一项或多项:第一客户终端本地的训练用户数据、第一客户终端训练得到的联邦学习模型的模型参数、第一客户终端训练得到的联邦学习模型的梯度信息、第一客户终端训练得到的联邦学习模型的损失值;

其中,训练用户数据用于训练联邦学习模型。

可选的,对待加密数据划分的每个第一子数据,获取每个第一子数据与参考数据的第一类型处理结果之前,还包括:

接收来自第二客户终端或服务器的请求消息,请求消息请求获取用于联邦学习的数据;

根据用于联邦学习的数据的加密方式,获取参考数据;

根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果之后,还包括:

根据目标处理结果,获得加密后的待加密数据;

将加密后的待加密数据发送给第二客户终端或者服务器。

可选的,第一类型处理结果为相乘处理结果,第二类型处理结果为对相乘处理结果的累加处理结果。

本发明还提供一种数据处理装置,应用于第一客户终端,装置包括:

迭代获取模块,用于对待加密数据划分的每个第一子数据,获取每个第一子数据与参考数据的第一类型处理结果;

并行模块,用于在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果;还用于根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果,总体目标处理结果用于待加密数据的加密,加密后的待加密数据用于联邦学习。

本发明还提供一种模型训练设备,所述模型训练设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的模型训练程序,所述模型训练程序被所述处理器执行时实现如前述任一项所述的数据处理方法的步骤。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有模型训练程序,所述模型训练程序被处理器执行时实现如前述任一项所述的数据处理方法的步骤。

本发明提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如前述任一项所述的数据处理方法的步骤。

本发明中,在可进行并行运算的平台上对待加密数据进行加密运算,其中,对于加密运算中的乘法运算,参与乘法运算的高位宽的待加密数据是划分为由多个低位宽的第一子数据组成的数据。这样,高位宽的待加密数据与参考数据进行乘法运算时,依次使每个第一子数据与参考数据相乘,获得每个第一子数据与参考数据的第一类型处理结果,实现串行处理。以及,在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果,从而实现了并行运算。最后,根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果。由此可知,本实施例在对待加密数据进行乘法运算时,采用串行处理和并行处理相结合的方式,提高乘法运算效率,从而提高加密效率。

并且,对待加密数据进行乘法运算时,将高位宽的待加密数据划分为由多个低位宽的第一子数据进行乘法运算,以采用串行处理和并行处理相结合的方式,降低处理器的资源占用率,以使处理器有更多的资源去处理其他任务,提高了处理器的整体效率。

附图说明

图1为本发明一实施例提供的应用场景示意图;

图2为本发明一实施例提供的数据处理方法的流程示意图;

图3为本发明一实施例提供的数据划分方式示意图;

图4为本发明一实施例提供的乘法运算模式结构图;

图5为本发明一实施例提供的基于pipeline的计算流程示意图;

图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的数据处理方法,对于联邦学习模型训练过程中的加密运算,不再使用CPU进行加密运算,而是在可并行计算平台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。参考数据为:11,依次获取01与11的相乘处理结果、10与11的相乘处理结果。

可选的,S201之前,所述方法还包括:

S2001、第一客户终端接收来自第二客户终端或服务器的请求消息。

其中,请求消息请求获取用于联邦学习的数据。

本步骤中,在n个客户终端共同训练连联邦学习模型的过程中,客户终端可以通过发送请求消息向其他客户终端主动请求用于联邦学习的数据,服务器也可以通过发送请求消息向任一客户终端主动请求用于联邦学习的数据。

其中,请求消息中可以标识具体请求的用于联邦学习的数据,例如,客户终端发送的请求消息标识获取训练用户数据、梯度信息等。服务器发送的请求消息标识获取模型参数、损失值等。

S2002、第一客户终端根据用于联邦学习的数据的加密方式,获取参考数据。

本步骤中,第一客户终端接收到请求消息后,从本地存储器中获得发送给发送请求消息的客户终端或服务器的待加密数据。并且,根据联邦学习使用的加密方式,获得参考数据。

需要说明的是,参考数据可以是给定值,或者另一个需要发送给发送请求消息的客户终端或服务器的待加密数据。

S202、在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果。

本步骤中,在对划分后的待加密数据与参考数据的乘法运算时,将串行处理和并行处理相结合,提高运算效率。

具体的,由于是将待加密数据划分为多个第一子数据,这样,将待加密数据与参考数据相乘划分为多个第一子数据与参考数据进行乘法运算。因此,多个第一子数据与参考数据进行乘法运算为串行处理,即当当前第一子数据与参考数据乘法完成后,在进行下一个子数据与参考数据乘法运算。

并且,在当前第一子数据与参考数据进行乘法运算时,根据之前获得的位数低于当前第一子数据的所有第一子数据与参考数据的相乘处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果。

可选的,第二类型处理结果为对相乘处理结果进行累加运算后获得的累加处理结果。因此,第二类型处理结果即为对之前获得的位数低于当前第一子数据的所有第一子数据与参考数据的相乘处理结果进行累加处理获得的累加处理结果,实现乘法运算和累加运算的并行处理。

可选的,S202的一种可能的实现方式为:

S2021、针对第i个第一子数据,根据第i-1个第一子数据与参考数据的第一类型处理结果,以及前i-2个第一子数据对应的第二类型处理结果,获得前i-1个第一子数据与参考数据的第二类型处理结果。

具体的,在对划分后的待加密数据与参考数据的乘法运算时,采用pipeline展开。具体的,参考图4:

例如,二进制的待加密数据为1024bit,将待加密数据划分为32个32位的第一子数据,对应32级pipeline。其中,对应的pipeline的级数与对待加密数据划分后获得的第一子数据的数量一致。

其中,如图4所示,每个第一子数据用一个数组表示,则从低位第一子数据到高位第一子数据依次为:int[0]、int[1]、…、int[30]、int[31]。

如图5所示,在第1级的pipeline中,获取int[0]与参考数据的第一类型处理结果,记为m

在第2级的pipeline中,获取int[1]与参考数据的第一类型处理结果,记为m

在第3级的pipeline中,获取int[2]与参考数据的第一类型处理结果,记为m

在第4级的pipeline中,获取int[3]与参考数据的第一类型处理结果,记为m

依次类推,计算到第32级的pipeline时,获取int[31]与参考数据的第一类型处理结果,记为m

此时,对前31个第一子数据与参考数据相乘的第一类型处理结果进行了累加。

S203、根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果。

其中,目标处理结果用于待加密数据的加密,加密后的待加密数据用于联邦学习。

本步骤中,根据S202所述的方式,对前31个第一子数据与参考数据相乘的第一类型处理结果进行了累加,最后,如图5所示,计算M

该目标处理结果用于联邦学习中对发送给服务器或其他客户终端的待加密数据进行加密。

因此,可选的,在S203之后,所述方法还包括:

S204、根据目标处理结果,获得加密后的待加密数据。

本步骤中,在获得目标处理结果后,可能还会进行其他运算。例如,将目标处理结果与其他数据进行加法运算等,获得加密后的待加密数据。

S205、将加密后的待加密数据发送给第二客户终端或者服务器。

本步骤中,第一客户终端将加密后的待加密数据发送与第一客户终端共同训练模型的给第二客户终端或者服务器,以便于第二客户终端或者服务器采用加密后的待加密数据进行联邦学习。其中,第一客户终端将加密后的待加密数据发送给至少一个第二客户终端。

例如,第一客户终端将加密后的梯度值发送给第二客户终端,第二客户终端利用第一客户终端发送的梯度值以及自身的梯度值,计算模型参数,以对模型进行训练。

例如,第一客户终端将加密后的模型参数发送给服务器,服务器对加密后的模型参数解密,根据各客户终端解密后的模型参数进行模型参数融合,例如,取加权平均,并将融合后的模型参数分发给各客户终端,以使各客户终端根据融合后的模型参数对模型进行训练。

本实施例提供的数据处理方法,在可进行并行运算的平台上对待加密数据进行加密运算,其中,对于加密运算中的乘法运算,参与乘法运算的高位宽的待加密数据是划分为由多个低位宽的第一子数据组成的数据。这样,高位宽的待加密数据与参考数据进行乘法运算时,依次使每个第一子数据与参考数据相乘,获得每个第一子数据与参考数据的第一类型处理结果,实现串行处理。以及,在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果,从而实现了并行运算。最后,根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果。由此可知,本实施例在对待加密数据进行乘法运算时,采用串行处理和并行处理相结合的方式,提高乘法运算效率,从而提高加密效率。

并且,对待加密数据进行乘法运算时,将高位宽的待加密数据划分为由多个低位宽的第一子数据进行乘法运算,以采用串行处理和并行处理相结合的方式,降低处理器的资源占用率,以使处理器有更多的资源去处理其他任务,提高了处理器的整体效率。

在上述实施的基础上,图6为本发明另一实施例提供的数据处理方法的流程图。如图6所述,本实施例的方法包括:

S601、对待加密数据划分的每个第一子数据,获取每个第一子数据与参考数据的第一类型处理结果。

本步骤中,S601的具体实现方式可参考S201,此处不再赘述。

S602、针对第i个第一子数据,获取左移i-1次后的参考数据。

其中,每次左移的位宽等于第一子数据的位宽。

本步骤中,在S201或S601中,第一客户终端按照从低位第一子数据到高位第一子数据的顺序,依次获取每个第一子数据与参考数据的第一类型处理结果。这样,第一子数据每次从低位移动到高一位的第一子数据,获取高一位的第一子数据与参考数据的第一类型处理结果时,由于高一位的第一子数据位于高位,如果使高一位的第一子数据与参考数据相乘,获得第一类型处理结果,获得的第一类型处理结果是错误的。

例如,两个十进制数123与456相乘,将456划分为4、5、6三个第一子数据,这样,从低位第一子数据到高位第一子数据的顺序,依次获取每个第一子数据与123的第一类型处理结果时,如果计算4*123、5*123、6*123,则5*123的相乘结果、6*123的相乘结果是错误的。这是因为5位于十位上,6位于百位上,而在5*123、6*123中,将5、6作为个位上的数进行乘法运算。

再例如,对于两个二进制数1010与1101相乘,将1101划分为11和01两个第一子数据,这样,从低位第一子数据到高位第一子数据的顺序,依次获取每个第一子数据与1010的第一类型处理结果时,如果计算01*1010、11*1010,则11*1010的相乘结果是错误的。这是因为11在1101中位于高位,而在11中,将11作为最低位的第一子数据的数进行乘法运算。

因此,在第一子数据向高位移动时,需要将参考数据左移,确保第一类型处理结果的准确性。

具体的,第一子数据每向高位移动一个第一子数据的位宽,则在当前参考数据的基础上,通过在当前参考数据末尾补0的方式左移一个左移单位。其中,左移的位宽等于第一子数据的位宽。

因此,针对第i个第一子数据,其对应的参考数据为在最初获取的参考数据的基础上需要左移i-1次获得的参考数据。

例如,对于参考数据1010与待加密数据110110,将110110划分为11、01以及10三个第一子数据,这样,从低位第一子数据到高位第一子数据的顺序,先计算10*1010的第一类型处理结果。

然后,第一子数据向高位移动一个第一子数据的位宽,获得01,此时,将1010左移两位,末尾补0后获得的左移后的参考数据为101000,计算01*101000。

然后,第一子数据再向高位移动一个第一子数据的位宽,获得11,此时,将上一次左移后获得的参考数据101000再左移两位,末尾补0后获得的左移后的参考数据为10100000,计算11*10100000。

S603、获取第i个第一子数据与所述左移i-1次后的参考数据的第一类型处理结果。

本步骤中,一种可能的实现方式为:

S6031、同时获取第i个第一子数据分别与获得的各第二子数据的第一类型处理结果。

其中,各第二子数据是对左移i-1次后的参考数据划分获得的。

具体的,获取对左移i-1次后的参考数据划分后的多个第二子数据。其中,第二子数据的位宽与第一子数据的位宽一致,以保证结果的准确性。

例如,待加密数据为11011011,参考数据为01010010,待加密数据可以划分为2个位宽为4的第一子数据,即1101和1011。

在第一级pipeline,将参考数据01010010划分为了2个位宽为4的第二子数据,即0101和0010,因此,可将1011*01010010拆分为两个乘法运算,即1011*0010以及1011*0101。由于1011*0010与1011*0101的乘法运算相互独立,因此,在GPU中,可对两个乘法运算进行并行运算,即同时获取1011*0010和1011*0101的第一类型处理结果。

在第二级pipeline,由于第一子数据向高位移动一个第一子数据的位宽,则参考数据左移1个左移单位后为010100100000。将左移1个左移单位后的参考数据010100100000划分为3个位宽为4的第二子数据,即0101、0010和0000,因此,可将1011*010100100000拆分为三个乘法运算,即1011*0010、1011*0101以及1011*0000。由于1011*0010、1011*0101以及1011*0000的乘法运算相互独立,因此在GPU中,可对两个乘法运算进行并行运算,即同时获取1011*0010和1011*0101的第一类型处理结果。

S6032、根据各第二子数据对应的第一类型处理结果,获得第i个第一子数据与所述左移i-1次后的参考数据的第一类型处理结果。

具体的,在上述例子的基础上,对每一级pipeline,即针对第i个第一子数据,将与第i个第一子数据进行乘法运算的每个第二子数据对应的第一类型处理结果进行累加,获得该级对应的第一类型处理结果。

其中,需要说明的是,在将第一类型处理结果进行累加时,每个第一类型处理结果的末位分别与对应的第二子数据中末位在左移i-1个左移单位后的参考数据中的位数一致。从而保证根据各第二子数据对应的第一类型处理结果获得的与第i个第一子数据对应的第一类型处理结果的准确性。

可选的,结合图4所示的实施例,待加密数据和参考数据均为1024bit,则待加密数据与参考数据相乘后获得的目标处理结果的最大位数为2048bit。其中,由于在待加密数据中,从低位第一子数据移动到高位第一子数据时,参考数据需要左移相同的位宽。因此,实际上,待加密数据和参考数据的位宽为2048bit,其中,待加密数据和参考数据中的第1025-2048位通过补0的方式获得2048bit的位宽。

需要说明的是,如图7所示,由于待加密数据的第1025-2048位为0,因此,在进行乘法运算时,可以不对第1025-2048位的数进行乘法运算,而不影响结果的准确性。因此,在图7中,将待加密数据的前1024位划分为32个32位的第一子数据,记为int1[0]-int1[31],对应32级pipeline。

可选的,在S603之前,可以将参考数据的前1024位划分为32个32位的第二子数据,记为int2[0]-int2[31],第1025-2048位均为0。或者,将参考数据划分为64个32位的第二子数据,记为int2[0]-int2[63]。其中,图7中以前者为例进行说明。

可选的,在S603之后,将左移后的参考数据划分为有多个第二子数据。其中,图7示出的是在S603之前,将参考数据划分为多个第二子数据的情况。

如图7所示,在第1级的pipeline中,获取int[0]与参考数据的第一类型处理结果。

在第2级的pipeline中,第一子数据向高位移动一个第一子数据的位宽,则参考数据左移1个第一子数据的位宽,获得左移后的参考数据,如图7所示,int2[0]-int2[31]同时左移1个第一子数据的位宽,且末位对应1个第一子数据的位宽的位上补0。然后,获取int[1]与左移后的参考数据的第一类型处理结果。其中,左移后的参考数据的第1029-2048位为0。

在第3级的pipeline中,第一子数据再向高位移动一个第一子数据的位宽,相比初始的参考数据,参考数据左移2个第一子数据的位宽,获得左移后的参考数据,如图7所示,int2[0]-int2[31]同时左移2个第一子数据的位宽,且末位对应2个第一子数据的位宽的位上补0。然后,获取int[2]与左移后的参考数据的第一类型处理结果。其中,左移后的参考数据的第1033-2048位为0。

依次类推,计算到第31级的pipeline时,第一子数据再向高位移动一个第一子数据的位宽,相比初始的参考数据,参考数据左移30个第一子数据的位宽,获得左移后的参考数据,如图7所示,int2[0]-int2[31]同时左移30个第一子数据的位宽,且末位对应30个第一子数据的位宽的位上补0。然后,获取int[30]与左移后的参考数据的第一类型处理结果。其中,左移后的参考数据的第2045-2048位为0。

在第32级的pipeline中,第一子数据再向高位移动一个第一子数据的位宽,相比初始的参考数据,参考数据左移31个第一子数据的位宽,获得左移后的参考数据,如图7所示,int2[0]-int2[31]同时左移31个第一子数据的位宽,且末位对应2个第一子数据的位宽的位上补0。然后,获取int[31]与左移后的参考数据的第一类型处理结果。其中,左移后的参考数据的第1025-2048位为初始参考数据的第1-1024位,左移后的参考数据的第1-1024位为0。

在第i级pipeline中,第i个第一子数据与左移i-1个第一子数据位宽的参考数据相乘时,如图7所示,使第i个第一子数据分别与该级pipeline对应的各第二子数据相乘。其中,该级pipeline对应的各第二子数据相乘是对左移i-1个第一子数据位宽获得的参考数据划分后得到的。

S604、在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果。

本步骤中,S604的具体实现方式可参考S202中的相关内容,此处不再赘述。

S605、根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果。

本步骤中,S605的具体实现方式可参考S203,此处不再赘述。

本实施例提供的数据处理方法,基于OpenCL在可进行并行运算的平台上对待加密数据进行加密运算。在上述所示实施例的基础上,将每个第一子数据与参考数据相乘,拆分为第一子数据与各第二子数据相乘,第二子数据为对参考数据划分后获得的。并且,并行计算第一子数据与各第二子数据的第二类型处理结果,进一步提高乘法运算效率。

图8为本发明实施例提供的一种数据处理装置的结构示意图。如图8所示,数据处理装置可以包括:迭代获取模块81和并行模块82。其中,

迭代获取模块81,用于对待加密数据划分的每个第一子数据,获取每个第一子数据与参考数据的第一类型处理结果;

并行模块82,用于在获取当前第一子数据与参考数据的第一类型处理结果时,根据位数低于当前第一子数据的每个第一子数据与参考数据的第一类型处理结果,获取待加密数据中位数低于当前第一子数据的部分数据与参考数据的第二类型处理结果;还用于根据最高位第一子数据与参考数据的第一类型处理结果,以及待加密数据中位数低于最高位第一子数据的部分数据与参考数据的第二类型处理结果,获得目标处理结果,总体目标处理结果用于待加密数据的加密,加密后的待加密数据用于联邦学习。

本实施例提供的数据处理装置,可以用于执行前述任一方法实施例提供的技术方案,其实现原理和技术效果类似,在此不再赘述。

在一种可能的实现方式中,并行模块82,具体用于:

针对第i个第一子数据,根据第i-1个第一子数据与参考数据的第一类型处理结果,以及前i-2个第一子数据对应的第二类型处理结果,获得前i-1个第一子数据与参考数据的第二类型处理结果。

在一种可能的实现方式中,数据处理装置还可以包括:左移模块83;

左移模块83,用于针对第i个第一子数据,获取左移i-1次后的参考数据,其中,每次左移的位宽等于第一子数据的位宽;

相应的,并行模块82,具体用于:

获取第i个第一子数据与左移i-1次后的参考数据的第一类型处理结果。

在一种可能的实现方式中,并行模块82获取第i个第一子数据与左移i-1次后的参考数据的第一类型处理结果时,具体用于:

同时获取第i个第一子数据分别与获得的各第二子数据的第一类型处理结果,其中,各第二子数据是对左移i-1次后的参考数据划分后获得的;

根据各第二子数据对应的第一类型处理结果,获得第i个第一子数据与左移i-1次后的参考数据的第一类型处理结果。

在一种可能的实现方式中,第一子数据的位宽与第二子数据的位宽相同。

在一种可能的实现方式中,数据处理装置还可以包括:划分模块84;

划分模块84,用于从待加密数据的低位到高位的顺序,依次每隔第一子数据的位宽对待加密数据进行划分,获取每个第一子数据。

在一种可能的实现方式中,待加密数据包括如下的一项或多项:第一客户终端本地的训练用户数据、第一客户终端训练得到的联邦学习模型的模型参数、第一客户终端训练得到的联邦学习模型的梯度信息、第一客户终端训练得到的联邦学习模型的损失值;

其中,训练用户数据用于训练联邦学习模型。

在一种可能的实现方式中,数据处理装置还可以包括:接收模块85和发送模块86;

接收模块85,用于接收来自第二客户终端或服务器的请求消息,请求消息请求获取用于联邦学习的数据;根据用于联邦学习的数据的加密方式,获取参考数据;

并行模块82获得目标处理结果之后,还用于:

根据目标处理结果,获得加密后的待加密数据;

发送模块86,用于将加密后的待加密数据发送给第二客户终端或者服务器。

前述任一实施例提供的数据处理装置,用于执行前述任一方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。

图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、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 移动设备的数据处理方法、装置、存储介质和移动设备
  • 行驶设备的数据处理方法、装置、设备及存储介质
技术分类

06120112409841