一种基于MapReduce计算框架的多方模型预测方法和系统与流程

未命名 08-05 阅读:64 评论:0

一种基于mapreduce计算框架的多方模型预测方法和系统
技术领域
1.本说明书涉及信息安全技术领域,特别涉及一种基于mapreduce计算框架的多方模型预测方法和系统。


背景技术:

2.安全多方计算(mpc,secure multi-party computation)又称为多方安全计算,是密码学的一个重要分支,其作用是在不泄露各方输入数据情况下实现多方协同计算。这里的计算是广义层面的含义,可以指具体的计算任务、机器学习任务、数据检索以及机器学习模型预测等。
3.随着计算规模的增加,计算集群被广泛应用。计算集群一般包含多个计算设备或计算节点,为了提高集群运算效率,人们提出了一种控制集群中各计算设备高效协同运行的计算框架——mapreduce计算框架。
4.在一些较大规模的安全多方计算场景中,安全计算的参与方可以是计算集群。针对于此,本说明书一些实施例提出了一种基于mapreduce计算框架的多方模型预测方法,以期提高模型预测效率。


技术实现要素:

5.本说明书一些实施例提供一种基于mapreduce计算框架的多方模型预测方法,其包括:对特征数据集发起预测映射任务,以使得第一计算集群中的计算设备利用局部模型对所述特征数据集执行数据分区局部预测步骤,得到局部预测结果集;以及,对局部预测结果集发起数据发送映射任务,以使得第一计算集群中的计算设备对所述局部预测结果集执行数据分区发送步骤;
6.其中,第一计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有所述特征数据集的至少一个数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型,特征数据集包括待预测对象集中每一个待预测对象的一个或多个特征字段下的特征值;
7.所述数据分区局部预测步骤包括对所述特征数据集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果;
8.所述数据分区发送步骤包括对所述局部预测结果集的数据分区:获取该数据分区的分区标识,并基于局部预测结果集的标识以及所述分区标识确定第一连接标识;基于所述第一连接标识与第二计算集群中的相应计算设备建立通信连接;基于所述通信连接将该数据分区发送给第二计算集群中的所述相应计算设备。
9.本说明书一些实施例提供一种基于mapreduce计算框架的多方模型预测系统,其包括:局部预测映射模块,用于对特征数据集发起预测映射任务,以使得部署于第一计算集群中的计算设备上的数据分区局部预测模块利用局部模型对所述特征数据集执行数据分
区局部预测步骤,得到局部预测结果集;发送映射模块,用于对局部预测结果集发起数据发送映射任务,以使得部署于第一计算集群中的计算设备上的数据分区发送模块对所述局部预测结果集执行数据分区发送步骤;
10.其中,第一计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有所述特征数据集的至少一个数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型,特征数据集包括待预测对象集中每一个待预测对象的一个或多个特征字段下的特征值;
11.所述数据分区局部预测模块用于对所述特征数据集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果;
12.所述数据分区发送模块用于对所述局部预测结果集的数据分区:获取该数据分区的分区标识,并基于局部预测结果集的标识以及所述分区标识确定第一连接标识;基于所述第一连接标识与第二计算集群中的相应计算设备建立通信连接;基于所述通信连接将该数据分区发送给第二计算集群中的所述相应计算设备。
13.本说明书一些实施例提供了另一种基于mapreduce计算框架的多方模型预测方法,其包括:基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;对局部预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对所述局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集;
14.其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;
15.所述数据分区接收步骤包括对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;
16.所述数据分区输出预测步骤包括对局部预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果。
17.本说明书一些实施例提供了另一种基于mapreduce计算框架的多方模型预测系统,其包括:接收映射模块,用于基于空数据集发起数据接收映射任务,以使得部署于第二计算集群中的计算设备上的数据分区接收模块执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;输出映射模块,用于对局部预测结果集发起输出映射任务,以使得部署于第二计算集群中的计算设备上的数据分区输出预测模块利用局部模型对所述局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集;
18.其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;
19.所述数据分区接收模块用于对空数据集的空数据分区:获取空数据分区的分区标
识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;
20.所述数据分区输出预测模块用于对局部预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果。
21.本说明书一些实施例提供了又一种基于mapreduce计算框架的多方模型预测方法,其包括:基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;对两个以上局部预测结果集发起连接映射任务,以使得第二计算集群中的计算设备对各局部预测结果集执行数据分区连接步骤,得到连接预测结果集;所述连接预测结果集包括待预测对象集中每一个待预测对象的连接预测结果,连接预测结果由连接同一待预测对象的不同的局部预测结果得到;对连接预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对所述连接预测结果集执行数据分区输出预测步骤,得到最终预测结果集;
22.其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;
23.所述数据分区接收步骤包括对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;
24.所述数据分区连接步骤包括:对各局部预测结果集的对应数据分区中的局部预测结果依次连接,得到连接预测结果集的数据分区;
25.所述数据分区输出预测步骤包括对连接预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的连接预测结果,得到对应的最终预测结果。
26.本说明书一些实施例提供了又一种基于mapreduce计算框架的多方模型预测系统,其包括:数据接收映射模块,用于基于空数据集发起数据接收映射任务,以使得部署于第二计算集群中的计算设备上的数据分区接收模块执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;连接映射模块,用于对两个以上局部预测结果集发起连接映射任务,以使得部署于第二计算集群中的计算设备上的数据分区连接模块对各局部预测结果集执行数据分区连接步骤,得到连接预测结果集;所述连接预测结果集包括待预测对象集中每一个待预测对象的连接预测结果,连接预测结果由连接同一待预测对象的不同的局部预测结果得到;输出映射模块,用于对连接预测结果集发起输出映射任务,以使得部署于第二计算集群中的计算设备上的数据分区输出预测模块利用局部模型对所述连接预测结果集执行数据分区输出预测步骤,得到最终预测结果集;
27.其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;
28.所述数据分区接收模块用于对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;
29.所述数据分区连接模块用于:对各局部预测结果集的对应数据分区中的局部预测结果依次连接,得到连接预测结果集的数据分区;
30.所述数据分区输出预测模块用于对连接预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的连接预测结果,得到对应的最终预测结果。
附图说明
31.本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
32.图1是根据本说明书一些实施例所示的计算集群的示意图;
33.图2是根据本说明书一些实施例所示的树模型拆分示意图;
34.图3是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测方法的示例性流程图;
35.图4是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测方法的另一示例性流程图;
36.图5是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测的又一示例性流程图;
37.图6是根据本说明书一些实施例所示的第一计算集群与第二计算集群建立通信连接的过程示例图;
38.图7是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测系统框图;
39.图8是根据本说明书另一些实施例所示的基于mapreduce计算框架的多方模型预测系统框图;
40.图9是根据本说明书又一些实施例所示的基于mapreduce计算框架的多方模型预测系统框图。
具体实施方式
41.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
42.应当理解,本文使用的“系统”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,
则可通过其他表达来替换所述词语。
43.如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
44.本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
45.图1是根据本说明书一些实施例所示的计算集群的示意图。计算集群可以指通过计算机软件或硬件连接起来、高度紧密地联系在一起的计算设备组合。一般来说,计算集群可以包括两个以上的计算设备(或称为计算节点),这些计算设备可以并行的进行数据处理,以提高数据处理效率。
46.如图1所示,计算集群100可以包括中心设备110、网络120、计算设备131、计算设备132以及计算设备133。其中,计算设备131、计算设备132以及计算设备133可以通过网络120与中心设备110通信。
47.在一些实施例中,中心设备可以是独立于计算设备设置的,其仅负责计算任务的协调(如数据分区、任务分发等),帮助各计算设备更好的完成计算任务。在又一些实施例中,中心设备可以同时是一台计算设备,其兼有协调功能,同时参与并行计算任务。
48.在一些实施例中,计算集群100可以是基于mapreduce的计算集群。mapreduce是一种应用于大规模数据集的分布式并行计算框架。计算框架是指实现某项任务或某项工作从开始到结束的计算过程或流的结构,而分布式并行计算框架则进一步指将一个大的任务拆分成多个小任务并分发到多个计算设备上,由多个计算设备同时执行计算。mapreduce计算框架则更强调“分而治之,先分后和”的并行计算思想,其将一个大的、复杂的任务拆分成多个小任务,分发给各计算设备执行计算后,将计算结果进行合并。mapreduce计算框架允许多次“分——和”,进而完成对目标任务的处理。mapreduce计算框架主要包括map操作以及reduce操作,map操作又称为映射操作,即将数据进行拆分,把复杂的任务分解为若干个“简单的任务”来并行处理。reduce操作则是对数据进行汇总,即对map操作的结果进行全局汇总。mapreduce计算框架提供了一套较为完整的分布式并行计算的底层逻辑,并将其统一抽象、封装成若干功能组件。程序员则可以将更多的精力放在如何实现应用层面的计算逻辑上,通过编写相对少量的计算机代码以及调用框架提供的功能组件接口,便可利用计算框架提供的分布式并行计算逻辑高效的处理应用层面的任务和工作。
49.多方安全计算也称为安全多方计算(mpc或smpc,secure multi-party computation),指允许多个参与方在不泄露任何机密信息的情况下协同执行计算。这里的计算是广义层面的含义,可以指具体的计算任务、机器学习任务、数据检索以及机器学习模型预测等。以模型预测为例,待预测对象的特征数据可以分布于多个参与方处,而目标模型相应的被拆分为多个局部模型分布于多个参与方处。各参与方可以至少在不泄露本地特征数据(在一些场景下还可以进一步不泄露本地模型,即自有的局部模型)的情况下,协作得到待预测对象的预测结果。在一些实施例中,目标模型可以是集中训练完成后,被拆分为多
个局部模型,然后将局部模型分发给多个参与方。在又一些实施例中,目标模型自始不会实际存在,而是多个参与方通过协同训练,各自得到目标模型的一部分。
50.在一些多方模型预测的场景下,同一待预测对象的全部特征数据是集中分布在一方,而不同的待预测对象的特征数据可以分布在不同方,即同一待预测对象的特征数据不会被拆分,又可以称这种为特征数据水平分布于多方。此时目标模型可以被“横向”拆分为包含输入层的局部模型和包含输出层的局部模型。包含输入层的局部模型分布于拥有待预测对象特征数据的参与方,包含输出层的局部分析分布于有权限得到待预测对象预测结果的参与方。以5层神经网络模型为例,参与模型预测的可以为两方,第一方具有待预测对象的特征数据,第二方拥有获得预测结果的权限,此时可以将模型的第一层(即输入层)和第二层部署于第一方,第三层~第五层部署于第二方。第一方可以利用其局部模型处理待预测对象的特征数据,得到局部预测结果,并发送给第二方。第二方继续利用其局部模型处理来自第一方的局部预测结果,得到待预测对象的最终预测结果。待预测对象的特征数据不出域,而局部预测结果又难以倒推出原始特征数据,进而有效保护待预测对象的隐私安全。再以树模型为例,参与模型预测的可以为两方,第一方具有待预测对象的特征数据,第二方拥有获得预测结果的权限,此时,可以将树模型的分裂节点部署于第一方,树模型的叶节点部署于第二方。关于树模型的更多描述,可以在本说明书其他地方找到。在一些实施例中,参与模型预测的可以大于两方,此时目标模型中除包含输入层的局部模型以外的部分可以被拆分为两个以上局部模型,分别部署于两个以上参与方处。继续以5层神经网络模型为例,参与模型预测的为三方,神经网络模型的第一层和第二层分布于第一方,第三层和第四层可以分布于第二方,第五层由第三方拥有。在一些实施例中,待预测对象的数量可以是一个以上,因此其特征数据又可以视为特征数据集。换句话说,特征数据集可以包括一个以上待预测对象的特征数据。
51.在又一些多方模型预测的场景下,待预测对象的特征数据是垂直分布在多方的。一般来说,待预测对象的特征数据包括一个以上(更多的情况是两个或更多)特征字段下的特征值。例如,待预测对象为用户“小张”,其特征数据包括年龄、职业、性别以及籍贯等特征字段下的特征值“32岁、程序员、男、北京”。待预测对象的特征数据的垂直分布是指多方分别拥有全部特征字段中的部分特征字段的特征值。例如,第一方拥有“小张”的年龄、职业以及性别三个特征字段下的特征值,第二方拥有“小张”的籍贯特征值。相应的,目标模型会被“纵向”拆分,续前例,第一方至少拥有年龄、职业以及性格三个特征字段对应的输入层,第二方至少拥有籍贯特征字段对应的输入层。为了便于理解,下面以树模型为例,详细介绍特征数据的垂直分布以及目标模型的拆分。
52.图2是根据本说明书一些实施例所示的基于树模型拆分出的局部模型的示意图。目标模型200为一个完整的树模型(其不一定真实存在,而是各局部模型在理论上能够组合得到),包括7个分裂节点以及8个叶节点,分裂节点对应一个特征字段以及分裂条件,例如分裂节点211对应年龄字段,分裂条件可以是“≤40岁”,当满足该条件时,预测路径走向该分裂节点的左分支,否则走向右分支。叶节点对应标签值,具体的,可以对应分类标签,作为示例,叶节点242可以对应于“网游爱好者”、叶节点248可以对应于“宠物爱好者”。图2所示的树模型可以将待预测对象分类到8个类别中的一个,也可以是小于8个类别中的一个,此时不同叶节点对应的标签值可以相同。
53.如图2所示,目标模型200被拆分为了3个局部模型210、220、230,分布于三个参与方处。其中,叶节点只位于一方,即局部模型230,而局部模型210和220则只包含分裂节点。为了方便描述,可以将只有分裂节点的局部模型的拥有方称为特征方或第一方(进一步,可以将拥有局部模型210的一方称为第一方a,将拥有局部模型220的一方称为第一方b),将包含叶节点的局部模型的拥有方称为标签方或第二方。在一些实施例中,第一方可以具有树模型的分裂节点以及树模型的连接结构。树模型的连接结构包括树模型的节点数量、树的层数、剪枝情况(如第几层第几个节点的哪一分支被拆剪)等,如图2所示的树模型为一个四层满二叉树(即未被剪枝)。连接结构还可以包括本地节点在数模型中的位置,如拥有局部模型210的第一方知晓本地分裂节点212为第二层中的第一个节点。在又一些实施例中,第一方可以不知晓树模型的连接结构,只拥有若干分离的分裂节点。而第二方则需要知晓树模型的连接结构以及叶节点。
54.图2的下半部分示出了各参与方的数据分布情况。第一方拥有与其本地分裂节点对应的特征字段下待预测对象的特征值。如第一方b具有分裂节点221、222以及223,分别对应的特征字段f、g以及h下待预测对象的特征值。在一些实施例中,第二方可以仅拥有树模型的叶节点,此时,第二方只拥有各叶节点对应的标签值。在又一些实施例中,第二方还可以同时拥有树模型的部分分裂节点,此时,第二方还会拥有本地分裂节点对应的特征字段下待预测对象的特征值。如局部模型230的拥有方则具有分裂节点231对应的特征字段a下待预测对象的特征值,以及标签字段下的全部标签值。
55.各参与方可以基于安全多方计算的具体流程,彼此交互、协作,得到各待预测对象的最终预测结果。关于多方预测过程可以在图3~图5的相关说明中找到,在此不再赘述。在一些实施例中,待预测对象可以是多个,如待预测对象1~4,此时可以用集合来描述,如待预测对象集、特征数据集等。当待预测对象的数量较大时,各参与方可以以计算集群的形式来参与多方预测,如参与安全计算的每一方均为一个计算集群。为了提高模型预测的效率,本说明书一些实施例提供了基于mapreduce计算框架的多方模型预测方法。
56.图3是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测方法的示例性流程图。流程300可以由所述第一方,或称为第一计算集群,执行。在一些实施例中,流程300可以由部署于第一计算集群的系统700执行。
57.如前述,第一集群可以包括两个以上计算设备,其中至少两个计算设备分别具有特征数据集的至少一个数据分区。特征数据集可以包括一个以上待预测对象的特征数据,其中,每一个待预测对象的特征数据可以是全部特征字段下的特征值,也可以是部分特征字段下的特征值。数据分区是指以待预测对象为单元,将特征数据集划分得到两个以上的子集。在不引起混淆的情况下,数据分区可以理解为名词,等同于前述子集。
58.在一些实施例中,可以基于待预测对象的唯一标识对特征数据集进行分区,然后将特征数据集的数据分区分发到集群中两个以上计算设备中。唯一标识意味着其因不同的待预测对象而不同,在一些实施例中,唯一标识可以是编号,如1、2、3

