CN112905187B - 编译方法、装置、电子设备及存储介质 - Google Patents

编译方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112905187B
CN112905187B CN202110191679.7A CN202110191679A CN112905187B CN 112905187 B CN112905187 B CN 112905187B CN 202110191679 A CN202110191679 A CN 202110191679A CN 112905187 B CN112905187 B CN 112905187B
Authority
CN
China
Prior art keywords
encryption
graph
calculation
dynamic
computing
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
Application number
CN202110191679.7A
Other languages
English (en)
Other versions
CN112905187A (zh
Inventor
唐兴兴
陈建蓉
黄启军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202110191679.7A priority Critical patent/CN112905187B/zh
Publication of CN112905187A publication Critical patent/CN112905187A/zh
Application granted granted Critical
Publication of CN112905187B publication Critical patent/CN112905187B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种编译方法、装置、电子设备及存储介质。该编译方法应用于联邦学习的参与方,该方法包括:获取源代码,所述源代码中包括用于实现联邦学习的代码段;对所述源代码进行解析,生成动态计算图,所述动态计算图中包括与所述代码段对应的计算节点,所述动态计算图用于表征所述联邦学习的数据处理逻辑;利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图;根据所述加密计算图,生成编译后的代码。联邦学习的参与方可以采用此编译方法对源代码进行编译,利用预设的加密算子替换动态计算图中的对应算子,在编译过程中实现加密。因为编译方法支持对源代码中的算子进行加密,所以在源代码中无需编写加密过程。

Description

编译方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机领域,尤其涉及一种编译方法、装置、电子设备及存储介质。
背景技术
科技不断发展,人工智能技术已被广泛应用,数据的价值也愈发凸显。但随着近年来人们对数据隐私的重视以及相应政策法规的发布,传统的获取原始数据并进行机器学习建模的做法已不再方便可行。人们开始转而采用联邦机器学习或多方安全计算等方式进行建模。
联邦机器学习或多方安全计算会涉及到多个参与方之间的信息传输、调度等,一般需要在代码开发中显式地对加密信息传输,导致代码复杂,较难开发和维护。也会使得相应的机器学习开发和学习成本较高,体验较差。
发明内容
本发明的主要目的在于提供一种编译方法、装置、电子设备及存储介质,旨在通过对编译过程进行改进,以支持源代码开发的简化,进而提高源代码开发和维护的效率。
为实现上述目的,第一方面,本发明提供一种编译方法,应用于联邦学习的参与方,所述方法包括:
获取源代码,所述源代码中包括用于实现联邦学习的代码段;
对所述源代码进行解析,生成动态计算图,所述动态计算图中包括与所述代码段对应的计算节点,所述动态计算图用于表征所述联邦学习的数据处理逻辑;
利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图;
根据所述加密计算图,生成编译后的代码。
可选的,所述利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图,包括:
获取预设的加密算子,所述加密算子包括下述至少一项:用于计算损失函数的加密算子、用于进行加法计算的加密算子、用于进行乘法计算的加密算子、用于进行减法计算的加密算子、用于进行指数计算的加密算子;
对于每一加密算子,在所述动态计算图中查找是否存在对应的计算节点;
若存在对应的计算节点,则利用所述加密算子替换所述计算节点的算子。
可选的,所述对所述源代码进行解析,生成动态计算图,包括:
对所述源代码进行解析,生成静态计算图,所述静态计算图中包括与所述代码段对应的计算节点,所述静态计算图用于表征源代码对应的数据处理逻辑;
根据所述静态计算图和预设的优化规则,生成动态计算图,所述动态计算图用于表征优化后的数据处理逻辑。
可选的,所述根据所述静态计算图和预设的优化规则,生成动态计算图,包括:
根据预设的优化规则,确定所述静态计算图中的待调整节点;
调整所述待调整节点,生成动态计算图。
可选的,所述方法还包括:
确定在联邦学习过程中对数据进行加密时所使用的加密算法,根据加密算法,确定密文加法和/或密文乘法的计算逻辑;
根据所述密文加法和密文乘法的计算逻辑,确定各预设的加密算子的计算逻辑;
相应的,所述根据所述加密计算图,生成编译后的代码,包括:根据所述加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
可选的,所述源代码中还包括所述代码段对应的执行方标识;
所述对所述源代码进行解析,生成动态计算图,包括:
根据所述执行方标识,生成角色节点,所述角色节点与所述代码段对应的计算节点关联;
所述根据所述加密计算图,生成编译后的代码,包括:
根据所述加密计算图的角色节点,生成对应的角色判断语句,以确定所述联邦学习的参与方是否为所述角色节点关联的计算节点的执行方;
根据所述角色判断语句、所述加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
第二方面,本发明还提供一种编译装置,包括:
获取模块,用于获取源代码,所述源代码中包括用于实现联邦学习的代码段;
解析模块,用于对所述源代码进行解析,生成动态计算图,所述动态计算图中包括与所述代码段对应的计算节点,所述动态计算图用于表征所述联邦学习的数据处理逻辑;
加密模块,用于利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图;
代码生成模块,用于根据所述加密计算图,生成编译后的代码。
第三方面,本发明提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的编译程序,所述编译程序被所述处理器执行时实现如第一方面所述的编译方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有编译程序,所述编译程序被处理器执行时实现如第一方面所述的编译方法的步骤。
第五方面,本发明提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面所述的方法。
本发明提供一种编译方法、装置、电子设备及存储介质。该编译方法应用于联邦学习的参与方,该方法包括:获取源代码,所述源代码中包括用于实现联邦学习的代码段;对所述源代码进行解析,生成动态计算图,所述动态计算图中包括与所述代码段对应的计算节点,所述动态计算图用于表征所述联邦学习的数据处理逻辑;利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图;根据所述加密计算图,生成编译后的代码。参与联邦学习的参与方可以采用此编译方法对源代码进行编译,在编译过程中,将代码段解析生成对应的动态计算图,以表征代码段所体现的联邦学习的数据处理逻辑,其中包括有多个计算节点;利用预设的加密算子替换动态计算图中的对应算子,生成加密计算图,进而得到编译后的代码。即,在编译过程中实现加密。也就是说,此编译方法是支持源代码简化的底层基础,因为编译方法支持对源代码中的算子进行加密,进而将源代码编译成可执行的代码,所以在源代码中无需编写加密过程。这样就实现了源代码的简化,降低了源代码开发的复杂度和后期维护难度。
附图说明
图1为本发明提供的一种联邦学习的原理示意图;
图2为本发明提供的一种应用场景的示意图;
图3为本发明一实施例提供的一种编译方法的流程图;
图4a为本发明一实施例提供的对一段源代码进行解析后生成的动态计算图的示意图;
图4b为图4a的动态计算图对应的一种加密计算图;
图4c为图4a的动态计算图对应的另一种加密计算图;
图4d为对另一段源代码进行解析后生成的加密计算图的示意图;
图5为本发明一实施例提供的一种编译装置的结构示意图;
图6为本发明一实施例提供的一种电子设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在许多领域中,基于大数据的机器学习和模型训练等技术不断发展。通过对大数据的挖掘,可以得到许多有价值的信息。随着技术的发展,原始数据的来源越来越广泛,甚至会有跨领域联合。
在一些业务场景中,多个业务平台收集有各自的业务数据。这些业务数据很有价值,通常作为业务平台的隐私信息保存。各业务平台不期望与其他业务平台共享原始形式的业务数据。但在一些需求中,多个业务平台期望在不公开各方的业务数据的情况下进行协同计算,以提高业务处理能力。基于此,联邦机器学习等方式应运而生。
联邦机器学习(Federated Machine Learning),又称联邦学习(FederatedLearning),能够在数据不出本地的前提下,联合各方进行数据使用和协同建模,逐渐成为隐私保护计算中的一种常用方法。
在联邦学习的过程中,可以通过加密机制下的参数交换方式保护参与方的隐私数据,数据本身不会进行传输,参与方不需要向其它参与方暴露自己所拥有的数据,也不能反推其它参与方的数据,因而联邦学习可以很好的保护用户隐私和保障数据安全,并可以解决数据孤岛问题。
针对不同数据集,联邦学习可以分为横向联邦学习(Horizontal FederatedLearning)、纵向联邦学习(Vertical Federated Learning)与联邦迁移学习(FederatedTransfer Learning)。
其中,横向联邦学习可以应用于不同数据集的用户特征重叠较多而用户重叠较少的场景。举例来说,一个是A地的银行,另一个是B地的银行,两个银行所在地不同,用户重叠较少,但是两个银行的数据都涉及用户的收支行为、资产数据等,此时可以基于横向联邦学习来实现两个银行之间的数据协同计算。
纵向联邦学习可以应用于不同数据集的用户重叠较多而用户特征重叠较少的场景。举例来说,参与方中有两个不同的机构,一个是某地的银行,另一个是该地的电商。它们的用户群体很有可能均包含该地的大部分居民,因此用户的交集较大,但是,由于银行的数据涉及用户的收支行为与资产数据,而电商的数据涉及用户的浏览与购买历史,因此它们的用户特征交集较小,此时可以基于纵向联邦学习来实现银行与电商之间的数据协同计算。
联邦迁移学习可以应用于不同数据集的用户与用户特征重叠均较少的场景。举例来说,参与方中有两个不同的机构,一个是A地的银行,另一个是B地的电商,这两个参与方的用户群体交集很小,用户特征的重合度也很小。在这种情况下,需要引入迁移学习来提升协同计算的效果。
联邦学习可使用的机器学习算法有很多种,包括但不局限于神经网络、随机森林等算法。
图1为本发明实施例提供的一种联邦学习的原理示意图。如图1所示,服务器和k个客户终端可以参与联邦学习过程。在联邦学习过程中,服务器向各个客户终端下发全局模型,每个客户终端利用本地数据对服务器下发的全局模型进行训练,得到训练后的本地模型上传至服务器,服务器对各个客户终端上传的模型进行聚合,得到更新后的全局模型,依次重复上述过程,直至聚合后的全局模型收敛为止。
假设当前正在进行第t轮的迭代,算法的执行步骤流程如下:
步骤1、服务器将当前全局模型Mt下发给每一个客户终端Ci
步骤2、客户终端Ci将当前的全局模型Mt覆盖本地模型即/>
步骤3、客户终端Ci利用自身的本地训练样本进行本地训练,客户终端Ci的本地模型从变为/>将/>的模型参数上传给服务器。
步骤4、服务端接收到所有客户终端上传的模型参数聚合求取全局模型。
因为涉及到多方协作,且各方的执行操作不尽相同,一般,要实现类似上述的联邦学习的过程,需要开发的源代码较为复杂。而为了保证各客户端数据的安全性,在客户终端和服务器进行交互的过程中,还需要对交互的数据加密处理。增加加密语句的源代码复杂度更高,相应的机器学习成本较高,用户的开发体验较差,对于源代码的后期维护修改也较为困难。
基于上述的问题,本发明欲提出一种编译方法,旨在通过对编译过程进行改进,以支持源代码开发的简化,进而提高源代码开发和维护的效率。
图2为本发明提供的一种应用场景的示意图。如图2所示的,用户根据自身业务需求,在用户端编写联邦学习的源代码,以将源代码发送至参与联邦学习的各个参与方(图中以3个参与方为例示出,参与方的具体数量根据可以实际场景而定)。各个参与方编译源代码,通过加密算子实现加密,生成可运行的机器代码并运行,各个参与方配合,实现联邦学习的过程。从而实现联邦学习模型参数的更新。
图3为本发明一实施例提供的一种编译方法的流程图。本实施例提供的编译方法的执行主体为联邦学习多个参与方中的任一参与方。如图3所示的,本实施例的方法可以包括:
S301、获取源代码,源代码中包括用于实现联邦学习的代码段。
具体的,可以通过接收用户输入的源代码的方式获取源代码;或者,可以从其它设备或其它参与方所在设备获取源代码。
获取到的源代码可以为与参与方自身角色对应的源代码,或者参与联邦学习的各参与方通用的源代码。
每个参与方参与训练的设备节点也可以是一个或多个,但参与方的角色无外乎三个:特征变量和目标变量的提供方(guest,以G作为简称)、特征变量提供方(host,以H作为简称)、协调方(arbiter,以A作为简称)。因在联邦学习中的角色决定了其需要执行的操作,故可以在源代码开发过程中针对每个角色编写对应的源代码。
在一些实施例中,也可以以代码段的执行方角色标识作为标志,为各角色编写一套通用的源代码。即,参与联邦学习的各参与方的源代码相同,该源代码中包含有各方所需要执行的操作,这些操作以执行操作的角色为标识。在编译过程中,将执行方的角色标识编译为用于判断执行方角色的判断语句,相应生成编译后的代码。这样,各参与方执行编译后的代码,即可通过判断语句判断自身是否为某个操作的执行方,进而确定是否执行该操作。实现各参与方执行相同源代码中属于自己角色的操作的目的。
S302、对源代码进行解析,生成动态计算图,动态计算图中包括与代码段对应的计算节点,动态计算图用于表征联邦学习的数据处理逻辑。
源代码中包括基于参与方的数据进行计算最终确定模型参数的相关数据处理逻辑,对应的生成的计算图即可用以表征单方数据的数据处理逻辑。其中,节点为数据或数据对应的逻辑方法,节点间的路径表示各节点间的逻辑关系。在本发明中将数据对应的逻辑方法的节点称为计算节点,一般可以表征两个或多个数据之间的计算逻辑。
对于通用源代码,还可以根据其中的执行方标识,生成对应的角色节点;角色节点与代码段对应的计算节点相关联。
具体的,根据如上述的执行方角色标识生成对应的角色节点,根据如上述的执行方角色标识对应的操作生成对应的计算节点,此角色节点与这些计算节点相关联。角色节点实际相当于一个判断逻辑的节点,当判断逻辑的结果为是,则按照逻辑依次执行相对应的计算节点。
S303、利用预设的加密算子,替换动态计算图中的对应的计算节点的算子,生成加密计算图。
将动态计算图中与预设的加密算子对应的计算节点的算子用预设的加密算子替换,即可生成加密计算图。
其中,加密算子是预先定义的具有加密功能或加密计算功能或加密传输功能的算子,其底层算法可以实现对对应数据的加密或对加密数据的计算或对数据的加密传输。
根据前述的联邦学习的原理,客户终端需要依赖本地训练样本数据进行模型训练,而后将更新的模型数据上传给服务器。而为了保证数据不出本地的原则,也为了防止其它参与方反推出本方的原始训练样本数据,各方数据在处理过程中均需要加密处理。而对于加密数据的计算与普通数据的计算稍有不同,因而需要依赖于安全计算或同态加密等加密计算的基础,实现加密算子,进而实现对原始数据加密,或者对加密后的原始数据进行计算,或对计算得到的加密数据进行加密传输。
其中,利用加密算子对加密后的原始数据进行计算得到的结果与对原始数据进行计算得到的结果进行加密的结果是相同的。
S304、根据加密计算图,生成编译后的代码。
源代码可以是基于解释性语言编写的程序,如基于python语言编辑的程序。python作为一种解释性语言,简单易学,但不能被机器识别,因而需要将其编译为可识别的机器语言。
加密计算图中每个节点有其对应的逻辑,根据加密计算图中的节点对应的逻辑,可以生成每个节点对应的代码,进而编译生成完整的编译后的、可供机器识别和执行的代码,执行该代码即可实现联邦学习的处理流程。
在实际应用中,开发人员可以设计联邦学习的实现逻辑,并对应编写源代码,将源代码输入到各参与方的设备中。各参与方在进行联邦学习时,即可基于本方法对源代码进行解析,生成动态计算图,并将计算图中相应的计算节点的算子替换成加密算子,生成加密计算图,基于加密计算图生成编译后的代码。编译后的代码既包含了初始的联邦学习的实现逻辑,同时对联邦学习过程中的数据实现加密处理。使开发人员在编写源代码时可以只关注具体的逻辑的实现,而不需要关注加密过程的实现。
本实施例提供的编译方法应用于联邦学习的参与方,该方法包括:获取源代码,源代码中包括用于实现联邦学习的代码段;对源代码进行解析,生成动态计算图,动态计算图中包括与代码段对应的计算节点,动态计算图用于表征联邦学习的数据处理逻辑;利用预设的加密算子,替换动态计算图中的对应的计算节点的算子,生成加密计算图;根据加密计算图,生成编译后的代码。参与联邦学习的参与方可以采用此编译方法对源代码进行编译,在编译过程中,将代码段解析生成对应的动态计算图,以表征代码段所体现的联邦学习的数据处理逻辑,其中包括有多个计算节点;利用预设的加密算子替换动态计算图中的对应算子,生成加密计算图,进而得到编译后的代码。即,在编译过程中实现加密。也就是说,此编译方法是支持源代码简化的底层基础,因为编译方法支持对源代码中的算子进行加密,进而将源代码编译成可执行的代码,所以在源代码中无需编写加密过程。这样就实现了源代码的简化,降低了源代码开发的复杂度和后期维护难度。
具体的,上述利用预设的加密算子,替换动态计算图中的对应的计算节点的算子,生成加密计算图,可以包括:获取预设的加密算子,加密算子包括下述至少一项:用于计算损失函数的加密算子、用于进行加法计算的加密算子、用于进行乘法计算的加密算子、用于进行减法计算的加密算子、用于进行指数计算的加密算子;对于每一加密算子,在动态计算图中查找是否存在对应的计算节点;若存在对应的计算节点,则利用加密算子替换计算节点的算子。
具体的,针对每一个预设的加密算子,可以根据预设的加密算子,从动态计算图中确定对应的计算节点;利用预设的加密算子,替换对应的计算节点的算子,生成加密计算图。即,首先根据预设的加密算子,确定动态计算图中是否有与预设的加密算子对应的计算节点,若存在,则将加密算子替换对应的计算节点的算子。
在另一种方式中,还可以遍历动态计算图中的计算节点,针对每一个计算节点,从预设的加密算子中查找是否有匹配的加密算子,若存在,则用加密算子替换对应的计算节点的算子。
通过这种方式,可以实现对动态计算图中相应计算节点的替换,且不会有遗漏。
针对于不同的加密算法,加密算子的设定也会有所不同。上述的方法还可以包括:确定在联邦学习过程中对数据进行加密时所使用的加密算法,根据加密算法,确定密文加法和/或密文乘法的计算逻辑;根据密文加法和密文乘法的计算逻辑,确定各预设的加密算子的计算逻辑。相应的,上述的根据加密计算图,生成编译后的代码,包括:根据加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
在密码学当中,将需要被加密的原始数据成为明文,将加密后的明文称为密文,对明文进行加密或解密的密码称为密钥,将明文加密为密文的算法则称为加密算法。加密算法可用于确定密钥、明文运算与密文运算之间的关系。
例如,在一些加密算法中,两明文乘积的密文与对应的两密文的乘积相同。同时,称这种加密算法具有乘法同态性。如ElGamal同态加密算法。例如,a、b为两明文,对应的密文为[[a]]、[[b]],若要计算[[a*b]],只需要计算对应的[[a]]*[[b]]即可。
又例如,在一些加密算法中,两明文加和的密文与两密文的乘积相同。同时,称这种加密算法具有加法同态性。如Paillier同态加密算法。例如,a、b为两明文,对应的密文为[[a]]、[[b]],若要计算[[a+b]],只需要计算对应的[[a]]*[[b]]即可。
再例如,在一些加密算法中,两明文乘积的密文与两密文的乘积相同,且两明文加和的密文与两密文的加和相同。同时,称这种加密算法具有全同态性。如多密钥NTRU全同态加密算法。例如,a、b为两明文,对应的密文为[[a]]、[[b]],若要计算[[a+b]],只需要计算对应的[[a]]+[[b]]即可;若要计算[[a*b]],只需要计算对应的[[a]]*[[b]]即可。
可以理解的是,乘法与加法之间可以实现转化,乘法或加法与除法或减法等其它运算之间也可以实现转化。因而,即使加密算法中只明确了明文的加法逻辑或乘法逻辑,也可以据此推断出其它运算的逻辑。
若动态计算图中的原始的节点是从其它参与方获取的数据,即明文数据,则在联邦学习场景下,需要对其进行加密,转化为加密的数据,即密文数据;若动态计算图中的原始的节点是本地数据,需要根据计算逻辑确定是否需要对该本地数据进行加密(例如,若此本地数据需与其它方的加密数据进行计算,则需要进行加密);若动态计算图中的原始的节点是加法,则替换为同态加法算子,同态加法算子的逻辑根据对应的加密算法来确定。若动态计算图中的原始的节点是乘法,则替换为同态乘法算子,同态乘法算子的逻辑根据对应的加密算法来确定。
另外,所有的计算节点都可以拆解为相加和/或相乘,基于上述同样的逻辑,可以实现原算子和加密算子的替换。
图4a为对一段源代码进行解析后生成的动态计算图的示意图,图4b为图4a的动态计算图对应的加密计算图,图4c为图4a的动态计算图对应的另一种加密计算图。此段源代码的执行主体为参与方A。在本实施例中,采用的加密算法为上述的Paillier同态加密算法。
其中,a表示参与方A的原始数据,[[a]]表示a的密文;b表示参与方B的原始数据,[[b]]表示b的密文;+表示加法算子,⊕表示加密加法算子。
对应于图4a,其实际表征的计算逻辑为参与方A提供的数据a与参与方B提供的数据b相加。在联邦学习的场景中,a和b为分别来自不同参与方的原始数据,考虑到数据安全,需对其进行加密。即参与方A可以从参与方B处获取[[b]],并基于[[b]]和本地的a求解a+b。虽然无法对[[b]]进行解密,但可以基于Paillier同态加密算法的加法同态性,即两明文加和的密文与两密文的乘积相同求解:[[a]]*[[b]]=[[a+b]]。
基于其中一种算子替换规则替换加密算子后,生成对应的图4b可以实现上述的计算逻辑。其中加密加法⊕的计算逻辑为:从参与方B获取对b进行加密得到的[[b]],对a加密得到[[a]],然后计算与[[b]]的乘积。
基于另一种算子替换规则替换数据节点和计算节点的加密算子后,生成对应的图4c也可以实现上述的计算逻辑。其中,数据节点a被替换为加密数据节点[[a]],表示对a进行加密后得到对应的密文[[a]],加密加法⊕的计算逻辑为:从参与方B获取[[b]],然后计算[[a]]与[[b]]的乘积。
此实施例仅为一示例,意在说明加密节点的计算逻辑,在实际应用过程中,结合该实施例及上述实施例的说明,还可以实现其它不同的算法逻辑。例如图4d为对另一段源代码进行解析后生成的加密计算图的示意图。其中,MpcMatMul、MpcAdd、MpcSigmoid、MPCLoss为预先定义的加密算子,分别表示加密乘法、加密加法、加密西蒙算法、加密损失算法。加密乘法、加密加法可以根据加密算法的同态性确定计算逻辑;加密西蒙算法用于实现西蒙函数,加密损失算法用于计算损失函数,根据上述的分析可知,这些函数实际都可以拆解为加法和/或乘法的组合,从而确定其计算逻辑。
相对应的,在确定加密算子对应的计算逻辑后,即可据此生成对应的编译后的代码。具体的,若加密算子的计算逻辑中对应有加密逻辑,则使用对应的密钥进行加密,生成对应的加密语句,并根据加密语句,生成编译后的代码。
基于加密算子的底层实现逻辑,可以确定具体的加密方式,生成对应的加密语句,再结合加密计算图本身所表征的数据处理逻辑,即可生成对应的编译后的代码。如此,即可实现在编译过程中加入加密语句的目的。基于此种编译逻辑,源代码编写时则可以略去加密步骤,转而在编译过程中生成。
对于通用源代码,根据加密计算图,生成编译后的代码时,还包括:根据加密计算图的角色节点,生成对应的角色判断语句,以确定联邦学习的参与方是否为角色节点关联的计算节点的执行方。
因为通用源代码中包含有可以进行角色判断的执行方标识,并且通过本实施例的编译方法可以生成进行角色判断的判读语句,有了充分的条件允许为各参与方编写同样的源代码,可以更进一步地简化源代码的复杂度。
在一些实施例中,上述的对源代码进行解析,生成动态计算图,可以包括:对源代码进行解析,生成静态计算图,静态计算图中包括与代码段对应的计算节点,静态计算图用于表征源代码对应的数据处理逻辑;根据静态计算图和预设的优化规则,生成动态计算图;动态计算图用于表征优化后的数据处理逻辑。其中,根据静态计算图和预设的优化规则,生成动态计算图,可以包括:根据预设的优化规则,确定静态计算图中的待调整节点;调整待调整节点,生成动态计算图。
即,直接对源代码进行解析,生成对应的静态计算图。静态计算图所表征的数据处理逻辑与源代码的逻辑一致。而后,通过对静态计算图进行优化,生成动态计算图,以实现数据处理逻辑上的优化。具体的优化规则可以是预先制定的,当确定静态计算图中存在可优化逻辑时,则基于优化规则进行优化。即确定可优化逻辑所在的计算节点为待调整节点,对其进行调整。优化具体指对计算逻辑的调整,调整后的计算逻辑更加简化或便于执行,目的是便于简化最终生成的编译后的代码。
例如,对于静态计算图中明显的相同的计算逻辑,可以对该重复逻辑的结果进行保存,确定为一新节点,并以此新节点替换该重复逻辑涉及到的节点。例如在静态计算图中多次出现图4a中的节点组合,可以知道,其代表的计算逻辑相同,则将其替换为一新节点,以简化计算图,实现优化。
图5为本发明一实施例提供的一种编译装置的结构示意图,如图5所示,该编译装置500包括:获取模块501、解析模块502、加密模块503、代码生成模块504。
获取模块501,用于获取源代码,源代码中包括用于实现联邦学习的代码段。
解析模块502,用于对源代码进行解析,生成动态计算图,动态计算图中包括与代码段对应的计算节点,动态计算图用于表征联邦学习的数据处理逻辑。
加密模块503,用于利用预设的加密算子,替换动态计算图中的对应的计算节点的算子,生成加密计算图。
代码生成模块504,用于根据加密计算图,生成编译后的代码。
可选的,加密模块503在利用预设的加密算子,替换动态计算图中的对应的计算节点的算子,生成加密计算图时,具体用于:
获取预设的加密算子,加密算子包括下述至少一项:用于计算损失函数的加密算子、用于进行加法计算的加密算子、用于进行乘法计算的加密算子、用于进行减法计算的加密算子、用于进行指数计算的加密算子;
对于每一加密算子,在动态计算图中查找是否存在对应的计算节点;
若存在对应的计算节点,则利用加密算子替换计算节点的算子。
可选的,解析模块502在对源代码进行解析,生成动态计算图时,具体用于:
对源代码进行解析,生成静态计算图,静态计算图中包括与代码段对应的计算节点,静态计算图用于表征源代码对应的数据处理逻辑;
根据静态计算图和预设的优化规则,生成动态计算图,动态计算图用于表征优化后的数据处理逻辑。
可选的,解析模块502在根据静态计算图和预设的优化规则,生成动态计算图时,具体用于:
根据预设的优化规则,确定静态计算图中的待调整节点;
调整待调整节点,生成动态计算图。
可选的,解析模块502还用于:
确定在联邦学习过程中对数据进行加密时所使用的加密算法,根据加密算法,确定密文加法和/或密文乘法的计算逻辑;
根据密文加法和密文乘法的计算逻辑,确定各预设的加密算子的计算逻辑;
相应的,代码生成模块504具体用于:根据加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
可选的,源代码中还包括代码段对应的执行方标识;
解析模块502在对源代码进行解析,生成动态计算图时,具体用于:
根据执行方标识,生成角色节点,角色节点与代码段对应的计算节点关联;
代码生成模块504在根据加密计算图,生成编译后的代码时,具体用于:
根据加密计算图的角色节点,生成对应的角色判断语句,以确定联邦学习的参与方是否为角色节点关联的计算节点的执行方;
根据角色判断语句、加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
本发明实施例所提供的编译装置可执行本发明任一实施例所提供的编译方法,具备执行上述编译方法相应的功能模块和与上述编译方法相同的有益效果,此处不再赘述。
图6为本发明一实施例提供的一种电子设备的结构示意图,如图6所示,该电子设备600包括:存储器601、处理器602及存储在存储器上并可在处理器602上运行的编译程序,编译程序被处理器602执行时实现本发明任一实施例提供的编译方法的步骤。
其中,存储器601和处理器602通过总线连接。
相关说明可以对应参见上述各实施例中对应的相关描述和效果进行理解,此处不做过多赘述。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述实施例中任意实施例提供的编译方法。
其中,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本发明还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本发明任一实施例提供的方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外部设备互连(Peripheral Component,简称PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本发明附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种编译方法,其特征在于,应用于联邦学习的参与方,所述方法包括:
获取源代码,所述源代码中包括用于实现联邦学习的代码段;
对所述源代码进行解析,生成动态计算图,所述动态计算图中包括与所述代码段对应的计算节点,所述动态计算图用于表征所述联邦学习的数据处理逻辑;
利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图;
根据所述加密计算图,生成编译后的代码。
2.根据权利要求1所述的方法,其特征在于,所述利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图,包括:
获取预设的加密算子,所述加密算子包括下述至少一项:用于计算损失函数的加密算子、用于进行加法计算的加密算子、用于进行乘法计算的加密算子、用于进行减法计算的加密算子、用于进行指数计算的加密算子;
对于每一加密算子,在所述动态计算图中查找是否存在对应的计算节点;
若存在对应的计算节点,则利用所述加密算子替换所述计算节点的算子。
3.根据权利要求1或2任一项所述的方法,其特征在于,所述对所述源代码进行解析,生成动态计算图,包括:
对所述源代码进行解析,生成静态计算图,所述静态计算图中包括与所述代码段对应的计算节点,所述静态计算图用于表征源代码对应的数据处理逻辑;
根据所述静态计算图和预设的优化规则,生成动态计算图,所述动态计算图用于表征优化后的数据处理逻辑。
4.根据权利要求3所述的方法,其特征在于,所述根据所述静态计算图和预设的优化规则,生成动态计算图,包括:
根据预设的优化规则,确定所述静态计算图中的待调整节点;
调整所述待调整节点,生成动态计算图。
5.根据权利要求1或2任一项所述的方法,其特征在于,还包括:
确定在联邦学习过程中对数据进行加密时所使用的加密算法,根据加密算法,确定密文加法和/或密文乘法的计算逻辑;
根据所述密文加法和密文乘法的计算逻辑,确定各预设的加密算子的计算逻辑;
相应的,所述根据所述加密计算图,生成编译后的代码,包括:根据所述加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
6.根据权利要求1或2任一项所述的方法,其特征在于,所述源代码中还包括所述代码段对应的执行方标识;
所述对所述源代码进行解析,生成动态计算图,包括:
根据所述执行方标识,生成角色节点,所述角色节点与所述代码段对应的计算节点关联;
所述根据所述加密计算图,生成编译后的代码,包括:
根据所述加密计算图的角色节点,生成对应的角色判断语句,以确定所述联邦学习的参与方是否为所述角色节点关联的计算节点的执行方;
根据所述角色判断语句、所述加密计算图中加密算子对应的计算逻辑,生成编译后的代码。
7.一种编译装置,其特征在于,包括:
获取模块,用于获取源代码,所述源代码中包括用于实现联邦学习的代码段;
解析模块,用于对所述源代码进行解析,生成动态计算图,所述动态计算图中包括与所述代码段对应的计算节点,所述动态计算图用于表征所述联邦学习的数据处理逻辑;
加密模块,用于利用预设的加密算子,替换所述动态计算图中的对应的计算节点的算子,生成加密计算图;
代码生成模块,用于根据所述加密计算图,生成编译后的代码。
8.一种电子设备,其特征在于,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的编译程序,所述编译程序被所述处理器执行时实现如权利要求1至6任一项所述的编译方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有编译程序,所述编译程序被处理器执行时实现如权利要求1至6任一项所述的编译方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的方法。
CN202110191679.7A 2021-02-20 2021-02-20 编译方法、装置、电子设备及存储介质 Active CN112905187B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110191679.7A CN112905187B (zh) 2021-02-20 2021-02-20 编译方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110191679.7A CN112905187B (zh) 2021-02-20 2021-02-20 编译方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112905187A CN112905187A (zh) 2021-06-04
CN112905187B true CN112905187B (zh) 2024-02-23

Family

ID=76123848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110191679.7A Active CN112905187B (zh) 2021-02-20 2021-02-20 编译方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112905187B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113542228B (zh) * 2021-06-18 2022-08-12 腾讯科技(深圳)有限公司 基于联邦学习的数据传输方法、装置以及可读存储介质
CN114239064A (zh) * 2021-12-20 2022-03-25 杭州趣链科技有限公司 隐私计算方法、装置、电子设备及计算机可读存储介质
CN114282257B (zh) * 2022-03-08 2022-07-15 富算科技(上海)有限公司 联邦学习代码生成方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101237A (zh) * 2018-08-01 2018-12-28 北京顶象技术有限公司 代码的加密编译方法及装置
CN111507481A (zh) * 2020-04-17 2020-08-07 腾讯科技(深圳)有限公司 一种联邦学习***
CN111539731A (zh) * 2020-06-19 2020-08-14 支付宝(杭州)信息技术有限公司 基于区块链的联邦学习方法及装置和电子设备
CN112016703A (zh) * 2020-10-15 2020-12-01 北京瑞莱智慧科技有限公司 一种机器学习算法的转换***、方法及电子设备
CN112150280A (zh) * 2020-10-16 2020-12-29 北京百度网讯科技有限公司 提升匹配效率的联邦学习方法及设备、电子设备和介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963226B2 (en) * 2017-10-25 2021-03-30 Aspiring Minds Assessment Private Limited Generating compilable code from uncompilable code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101237A (zh) * 2018-08-01 2018-12-28 北京顶象技术有限公司 代码的加密编译方法及装置
CN111507481A (zh) * 2020-04-17 2020-08-07 腾讯科技(深圳)有限公司 一种联邦学习***
CN111539731A (zh) * 2020-06-19 2020-08-14 支付宝(杭州)信息技术有限公司 基于区块链的联邦学习方法及装置和电子设备
CN112016703A (zh) * 2020-10-15 2020-12-01 北京瑞莱智慧科技有限公司 一种机器学习算法的转换***、方法及电子设备
CN112150280A (zh) * 2020-10-16 2020-12-29 北京百度网讯科技有限公司 提升匹配效率的联邦学习方法及设备、电子设备和介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Trace-based compilation for the Java HotSpot virtual machine;Christian Häubl;Proceedings of the 9th International Conference on Principles and Practice of Programming in Java;20110831;全文 *
面向移动终端智能的自治学习***;徐梦炜;刘渊强;黄康;刘譞哲;黄罡;;软件学报;20201014(10);全文 *

Also Published As

Publication number Publication date
CN112905187A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
Zhang et al. A survey on federated learning
CN112905187B (zh) 编译方法、装置、电子设备及存储介质
Rodríguez-Barroso et al. Federated Learning and Differential Privacy: Software tools analysis, the Sherpa. ai FL framework and methodological guidelines for preserving data privacy
Li et al. A survey on federated learning systems: Vision, hype and reality for data privacy and protection
WO2022089256A1 (zh) 联邦神经网络模型的训练方法、装置、设备、计算机程序产品及计算机可读存储介质
US20210004718A1 (en) Method and device for training a model based on federated learning
CN113159327B (zh) 基于联邦学习***的模型训练方法、装置、电子设备
Rückel et al. Fairness, integrity, and privacy in a scalable blockchain-based federated learning system
Liu et al. Privacy preserving distributed data mining based on secure multi-party computation
CN112257873A (zh) 机器学习模型的训练方法、装置、***、设备及存储介质
CN111401558A (zh) 数据处理模型训练方法、数据处理方法、装置、电子设备
CN112347500B (zh) 分布式***的机器学习方法、装置、***、设备及存储介质
CN112906864A (zh) 信息处理方法、装置、设备、存储介质及计算机程序产品
CN111612167A (zh) 机器学习模型的联合训练方法、装置、设备及存储介质
US20230068770A1 (en) Federated model training method and apparatus, electronic device, computer program product, and computer-readable storage medium
Li et al. Blockchain-based searchable encryption with efficient result verification and fair payment
Weng et al. Golden grain: Building a secure and decentralized model marketplace for MLaaS
US20230362010A1 (en) Systems and methods for predicting communication account identities across decentralized applications
CN116167868A (zh) 基于隐私计算的风险识别方法、装置、设备以及存储介质
El Mestari et al. Preserving data privacy in machine learning systems
Li Combination of blockchain and AI for music intellectual property protection
Chai et al. A survey for federated learning evaluations: Goals and measures
Shanmugarasa et al. A systematic review of federated learning from clients’ perspective: challenges and solutions
Yu et al. Deep learning personalized recommendation-based construction method of hybrid blockchain model
Liu et al. Matrix factorization recommender based on adaptive Gaussian differential privacy for implicit feedback

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
GR01 Patent grant