CN112016703B - 一种机器学习算法的转换系统、方法及电子设备 - Google Patents
一种机器学习算法的转换系统、方法及电子设备 Download PDFInfo
- Publication number
- CN112016703B CN112016703B CN202011099979.4A CN202011099979A CN112016703B CN 112016703 B CN112016703 B CN 112016703B CN 202011099979 A CN202011099979 A CN 202011099979A CN 112016703 B CN112016703 B CN 112016703B
- Authority
- CN
- China
- Prior art keywords
- operator
- data flow
- flow graph
- cost
- machine learning
- 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
Images
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/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
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- 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
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computer Security & Cryptography (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本公开提供一种机器学习算法的转换系统、方法及电子设备,涉及计算机技术领域,系统包括:编程接口层,用于基于预设的数据流程生成工具构建原始机器学习算法的数据流图;操作符安置评估模块,用于计算数据流图中每个操作符在不同参与方执行时对应的安置代价;数据流图拆分调度模块,用于根据安置代价,将数据流图切分为多个子图,并将子图调度到目标参与方执行;编译执行层,用于基于贪心算法策略将子图编译为新数据流图,并通过生成新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。本公开能够有效改善算法转换过程中存在的兼容性差、耦合度高和性能差的问题。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种机器学习算法的转换系统、方法及电子设备。
背景技术
用于驱动AI模型(如Alpha Go、GPT-3)发展的各式各样的训练数据,常常散落的分布在各个机构,因而可以采用分布式隐私保护机器学习(也称联邦学习)的方式,来解决地理分布式数据收集与模型训练中遇到的数据隐私保护问题。
分布式隐私保护机器学习中的一种数据切分方式为垂直切分:数据按照特征分布在不同参与方。对于垂直切分的分布式隐私保护机器学习,其现有的转换方式为,首先实现一个普通串行版本的算法,然后将该算法调试后移植到分布式隐私保护场景中,从而将普通机器学习算法机器转换为分布式隐私保护机器学习。
但是,上述方式存在兼容性差、耦合度高和性能差的主要问题。其中,兼容性差是指分布式隐私保护机器学习,其作为机器学习算法的延伸,与主流深度学习框架的兼容性差,不方便开发者使用。耦合度高是指当前分布式隐私保护场景中机器学习算法与隐私保护计算协议紧密耦合,几乎每次开发都需要仔细分析原机器学习算法全流程;耦合度高还会带来应用移植困难、算法迭代困难、可扩展能力差等问题。性能差是指分布式隐私保护机器学习一般来说会比原单机版机器学习算法慢100甚至1000倍,这给分布式隐私保护机器学习的实际落地带来困难。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种机器学习算法的转换系统、方法及电子设备。
本公开提供了一种机器学习算法的转换系统,包括:从上到下排列的编程接口层、数据流图变换层和编译执行层;其中,所述数据流图变换层包括:操作符安置评估模块、数据流图拆分调度模块;所述编程接口层,用于基于预设的数据流程生成工具构建原始机器学习算法的数据流图;其中,所述数据流程生成工具包括:Google-JAX计算框架;所述数据流图包括一系列操作符;所述操作符安置评估模块,用于计算所述数据流图中每个操作符在不同参与方执行时对应的安置代价;所述数据流图拆分调度模块,用于根据所述安置代价,将所述数据流图切分为多个子图,并将所述子图调度到目标参与方执行;所述编译执行层,用于基于贪心算法策略将所述子图编译为新数据流图,并通过生成所述新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。
进一步,所述操作符包括:源操作数;针对所述数据流图中的任一操作符,所述操作符安置评估模块还用于:通过预设代价性能模型计算该操作符的操作符计算代价、该操作符中源操作数的通信代价和源操作数的计算代价;其中,所述操作符计算代价用于表示操作符的计算在明文或密文上的计算代价,所述源操作数的通信代价用于表示源操作数是否需要进行通信,以及通信对象是明文或密文;基于所述操作符计算代价、所述源操作数的通信代价和所述源操作数的计算代价,确定该操作符在不同参与方执行时分别对应的安置代价。
进一步,数据流图拆分调度模块还用于:根据宽度优先搜索算法遍历所述数据流图中的所有操作符,针对任一操作符,根据该操作符的最小的安置代价确定执行该操作符的目标参与方;在遍历的过程中,依次对各所述操作符对应的目标参与方进行标记,得到标记信息;所述标记信息用于表示所述操作符与所述目标参与方的对应关系,以及遍历所述操作符的拓扑序;根据所述标记信息将所述数据流图拆分为多个子图;其中,每个子图包括对应于同一所述目标参与方经拓扑排序后连续的多个所述操作符;根据所述标记信息调度不同的所述目标参与方执行对应的所述子图。
进一步,数据流图拆分调度模块还用于:如果在计算所述源操作数的通信代价的过程中,确定当前操作符中的源操作数需要进行通信,则在当前操作符计算流程前添加通信算子,得到改造后的新操作符;如果在计算所述源操作数的通信代价的过程中,确定当前操作符中的源操作数需要进行加密通信,则在添加的所述通信算子前添加加密算子,得到改造后的新操作符;基于所述新操作符对包含所述新操作符的子图进行改造。
进一步,所述数据流图变换层还包括子图优化模块;所述子图优化模块,用于对所述子图中的明文计算部分进行优化。
进一步,所述编译执行层包括:密文计算原语模块、通信原语模块、计算编译模块;所述密文计算原语模块,用于使用半同态加密算法库或全同态加密算法库生成所述新数据流图中第一目标操作符对应的计算指令;其中,所述第一目标操作符为待进行加解密计算和/或密文计算的所述操作符;所述通信原语模块,用于使用通信库生成第二目标操作符对应的计算指令;其中,所述第二目标操作符为用于不同参与方通信的所述操作符;所述计算编译模块,用于使用预设编译工具生成第三目标操作符对应的计算指令;其中,所述第三目标操作符为待进行明文计算的所述操作符。
进一步,所述编译执行层还用于:基于所述贪心算法策略,对所述新数据流图中的操作符逐一执行如下编译操作:
判断当前操作符中的源操作数是否不通信,所述当前操作符中的目的操作数是否不通信,以及所述当前操作符与已有的待编译操作符缓存对应的加密与否的状态是否保持一致;其中,所述目的操作数是所述操作符中由所述源操作数计算得到的结果操作数;如果所述当前操作符中的源操作数不通信,所述当前操作符中的目的操作数不通信,且所述当前操作符与所述待编译操作符缓存对应的加密与否的状态保持一致,则将所述当前操作符追加至新的待编译操作符缓存;否则,如果所述当前操作符中的源操作数不通信,所述当前操作符中的目的操作数通信,且所述当前操作符与所述待编译操作符缓存对应的加密与否的状态保持一致,则对所述当前操作符和所述待编译操作符缓存进行共同编译,并清空所述待编译操作符缓存;否则,如果所述当前操作符中的目的操作数不通信,则对所述待编译操作符缓存进行编译,而后将所述当前操作符设定为新的待编译操作符缓存;否则,如果所述当前操作符中的目的操作数通信,则对所述待编译操作符缓存和所述当前操作符分别进行编译,并清空缓存的所述待编译操作符缓存。
本公开还提供了一种机器学习算法的转换方法,包括:基于预设的数据流程生成工具构建原始机器学习算法的数据流图;其中,所述数据流程生成工具包括:Google-JAX计算框架;所述数据流图包括一系列操作符;计算所述数据流图中每个操作符在不同参与方执行时对应的安置代价;根据所述安置代价,将所述数据流图切分为多个子图,并将所述子图调度到目标参与方执行;基于贪心算法策略将所述子图编译为新数据流图,并通过生成所述新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。
本公开还提供了一种电子设备,包括:所述电子设备上设置有以上任一项所述的机器学习算法的转换系统。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供了一种机器学习算法的转换系统、方法及电子设备,该系统包括编程接口层、数据流图变换层和编译执行层;且数据流图变换层包括:操作符安置评估模块、数据流图拆分调度模块;编程接口层用于基于预设的数据流程生成工具(如Google-JAX计算框架)构建原始机器学习算法的数据流图;该数据流图包括一系列操作符;操作符安置评估模块用于计算数据流图中每个操作符在不同参与方执行时对应的安置代价;数据流图拆分调度模块用于根据安置代价,将数据流图切分为多个子图,并将子图调度到目标参与方执行;编译执行层用于基于贪心算法策略将子图编译为新数据流图,并通过生成新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。上述算法的转换方式,编程接口层和编译执行层支持现有的深度学习框架,提高了与主流深度学习框架的兼容性;从编程接口层生成原始机器学习算法的数据流图,到编译执行层生成新数据流图并由此转换得到分布式隐私保护机器学习算法这一过程,是以底层数据流图的视角表达机器学习算法和对应的分布式隐私保护机器学习算法的联系,并通过数据流图变换完成两者间的自动转换;数据流图变换具有通用性,可以适配上层多种机器学习算法,降低了机器学习算法与隐私保护计算协议之间的耦合度;通过数据流图变换层计算操作符的安置代价,并基于安置代价切分子图至不同的目标参与方执行,能够有效提升分布式隐私保护机器学习算法的计算性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种机器学习算法的转换系统的结构示意图;
图2为本公开实施例提供的一种逻辑回归算法示意图;
图3为本公开实施例提供的另一种机器学习算法的转换系统的结构示意图;
图4为本公开实施例提供的一种安置代价计算过程的示意图;
图5为本公开实施例提供的一种数据流图拆分调度的示意图;
图6为本公开实施例提供的一种数据流图编译操作的流程图。
其中,102-编程接口层;104-数据流图变换层;1042-操作符安置评估模块;1044-数据流图拆分调度模块;1046-子图优化模块;106-编译执行层;1062-密文计算原语模块;1064-通信原语模块;1066-计算编译模块。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
大数据驱动的AI应用如Alpha Go、GPT-3等展现了在各自领域革命性的实际效果。毫无疑问,超大量的训练数据是驱动着这些AI模型发展迭代的最重要的因素之一。但现实情况是,各式各样的数据常常散落的分布在各个机构,把这些数据收集在一起进行模型训练经常面临隐私保护方面的风险。分布式隐私保护机器学习(也称联邦学习)是解决地理分布式数据收集与模型训练的解决方案之一。
根据数据切分的特点,分布式隐私保护机器学习可以分为以下两种:水平切分:数据按ID分布在不同参与方;以及,垂直切分:数据按特征分布在不同参与方。对于前者,各参与方拥有整个模型,仅仅以隐私保护的方式通信模型参数更新(类似于数据并行);对于后者,各参与方拥有模型的一部分,多参与方依次执行模型流程的一些子模块,需要频繁的以隐私保护的方式通信中间结果(类似于模型并行)。需要说明的是,垂直切分的分布式隐私保护机器学习算法设计更加复杂;因为它需要仔细分析整个算法流程,把各个子模块调度到各个参与方,并且使用多方安全计算方案/密码学方案使得各方数据在训练中不会以直接或间接的方式泄漏到其他参与方。
对于垂直切分的分布式隐私保护机器学习,现有转换方案可以分为如下两类:
第一类,对于每种机器学习算法手动构造对应的分布式隐私保护机器学习算法,手动指定各参与方的计算逻辑和通信内容及贯穿其中的密码学方案的使用。该类方案如FATE(Federated AI Technology Enabler,联邦机器学习框架)。
第二类,复用主流深度学习框架,并将其中的操作符改用秘密共享作为底层实现。它仅支持秘密共享这一单一的多方安全计算方案,一般需要手动实现反向传播算法、会强制所有参与方执行仅需某一个参与方执行的操作符、并缺少分布式隐私保护算法整体流程的分析和调度。该类方案如TF-Encrypted框架。
在以上两种方案中,分布式隐私保护机器学习的现有开发流程是,首先实现一个普通串行版本的算法,经debug和调优后移植到分布式隐私保护场景中,从而将普通机器学习算法机器转换为分布式隐私保护机器学习;移植具体指的是,使用方案中提供的通信/计算接口重新实现各参与方的计算/通信逻辑,或者按照框架提供的新算子重新构建包含各参与方的新数据流图。移植工作容易出错,需要在分布式环境下继续调试;同时算法的维护更新需要重复进行这种移植流程。
总结来看,上述方式主要存在以下三方面缺陷:
一、兼容性差。主流深度学习框架已经被机器学习开发者接受,其提供的操作符、自动反向传播算法等极大的方便了机器学习程序开发。分布式隐私保护机器学习,作为机器学习算法的延伸,却不能很好地兼容于主流深度学习框架,不便于开发者使用。
二、耦合度高。当前分布式隐私保护场景中机器学习算法与隐私保护计算协议紧密耦合,几乎每次开发都需要仔细分析原机器学习算法全流程。耦合度高带来应用移植困难,算法迭代困难,可扩展到更多种机器学习算法的能力差。
三、性能差。一般来说,分布式隐私保护机器学习会比原单机版机器学习算法慢100甚至1000倍,其原因自安于:隐私保护协议引入了大量通信和多方安全计算/密码学方案操作;这给分布式隐私保护机器学习的实际落地带来困难。
因此,为了改善上述问题中的至少一种,本公开实施例提供了一种机器学习算法的转换系统、方法及电子设备,以下对本公开实施例进行详细介绍。
实施例一:
参照图1所示的一种机器学习算法的转换系统的结构示意图,本公开实施例提供的机器学习算法的转换系统可以分为三层,包括从上到下排列的:编程接口层102、数据流图变换层104和编译执行层106。其中,数据流图变换层可以包括但不限于:操作符安置评估模块1042、数据流图拆分调度模块1044。
为了更好地理解该系统的工作原理,接下来对组成系统的三层展开详细描述。
编程接口层,用于基于预设的数据流程生成工具构建原始机器学习算法的数据流图,数据流图包括一系列操作符,且操作符包括:源操作数、操作符名称和输出结果;该输出结果又可称为目的操作数,是由源操作数计算得出的结果操作数;其中,数据流程生成工具诸如Google-JAX计算框架、Tensor Flow、PyTorch等深度学习框架。
具体的,编程接口层提供大量的操作符接口,以供用户组合构建多种普通的原始机器学习算法;通过编程接口层生成的原始机器学习算法的数据流图,发送给数据流图变换层进行分析。在本实施例中,原始机器学习算法以图2所示的逻辑回归算法为例,该逻辑回归算法是通过对编程接口层提供的部分操作符接口进行组合得到的。参照图2中第六行代码定义的模型预测函数、第十行代码定义的模型损失函数和第十五行定义的优化方法,上述定义方法于现有的Google-JAX/Numpy编程方式相同;由于JAX前端使用类Numpy库的编程接口,非常符合python机器学习开发者的使用习惯,基于此,本实施例提供的编程接口层能够支持现有主流深度学习框架,提升了系统的兼容性。
当然可以理解的是,除了将Google-Jax作为数据流程生成工具,编程接口层也可以使用其他数据流程生成工具,诸如Tensor Flow、PyTorch等深度学习框架,也可以自定义前端接口、自定义数据流图格式。
关于数据流图变换层,可参照图2第二十五行代码,表示进入数据流图变换层,具体的,value_and_secure函数作用于另一个函数上,并且将另一个函数底层的数据流图进行分布式隐私保护机器学习变换。也可以理解为,value_and_secure函数用于修饰另一个函数,并触发该函数的分布式隐私保护变换;value_and_secure函数可以修饰多种函数,进而带来了可扩展性。此外需要说明的是,图2第二十七行所示的update函数在本示例中属于某一参与方独自执行的函数,对于这类只在一个参与方单独执行的函数可以不经value_and_secure修饰,从而更加方便用户灵活编写相应机器学习算法。
参照图3,数据流图变换层104可以包括操作符安置评估模块1042和数据流图拆分调度模块1044,还可以包括数据流图子图优化模块(可简称为子图优化模块1046)。通过依次执行数据流图变换层中的操作符安置评估模块1042、数据流图拆分调度模块1044和子图优化模块1046,将数据流图从原始机器学习算法转换为对应的高性能分布式隐私保护机器学习算法。
操作符安置评估模块,用于计算数据流图中每个操作符在不同参与方执行时对应的安置代价。
针对数据流图中的任一操作符,操作符安置评估模块具体用于实现如下两个步骤:
步骤1,通过预设代价性能模型计算该操作符的操作符计算代价、该操作符中源操作数的通信代价和源操作数的计算代价。
其中,操作符计算代价用于表示操作符的计算在明文或密文上的计算开销。
源操作数的通信代价用于表示源操作数是否需要进行通信,通信前是否需要进行加密,以及与源操作数进行通信的对象是明文或密文。当操作符中的源操作数泄露其他参与方的隐私数据时,使用多方安全计算和/或密码学等方式对源操作数进行加密,在此情况下可计算源操作数的通信代价。
在本实施例中,代价性能模型可以是静态模型,即认为操作符计算代价、源操作数的通信代价和源操作数的计算代价是预先知晓的,并可以对上述代价进行静态分析;上述静态模型例如PORPLE性能模型中的offline模块。代价性能模型也可以是动态模型,即认为操作符计算代价、源操作数的通信代价和源操作数的计算代价需要在运行中实时分析且实时变动;上述动态模型例如PORPLE性能模型的online模块。
步骤2,基于操作符计算代价、源操作数的通信代价和源操作数的计算代价,确定该操作符在不同参与方执行时分别对应的安置代价。
通过代价性能模型按照动态规划的方式,沿着数据流图中的依赖关系逐一计算出每个操作符在每个参与方的如下执行代价:操作符计算代价、源操作数的通信代价和源操作数的计算代价。而后,可以将以上三种执行代价之和确定为安置代价。
代价性能模型的安置代价确定方法可参照图4所示,根据源操作数来源的不同,操作符的安置代价有2n种可能性,其中n为操作符中源操作数的个数,比如图4示出了源操作数为2个的操作符的情况,其安置代价有四种可能。代价性能模型可以确定出最小的安置代价作为目标安置代价。
在实际应用中,可能会出现安置代价不可计算的场景,不可计算的安置代价,表示当前安置方式不可实现,例如,对于交互的两个参与方中的第一参与方而言,当操作符在本地执行,而两个源操作数来自第二参与方并经过同态加密,且该操作符不被同态加密算法支持时,该操作符的安置代价为不可计算,可以具体表示为无穷大。
数据流图拆分调度模块,用于根据安置代价,将数据流图切分为多个子图,并将子图调度到目标参与方执行。
在一种实施例中,数据流图拆分调度模块通过执行如下步骤(1)至(4)以实现数据流图的切分和调度:
(1)根据宽度优先搜索算法遍历数据流图中的所有操作符,针对任一操作符,根据该操作符的最小的安置代价确定执行该操作符的目标参与方。其中,确定的执行操作符的目标参与方也可称为操作符的安置位置。
每个操作符的安置位置有多种可能性,本实施例从多种安置代价中选取最小的安置代价,由此确定执行该操作符的目标参与方。经过宽度优先搜索算法遍历数据流图中的所有操作符后,可以确定每个操作符的代价最小的安置位置,从而实现数据流图全局的代价最小。参照图5,根节点(如操作符a)代表目标输出,其计算位置是预先确定的;通过选取操作符的最小安置代价确定该操作符中操作位的安置位置。在确定操作符a中源操作数(即b和c操作符的输出结果)的安置位置后,由于该源操作数同时是另一个操作符(本例中即为b和c操作符)的输出,由此可以确定该另一个操作符(本例中即为b和c操作符)的计算位置。以此类推,通过宽度优先搜索算法,遍历数据流图中的所有操作符,并确定每个操作符的目标参与方。
(2)在遍历的过程中,依次对各操作符对应的目标参与方进行标记,得到标记信息;标记信息用于表示操作符与目标参与方的对应关系,以及遍历操作符的拓扑序。
(3)根据标记信息将数据流图拆分为多个子图。其中,每个子图包括对应于同一目标参与方经拓扑排序后连续的多个操作符。
(4)根据标记信息调度不同的目标参与方执行对应的子图。
由于标记信息可以反映遍历操作符的拓扑序,从而根据标记信息调度子图能够保证数据流图的执行顺序。数据流图拆分调度模块采用拓扑序保证执行依赖,可以在保证拓扑序的情况下对数据流图中的操作符进行顺序变化处理,还将利于后续数据流图的编译优化。
在源操作数的通信代价的计算过程,针对源操作数需要进行通信的场景,按照通信分为一般通信(也即非加密通信,通常直接称为通信)和加密通信两种可能,本实施例中的数据流图拆分调度模块还可以用于实现如下方法:
如果在计算源操作数的通信代价过程中,确定当前操作符中的源操作数需要进行通信(该通信为前述的一般通信),则在当前操作符执行流程前添通信算子,得到改造后的新操作符;其中,通信算子是添加给源操作数的算子;以及,基于新操作符对包含新操作符的子图进行改造。
如果在计算源操作数的通信代价过程中,确定当前操作符中的源操作数需要进行加密通信,则在添加的通信算子前添加加密算子,得到改造后的新操作符;其中,加密算子是基于已添加的通信算子,添加在源操作数的通信算子之前的算子;以及,基于新操作符对包含新操作符的子图进行改造。
本实施例通过添加多方安全计算/密码学方式的通信算子,以及多方安全计算/密码学方式的子图改造,以保护数据隐私。经过添加或改造的新操作符,同拆分得到的数据流图子图共同表达分布式隐私保护机器学习流程。
关于子图优化模块,其用于对子图中的明文计算部分进行优化。子图优化模块可以复用主流深度学习框架中的数据流图优化模块,对子图明文计算部分进行公共子表达式消除、操作数融合等数据流图优化处理。上述数据流图优化模块可以有多种实现,例如TVM和TASO。
本实施例提供一种编译执行层的实现功能,该编译执行层用于基于贪心算法策略将子图编译为新数据流图,并通过生成新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。
编译执行层基于贪心算法策略,按拓扑序对新数据流图中的子图逐条编译,并最大化每种后端内的操作符数目。编译方法的流程如图6所示,即基于贪心算法策略,对新数据流图中的操作符逐一执行如下编译操作:
步骤S602,判断当前操作符中的源操作数是否不通信,当前操作符中的目的操作数是否不通信,以及当前操作符与已有的待编译操作符缓存对应的加密与否的状态是否保持一致;判断当前操作符与待编译操作符缓存对应的加密与否的状态是否保持一致,是指针对当前操作符是否加密的状态与待编译操作符缓存是否加密的状态,判断以上两者的状态是否保持一致。
如果以上判断结果均为是,则执行如下步骤S604,否则执行如下步骤S606-S614。
步骤S604,如果当前操作符中的源操作数不通信,当前操作符中的目的操作数不通信,且当前操作符与待编译操作符缓存对应的加密与否的状态保持一致(比如,均为加密的状态,或者均为不加密的状态),则将当前操作符追加至新的待编译操作符缓存;
步骤S606,判断当前操作符中的源操作数是否不通信,当前操作符中的目的操作数是否通信,以及当前操作符与待编译操作符缓存对应的加密与否的状态保持一致;如果以上判断结果均为是,则执行如下步骤S608,否则执行如下步骤S610-S614。
步骤S608,如果当前操作符中的源操作数不通信,当前操作符中的目的操作数通信,且当前操作符与待编译操作符缓存对应的加密与否的状态保持一致,则对当前操作符和待编译操作符缓存进行共同编译,并清空所述待编译操作符缓存。
步骤S610,判断当前操作符中的目的操作数是否不通信;如果是不通信,则执行如下步骤S612,如果通信,则执行如下步骤S614;
步骤S612,如果当前操作符中的目的操作数不通信,则对待编译操作符缓存进行编译,而后将所述当前操作符设定为新的待编译指令缓存;
步骤S614,如果当前操作符中的目的操作数通信,则对所述待编译操作符和当前操作符分别进行编译,并清空待编译操作符缓存。
通过以上步骤可以看出,当前可执行后端所编译的操作符会尽可能包括当前分析的操作符,除非有通信需要,例如源操作数需要通信,或后端改变,例如在待编译操作符缓存内为明文计算,而当前操作符需在密文下计算。
如图3所述,编译执行层可以包括:密文计算原语模块1062、通信原语模块1064和计算编译模块1066。
密文计算原语模块,用于使用半同态加密算法库(如Paillier、HELib、MicroSoft-Seal同态加密算法库)或全同态加密算法库生成新数据流图中第一目标操作符对应的计算指令;其中,第一目标操作符为待进行加解密计算和/或密文计算的操作符。
通信原语模块,用于使用通信库(如gRPC、MPI、ZeroMQ、Socket通信库)生成第二目标操作符对应的计算指令;其中,第二目标操作符为用于不同参与方通信的操作符。
计算编译模块,用于使用预设编译工具生成第三目标操作符对应的普通计算指令;其中,第三目标操作符为待进行明文计算的操作符。由于计算编译模块的编译对象是明文计算的操作符,实现的是普通的编译工作,故计算编译模块也可称为普通计算编译模块。
综上,以上实施例是针对垂直数据切分场景提供的机器学习算法的转换系统,以底层数据流图的视角表达普通的原始机器学习算法和对应的分布式隐私保护机器学习算法的联系,并通过数据流图变换完成两者间的自动转换;数据流图变换具有通用性,可以适配上层多种机器学习算法,能够复用现有主流深度学习框架开发机器学习算法流程,提高兼容性。从数据流图的视角,分布式隐私保护变换可以理解为将整体数据流图切分为若干子图分布到各参与方,并保证子图交互的部分(通信部分)以隐私保护的方式进行;同时,能够适配现有深度学习框架的编译及优化方法,并通过模型分析隐私保护机器学习算法在多参与方的执行代价,从而提升算法的计算性能。
实施例二:
基于上述实施例提供的机器学习算法的转换系统,本实施例提供一种基于该系统实现的机器学习算法的转换方法,可以包括:
步骤一,基于预设的数据流程生成工具构建原始机器学习算法的数据流图;其中,所述数据流程生成工具包括:Google-JAX计算框架;所述数据流图包括一系列操作符;
步骤二,计算所述数据流图中每个操作符在不同参与方执行时对应的安置代价;
步骤三,根据所述安置代价,将所述数据流图切分为多个子图,并将所述子图调度到目标参与方执行;
步骤四,基于贪心算法策略将所述子图编译为新数据流图,并通过生成所述新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。
本实施例所提供的方法,其实现原理及产生的技术效果和前述实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述系统实施例中相应内容。
进一步,本实施例还提供了一种电子设备,该电子设备上设置有如上述实施例一提供的机器学习算法的转换系统。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种机器学习算法的转换系统,其特征在于,包括:从上到下排列的编程接口层、数据流图变换层和编译执行层;其中,所述数据流图变换层包括:操作符安置评估模块、数据流图拆分调度模块;
所述编程接口层,用于基于预设的数据流程生成工具构建原始机器学习算法的数据流图;其中,所述数据流程生成工具包括:Google-JAX计算框架;所述数据流图包括一系列操作符;
所述操作符安置评估模块,用于计算所述数据流图中每个操作符在不同参与方执行时对应的安置代价;
所述数据流图拆分调度模块,用于根据所述安置代价,将所述数据流图切分为多个子图,并将所述子图调度到目标参与方执行;
所述编译执行层,用于基于贪心算法策略将所述子图编译为新数据流图,并通过生成所述新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。
2.根据权利要求1所述的系统,其特征在于,所述操作符包括:源操作数;针对所述数据流图中的任一操作符,所述操作符安置评估模块还用于:
通过预设代价性能模型计算该操作符的操作符计算代价、该操作符中源操作数的通信代价和源操作数的计算代价;其中,所述操作符计算代价用于表示操作符的计算在明文或密文上的计算代价,所述源操作数的通信代价用于表示源操作数是否需要进行通信,以及通信对象是明文或密文;
基于所述操作符计算代价、所述源操作数的通信代价和所述源操作数的计算代价,确定该操作符在不同参与方执行时分别对应的安置代价。
3.根据权利要求1所述的系统,其特征在于,数据流图拆分调度模块还用于:
根据宽度优先搜索算法遍历所述数据流图中的所有操作符,针对任一操作符,根据该操作符的最小的安置代价确定执行该操作符的目标参与方;
在遍历的过程中,依次对各所述操作符对应的目标参与方进行标记,得到标记信息;所述标记信息用于表示所述操作符与所述目标参与方的对应关系,以及遍历所述操作符的拓扑序;
根据所述标记信息将所述数据流图拆分为多个子图;其中,每个子图包括对应于同一所述目标参与方经拓扑排序后连续的多个所述操作符;
根据所述标记信息调度不同的所述目标参与方执行对应的所述子图。
4.根据权利要求2所述的系统,其特征在于,数据流图拆分调度模块还用于:
如果在计算所述源操作数的通信代价的过程中,确定当前操作符中的源操作数需要进行通信,则在当前操作符计算流程前添加通信算子,得到改造后的新操作符;
如果在计算所述源操作数的通信代价的过程中,确定当前操作符中的源操作数需要进行加密通信,则在添加的所述通信算子前添加加密算子,得到改造后的新操作符;
基于所述新操作符对包含所述新操作符的子图进行改造。
5.根据权利要求1所述的系统,其特征在于,所述数据流图变换层还包括子图优化模块;
所述子图优化模块,用于对所述子图中的明文计算部分进行优化。
6.根据权利要求1所述的系统,其特征在于,所述编译执行层包括:密文计算原语模块、通信原语模块、计算编译模块;
所述密文计算原语模块,用于使用半同态加密算法库或全同态加密算法库生成所述新数据流图中第一目标操作符对应的计算指令;其中,所述第一目标操作符为待进行加解密计算和/或密文计算的所述操作符;
所述通信原语模块,用于使用通信库生成第二目标操作符对应的计算指令;其中,所述第二目标操作符为用于不同参与方通信的所述操作符;
所述计算编译模块,用于使用预设编译工具生成第三目标操作符对应的计算指令;其中,所述第三目标操作符为待进行明文计算的所述操作符。
7.根据权利要求1所述的系统,其特征在于,所述编译执行层还用于:
基于所述贪心算法策略,对所述新数据流图中的操作符逐一执行如下编译操作:
判断当前操作符中的源操作数是否不通信,所述当前操作符中的目的操作数是否不通信,以及所述当前操作符与已有的待编译操作符缓存对应的加密与否的状态是否保持一致;其中,所述目的操作数是所述操作符中由所述源操作数计算得到的结果操作数;
如果所述当前操作符中的源操作数不通信,所述当前操作符中的目的操作数不通信,且所述当前操作符与所述待编译操作符缓存对应的加密与否的状态保持一致,则将所述当前操作符追加至新的待编译操作符缓存;
否则,如果所述当前操作符中的源操作数不通信,所述当前操作符中的目的操作数通信,且所述当前操作符与所述待编译操作符缓存对应的加密与否的状态保持一致,则对所述当前操作符和所述待编译操作符缓存进行共同编译,并清空所述待编译操作符缓存;
否则,如果所述当前操作符中的目的操作数不通信,则对所述待编译操作符缓存进行编译,而后将所述当前操作符设定为新的待编译操作符缓存;
否则,如果所述当前操作符中的目的操作数通信,则对所述待编译操作符缓存和所述当前操作符分别进行编译,并清空缓存的所述待编译操作符缓存。
8.一种机器学习算法的转换方法,其特征在于,包括:
基于预设的数据流程生成工具构建原始机器学习算法的数据流图;其中,所述数据流程生成工具包括:Google-JAX计算框架;所述数据流图包括一系列操作符;
计算所述数据流图中每个操作符在不同参与方执行时对应的安置代价;
根据所述安置代价,将所述数据流图切分为多个子图,并将所述子图调度到目标参与方执行;
基于贪心算法策略将所述子图编译为新数据流图,并通过生成所述新数据流图中各操作符的指令,得到分布式隐私保护机器学习算法。
9.一种电子设备,其特征在于,包括:所述电子设备上设置有如权利要求1至7任一项所述的机器学习算法的转换系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011099979.4A CN112016703B (zh) | 2020-10-15 | 2020-10-15 | 一种机器学习算法的转换系统、方法及电子设备 |
US17/492,643 US20220121775A1 (en) | 2020-10-15 | 2021-10-03 | System and method for converting machine learning algorithm, and electronic device |
EP21201102.7A EP3985539B1 (en) | 2020-10-15 | 2021-10-06 | System and method for converting machine learning algorithm, and electronic device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011099979.4A CN112016703B (zh) | 2020-10-15 | 2020-10-15 | 一种机器学习算法的转换系统、方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112016703A CN112016703A (zh) | 2020-12-01 |
CN112016703B true CN112016703B (zh) | 2021-02-09 |
Family
ID=73527313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011099979.4A Active CN112016703B (zh) | 2020-10-15 | 2020-10-15 | 一种机器学习算法的转换系统、方法及电子设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220121775A1 (zh) |
EP (1) | EP3985539B1 (zh) |
CN (1) | CN112016703B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287396B (zh) * | 2020-12-24 | 2021-03-30 | 北京瑞莱智慧科技有限公司 | 一种基于隐私保护的数据处理方法及装置 |
CN112905187B (zh) * | 2021-02-20 | 2024-02-23 | 深圳前海微众银行股份有限公司 | 编译方法、装置、电子设备及存储介质 |
US20240160423A1 (en) * | 2022-11-11 | 2024-05-16 | Electronics And Telecommunications Research Institute | Program conversion apparatus and method |
CN115630769B (zh) * | 2022-12-01 | 2023-03-14 | 北京华录高诚科技有限公司 | 用于综合交通运行监测的算法调度一体机及调度方法 |
CN116388954B (zh) * | 2023-02-23 | 2023-09-01 | 西安电子科技大学 | 通用密态数据安全计算方法 |
CN117077161B (zh) * | 2023-07-31 | 2024-05-03 | 上海交通大学 | 基于动态规划求解的隐私保护深度模型构建方法与系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522669A (zh) * | 2020-04-29 | 2020-08-11 | 深圳前海微众银行股份有限公司 | 横向联邦学习系统优化方法、装置、设备及可读存储介质 |
-
2020
- 2020-10-15 CN CN202011099979.4A patent/CN112016703B/zh active Active
-
2021
- 2021-10-03 US US17/492,643 patent/US20220121775A1/en active Pending
- 2021-10-06 EP EP21201102.7A patent/EP3985539B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3985539B1 (en) | 2023-12-27 |
CN112016703A (zh) | 2020-12-01 |
EP3985539A1 (en) | 2022-04-20 |
US20220121775A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112016703B (zh) | 一种机器学习算法的转换系统、方法及电子设备 | |
Viand et al. | SoK: Fully homomorphic encryption compilers | |
EP3218800B1 (en) | Secure multiparty computation on spreadsheets | |
Halary et al. | EGN: a wizard for construction of gene and genome similarity networks | |
Bratvold | Skeleton-based parallelisation of functional programs | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
WO2023024735A1 (zh) | 用于隐私保护的机器学习算法脚本编译方法和编译器 | |
CN109933327A (zh) | 基于代码融合编译框架的OpenCL编译器设计方法和系统 | |
JP2018005890A (ja) | 未知のプログラムバイナリのための入力発見 | |
Qiu et al. | Using test ranges to improve symbolic execution | |
Lin et al. | A scalable distributed parallel simulation tool for the SWAT model | |
Gorantala et al. | Unlocking the potential of fully homomorphic encryption | |
Ajwani et al. | Generating synthetic task graphs for simulating stream computing systems | |
CN111831979B (zh) | 一种数据隐私保护协议的分析方法及装置 | |
Alizadehsani et al. | Modern integrated development environment (ides) | |
Gorantala et al. | The magazine archive includes every article published in Communications of the ACM for over the past 50 years. | |
CN107247906B (zh) | 一种用于数据的加密方法及装置 | |
Viand | Useable Fully Homomorphic Encryption | |
Paduraru et al. | RiverConc: An Open-source Concolic Execution Engine for x86 Binaries. | |
Otten et al. | Finding most likely haplotypes in general pedigrees through parallel search with dynamic load balancing | |
Casanova et al. | WfCommons: Data Collection and Runtime Experiments using Multiple Workflow Systems | |
Jattke | Analysis, Design and Implementation of Advanced Optimization Strategies for the Marble FHE Compiler | |
US20220253723A1 (en) | Amplifying source code signals for machine learning | |
Lamers et al. | Improved architectures/deployments with elmo | |
Liu et al. | A multi-agent based architecture for distributed KDD process |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20201201 Assignee: Beijing Intellectual Property Management Co.,Ltd. Assignor: Beijing Ruili Wisdom Technology Co.,Ltd. Contract record no.: X2023110000073 Denomination of invention: A conversion system, method, and electronic device for machine learning algorithms Granted publication date: 20210209 License type: Common License Record date: 20230531 |