;或者是包含数字和字母的字符串;也可以是其某一特征字段的特征值,如电话号码,也可以是该特征值的密文,如哈希值。作为实例,可以将唯一标识为奇数的待预测对象的特征数据分为同一个数据分区,将唯一标识为偶数的待预测对象的特征数据分到另一个数据分区。在又一些实施例中,还可以进一步对基于所述唯一标识对数据分区中的待预测对象的特征数据进行排序。
例如,按照唯一标识升序对数据分区中的待预测对象的特征数据进行排序。在一些实施例中,可以先排序再分区。例如,可以按照唯一标识降序对特征数据集中的多个待预测对象的特征数据进行排序,然后基于唯一标识所属的数值区间对多个待预测对象的特征数据进行分区。参见图2,可以将4个待预测对象的特征数据按照编号升序排序,再将其等分为数据分区1和数据分区2。在一些实施例中,数据分区以及分区的分发操作可以由第一计算集群中的中心设备(如中心设备110)执行。
59.如图3所示,流程300包括:
60.步骤310,对特征数据集发起预测映射任务,以使得第一计算集群中的计算设备利用局部模型对特征数据集执行数据分区局部预测步骤,得到局部预测结果集。在一些实施例中,步骤310可由局部预测映射模块710执行。
61.在一些实施例中,可以对特征数据集发起预测映射(map)任务,如执行map(f
local-pre
)或mappartition(f
local-pre
)指令。其中,map/mappartition函数为计算框架提供,f
local-pre
为数据分区局部预测(local predict)函数,f
local-pre
函数用于实现数据分区局部预测步骤,可由程序员根据应用层面的数据处理需求自行编写。在一些实施例中,预测映射任务可以由第一计算集群中的中心设备发起,进一步可以由部署于中心设备上的局部预测映射模块710实现。
62.map(f
local-pre
)或mappartition(f
local-pre
)指令被执行后,第一计算集群中的计算设备会对本地的特征数据集的数据分区执行数据分区局部预测步骤,或f
local-pre
函数。如图3右侧流程所示,数据分区局部预测步骤可以具体包括步骤311:计算设备利用局部模型分别处理本地数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果。在一些实施例中,步骤311可以由部署于第一计算集群中的计算设备上的数据分区局部预测模块711执行。
63.在一些实施例中,目标模型为神经网络模型,此时局部模型可以是包含输入层的部分神经网络层,如包括神经网络模型的第一层(输入层)和第二层。对于数据分区中的任一待预测对象,计算设备将其特征字段下的特征值输入到本地局部模型,便可得到该待预测对象对应的局部预测结果,如神经网络模型的第二层神经网络的输出数据。如此,计算设备可以得到其数据分区中各待预测对象的局部预测结果。
64.在又一些实施例中,目标模型为树模型,此时局部模型可以包括树模型的全部或部分分裂节点。第一计算集群中的计算设备可以将待预测对象的本地特征字段下的特征值与相应的本地分裂节点的分类条件进行匹配,进而得到待预测对象在各本地分裂节点的分裂方向,即待预测对象的局部预测结果。以图2中的局部模型220为例,此时第一计算集群为前述的第一方b。不妨以第一方b中拥有数据分区1的计算设备为例,该计算设备可以获取数据分区中待预测对象1的特征字段f的特征值f1,将其与对应的分裂节点221的分裂条件进行匹配,确定分裂方向为左,以此类推,该计算设备可以得到待预测对象1的局部预测结果{di1:node221-0;node222-1;node223-0},其中,“0”表示左方向,“1”表示右方向。如此,该计算设备可以获得其数据分区中各待预测对象的局部预测结果。
65.当第一计算集群中的拥有特征数据集的数据分区的计算设备分别完成了数据分区局部预测步骤以后,第一计算集群便得到了局部预测结果集,且局部预测结果集自然被分区,且局部预测结果集的数据分区以及分区内数据的排列顺序和特征数据集是对齐的。
此后,第一计算集群需要将局部预测结果集发送到参与安全多方计算的其他方,如第二计算集群。
66.步骤320,对局部预测结果集发起数据发送映射任务,以使得第一计算集群中的计算设备对局部预测结果集执行数据分区发送步骤。在一些实施例中,步骤320可由发送映射模块720执行。
67.在一些实施例中,可以对局部预测结果集发起数据发送映射(map)任务,如执行map(fs)或mappartition(fs)指令。其中,map/mappartition函数为计算框架提供,fs为数据分区发送(send out)函数,fs函数用于实现数据分区发送步骤,可由程序员根据应用层面的数据处理需求自行编写。在一些实施例中,发送映射任务可以由第一计算集群的中心设备发起,进一步可以由部署于中心设备上的发送映射模块720实现。
68.map(fs)或mappartition(fs)指令被执行后,第一计算集群的计算设备会对局部预测结果集的本地数据分区执行数据分区发送步骤,或fs函数。如图3右侧的步骤321~323所示,数据分区发送步骤可以包括如下内容:
69.步骤321,获取数据分区的分区标识,并基于局部预测结果集的标识以及分区标识确定第一连接标识。在一些实施例中,步骤321可以由数据分区发送模块721执行。
70.局部预测结果集的每一个数据分区都具有一个唯一的标识。在一些实施例中,数据分区的标识可以由计算框架自动生成。例如,对于同一个数据集,默认从0开始,每新增一个数据分区,其标识在前一数据分区的标识基础上加1。示例性的,当目标数据集被划分为4个分区后,各数据分区的编号可以依次为0、1、2、3。在一些实施例中,局部预测结果集的数据分区的分区标识可以与特征数据集的相应数据分区的分区标识一致。例如,计算设备利用局部模型处理特征数据集的数据分区1得到了其中各待预测对象的局部预测结果,那么这些待预测对象的局部预测结果自然组成局部预测结果集的数据分区1。在一些实施例中,局部预测结果集也具有自身的标识以便区分。局部预测结果集的标识可以使用字母、数字以及两者的组合进行标记。在一些实施例中,局部预测结果集的标识也可以由计算框架生成。
71.在一些实施例中,可以将局部预测结果集的标识以及数据分区的分区标识进行尾首拼接得到第一连接标识,又或者使用连接符号将两者进行连接。在计算框架之间的数据传输过程中,每一个数据分区会对应唯一的连接标识。这也意味着,对于每一个数据分区的传输,本说明书一些实施例会为其建立特有的通信连接。示例性地,假设局部预测结果集的标识为“a”,当前数据分区的分区标识为2,第一连接标识可以是“a2”或“a|2”,“|”为连接符。
72.步骤322,基于第一连接标识与第二计算集群中的相应计算设备建立通信连接。在一些实施例中,步骤322可以由数据分区发送模块721执行。
73.为了实现数据在mapreduce计算框架中直接传输,需要在两个计算集群中的相应计算设备之间建立“点到点”的通信连接。在一些实施例中,第二计算集群中的计算设备会相应获取第二连接标识(详见图4的相关说明),第二连接标识的编码规则与第一连接标识一致。当第一连接标识与第二计算集群中某个计算设备的第二连接标识具备预设关系时,可以在当前计算设备与第二计算集群的相应计算设备之间建立通信连接。示例性的,所述预设关系可以是相等。两个计算设备建立通信连接后,其中一个计算设备发送的数据便会
全部的、直接的发送到另一计算设备。
74.在一些实施例中,可以设置传输设备。两个计算集群中的计算设备可以将其自身的连接标识均发送到传输设备。传输设备在连接标识相等的两个计算设备间建立通信连接。所述传输设备的数量可以是1,独立于两个计算集群设置,或者为其中某一个计算集群中的设备。在又一些实施例中,传输设备的数量可以是2,分属于两个计算集群。关于建立通信连接的具体实现过程可以参见图6的相关说明。
75.步骤323,基于通信连接将数据分区发送给第二计算集群中的相应计算设备。在一些实施例中,步骤322可以由数据分区发送模块721执行。
76.当前计算设备在传输当前的数据分区时,只会与第二计算集群中的唯一计算设备建立通信连接,相应的,当前计算设备基于所述通信连接将当前的数据分区传输给对方的计算设备。在一些实施例中,在传输数据时可以对数据进行压缩和/或加密。即基于所述通信连接将所述数据分区发送给第二计算集群中的所述相应计算设备可以包括:将所述数据分区中的数据进行压缩和/或加密,将经过压缩和/或加密后的数据发送给所述相应计算设备。压缩是指在不丢失有用信息的前提下对数据进行编码,以减少存储空间。示例性的压缩方式可以包括但不限于霍夫曼(huffman)算法、lzw(lenpel-ziv&welch)压缩算法等。应当理解,本步骤的加密是对抗第三方而非第二计算集群,在mpc的计算场景中,当前数据分区的数据可以已经是密文形式(如模型处理后的中间数据,隐匿了待预测对象的原始特征),本步骤的加密则是在隐匿了原始信息的分区数据基础上再次进行加密。加密方式可以是des,3des,aes等对称加密方式、rsa,dsa等非对称加密方式或者散列算法等。本实施例对压缩或加密的具体实现方式不做限制。
77.在一些实施例中,当前计算设备可以将分区中的数据依次发送到所述传输设备,传输设备再将分区的数据依次转发到对方计算设备中。
78.在一些实施例中,当一个数据分区发送完毕后,当前计算设备可以向对方计算设备发送通信结束标识,如“eof”,当对方计算设备接收到通信结束标识后便可知晓当前数据分区以传输完毕,双方断开通信连接。在一些实施例中,当传输设备接收到通信结束标识并传输给第二计算集群的相应计算设备后,可以断开其为两个计算设备建立的所述通信连接。
79.流程300通过mapreduce框架高效完成了特征数据集的局部预测,并通过数据发送映射任务将得到的局部预测结果集的各数据分区对应发送到第二计算集群中。当各计算设备完成其本地数据分区的传输后,局部预测结果集便完整的传输到第二计算集群的mapreduce计算框架中,且数据集在两个计算集群中的分区方式是对齐的,便于直接进行后续的框架操作,如map操作、zip操作或reduce操作,充分利用mapreduce计算框架的优势,提高了模型预测效率。
80.图4是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测方法的又一示例性流程图。流程400可以由所述第二方,或称为第二计算集群,执行。在一些实施例中,流程400可以由部署于第二计算集群的系统800执行。如图4所示,流程400包括下述步骤:
81.步骤410,基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集。在一些实施例
中,步骤410可由接收映射模块810执行。
82.在一些实施例中,为了从第一计算集群中接收局部预测结果集,第二计算集群需要预先创建存放数据的空数据集。进一步,可以将空数据集划分为两个以上的空数据分区,并部署在第二计算集群的两个以上计算设备中。在一些实施例中,也可以直接在相应的计算设备上创建预设数量的空数据分区,作为同一空数据集下的多个空数据分区。在一些实施例中,创建空数据集和空数据分区的步骤可以由第二计算集群的中心设备(如中心设备110)执行。在一些实施例中,空数据集的分区数量应当与局部预测结果集的分区数量一致。具体的,第一计算集群和第二计算集群可以采用固定的分区数量,在任务开始前就商定数据集的分区数量,接下来双方都要确保收、发的分区数量与商定的一致。在又一些实施例中,中心设备可以与第一计算集群(如其中心设备)通信,以获取局部预测结果集的数据分区的数量,然后第二计算集群的中心设备在第二计算集群中创建相同数量的空数据分区。
83.在一些实施例中,可以基于空数据集发起数据接收映射(map)任务,如执行map(fr)或mappartition(fr)指令。其中,fr为数据分区接收(receive)函数,fr函数用于实现数据分区接收步骤,由程序员自行编写。在一些实施例中,接收映射任务可以由第二计算集群的中心设备发起,进一步可以由部署于中心设备上的接收映射模块810实现。
84.map(fr)或mappartition(fr)指令被执行后,第二计算集群中具有空数据分区的计算设备执行数据分区接收步骤,或fr函数。如图4右侧流程所示,数据分区接收步骤可以包括如下内容:
85.步骤411,获取空数据分区的分区标识,并基于空数据集的标识以及分区标识确定第二连接标识。在一些实施例中,步骤411可以由数据分区接收模块811执行。
86.与局部预测结果集及其数据分区类似,空数据集及其数据分区也会分别具有标识。在一些实施例中,空数据分区的标识可以由计算框架自动生成,与第一计算集群类似的,对于同一个空数据集,默认从0开始,每新增一个空数据分区,其标识在前一数据分区的标识基础上加1。示例性的,当目标数据集的数据分区数量为4时,第二计算集群也会生成相同数量的空数据分区,其标识分别为0、1、2、3。数据集的标识可以反映本次传输任务的批次号,因此空数据集的标识应该与局部预测结果集的标识一致。在一些实施例中,第二计算集群中的中心设备可以与第一计算集群通信,获取局部预测结果集的标识,并基于此生成空数据集的标识。又或者,第二计算集群的计算框架可以基于与第一计算集群的计算框架相同的编号方式为空数据集生成标识。
87.在一些实施例中,可以将空数据集的标识以及空数据分区的分区标识按照与第一计算集群类似的方式进行处理得到第二连接标识。示例性地,假设空数据集的标识为“a”,当前空数据分区的分区标识为2,第二连接标识可以是“a2”或“a|2”,“|”为连接符。
88.空数据集以及空数据分区的标识按照与第一计算集群相似的方式确定,进而可以确保局部预测结果集中的每一个数据分区都有一个对应的通信连接以及空数据分区,实现点对点传输。
89.步骤412,基于第二连接标识与第一计算集群中的相应计算设备建立通信连接。在一些实施例中,步骤412可以由数据分区接收模块811执行。
90.步骤412与步骤322是类似或对称的,因此关于步骤412的具体内容可以参见步骤322或图6的相关说明,在此不再赘述。
91.步骤413,基于通信连接接收第一计算集群中的相应计算设备发送的数据,并存储在空数据分区中,进而获得目标数据集的数据分区。在一些实施例中,步骤413可以由数据分区接收模块811执行。
92.在一些实施例中,当前计算设备可以依次接收来自第一计算集群中相应计算设备的数据分区的数据,又或者当前计算设备可以接收由传输设备转发的数据。在一些实施例中,当前计算设备可以对接收到的数据进行解压和/或解密,得到数据原文。当当前设备接收到通信结束标识时,可以认为当前数据分区传输结束,进而断开与第一计算集群中相应计算设备的通信连接。与步骤413的相关内容还可以进一步参考步骤323的相关说明。在此不再赘述。
93.当第二计算集群中的各计算设备完成其数据分区接收后,局部预测结果集便完整的传输到第二计算集群的mapreduce计算框架中。
94.步骤420,对局部预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集。在一些实施例中,步骤420可由输出映射模块820执行。
95.在一些实施例中,可以对局部预测结果集发起输出映射(map)任务,如执行map(f
final-pre
)或mappartition(f
final-pre
)指令。其中,map/mappartition函数为计算框架提供,f
final-pre
为数据分区输出预测(final predict)函数,f
final-pre
函数用于实现数据分区输出预测步骤,可由程序员根据应用层面的数据处理需求自行编写。在一些实施例中,输出映射任务可以由第二计算集群中的中心设备发起,进一步可以由部署于中心设备上的输出映射模块820实现。
96.map(f
final-pre
)或mappartition(f
final-pre
)指令被执行后,第二计算集群中的计算设备会对本地的局部预测结果集的数据分区执行数据分区输出预测步骤,或f
final-pre
函数。如图4右侧流程所示,数据分区输出预测步骤可以具体包括步骤421:计算设备利用局部模型分别处理本地数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果。在一些实施例中,步骤421可以由部署于第二计算集群中的计算设备上的数据分区输出预测模块821执行。
97.在一些实施例中,目标模型为神经网络模型,此时局部模型可以是包含输出层的部分神经网络层,如包括神经网络模型的第三层~第五层(输出层)。对于数据分区中的任一待预测对象,计算设备将其局部预测结果输入到本地局部模型,便可得到该待预测对象对应的最终预测结果,如神经网络模型的第五层神经网络的输出数据。如此,计算设备可以得到其数据分区中各待预测对象的最终预测结果。
98.在又一些实施例中,目标模型为树模型,此时局部模型可以包括树模型中分裂节点与叶节点之间的连接结构以及其中的叶节点,而不包含分裂节点。在一些实施例中,待预测对象的局部预测结果包括在树模型中各分裂节点处的分裂方向,换句话说,参与多方模型预测的第一方数量为1,其拥有树模型的全部分裂节点。第二计算集群中的计算设备可以根据待预测对象在树模型中各分裂节点处的分裂方向以及树模型中分裂节点与叶节点之间的连接结构,确定待预测对象在树模型中的预测路径,进而得到其对应的叶节点,得到标签值,即最终预测结果。如此,该计算设备可以获得其数据分区中各待预测对象的最终预测结果。
99.当第二计算集群中的接收到局部预测结果集的数据分区的计算设备分别完成了数据分区输出预测步骤以后,第二计算集群便得到了最终预测结果集。
100.第二计算集群接收到的局部预测结果集自然分区,其无需对局部预测结果集再次分区,计算框架可以直接对局部预测结果集执行输出预测映射任务,提高了模型预测效率。
101.图5是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测方法的又一示例性流程图。流程500可以由所述第二方,或称为第二计算集群,执行。在一些实施例中,流程500可以由部署于第二计算集群的系统900执行。如图5所示,流程500包括下述步骤:
102.步骤510,基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集。在一些实施例中,步骤510可由接收映射模块910执行。
103.步骤510的内容与步骤410一致,可以参见图4的相关说明,在此不再赘述。
104.在一些实施例中,第一方,或者第一计算集群,的数量为两个以上,此时,第二计算集群需要创建多个空数据集,空数据集的数量与第一计算集群的数量一致。第二计算集群需要多次执行步骤510以便从每一个第一计算集群处获取局部预测结果集。
105.在一些实施例中,所述目标模型为树模型,所述局部模型包括树模型中分裂节点与叶节点之间的连接结构、部分分裂节点以及叶节点。这意味着,来自第一计算集群的待预测对象的局部预测结果仅包括待预测对象在树模型中其余部分分裂节点处的分裂方向,而第二计算集群还需要执行预测映射任务,得到本地的局部预测结果集。将第一计算集群的局部预测结果集和第二计算集群本地得到的局部预测结果集合并,才能得到各待预测对象在树模型中全部分裂节点处的分裂方向。
106.具体的,第二计算集群拥有待预测对象的另一特征数据集,其包括待预测对象集中每一个待预测对象的另一些特征字段(相对于第一计算集群拥有的特征字段而言)下的特征值。所述部分分裂节点与所述第二计算集群拥有的一个或多个特征字段一一对应。与第一计算集群类似的,第二计算集群中的至少两个计算设备分别具有所述特征数据集的至少一个数据分区。关于特征数据集在第二计算集群中的分区方式以及第二计算集群执行预测映射任务的具体过程可以参见图3的相关说明(如步骤310),在此不再赘述。
107.在一些实施例中,所述目标模型为树模型,此时局部模型可以包括树模型中分裂节点与叶节点之间的连接结构以及其中的叶节点,而不包含分裂节点。这意味着,来自第一计算集群的待预测对象的局部预测结果包括待预测对象在树模型中全部分裂节点处的分裂方向,而第二计算集群无需执行预测映射任务。在一些实施例中,当第一计算集群的数量为多个时,将来自各第一计算集群的局部预测结果集合并,便能得到各待预测对象在树模型中全部分裂节点处的分裂方向。
108.步骤520,对两个以上局部预测结果集发起连接映射任务,以使得第二计算集群中的计算设备对各局部预测结果集执行数据分区连接步骤,得到连接预测结果集。在一些实施例中,步骤520可由连接映射模块920执行。
109.由前述内容可以,当第一方的数量为两个以上时,或者当第一方数量为1个,但第二方的局部模型还包括分裂节点时,都需要将两个以上局部预测结果进行连接。所谓连接,可以直观形象的理解为,将两个集合中的数据依次拼接、组合或求并集。为了确保连接的正
确性,需要被连接的两个以上集合中的数据或记录是对齐的。在一些实施例中,相关参与方(两个以上第一方或者至少一个第一方与拥有特征数据集的第二方)拥有的特征数据集是针对同一待预测对象集的,即涉及的待预测对象是相同的。同时,各相关参与方可以按照同样的分区和排序策略基于待预测样本的唯一标识对各自的特征数据集进行分区和排序,这样可以保证各相关参与方获得的本地的局部预测结果集的分区和排序也是对齐的,当相关的第一计算集群通过步骤321~323将局部预测结果集传输到第二计算集群中,第二计算集群从两个以上第一计算集群得到的局部预测结果集的数据分区和数据顺序是对齐的,或者第二计算集群从至少一个第一计算集群得到的局部预测结果集与本地的局部预测结果集的数据分区和数据顺序也是对齐的。与此同时,通过控制数据分区在第二计算集群中计算设备上的分布,可以使得两个以上局部预测结果集的对应数据分区会位于同一计算设备上,进而第二计算集群可以对两个以上局部预测结果集进行连接映射。作为示例,分区标识一致的数据分区可以认为是对应数据分区,同时确保数据分区1总是位于第二计算集群的计算设备131上,数据分区2总是位于第二计算集群的计算设备132上。进而使得不同数据集中相互对应的数据分区位于同一计算设备上。
110.在一些实施例中,第二计算集群可以对两个以上局部预测结果集发起连接映射(zip)任务,如执行zip(
·
)指令。其中,zip函数为计算框架提供,其可以将两个以上文件(或数据集)合并成一个文件(或数据集)。在一些实施例中,连接映射任务可以由第二计算集群中的中心设备发起,进一步可以由部署于中心设备上的连接映射模块920实现。
111.zip(
·
)指令被执行后,第二计算集群中的计算设备会对两个以上局部预测结果集的对应数据分区执行数据分区局部预测步骤。如图5右侧流程所示,数据分区连接步骤可以具体包括步骤521:对各局部预测结果集的对应数据分区中的局部预测结果依次连接,得到连接预测结果集的数据分区。所述连接预测结果集包括待预测对象集中每一个待预测对象的连接预测结果,连接预测结果由连接同一待预测对象的不同的局部预测结果得到。在一些实施例中,步骤521可以由部署于第二计算集群中的计算设备上的数据分区连接模块921执行。
112.以图2所示的模型拆分和数据分布方式为例。第二计算集群中的计算设备1可以从第一方a和第一方b处分别获得局部预测结果集240的数据分区1和局部预测结果集250的数据分区1,同时所述计算设备1具有本地的局部预测结果集260的数据分区1。数据分区1包括顺序排列的待预测对象1的局部预测结果和待预测对象2的局部预测结果,即各方的数据分区1是对齐的。以待预测对象1为例,其在局部预测结果集240的局部预测结果为{di1:node211-1;node212-1;node213-0},在局部预测结果集250的局部预测结果为{di1:node221-0;node222-1;node223-0},在局部预测结果集260的局部预测结果为{di1:node231-0},将待预测对象1的各局部预测结果进行连接,得到其连接预测结果为{id1:node211-1;node212-1;node213-0;node221-0;node222-1;node223-0;node231-0}。如此,计算设备对各局部预测结果集对应的数据分区中各待预测对象的局部预测结果进行连接,便可得到连接预测结果集的数据分区。第二计算集群的相关计算设备得到连接预测结果的数据分区后,第二计算集群便得到了连接预测结果集。
113.步骤530,对连接预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对所述连接预测结果集执行数据分区输出预测步骤,得到最终预测结果
集。在一些实施例中,步骤530可由输出映射模块930执行。
114.在一些实施例中,可以对连接预测结果集发起输出映射(map)任务,如执行map(f
final-pre
)或mappartition(f
final-pre
)指令。其中,map/mappartition函数为计算框架提供,f
final-pre
为数据分区输出预测(final predict)函数,f
final-pre
函数用于实现数据分区输出预测步骤,可由程序员根据应用层面的数据处理需求自行编写。在一些实施例中,输出映射任务可以由第二计算集群中的中心设备发起,进一步可以由部署于中心设备上的输出映射模块820实现。
115.map(f
final-pre
)或mappartition(f
final-pre
)指令被执行后,第二计算集群中的计算设备会对本地的连接预测结果集的数据分区执行数据分区输出预测步骤,或f
final-pre
函数。如图5右侧流程所示,数据分区输出预测步骤可以具体包括步骤531:计算设备利用局部模型分别处理本地数据分区中每一个待预测对象的连接预测结果,得到对应的最终预测结果。在一些实施例中,步骤531可以由部署于第二计算集群中的计算设备上的数据分区输出预测模块931执行。
116.在一些实施例中,待预测对象的连接预测结果包括在树模型中各分裂节点处的分裂方向。第二计算集群中的计算设备可以根据待预测对象在树模型中各分裂节点处的分裂方向以及树模型中分裂节点与叶节点之间的连接结构,确定待预测对象在树模型中的预测路径,进而得到其对应的叶节点,得到标签值,即最终预测结果。续前例,待预测对象1的连接预测结果为{id1:node211-1;node212-1;node213-0;node221-0;node222-1;node223-0;node231-0},计算设备1根据图2所示的连接结构,可以得到待预测对象的预测路径为{node211

node221

node213

node245},其最终预测结果为叶节点245对应的标签值。如此,计算设备可以获得其数据分区中各待预测对象的最终预测结果。
117.当第二计算集群中的接收到局部预测结果集的数据分区的计算设备分别完成了数据分区输出预测步骤以后,第二计算集群便得到了最终预测结果集。
118.流程500使得第二计算集群中的计算设备能够接收到不同数据集的对应数据分区,进而可以方便的对各数据集的对应数据分区进行连接映射任务以及输出预测映射任务,有效提高了模型预测效率。
119.图6是根据本说明书一些实施例所示的第一计算集群与第二计算集群建立通信连接的过程的示例图。
120.假设第一计算集群和第二计算集群分别具有一个传输设备。建立通信连接的过程如下:
121.1.第一计算集群的计算设备与本方的传输设备建立连接,如基于tcp协议或者udp协议等建立连接;类似的,第二计算集群的计算设备与本方的传输设备建立连接。
122.2.第一计算集群的计算设备基于与本方的传输设备的连接发送第一连接请求,其中可以包括一行字符,如"route 2topic a|1",其中“a|1”为第一连接标识;相应的,第二计算集群的计算设备基于与本方的传输设备的连接发送第二连接请求,其中包括一行字符,如"route 1topic a|1",其中“a|1”为第二连接标识。
123.3.第一计算集群的传输设备收到本方的计算设备发来第一连接请求后进行解析,确定需要连接的合作方是第二方(2,即第二计算集群)以及topic a|1;第二计算集群的处理逻辑类似。
124.4.第一计算集群的传输设备根据第二计算集群的网络地址(如网关地址)连接(同样基于tcp协议或者udp协议)到第二计算集群的传输设备,将包含“topic a|1”的连接请求发送到第二计算集群的传输设备上。
125.5.第二计算集群的传输设备此时收到第一计算集群过来的连接请求,获得“topic a|1”,从本方的计算设备传来的第二连接请求中找到具有相同连接标识的本方的计算设备。
126.6.第二计算集群的传输设备向第一计算集群的传输设备回复连接成功信息,如"ok"信号,向本方的相应的计算设备发送"ok"信号,同时将来自本方计算设备的连接和来自对方传输设备的连接concat起来(concat意思是将两个连接的输出数据分别作为对方的输入数据,这里的输出和输入都是相对当前传输设备而言的)。
127.7.第一计算集群的传输设备收到第二计算集群传来的“ok”信号后,也向本方的计算节点返回“ok”信号,同时将来自本方计算设备的连接和来自对方传输设备的连接concat起来。这样双方的计算节点就通过传输节点、基于连接标识实现了点对点直连。
128.在一些实施例中,步骤4~7中的第一计算集群和第二计算集群可以对换。在一些替代性实施例中,图6中的传输设备可以减少为一台,此时图6中两台传输设备执行的步骤均由同一台传输设备执行,且图6中两台传输设备间的通信便可省去。
129.图7是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测系统的模块图。如图7所示,基于mapreduce计算框架的多方模型预测系统700可以包括局部预测映射模块710和发送映射模块720。
130.局部预测映射模块710用于对特征数据集发起预测映射任务,以使得部署于第一计算集群中的计算设备上的数据分区局部预测模块711利用局部模型对所述特征数据集执行数据分区局部预测步骤,得到局部预测结果集。
131.发送映射模块720用于对局部预测结果集发起数据发送映射任务,以使得部署于第一计算集群中的计算设备上的数据分区发送模块721对所述局部预测结果集执行数据分区发送步骤。其中,
132.所述数据分区局部预测模块711用于对所述特征数据集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果。
133.所述数据分区发送模块721用于对所述局部预测结果集的数据分区:获取该数据分区的分区标识,并基于局部预测结果集的标识以及所述分区标识确定第一连接标识;基于所述第一连接标识与第二计算集群中的相应计算设备建立通信连接;基于所述通信连接将该数据分区发送给第二计算集群中的所述相应计算设备。
134.图8是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测系统的又一模块图。如图8所示,基于mapreduce计算框架的多方模型预测系统800可以包括接收映射模块810和输出映射模块820。
135.接收映射模块810用于基于空数据集发起数据接收映射任务,以使得部署于第二计算集群中的计算设备上的数据分区接收模块811执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集。
136.输出映射模块820用于对局部预测结果集发起输出映射任务,以使得部署于第二
计算集群中的计算设备上的数据分区输出预测模块821利用局部模型对所述局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集。其中,
137.所述数据分区接收模块811用于对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区。
138.所述数据分区输出预测模块821用于对局部预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果。
139.图9是根据本说明书一些实施例所示的基于mapreduce计算框架的多方模型预测系统的又一模块图。如图9所示,基于mapreduce计算框架的多方模型预测系统900可以包括接收映射模块910、连接映射模块920和输出映射模块930。
140.接收映射模块910用于基于空数据集发起数据接收映射任务,以使得部署于第二计算集群中的计算设备上的数据分区接收模块911执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集。
141.连接映射模块920用于对两个以上局部预测结果集发起连接映射任务,以使得部署于第二计算集群中的计算设备上的数据分区连接模块921对各局部预测结果集执行数据分区连接步骤,得到连接预测结果集;所述连接预测结果集包括待预测对象集中每一个待预测对象的连接预测结果,连接预测结果由连接同一待预测对象的不同的局部预测结果得到。
142.输出映射模块930用于对连接预测结果集发起输出映射任务,以使得部署于第二计算集群中的计算设备上的数据分区输出预测模块931利用局部模型对所述连接预测结果集执行数据分区输出预测步骤,得到最终预测结果集。其中,
143.所述数据分区接收模块911用于对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区。
144.所述数据分区连接模块921用于:对各局部预测结果集的对应数据分区中的局部预测结果依次连接,得到连接预测结果集的数据分区。
145.所述数据分区输出预测模块931用于对连接预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的连接预测结果,得到对应的最终预测结果。
146.关于各模块的更多内容可以参见图3到图5的相关说明,在此不再赘述。应当理解,图7到图9所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这
样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
147.需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。或者对某些模块进行拆分,得到更多的模块或者该模块下的多个单元。诸如此类的变形,均在本说明书的保护范围之内。
148.本说明书实施例可能带来的有益效果包括但不限于:(1)基于mapreduce计算框架实现数据在不同计算集群中传输,提高了数据传输效率;(2)局部预测结果集在传输过程中确保了分区对齐,接收方获得的数据集可以直接在其计算框架中进行后续的操作,如连接映射操作、输出预测映射操作等,有效提高了模型预测效率。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
149.上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
150.同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
151.此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
152.同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
153.一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有
±
20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点
可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
154.针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
155.最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。

