一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

联邦学习系统及实现多方联合处理任务的方法与设备与流程

2022-10-12 23:49:45 来源:中国专利 TAG:


1.本公开涉及联邦学习技术,特别是涉及一种联邦学习系统及实现多方联合处理任务的方法与设备。


背景技术:

2.使用联邦学习是近年来用于打破数据孤岛,实现数据的安全隐私的共享,提高机器学习建模的模型质量的新技术。联邦学习技术可以将其他参与方(如企业)的数据在保护隐私的前提下使用起来,共同用于建模。具体地,联邦学习技术可以在保护合作者(如企业)的数据隐私的前提条件下,联合多个合作者的不同数据、特征等,一同构建出预测质量更高的机器学习模型。
3.联邦学习的计算框架有很多种,例如tensorflow federated、fate、paddle fl等。每一种计算框架都有适合的场景以及对应的优劣势,只使用某一种框架并不一定可以满足客户所有的需求,例如tensorflow federated框架可以支持移动设备端的部署和运行、fate适合有中心的部署模式等等。
4.目前的联邦学习平台都是基于某一种计算框架构建,能力比较局限,无法适应各类应用场景。因此,需要一种能够支持多种异构联邦计算框架的方案。


技术实现要素:

5.本公开要解决的一个技术问题是提供一种能够支持多种异构联邦计算框架的方案。
6.根据本公开的第一个方面,提供了一种联邦学习系统,其中,所述系统包括至少两个参与方,任意一个参与方包括:至少一个第一节点,所述第一节点上部署至少一个联邦学习框架,所述联邦学习框架支持至少一种联邦学习算法;以及至少一个第二节点,所述第二节点上部署至少一个联邦学习算子,所述联邦学习算子为对至少部分联邦学习算法进行去差异化处理得到的,其中,响应于调用所述联邦学习算子的任务请求,所述第二节点将所述任务请求中的输入参数转换为所述联邦学习算子所对应的联邦学习算法所需要的格式,并将转换后的输入参数转发至支持所述联邦学习算法的联邦学习框架所在的第一节点,由所述第一节点基于转换后的输入参数执行所述联邦学习算法。
7.可选地,所述第二节点还将所述第一节点执行所述联邦学习算法后的输出结果转换为符合所述联邦学习算子的格式要求的输出参数。
8.可选地,任意一个所述联邦学习算子对应机器学习建模流程中的一个建模步骤,所述联邦学习算子是对所述联邦学习框架中与所述建模步骤对应的联邦学习算法部分进行封装得到的,所述机器学习建模流程包括以下建模步骤中的任意一个或多个:数据预处理;样本对齐;特征工程;模型训练与评估。
9.可选地,所述联邦学习算子为基于统一封装规范对至少部分所述联邦学习算法进行封装得到的,不同联邦学习算子具有格式统一的输入参数和输出参数。
10.可选地,所述输入参数包括输入数据集和训练参数,并且/或者所述输出参数包括输出模型和输出数据集。
11.可选地,所述输入参数还包括合作方信息、协作协议信息、版本信息中的任意一项或多项,所述合作方信息用于表征其他参与方中支持所述联邦学习算子所对应的联邦学习算法的联邦学习框架和/或所述联邦学习框架所在的第一节点,所述协作协议信息用于约定参与方中支持所述联邦学习算子所对应的联邦学习算法的联邦学习框架参与联邦学习建模任务时使用的协议,所述版本信息用于表征所述联邦学习算子所对应的联邦学习算法和/或联邦学习框架的版本。
12.可选地,不同的联邦学习框架部署在不同的第一节点上。
13.可选地,所述第一节点上部署了至少一个所述联邦学习框架的docker镜像,docker镜像包括所述联邦学习框架、所述联邦学习框架的系统环境以及所述联邦学习框架的依赖包。
14.可选地,属于同一参与方的第一节点和第二节点部署于同一分布式管理集群环境中。
15.可选地,所述第二节点上还部署了至少一个非联邦学习算法和/或非联邦学习算子。
16.可选地,该方法还包括:算子管理及任务调度平台,所述第二节点与所述算子管理及任务调度平台连接,所述算子管理及任务调度平台用于管理所述第二节点上部署的算子,并为参与方提供针对联邦学习建模任务的调度服务。
17.根据本公开的第二个方面,提供了一种实现多参与方联合处理任务的方法,其中,任意一个参与方包括至少一个第一节点以及至少一个第二节点,所述第一节点上部署至少一个计算框架,所述计算框架支持至少一种算法,所述第二节点上部署至少一个算子,所述算子为对至少部分算法进行去差异化处理得到的,该方法包括:任务发起方中的第二节点接收任务,所述任务包括输入参数和任务发起方选择的算法,所述第二节点上部署了与任务发起方选择的算法对应的算子;任务发起方中的第二节点将所述输入参数转换为计算框架中所述算法所需要的格式,并将转换后的输入参数转发至任务发起方中部署了所述计算框架的第一节点;任务发起方中的第一节点基于转换后的输入参数执行所述算法,并与一个或多个任务合作方中部署了支持所述算法的计算框架的第一节点通信;基于任务发起方中的第一节点与一个或多个任务合作方中的第一节点之间的通信,任务发起方与一个或多个任务合作方联合执行所述任务。
18.可选地,所述算子为基于统一封装规范对至少部分所述算法进行封装得到的,不同算子具有格式统一的输入参数和输出参数。
19.可选地,所述输入参数包括合作方信息和/或版本信息,所述合作方信息用于表征其他参与方中支持所述算法的计算框架和计算框架所在的第一节点,所述版本信息用于表征算法版本和/或框架版本,该方法还包括:任务发起方中的第二节点根据所述合作方信息选择计算框架,并确定任务合作方中部署了所选择的计算框架的第一节点;或者任务发起方中的第二节点根据所述版本信息确定任务发起方指定的算法版本和/或框架版本,并根据所述合作方信息确定任务合作方中部署了任务发起方指定的算法版本和/或框架版本的计算框架的第一节点。
20.可选地,该方法还包括:任务发起方中的第二节点将确定的任务合作方中的第一节点信息发送给任务发起方中的第一节点,其中,任务发起方中的第一节点与一个或多个任务合作方中部署了支持所述算法的计算框架的第一节点通信,包括:任务发起方中的第一节点基于所述第一节点信息,与任务合作方中的第一节点通信。
21.可选地,任务发起方中第一节点上部署的支持所述算法的计算框架,与所述任务合作方中的第一节点上部署的支持所述算法的计算框架,属于不同计算框架,所述输入参数还包括协作协议信息,所述协作协议信息用于约定参与方中支持所述算法的计算框架参与执行任务时使用的协议,该方法还包括:所述任务发起方中的第一节点基于所述协作协议信息对计算框架使用的协作协议进行转换,以适配任务合作方中的第一节点上部署的计算框架所使用的协作协议。
22.可选地,若任务发起方中的第一节点上部署的支持所述算法的计算框架,与所述任务合作方中的第一节点上部署的支持所述算法的计算框架,属于相同计算框架,则所述任务发起方中的第一节点通过框架内组件与所述任务合作方中的第一节点通信。
23.可选地,所述任务为联邦学习建模任务、多方安全计算任务或隐匿查询任务。
24.可选地,所述任务为联邦学习建模任务,所述计算框架为联邦学习框架,所述计算框架支持的算法为联邦学习算法,所述第二节点上部署的算子包括联邦学习算子,所述联邦学习算子为对所述联邦学习框架中的至少部分联邦学习算法进行去差异化处理得到的。
25.可选地,任意一个所述联邦学习算子对应机器学习建模流程中的一个建模步骤,所述联邦学习算子是对所述联邦学习框架中与所述建模步骤对应的联邦学习算法部分进行封装得到的,一个所述任务对应联邦学习建模流程中的一个建模步骤。
26.可选地,该方法还包括:任务发起方中的第二节点获取所述第一节点执行算法后的输出结果,将所述输出结果转换为符合所述联邦学习算子的格式要求的输出参数,作为下一建模步骤对应的任务的至少部分输入参数。
27.可选地,所述第二节点上部署的算子还包括非联邦学习算子,所述非联邦学习算子为对至少部分非联邦学习算法进行去差异化处理得到的,所述非联邦学习算法部署在所述第二节点上,任务发起方选择的算法包括非联邦学习算法,该方法还包括:任务发起方中部署了与所述非联邦学习算法对应的非联邦学习算子的第二节点将所述输入参数转换为所述非联邦学习算法所需要的格式,并基于转换后的输入参数执行所述非联邦学习算法。
28.可选地,任意一个所述第二节点与所述算子管理及任务调度平台连接,该方法还包括:任务发起方中的第二节点接收所述算子管理及任务调度平台发送的任务;以及/或者任务发起方中的第二节点接收所述算子管理及任务调度平台发送的第一节点信息,所述第一节点信息用于表征任务合作方中执行所述任务的第一节点。
29.根据本公开的第三个方面,提供了一种实现多参与方联合处理任务的方法,其中,任意一个参与方包括至少一个第一节点以及至少一个第二节点,所述第一节点上部署至少一个计算框架,所述计算框架支持至少一种算法,所述第二节点上部署至少一个算子,所述算子为对至少部分算法进行去差异化处理得到的,该方法包括:任务合作方中的第二节点接收算子调用请求,所述算子调用请求包括输入参数;任务合作方中的第二节点将所述输入参数转换为所述算子调用请求所针对的算子所对应的算法所需要的格式,并将转换后的
输入参数转发至任务参与方中部署了支持所述算法的计算框架所在的第一节点;任务合作方中的第一节点基于转换后的输入参数执行所述算法,并与任务发起方中部署了支持所述算法的计算框架的第一节点通信。
30.可选地,任意一个所述第二节点与所述算子管理及任务调度平台连接,其中,任务合作方中的第二节点接收算子调用请求,包括:任务合作方中的第二节点接收所述算子管理及任务调度平台发送的算子调用请求。
31.可选地,所述任务为联邦学习建模任务,多方安全计算任务或隐匿查询任务。
32.可选地,所述任务为联邦学习建模任务,所述计算框架为联邦学习框架,所述计算框架支持的算法为联邦学习算法,所述第二节点上部署的算子包括联邦学习算子,所述联邦学习算子为对所述联邦学习框架中的至少部分联邦学习算法进行去差异化处理得到的。
33.可选地,任意一个所述联邦学习算子对应机器学习建模流程中的一个建模步骤,所述联邦学习算子是对所述联邦学习框架中与所述建模步骤对应的联邦学习算法部分进行封装得到的,一个所述算子调用请求对应联邦学习建模流程中的一个建模步骤。
34.可选地,该方法还包括:任务合作方中的第二节点获取所述第一节点执行算法后的输出结果,将所述输出结果转换为符合所述联邦学习算子的格式要求的输出参数,作为下一建模步骤对应的算子调用请求的至少部分输入参数。
35.可选地,所述第二节点上部署的算子还包括非联邦学习算子,所述非联邦学习算子为对至少部分非联邦学习算法进行去差异化处理得到的,所述非联邦学习算法部署在所述第二节点上,所述算子调用请求针对的算子包括非联邦学习算子,该方法还包括:任务合作方中部署了所述算子调用请求所针对的非联邦学习算子的第二节点将所述输入参数转换为所述非联邦学习算子所对应的非联邦学习算法所需要的格式,并基于转换后的输入参数执行所述非联邦学习算法。
36.根据本公开的第四个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第三方面所述的方法。
37.根据本公开的第五个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第二方面或第三方面所述的方法。
38.本公开在参与方的第一节点上部署联邦学习框架,并将对联邦学习框架支持的至少部分联邦学习算法进行去差异化处理后以算子的形式部署在参与方的第二节点上。第二节点一方面可以屏蔽算法在不同联邦学习框架下的差异,另一方面在需要调用算法时可以将输入参数转换为算法需要的格式,并转发给第一节点负责算法的具体执行。由此,用户在使用联邦学习算法,特别是涉及异构联邦学习框架的算法时,不需要再关注算法在异构联邦学习框架下的差异,为方便用户使用异构联邦学习框架提供支持。
附图说明
39.通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
40.图1示出了根据本公开一个实施例的联邦学习系统的结构示意图。
41.图2示出了一种由参与方部署的server节点和client节点的架构示意图。
42.图3示出了根据本公开一个实施例的联邦学习系统的架构示意图。
43.图4示出了根据任务发起方和参与方共同完成联邦学习建模任务的示意性流程图。
44.图5示出了根据本公开一个实施例的计算设备的结构示意图。
具体实施方式
45.下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
46.异构联邦计算框架(即不同的联邦计算框架)在以下方面存在不一致:运行的环境和依赖、支持的联邦学习算法列表、算法参数以及算法粒度、使用的任务流调度、多参与方任务协调,跨方传输的组件、支持的可自定义开发程度等等。这些不一致从各个角度和层面都对异构联邦计算框架的统一部署、开发集成、运行监控带来了困难,还给设计通用灵活的架构带来了挑战。
47.针对异构联邦计算框架在统一部署过程中存在的上述一种或多种困难,本公开提出了一种支持多种异构联邦计算框架的联邦学习系统。联邦计算框架是指联邦学习的计算框架。联邦计算框架也可以称为联邦学习框架,即本公开中的联邦计算框架和联邦学习框架可以互换使用。本公开所涉及到的联邦计算框架可以包括但不限于以下至少一种:tensorflow federated、fate、paddle fl等。
48.图1示出了根据本公开一个实施例的联邦学习系统的结构示意图。
49.参见图1,联邦学习系统包括至少两个参与方,如图中示出的参与方1和参与方2。
50.任意一个参与方包括至少一个第一节点以及至少一个第二节点。同一参与方中的第一节点和第二节点可以部署在同一个机器节点上,也可以部署在不同的机器节点上。作为示例,单个第一节点或第二节点可以独占使用一个机器节点,即一个机器节点上可以仅部署一个第一节点或第二节点。机器节点,可以是指物理机或虚拟机。
51.第一节点上部署至少一个联邦学习框架。每个联邦学习框架支持至少一种联邦学习算法。每个联邦学习框架具有一个支持的联邦学习算法列表,不同联邦学习框架支持的联邦学习算法列表可以存在部分相同的联邦学习算法,也可以不存在相同的联邦学习算法。并且,不同联邦学习框架涉及的算法参数的形式、类型以及算法粒度一般不同。
52.第二节点上部署至少一个联邦学习算子。联邦学习算子为对第一节点上部署的联邦学习框架中的至少部分联邦学习算法进行去差异化处理得到的。联邦学习框架对其支持的联邦学习算法在算法参数配置、使用等诸多方面都存在一定的要求,且不同联邦学习框架对算法的要求不同,这使得联邦学习算法(如算法的参数配置和使用)在不同联邦学习框架下存在差异,本公开述及的“去差异化处理”的目的就是屏蔽这种差异。即,联邦学习算子用于屏蔽算子所对应的联邦学习算法在不同联邦学习框架下的差异。
53.第二节点上部署的联邦学习算子不是算法真正执行的位置。响应于调用联邦学习
算子的任务请求(也即算子调用请求),第二节点不执行任务,而是(可以根据针对算子标注的参数要求信息)将任务请求中的输入参数转换为联邦学习算子所对应的联邦学习算法所需要的格式,并将转换后的输入参数转发至支持联邦学习算法的联邦学习框架所在的第一节点,由第一节点基于转换后的输入参数执行联邦学习算法。
54.换言之,联邦学习算子不提供算法的执行逻辑,而是作为经过去差异化处理后的算法(即算子)供用户调用。在调用时联邦学习算子充当“客户端(client)”,转发任务给支持联邦学习算子所对应的联邦学习算法的联邦学习框架。支持联邦学习算法的联邦学习框架充当“服务端(server)”,负责算法的执行。
55.因此,部署了联邦学习框架的第一节点可以称为服务端节点,部署了联邦学习算子的第二节点可以称为客户端节点。本公开在不改变联邦学习框架内部实现的情况下,利用“客户端-服务端”的架构模式可以屏蔽算法在不同联邦学习框架下的差异,为方便用户使用异构联邦学习框架提供支持。
56.第二节点还可以将第一节点执行联邦学习算法后的输出结果转换为符合联邦学习算子的格式要求的输出参数。其中,第一节点执行联邦学习算法后的输出结果可以是通过多参与方联合执行同一任务后的结果,该任务可以是完整的联邦学习建模流程,也可以是完整的联邦学习建模流程中的一个步骤。因此,输出参数可以作为最终处理结果供上层使用,也可以作为中间结果保存,以供后续联邦学习建模流程使用。
57.至此结合图1就本公开的联邦学习系统的基本架构做了简要说明。下面就本公开涉及的细节做进一步说明。
58.统一封装规范考虑到算法在不同联邦学习框架下的差异主要是算法在输入、输出上的差异,本公开提出,可以基于统一封装规范对至少部分联邦学习算法进行封装得到联邦学习算子。
59.即,上文述及的“差异化处理”,可以是指基于统一封装规范对至少部分联邦学习算法进行封装。统一封装规范,也可以称为同一封装规范或相同封装规范,是指部署在所有参与方的第一节点上的联邦学习框架中的联邦学习算发在封装时均应遵循的封装规范。
60.通过使用统一封装规范对算法进行封装,使得封装后的算子,特别是不同联邦学习框架下的算子,具有格式统一的输入参数和输出参数。其中,输入参数包括输入数据集和训练参数。输出参数包括输出模型和输出数据集。输入数据集、输出模型以及输出数据集可以使用统一资源定位符(uniform resource identifier,uri)的方式指定。
61.通过将联邦学习算法封装为具有统一输入、输出格式的联邦学习算子,可以屏蔽算法在不同联邦学习框架下的输入、输出参数差异,使得用户在使用异构联邦学习框架时,不需要再关算法在不同联邦学习框架下的输入、输出参数差异,从而为用户方便使用异构联邦学习框架提供支持。
62.第二节点在基于统一封装规范将第一节点上部署的联邦学习框架中的至少部分联邦学习算法封装为联邦学习算子时,可以针对联邦学习算子维护一个算子描述信息,算子描述信息中可以记载与联邦学习算子对应的算法相关的信息。例如,算子描述信息可以包括联邦学习算法的版本信息、联邦学习算法的联邦学习框架及其版本信息、部署了该联邦学习框架的第一节点以及联邦学习框架中该联邦学习算法的参数要求(如输入参数和输出参数的类型及格式要求)。基于算子描述信息,第二节点针对算子调用请求,可以将转换
后的输入参数转发给合适的第一节点。其中,对于参与方中部署的不同联邦学习框架中的同一算法,第二节点可以分别将其封装为不同的算子,也可以将其封装为一个算子。
63.可选地,算子的输入参数还可以包括合作方信息、协作协议信息以及版本信息中的任意一项或多项。算子的输入参数,是指调用算子时可以输入的参数。
64.合作方信息是指能够为算子提供算法支持的合作方(即其他参与方)的信息。合作方信息可以表征其他参与方中部署了支持联邦学习算子所对应的联邦学习算法的联邦学习框架和/或联邦学习框架所在的第一节点。
65.协作协议信息用于约定各参与方中支持联邦学习算子所对应的联邦学习算法的联邦学习框架所使用的协作协议(如加密算法、通讯协议、调度流程算法等关键的协议约定)。
66.目前隐私计算缺少统一的互联互通规范,异构联邦计算框架之间的壁垒难以越过。在异构联邦学习框架之间的互联互通规范确立后,可以根据协作协议信息对参与方的联邦学习框架使用的协作协议进行转换。具体转换方式可以是将一个参与方的联邦学习框架使用的协作协议进行转换以适配为其他参与方的联邦学习框架使用的协作协议,也可以是将所有参与方的联邦学习框架使用的协作协议转换为统一的协作协议,以使得各参与方的联邦学习框架能够实现互联互通。由此,协作协议信息可以为异构联邦学习框架间的互联互通规范确立后,真正实现基于异构联邦学习框架执行同一建模任务提供支持。
67.版本信息用于表征联邦学习算子所对应的联邦学习算法和/或联邦学习框架的版本。
68.部署环境考虑到不同的联邦学习框架(即异构联邦学习框架)与其系统环境、依赖包需要独立配置与部署,以避免产生冲突,本公开优选可以将联邦学习框架、联邦学习框架的系统环境以及联邦学习框架的依赖包,以docker镜像的方式部署在第一节点上。由此,可以解决异构联邦学习框架运行的环境与依赖不一致的问题。docker是一种应用容器引擎,用于将应用以及依赖包到一个轻量与可移植的容器中。
69.例如,可以先将联邦学习框架与其系统环境、依赖包整理为配置清单(docker file);再基于配置清单制作docker镜像;最后将docker镜像部署在第一节点(机器节点)上。再例如,也可以在物理机或虚拟机上直接部署安装联邦学习框架。docker镜像的部署方式,与直接部署方式相比,相对更加灵活且不受限于框架使用方的机器及系统。
70.以docker镜像的部署方式为例,不同联邦学习框架的docker镜像可以部署在机器节点上,该机器节点可以称为server节点。server节点,也即上文述及的第一节点。
71.框架独立部署(即一个第一节点上部署一个联邦学习框架)便于监测框架运行时算法、节点的性能和状态指标,且能避免框架算法运行时在资源上相互竞争。本公开要求联邦学习建模的参与者各方均部署自己的第一节点和第二节点(也即client节点),包括按需部署自己需要的联邦框架的种类及数量。是否需要独立部署联邦学习框架,可根据资源的情况和对隐私计算平台系统的监测粒度来选择。
72.第一节点可以按需在任务需要时启动相应框架的镜像然后结束时释放,或作为后台应用持续运行,前一个方式更适合充分利用机器资源,但缺点同样是可能会引起资源的挤占。
73.经过去差异化处理(如基于统一封装规范进行封装处理)的算法,会按照算子的方式部署在机器节点上,该机器节点可以称为client节点。client节点,也即上文述及的第二节点。第二节点本身只关注接受任务流调度系统的调度请求,根据选择的框架算法版本将参数转换为恰当的格式,再将任务转发给第一节点,其自身不负责算法的具体执行。由于第二节点的任务负载较轻,第二节点上可以部署多个算子。
74.参与方中第二节点的数量可以由参与方根据需要设置。例如可以设置一个第二节点,也可以设置多个第二节点,且不同第二节点上部署的算子可以相同,也可以不同。需要说明的是,第二节点针对其上部署的算子,可以标注参与方中部署了支持该算子所对应的算法的联邦学习框架的第一节点信息,以使得第二节点可以将任务转发给合适的第一节点。
75.作为示例,每个参与方可以根据自身需求确定需要部署的联邦学习框架的种类,将每种联邦学习框架部署在一个第一节点上,不同的第一节点上可以部署不同的联邦学习框架。然后该参与方可以将对所有联邦学习框架中的每个联邦学习算法进行封装得到的联邦学习算子部署在一个第二节点上,另外对高可用情况或者是有其他要求的可以考虑分别部署。
76.考虑到属于同一参与方的第一节点和/或第二节点需要统一的配置和管理,属于同一参与方的所有的第一节点和/或第二节点可以部署于同一分布式管理集群环境(如k8s)中,即属于同一参与方的所有的第一节点和/或第二节点可以由同一分布式管理集群进行统一配置和管理。不同参与方可以使用相同的分布式管理集群环境(如都使用k8s)进行第一节点、第二节点的部署,以便多个参与方能够协同执行联邦学习建模任务。k8s全名为kubernetes,用于管理多个主机中容器化应用。
77.图2示出了参与方部署的server节点和client节点的架构示意图。
78.如图2所示,联邦学习框架1和联邦学习框架2可以独立部署于不同的server节点,相互无资源竞争。同一client节点可以针对多个server节点上部署的联邦学习框架支持的算法进行算子封装。
79.算法粒度考虑到不同联邦学习框架的算法粒度不同,本公开提出,可以按照统一粒度对不同联邦学习框架的联邦学习算法进行封装,以得到粒度统一的联邦学习算子。
80.具体而言,可以根据机器学习算法特点(联邦学习算法和非联邦学习算法特点),将机器学习建模流程按照主要作用分为数据预处理、样本对齐、特征工程、模型训练与评估等建模步骤。按照上述建模步骤的粒度,进行算法封装,以使得封装得到的任意一个联邦学习算子(作为可选方案除联邦学习算子外还可以包括非联邦学习算子)对应机器学习建模流程中的一个建模步骤,如此即可解决不同联邦学习框架的算法粒度不一致的问题。
81.例如,对于某个联邦学习框架支持的联邦学习算法列表而言,可以首先针对数据预处理步骤,从算法列表中选取与该步骤对应的算法部分(可以是一个、多个或一个算法中的部分),针对该算法部分进行封装,得到与数据预处理步骤对应的联邦学习算子;以此类推,针对后续各个建模步骤进行算法封装。如此,针对不同联邦学习框架可以封装得到粒度统一的联邦学习算子。其中,一个联邦学习算子可以是对一个或多个完整的联邦学习算法进行封装得到的,也可以是对一个联邦学习算法中的部分算法进行封装得到的。由此,通过
对算法进行拆解和/或组合,使得不同联邦学习框架的算法在功能粒度上尽量对齐。
82.在执行联邦学习建模流程时,任务发起方可以按照功能粒度,针对联邦学习建模流程中的每个建模步骤进行算法选取。针对每个建模步骤,包括任务发起方在内的多个参与方中的第二节点可以基于任务发起方针对该建模步骤选取的算法调用对应算子联合执行该建模步骤。
83.不同建模步骤可以交由不同框架执行。即,对于同一参与方而言,不同建模步骤可以由不同的第一节点执行。在第一节点上执行的一个建模步骤的结果(可以是多参与方联合执行结果)可以发送给对应的第二节点,由第二节点将其转换为符合统一封装规范的输出参数。该输出参数可以用于下一建模步骤,如可以作为下一建模步骤的输入。
84.非联邦学习算子如图2所示,第二节点上还可以部署一个或多个非联邦学习算子。
85.非联邦学习算子可以为对至少部分非联邦学习算法进行去差异化处理得到的。联邦学习算法是指由联邦学习框架提供的算法,即位于联邦学习框架中的算法。非联邦学习算法,是指位于联邦学习框架之外的算法。
86.与联邦学习算子不同,第二节点上部署的非联邦学习算子可以是算法真正执行的位置,即非联邦学习算法可以与对应的非联邦学习算子部署在同一第二节点上。即对于部署了非联邦学习算子和非联邦学习算法的第二节点而言,该第二节点可以既作为客户端节点接收针对非联邦学习算子的调用请求,也可以作为服务端节点负责非联邦学习算法的具体执行。
87.第二节点可以使用联邦学习算子的封装方式,即上文述及的统一封装规范,对非联邦学习算法进行封装,得到非联邦学习算子。
88.另外,第二节点还可以按照上文述及的统一粒度,对非联邦学习算法进行封装,以使得任意一个非联邦学习算子对应机器学习建模流程中的一个建模步骤。
89.作为示例,参与方中的第二节点可以分为两类:一类是用于部署非联邦学习算法和非联邦学习算子的第二节点,另一类是用于部署联邦学习算子的第二节点。即,非联邦学习算子和联邦学习算子可以部署在不同的第二节点上。
90.算子平台联邦学习系统还可以包括一个算子管理及任务调度平台(也可称为算子平台)。第二节点与算子管理及任务调度平台连接。即,第二节点可以接入算子管理与任务调度平台。
91.算子管理及任务调度平台可以用于管理第二节点上部署的联邦学习算子和/或非联邦学习算子,并为用户提供针对机器学习建模任务的调度服务。
92.由此,算子管理及任务调度平台可以同时提供联邦学习算子和非联邦学习算子,使得用户可以混合使用平台中的联邦学习算法和非联邦学习算法。
93.算子平台可以视为一种对建模训练算法进行管理与任务流调度的框架。
94.如上所述,联邦学习算子是经过对联邦学习算法进行去差异化处理得到的。因此,联邦学习算子的去差异性,可以为将多种异构联邦学习框架可以接入平台的统一管理与调度能力提供支持。例如,在按照统一封装规范对联邦学习算法进行封装时,统一封装规范可以基于平台对算子封装的要求而生成的封装规范。由此,经过统一规范封装后的算法(即算子),在向上对算子平台提供调用时,屏蔽了不同框架参数的细节差异,用户使用时无需关
心,可以直接使用算子平台进行管理与任务调度。
95.也就是说,在第二节点接入算子管理及任务调度平台的情况下,在对联邦学习算法进行封装得到联邦学习算子时,可以按照算子管理及任务调度平台的封装规范(即平台对算子的封装要求)进行封装。
96.图3示出了根据本公开一个实施例的联邦学习系统的架构示意图。
97.如图3所示,联邦学习系统整体架构可以包括联邦client节点(即上文述及的第二节点)、联邦serve节点(即上文述及的第一节点)以及算子平台三部分。
98.目前的异构联邦框架算法参数格式各异,包括使用配置文件以及直接提供参数的方式,且参数的名称、数据类型、内容格式也不相同。在本实施例中,可以结合已有非联邦算法与联邦框架算法参数以及常见的建模任务流中上下游算法的参数传递方式,制定异构联邦框架算法的统一封装规范,用以统一输入输出格式,方便开发、管理以及接入算子平台。规范可以将输入参数主要划分为[输入数据集(uri),训练参数,合作方信息,协作协议,框架算法版本]等,输出参数主要划分为[输出模型(uri),输出数据集(uri)]等。其中合作方信息、协作协议与框架算法版本为可选参数。
[0099]
在对异构框架算法进行算子封装开发时,一方面可以按照统一封装规范对参数的要求,使用算子开发的语言主要对训练参数的形式、格式、类型按照具体框架算法的要求进行一定的处理和转换,另一方面可以按照算子平台对算子封装的要求,标注算子的版本信息和参数要求。经过统一规范封装后的算法,在向上对算子平台提供调用时,屏蔽了不同框架参数的细节差异,用户使用时无需关心,可以直接使用算子平台进行算子管理与任务调度。其中,异构框架算法,是指不同联邦学习框架支持的算法。
[0100]
由于client节点接入了算子平台且遵照算子平台的封装规范,具有标准的输入输出,用户在进行联邦训练任务建模时,可以混合使用算子平台中的联邦与非联邦算法。
[0101]
如图3所示,联邦client节点一方面可以对异构框架算法进行统一封装以接入算子平台,另一方面支持异构框架算法参数转换,以将任务下发给部署了对应的联邦学习框架的联邦server节点进行处理。另外,联邦client节点还可以获取联邦server节点执行算法的输出结果(如可以是多参与方联合执行结果),将输出结果转换为符合统一封装规范的输出参数,该输出参数可以作为最终处理结果供上层调用,也可以作为后续任务的输入提供给算子平台,由算子平台进行后续任务调度处理。
[0102]
多方联合处理任务流程本公开以联邦学习建模场景为例提出了一种联邦学习系统。
[0103]
本公开的联邦学习系统,也可以拓展为一种适用于其他需要多方联合处理任务的场景的多参与方任务处理系统。需要多参与方联合处理的任务,除了联邦学习建模任务之外,还可以是多方安全计算(secure multi-party computation,mpc)任务以及隐匿查询任务。多方安全计算是指某一组互相不信任的参与者在保护个人隐私的同时,还可以进行协同计算。隐匿查询,是指在多方之间进行数据查询与交互时,整个查询过程如何进行隐私保护、避免数据缓存,让源方无法得知查询方的查询目标,却能顺利返回查询结果给查询方。
[0104]
本公开涉及的模型(建模任务所针对的模型,如神经网络模型)可被用于预测图像类别、文本类别、语音情感、欺诈交易、广告点击率等。模型旨在针对相关场景中的对象或事件有关的问题进行预测。例如,可用于预测图像类别、预测图像中文字、预测文本类别、预测
语音情感类别、预测欺诈交易、预测广告点击率、预测商品价格等等,使得预测结果可直接作为决策依据或进一步结合其他规则而成为决策依据。
[0105]
更进一步来说,本发明实施例中的模型可被用于的场景包括但不限于以下场景:图像处理场景,包括:光学字符识别ocr、人脸识别、物体识别和图片分类;更具体地举例来说,ocr可应用于票据(如发票)识别、手写字识别等,人脸识别可应用安防等领域,物体识别可应用于自动驾驶场景中的交通标志识别,图片分类可应用于电商平台的“拍照购”、“找同款”等。
[0106]
语音识别场景,包括可通过语音进行人机交互的产品,如手机的语音助手(如苹果手机的siri)、智能音箱等;自然语言处理场景,包括:审查文本(如合同、法律文书和客服记录等)、垃圾内容识别(如垃圾短信识别)和文本分类(情感、意图和主题等);自动控制场景,包括:矿井组调节操作预测、风力发电机组调节操作预测和空调系统调节操作预测;具体的对于矿井组可预测开采率高的一组调节操作,对于风力发电机组可预测发电效率高的一组调节操作,对于空调系统,可以预测满足需求的同时节省能耗的一组调节操作;智能问答场景,包括:聊天机器人和智能客服;业务决策场景,包括:金融科技领域、医疗领域和市政领域的场景,其中:金融科技领域包括:营销(如优惠券使用预测、广告点击行为预测、用户画像挖掘等)与获客、反欺诈、反洗钱、承保和信用评分、商品价格预测;医疗领域包括:疾病筛查和预防、个性化健康管理和辅助诊断;市政领域包括:社会治理与监管执法、资源环境和设施管理、产业发展和经济分析、公众服务和民生保障、智慧城市(公交、网约车、共享单车等各类城市资源的调配和管理);推荐业务场景,包括:新闻、广告、音乐、咨询、视频和金融产品(如理财、保险等)的推荐;搜索场景,包括:网页搜索、图像搜索、文本搜索、视频搜索等;异常行为检测场景,包括:国家电网客户用电异常行为检测、网络恶意流量检测、操作日志中的异常行为检测等。
[0107]
需要说明的是,本发明实施例中所涉及到的模型(例如意图识别模型)还可被用于隐私计算、多方安全计算、联邦学习、匿踪(隐匿)查询、安全(隐私)求交等场景。
[0108]
与上文的联邦学习系统的结构类似,本公开的多参与方任务处理系统可以包括至少两个参与方,任意一个参与方包括至少一个第一节点以及至少一个第二节点。第一节点上部署至少一个计算框架,计算框架支持至少一种算法,第二节点上部署至少一个算子,算子为对至少部分算法进行去差异化处理得到的。响应于调用算子的任务请求,第二节点将任务请求中的输入参数转换为算子所对应的算法所需要的格式,并将转换后的输入参数转发至支持算法的计算框架所在的第一节点,由第一节点基于转换后的输入参数执行算法。
[0109]
关于多参与方任务处理系统涉及的细节可以参见上文相关描述。例如,上文结合图1至图3所描述的内容中的联邦学习框架可以替换为计算框架,联邦学习算法可以替换为算法,联邦学习算子可以替换为算子,非联邦学习算法可以替换为计算框架外算法,非联邦
学习算子可以替换为计算框架外算子。
[0110]
多参与方任务处理系统中的任意一个参与方都可以作为任务发起方,提交任务(如联邦学习建模任务),启动多参与方联合处理任务流程。多参与方任务处理系统中的其余部分或所有参与方可以作为任务合作方,与任务发起方一起,联合执行任务。
[0111]
任务发起方提交的任务可以包括输入参数和任务发起方选择的算法(如联邦学习算法)。可选地,任务还可以包括任务发起方指定的计算框架(如联邦学习框架)。其中,任务发起方提交的任务中的输入参数可以是符合算子的输入参数要求的参数,如可以是遵循统一封装规范的输入参数。输入参数可以包括输入数据集和/或训练参数。可选地,输入参数还可以包括合作方信息、协作协议信息以及版本信息中的任意一项或多项。
[0112]
1、任务发起方任务发起方中部署了与任务发起方选择的算法对应的算子的第二节点可以接收任务,将输入参数转换为计算框架中该算法所需要的格式,并将转换后的输入参数转发至任务发起方中部署了该计算框架的第一节点。
[0113]
任务发起方中的第一节点可以基于转换后的输入参数执行算法,并与一个或多个任务合作方中部署了支持该算法的计算框架的第一节点通信。基于任务发起方中的第一节点与一个或多个任务合作方中的第一节点之间的通信,任务发起方与一个或多个任务合作方联合执行任务。其中,可以由各参与方中的第二节点对原始输入参数进行格式转换,以得到各参与方中第一节点中的计算框架调用算法执行任务所需的输入参数。
[0114]
多参与方任务处理系统中的任意一个参与方可以部署多个第一节点,不同第一节点上可以部署不同的计算框架,同一算法可以由多个不同的计算框架提供。因此,需要确定各任务参与方(任务发起方以及任务合作方)使用的计算框架。其中,各参与方使用的计算框架可以由任务发起方指定,也可以由任务发起方中的第二节点根据合作方信息选择。
[0115]
作为示例,任务发起方中的第二节点可以根据合作方信息选择计算框架,并确定任务合作方中部署了所选择的计算框架的第一节点。或者,任务发起方中的第二节点也可以根据版本信息确定任务发起方指定的算法版本和/或框架版本,并根据合作方信息确定任务合作方中部署了任务发起方指定的算法版本和/或框架版本的计算框架的第一节点。
[0116]
任务发起方中的第二节点还可以将确定的任务合作方中的第一节点信息发送给任务发起方中的第一节点。任务发起方中的第一节点可以基于第一节点信息,与任务合作方中的第一节点通信。
[0117]
任务发起方中第一节点上部署的支持算法的计算框架,与任务合作方中的第一节点上部署的支持算法的计算框架,可以属于不同计算框架,输入参数还可以包括协作协议信息,协作协议信息用于约定参与方中支持算法的计算框架参与执行任务时使用的协议。任务发起方中的第一节点可以基于协作协议信息对计算框架使用的协作协议进行转换,以适配任务合作方中的第一节点上部署的计算框架所使用的协作协议。
[0118]
若任务发起方中的第一节点上部署的支持算法的计算框架,与任务合作方中的第一节点上部署的支持算法的计算框架,属于相同计算框架,则任务发起方中的第一节点可以通过框架内组件与任务合作方中的第一节点通信。
[0119]
以任务为联邦学习建模任务为例,计算框架为联邦学习框架,计算框架支持的算法为联邦学习算法,第二节点上部署的算子包括联邦学习算子,联邦学习算子为对联邦学
习框架中的至少部分联邦学习算法进行去差异化处理得到的。任意一个联邦学习算子对应机器学习建模流程中的一个建模步骤,联邦学习算子是对联邦学习框架中与建模步骤对应的联邦学习算法部分进行封装得到的,一个任务可以对应联邦学习建模流程中的一个建模步骤。
[0120]
任务发起方中的第二节点可以获取第一节点执行算法后的输出结果,将输出结果转换为符合联邦学习算子的格式要求的输出参数,作为下一建模步骤对应的任务的至少部分输入参数。其中,输出结果可以是多参与方对该建模步骤进行联合处理所得到的结果。
[0121]
第二节点上部署的算子还可以包括非联邦学习算子,非联邦学习算子为对至少部分非联邦学习算法进行去差异化处理得到的,非联邦学习算法部署在第二节点上,任务发起方选择的算法可以包括非联邦学习算法,此时任务发起方中部署了与非联邦学习算法对应的非联邦学习算子的第二节点可以将输入参数转换为非联邦学习算法所需要的格式,并基于转换后的输入参数执行非联邦学习算法。
[0122]
2、任务合作方任务合作方中的第二节点可以接收算子调用请求,算子调用请求可以包括输入参数。
[0123]
任务合作方中的第二节点可以将输入参数转换为算子调用请求所针对的算子所对应的算法所需要的格式,并将转换后的输入参数转发至任务参与方中部署了支持该算法的计算框架所在的第一节点。
[0124]
任务合作方中的第一节点可以基于转换后的输入参数执行算法,并与任务发起方中部署了支持算法的计算框架的第一节点通信。
[0125]
任务为联邦学习建模任务,计算框架为联邦学习框架,计算框架支持的算法为联邦学习算法,第二节点上部署的算子包括联邦学习算子,联邦学习算子为对联邦学习框架中的至少部分联邦学习算法进行去差异化处理得到的。
[0126]
任意一个联邦学习算子对应机器学习建模流程中的一个建模步骤,联邦学习算子是对联邦学习框架中与建模步骤对应的联邦学习算法部分进行封装得到的,一个算子调用请求对应联邦学习建模流程中的一个建模步骤。
[0127]
任务合作方中的第二节点可以获取第一节点执行算法后的输出结果,将输出结果转换为符合联邦学习算子的格式要求的输出参数,作为下一建模步骤对应的算子调用请求的至少部分输入参数。
[0128]
第二节点上部署的算子还包括非联邦学习算子,非联邦学习算子为对至少部分非联邦学习算法进行去差异化处理得到的,非联邦学习算法部署在第二节点上,算子调用请求针对的算子包括非联邦学习算子,任务合作方中部署了算子调用请求所针对的非联邦学习算子的第二节点将输入参数转换为非联邦学习算子所对应的非联邦学习算法所需要的格式,并基于转换后的输入参数执行非联邦学习算法。
[0129]
在不接入算子平台的情况下,可以由任务发起方中的第一节点将任务发送给任务合作方中的第一节点,由任务合作方中的第一节点向任务合作方中的第二节点发送参数转换请求,并获取转换后的参数,以基于转换后的参数执行算法。即,任务合作方中的第二节点接收的算子调用请求可以是指任务合作方中的第一节点发送的参数转换请求。
[0130]
3、基于算子平台的任务调度
在本公开中,各参与方中任意一个第二节点可以与算子管理及任务调度平台连接。
[0131]
第二节点可以预先将其上部署的算子(包括联邦学习算子和非联邦学习算子)注册在算子管理及任务调度平台中。算子管理及任务调度平台可以根据任务发起方提交的任务,确定包括任务发起方和一个或多个任务合作方在内的各参与方中需要调用的算子,并向各参与方中部署了该算子的第二节点发送算子调用请求。
[0132]
各参与方中的第二节点将请求中的输入参数转换为算子所对应的算法所需要的格式,并将转换后的输入参数转发至对应的第一节点(对于非联邦学习算子,不转发直接由第二节点执行)。其中,各参与方中执行算法的第一节点之间通过通信可以联合执行同一任务。
[0133]
由此,任务发起方中的第二节点以及任务合作方中的第二节点均可以接收算子管理及任务调度平台发送的任务(即算子调用请求)。
[0134]
任务发起方中的第二节点还可以接收算子管理及任务调度平台发送的第一节点信息,第一节点信息用于表征任务合作方中执行任务的第一节点。任务发起方中的第二节点可以将第一节点信息发送给任务发起方中的第一节点,以便任务发起方中的第一节点主动连接任务合作方中的第一节点。
[0135]
图4示出了根据任务发起方和参与方共同完成联邦学习建模任务的示意性流程图。
[0136]
参见图4,首先可以在各自独立搭建好联邦学习系统并达成合作关系的前提下,由一个参与方作为任务发起方发起建模任务。这里发起方在任务中选择了算法a,并且在编辑任务时填好了需要的参数。发起方所部署的client节点根据已有的合作方信息对齐选择了联邦框架1,并由client节点将填写的参数根据选择的框架和算法版本转换为框架1的算法a需要的格式,然后client节点根据把任务转交给联邦框架1的server节点a,并由后者根据算法中的合作方信息参数主动连接参与方的联邦框架1server节点c,两者使用框架内的联邦任务流调度等组件实现建模任务中双方的数据交换与任务协作,最终完成联邦学习建模的任务。
[0137]
若联邦框架的可自定义开发程度高,且用户有需要自行选择使用算法版本的需求,在编辑任务时,可额外设置可选协作协议参数,那么任务流程中会如果是普通的联邦学习系统,最基础的强制要求任务的所有参与方都使用相同的联邦学习框架,且联邦学习系统的功能与该联邦学习框架强耦合,用户无法选择且也需要承担框架算法更新或者是框架更换带来的学习成本和迁移升级的风险;稍好一些的系统可能支持用户手动切换不同的联邦学习框架与算法,但是算法的参数配置和使用在不同框架下的差异需要用户自己去学习和管理,使用和切换起来也比较困难。
[0138]
本公开在不改变异构联邦学习框架内部算法实现的情况下,可以利用客户端-服务端模式的架构结合统一封装规范对异构联邦学习框架提供的算法进行封装,并接入算子平台实现管理与调度。从产品和技术层面给出了解决上述缺陷的完整流程及解决方案。通过集成多种异构的联邦学习计算框架,实现多种框架在统一平台的混合使用,覆盖客户各类应用场景。大幅降低用户在计算框架间切换时带来的开发和使用成本,让用户能够无痛的使用各类框架。
[0139]
图5示出了根据本公开一个实施例可用于实现上述实现多方联合处理任务的方法的计算设备的结构示意图。
[0140]
参见图5,计算设备500包括存储器510和处理器520。
[0141]
处理器520可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器520可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器520可以使用定制的电路实现,例如特定用途集成电路(asic,application specific integrated circuit)或者现场可编程逻辑门阵列(fpga,field programmable gate arrays)。
[0142]
存储器510可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器520或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器510可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器510可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、min sd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
[0143]
存储器510上存储有可执行代码,当可执行代码被处理器520处理时,可以使处理器520执行上文述及的实现多方联合处理任务的方法。
[0144]
上文中已经参考附图详细描述了根据本公开的联邦学习系统、实现多方联合处理任务的方法及设备。
[0145]
此外,根据本公开的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本公开的上述方法中限定的上述各步骤的计算机程序代码指令。也就是说,计算机程序产品可以包括可执行代码,当该可执行代码被电子设备的处理器执行时,使处理器执行本公开上文描述的方法。
[0146]
或者,本公开还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使处理器执行根据本公开的上述方法的各个步骤。
[0147]
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
[0148]
附图中的流程图和框图显示了根据本公开的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以
不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0149]
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献