技术特征:
1.一种基于mapreduce计算框架的多方模型预测方法,其包括:对特征数据集发起预测映射任务,以使得第一计算集群中的计算设备利用局部模型对所述特征数据集执行数据分区局部预测步骤,得到局部预测结果集;以及,对局部预测结果集发起数据发送映射任务,以使得第一计算集群中的计算设备对所述局部预测结果集执行数据分区发送步骤;其中,第一计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有所述特征数据集的至少一个数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型,特征数据集包括待预测对象集中每一个待预测对象的一个或多个特征字段下的特征值;所述数据分区局部预测步骤包括对所述特征数据集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果;所述数据分区发送步骤包括对所述局部预测结果集的数据分区:获取该数据分区的分区标识,并基于局部预测结果集的标识以及所述分区标识确定第一连接标识;基于所述第一连接标识与第二计算集群中的相应计算设备建立通信连接;基于所述通信连接将该数据分区发送给第二计算集群中的所述相应计算设备。2.如权利要求1所述的方法,所述目标模型为树模型,所述局部模型包括树模型中的至少部分分裂节点,所述至少部分分裂节点与所述一个或多个特征字段一一对应。3.如权利要求2所述的方法,所述利用局部模型分别处理该数据分区中每一个待预测对象在所述一个或多个特征字段下的特征值,得到对应的局部预测结果,包括对于其中一个待预测对象:将所述一个或多个特征字段的特征值与相应分裂节点对应的分裂条件进行匹配,获得该待预测对象在各分裂节点处的分裂方向,进而得到该待预测对象的局部预测结果。4.如权利要求1所述的方法,所述特征数据集的数据分区基于待预测对象的唯一标识进行分区和排序。5.一种基于mapreduce计算框架的多方模型预测系统,其包括:局部预测映射模块,用于对特征数据集发起预测映射任务,以使得部署于第一计算集群中的计算设备上的数据分区局部预测模块利用局部模型对所述特征数据集执行数据分区局部预测步骤,得到局部预测结果集;发送映射模块,用于对局部预测结果集发起数据发送映射任务,以使得部署于第一计算集群中的计算设备上的数据分区发送模块对所述局部预测结果集执行数据分区发送步骤;其中,第一计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有所述特征数据集的至少一个数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型,特征数据集包括待预测对象集中每一个待预测对象的一个或多个特征字段下的特征值;所述数据分区局部预测模块用于对所述特征数据集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段
下的特征值,得到对应的局部预测结果;所述数据分区发送模块用于对所述局部预测结果集的数据分区:获取该数据分区的分区标识,并基于局部预测结果集的标识以及所述分区标识确定第一连接标识;基于所述第一连接标识与第二计算集群中的相应计算设备建立通信连接;基于所述通信连接将该数据分区发送给第二计算集群中的所述相应计算设备。6.一种基于mapreduce计算框架的多方模型预测方法,其包括:基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;对局部预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对所述局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集;其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;所述数据分区接收步骤包括对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;所述数据分区输出预测步骤包括对局部预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果。7.如权利要求6所述的方法,所述空数据集的数据分区数量与待接收的局部预测结果集的数据分区数量相同;所述方法还包括:从第一计算集群获取局部预测结果集的数据分区数量;基于所述局部预测结果集的数据分区数量,将所述空数据集划分为相同数量的数据分区。8.如权利要求6所述的方法,所述目标模型为树模型,所述局部模型包括树模型中分裂节点与叶节点之间的连接结构以及其中的叶节点,所述叶节点与标签值一一对应,待预测对象的局部预测结果包括在树模型中各分裂节点处的分裂方向。9.如权利要求8所述的方法,所述利用局部模型分别处理该数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果,包括:基于待预测对象的局部预测结果以及所述连接结构,确定待预测对象对应的叶节点,进而得到其标签值。10.一种基于mapreduce计算框架的多方模型预测系统,其包括:接收映射模块,用于基于空数据集发起数据接收映射任务,以使得部署于第二计算集群中的计算设备上的数据分区接收模块执行数据分区接收步骤,进而得到来自第一计算集
群的局部预测结果集;输出映射模块,用于对局部预测结果集发起输出映射任务,以使得部署于第二计算集群中的计算设备上的数据分区输出预测模块利用局部模型对所述局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集;其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;所述数据分区接收模块用于对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;所述数据分区输出预测模块用于对局部预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的局部预测结果,得到对应的最终预测结果。11.一种基于mapreduce计算框架的多方模型预测方法,其包括:基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;对两个以上局部预测结果集发起连接映射任务,以使得第二计算集群中的计算设备对各局部预测结果集执行数据分区连接步骤,得到连接预测结果集;所述连接预测结果集包括待预测对象集中每一个待预测对象的连接预测结果,连接预测结果由连接同一待预测对象的不同的局部预测结果得到;对连接预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对所述连接预测结果集执行数据分区输出预测步骤,得到最终预测结果集;其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;所述数据分区接收步骤包括对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;所述数据分区连接步骤包括:对各局部预测结果集的对应数据分区中的局部预测结果依次连接,得到连接预测结果集的数据分区;所述数据分区输出预测步骤包括对连接预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的连接预测结果,得到对应的
最终预测结果。12.如权利要求11所述的方法,所述空数据集的数据分区数量与待接收的局部预测结果集的数据分区数量相同;所述方法还包括:从第一计算集群获取局部预测结果集的数据分区数量;基于所述局部预测结果集的数据分区数量,将所述空数据集划分为相同数量的数据分区。13.如权利要求11所述的方法,所述第一计算集群的数量为多个,所述空数据集的数量与第一计算集群的数量一致。14.如权利要求11或13所述的方法,所述模型为树模型,所述局部模型包括树模型中分裂节点与叶节点之间的连接结构以及其中的叶节点,所述叶节点与标签值一一对应,待预测对象的连接预测结果包括在树模型中各分裂节点处的分裂方向。15.如权利要求11所述的方法,所述目标模型为树模型,所述局部模型包括树模型中分裂节点与叶节点之间的连接结构、部分分裂节点以及叶节点,第二计算集群中的至少两个计算设备分别具有所述特征数据集的至少一个数据分区,特征数据集包括待预测对象集中每一个待预测对象的一个或多个特征字段下的特征值,所述部分分裂节点与所述一个或多个特征字段一一对应,所述叶节点与标签值一一对应,来自第一计算集群的待预测对象的局部预测结果包括在树模型中其余部分分裂节点处的分裂方向,待预测对象的连接预测结果包括在树模型中各分裂节点处的分裂方向。16.如权利要求15所述的方法,还包括对特征数据集发起预测映射任务,以使得第二计算集群中的计算设备利用局部模型对所述特征数据集执行数据分区局部预测步骤,得到局部预测结果集;所述数据分区局部预测步骤包括对特征数据集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果;所述利用局部模型分别处理该数据分区中每一个待预测对象的所述一个或多个特征字段下的特征值,得到对应的局部预测结果,进一步包括对于其中一个待预测对象:将所述一个或多个特征字段的特征值与相应分裂节点对应的分裂条件进行匹配,获得该待预测对象在各分裂节点处的分裂方向,进而得到该待预测对象的局部预测结果。17.如权利要求14或15所述的方法,所述利用局部模型分别处理该数据分区中每一个待预测对象的连接预测结果,得到对应的最终预测结果,包括:基于待预测对象的连接预测结果以及所述连接结构,确定待预测对象对应的叶节点,进而得到其标签值。18.一种基于mapreduce计算框架的多方模型预测系统,其包括:数据接收映射模块,用于基于空数据集发起数据接收映射任务,以使得部署于第二计算集群中的计算设备上的数据分区接收模块执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;连接映射模块,用于对两个以上局部预测结果集发起连接映射任务,以使得部署于第二计算集群中的计算设备上的数据分区连接模块对各局部预测结果集执行数据分区连接
步骤,得到连接预测结果集;所述连接预测结果集包括待预测对象集中每一个待预测对象的连接预测结果,连接预测结果由连接同一待预测对象的不同的局部预测结果得到;输出映射模块,用于对连接预测结果集发起输出映射任务,以使得部署于第二计算集群中的计算设备上的数据分区输出预测模块利用局部模型对所述连接预测结果集执行数据分区输出预测步骤,得到最终预测结果集;其中,第二计算集群包括两个以上计算设备,两个以上计算设备中的至少两个分别具有空数据集的至少一个空数据分区,所述局部模型为目标模型的部分,且与其他计算集群的局部模型能够组合得到所述目标模型;所述数据分区接收模块用于对空数据集的空数据分区:获取空数据分区的分区标识,并基于空数据集的标识以及所述分区标识确定第二连接标识;基于所述第二连接标识与第一计算集群中的相应计算设备建立通信连接;基于所述通信连接接收第一计算集群中的所述相应计算设备发送的数据,并存储在所述空数据分区中,进而获得局部预测结果集的数据分区;所述数据分区连接模块用于:对各局部预测结果集的对应数据分区中的局部预测结果依次连接,得到连接预测结果集的数据分区;所述数据分区输出预测模块用于对连接预测结果集的数据分区:利用局部模型分别处理该数据分区中每一个待预测对象的连接预测结果,得到对应的最终预测结果。

技术总结
本说明书实施例提供一种基于MapReduce计算框架的多方模型预测方法和系统,包括:对特征数据集发起预测映射任务,以使得第一计算集群中的计算设备利用局部模型对特征数据集执行数据分区局部预测步骤,得到局部预测结果集;以及,对局部预测结果集发起数据发送映射任务,以使得第一计算集群中的计算设备对局部预测结果集执行数据分区发送步骤;基于空数据集发起数据接收映射任务,以使得第二计算集群中的计算设备执行数据分区接收步骤,进而得到来自第一计算集群的局部预测结果集;对局部预测结果集发起输出映射任务,以使得第二计算集群中的计算设备利用局部模型对所述局部预测结果集执行数据分区输出预测步骤,得到最终预测结果集。测结果集。测结果集。


技术研发人员:白姣姣 张启超
受保护的技术使用者:蚂蚁区块链科技(上海)有限公司
技术研发日:2023.05.10
技术公布日:2023/8/4
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