去中心化机器学习中计算模型的验证损失的系统和方法与流程

文档序号:28160144发布日期:2021-12-24 19:24阅读:173来源:国知局
去中心化机器学习中计算模型的验证损失的系统和方法与流程
去中心化机器学习中计算模型的验证损失的系统和方法
1.相关申请的交叉引用
2.本技术涉及题为“system and method of decentralized management of multi

owner nodes using blockchain”的共同待决和共同拥有的美国专利申请序列号16/163,484,题为“secure parameter merging using homomorphic encryption for swarm learning”的共同待决和共同拥有的美国申请序列号为16/773,555,以及题为“systems and methods for monetizing data in decentralized model building for machine learning using a blockchain”的共同待决和共同拥有的美国申请序列号16/773,397,其中的每个的全部内容通过引用并入本文。


背景技术:

3.地理分布式的、去中心化的企业基础设施或系统,诸如工厂车间、地理分布式的服务器的集群、无人驾驶车辆的车队、物联网(iot)网络等可能难以管理。这些系统除了去中心化之外,还可能规模庞大,并且在性质上也异构。可以意识到的是,当这些基础设施具有在企业网络之外操作(例如,由另外一个或多个用户或实体拥有)的设备(也被称为“节点”)或与这样的设备交互时,管理此类系统可能会呈现复杂的逻辑挑战。
4.机器学习(ml)可以指的是一种数据分析的方法,其中分析模型的构建是自动化的。ml通常被认为是人工智能(ai)的一个分支,在该分支中,系统被配置并被允许从搜集的数据中进行学习。这样的系统可以在很少或没有人工干预的情况下标识模式和/或做出决策。
5.区块链可以是指一种防篡改的、去中心化的分类账,该分类账建立无需使用中介机构的交换价值的信任水平。区块链可以被用于记录和提供区块链上任何事务的证明,并且每次事务发生时都会被更新。
附图说明
6.根据一个或多个实施例,参照以下附图详细描述本文公开的技术。附图仅出于说明的目的而被提供,并且仅描绘了所公开技术的典型或示例实施例。提供这些附图是为了促进读者理解所公开的技术,并且不应被认为是对其宽度、范围或适用性的限制。
7.图1a图示了根据所公开技术的实施例的、对计算机网络外部的设备资产进行去中心化管理的系统的示例。
8.图1b图示了根据所公开技术的实施例的、用于对计算机网络外部的设备资产进行去中心化管理的分布式区块链网络中的管理节点的示例。
9.图1c图示了根据所公开技术的实施例的、用于对计算机网络外部的设备资产进行去中心化管理的分布式区块链网络中的边缘节点的示例。
10.图1d图示了根据所公开技术的实施例的、用于对计算机网络外部的设备资产进行去中心化管理的区块链接口层的示例。
11.图2a图示了根据所公开技术的实施例的示例群体学习架构。
12.图2b图示出了根据所公开技术的实施例的群体学习的示例阶段和操作流程。
13.图3图示出了同态加密的示例。
14.图4a图示出了根据所公开技术的实施例的、在分布式区块链网络中执行的用于选举合并领导者的示例操作。
15.图4b图示出了根据所公开技术的一个实施例的、在分布式区块链网络中执行的用于请求和发布公钥的示例操作。
16.图4c图示出了根据所公开技术的一个实施例的、在分布式区块链网络中执行的用于中心化参数加密和去中心化参数的同态合并的示例操作。
17.图4d图示出了根据所公开技术的一个实施例的、在分布式区块链网络中执行的用于选举不是合并领导者的解密器的示例操作。
18.图4e图示出了根据所公开技术的一个实施例的、在分布式区块链网络中执行的、用于合并的去中心化参数的分配的示例操作。
19.图4f图示出了根据所公开技术的一个实施例的去中心化参数合并的完成。
20.图5a

图5b图示出了根据一个实施例的在分布式网络中执行的、用于机器学习模型验证的示例操作。
21.图6是根据所公开技术的一个实施例的可以被用于实现训练节点的各种功能的示例计算组件。
22.图7是根据所公开技术的一个实施例的可以被用于实现领导节点的各种功能的示例计算组件。
23.图8是可以被用于实现本公开的实施例的各种特征的示例计算组件。
24.附图并非旨在穷举或将实施例限制为所公开的精确形式。应当理解,可以通过修改和更改来实践本发明,并且所公开的技术仅由权利要求及其等同物来限制。
具体实施方式
25.分布式ml或去中心化ml可以是指使用对于每个节点的本地可用的数据跨多个节点构建ml模型。从每个本地模型学习的本地模型参数可以被合并以得到全局模型,其中所得的全局模型可以被重新分配给所有节点以进行另一次迭代,即,本地数据训练全局模型。可以重复执行此操作,直到用全局模型达成所期望的准确性水平为止。
26.通常,模型训练涉及将可用数据分为训练数据集和验证数据集,其中在使用训练数据集运行训练迭代之后,可以通过对它从未见过的数据(即,验证数据集)执行评估来就模型的性能/准确性对模型进行评估。由该评估导致的错误或损失的程度被称为验证损失。验证损失可以是用于实现训练特征的ml的重要方面。例如,可以通过创建早期停止标准来使用验证损失以避免在训练数据上过度拟合模型,在早期停止该标准中,一旦验证损失达到最小值,就停止训练。作为另一个示例,可以在自适应同步设置中使用验证损失,其中基于验证损失值在多个迭代中的进度来调制同步间隔的长度(即,调制同步频率)。
27.然而,在其中数据未被保持在中央/单个位置的分布式ml环境中,在训练期间在任何单个参与节点处进行验证是不可能的。因此,根据一些实施例,在每个训练迭代之前,在每个本地/参与节点处,相应的本地数据集被划分为训练验证数据集,并且使用本地训练数据集开始分批进行本地训练迭代。在每个训练分批的结束处,被指定为该分批的合并领导
者的节点合并来自每个参与节点(包括它自己)的参数以构建全局模型,在此时,合并参数可以与其余的参与节点共享。合并参数然后被应用于每个参与节点处的每个本地模型,然后使用先前标识的验证数据集评估更新后的本地模型,并且每个参与节点与领导者共享它们相应的/本地验证损失值。合并领导者对本地验证损失值进行合并/平均,以得到全局验证损失值,然后可以与其余节点共享该全局验证损失值。以这种方式,可以基于参与节点的范围来得到全局验证损失值,并且每个参与节点可以使用全局验证损失值来确定训练是否可以停止或是否需要进一步的训练。
28.特别地,在确定群体学习网络中的法定数目(quorum)的节点准备好合并它们相应的模型参数后,(1)选举合并领导者。应当理解,在群体学习中,拥有本地训练数据的每个节点在无需与群体区块链网络中的任何其他节点或实体共享本地训练数据的情况下训练公共ml模型。这是通过共享使用本地训练数据训练公共ml模型而得到的参数(权重)来实现的。以这种方式,可以在参与者或协作对等方/节点之间共享关于原始数据的学习见解(而不是原始数据本身),这有助于保护数据免受隐私侵犯。此外,本文所述的群体学习利用区块链技术来虑及去中心化控制、货币化,并确保各个节点之间的信任和安全性。
29.合并领导者可以(2)请求分离的密钥管理器来生成可以被用于对节点的本地模型参数进行加密的公钥。在获得公钥后,合并领导者(3)将其发布到包括节点的群体区块链网络的分布式分类账中。每个节点可以读取(但不可以写入分布式分类账),并且因此可以(4)获得公钥并继续对本地模型参数进行加密。应该指出的是,公钥可能是一个计算密集型加密过程,它被降级到边缘(节点),从而避免了任何缩放瓶颈。
30.节点可以(5)向合并领导者发信号通知/通知:节点分别准备好合并其本地模型参数。合并领导者(6)下载本地模型参数并执行合并操作(同态求和和标量乘法)。由于本地模型参数的合并不是由静态集中式服务器而是由所选举的合并领导者来执行,所以可以达成分布式/去中心化实现。继而,与常规实现相比,它可以提供更大的容错性。节点具有整个网络的集体智能,而原始数据则不必离开其对应的节点。合并领导者可以(7)通知节点:合并参数/更新后的全局模型已准备好进行解密。除了当选为合并领导者的节点之外,所有节点(8)选举解密器来解密构成更新后的全局模型的合并参数。
31.在其余节点等待的同时,解密器(9)从密钥管理器请求私钥,从合并领导者下载合并参数,解密合并参数,将合并参数上载到合并领导者,并指令密钥管理器丢弃公钥

私钥对。解密器(10)发信号通知:合并参数从合并领导者获得。节点(11)下载现在解密的合并参数,并将其应用于其本地模型以进行ml模型构建迭代。可以计算/生成更多的本地化参数,并且可以发生另外的ml模型构建迭代(训练)。
32.在此时,在训练迭代之后,可以执行计算验证损失的前述方法以得到全局验证损失值,该全局验证损失值可以被用于估算每个参与节点处的每个本地模型。因此,即使在分布式ml系统中,也可以实行训练和验证的周期。应当指出的是,在一些实施例中,已当选的合并领导者可以用作用于验证的领导者,即,对本地验证损失值进行平均/合并以得到全局验证损失值。然而,在其他实施例中,可以选择用于验证平均/合并的另一个领导者,尽管使用相同的领导者进行参数/权重合并以及验证损失值平均可以更快(由于不必选择另一个领导节点)。
33.在一些实施例中,可以使用同态加密技术来掩盖验证损失值,以类似于已经描述
的用于对节点的本地模型参数进行加密/解密的方式来保护隐私。再次,合并领导者可以请求单独的密钥管理器来生成公钥,该公钥可以被用于对节点的本地模型参数进行加密。应当指出,先前使用的相同的密钥管理器(用于为参数(权重)同态加密生成非对称密钥对)可以被用于生成新的非对称密钥对,以用于在对本地验证损失值进行加密时使用。但是,在其他实施例中,也可以使用不同的密钥管理器来生成新的非对称密钥对。在获得公钥后,合并领导者将公钥发布到边缘网络,到包含节点的群体区块链网络的分布式分类账中。每个节点可以获得公钥,并继续对其本地验证损失值进行加密。应该指出,公钥可能是一个计算密集型加密过程,它被降级到边缘(节点),从而避免了任何缩放瓶颈。
34.节点可以用信号通知/通知合并领导者:它们分别准备好合并其本地验证损失值。合并领导者下载本地验证损失值并执行合并操作(同态求和和标量乘法)。由于本地验证损失值的合并不是由静态集中式服务器而是由所选举的领导者合并来执行,所以可以达成分布式/去中心化实现。继而,与常规实现相比,它可以提供更大的容错性。合并领导者可以通知节点:合并的本地验证损失值已准备好进行解密。除了当选为合并领导者的节点之外,所有节点选举解密器来解密合并的本地验证损失值。
35.在其余节点等待的同时,解密器从密钥管理器请求私钥,从合并领导者下载经合并的本地验证损失值,解密经合并的本地验证损失值,将经合并的本地验证损失值上载到合并领导者,并指令密钥管理者丢弃公私

私钥对。解密器发信号通知:经合并的本地验证损失值可从合并领导者获得。节点下载现在解密的经合并的本地验证损失值,并且可以估算其本地ml模型的性能。
36.本文公开的技术的实施例建立在分布式ml和区块链上。如上所述,可以利用分布式ml的能力以在网络的每个节点处使用数据(或数据的(多个)子集)来训练跨多个节点(全局模型)的公共模型,并验证在跨多个节点的本地模型。区块链方面虑及去中心化控制和可缩放性,同时还提供必要的容错性以使得实施例能够工作在单个企业/实体上下文之外。此外,区块链方面引入了防篡改/抗加密的加密货币,利用该加密货币,参与的节点或数据源可以使用,以将其(多个)数据贡献货币化以训练全局模型。
37.首先将描述区块链框架。可以提供一种控制器框架,该框架允许网络中的参与节点使用区块链技术来彼此交互。可以实现将区块链技术用于这些交互,以确保交互是安全的、不可否认的、有序的和被允许的。实施例还可以被实现为使用区块链以允许参与者针对群体学习框架的分布式ml部分的一个或多个方面发展共识协议。例如,共识协议可以由所有参与者(节点)同意,并使用区块链技术在系统中被实现为智能合约。
38.在另一个实施例中,操作可以被实现来提供跨异构分布式存储平台的出处跟踪,以跟踪哪些节点在哪些系统上实施了哪些操作。在一些应用中,元数据操作可以经由区块链来进行路由,并且存储设备或其他网络实体可以被配置为仅接受经由区块链接口的操作。例如,可以命令网络上的存储设备仅允许经由区块链接口的元数据操作。以这种方式,可以为以这种方式管理的节点上的操作提供诸如身份、授权、出处、不可否认性和安全性的因素。
39.因此,可以实现其中管理操作变成去中心化并且系统不再需要中央实体来强制执行策略的实施例。特别地,在一些应用中,系统可以在没有中央管理服务器的情况下被实现,并且可以替代地仅使用一个或多个管理节点以使用区块链事务将管理指令输入到区块
链上(诸如上述合并领导者、解密器等)。一旦更改被批准,设备就可以实现更改,并且区块链可以被用于提供系统状态的清晰的记录——在它随着时间的推移不断发展时。因为实施例可以被实现在无需中央管理实体的对等环境中,所以企业是可缩放的,而对中央管理实体可以处理多少个节点没有限制。此外,没有中央管理实体也可以消除该实体作为单点故障的可能性。这通过消除可能导致系统瘫痪的单点故障而可以提供减少攻击面的额外好处。
40.可以达成从计算机网络内操作在计算机网络外部(也被称为边缘节点)的资产的去中心化管理。边缘节点可以包括企业设备,并且计算机网络可以包括企业的网络。往返计算机网络的网络业务可以通过计算机网络周围的防火墙。管理服务器(也被称为管理节点)可以操作在防火墙内,以使用区块链技术来管理操作在防火墙外部的边缘节点的配置。管理节点和边缘节点可以是区块链网络的一部分。
41.管理节点可以用作存储分布式分类账的完整或至少更新后的副本的完整节点。管理节点还可以用作矿工,其具有将块写入到分布式分类账的权限。管理节点可以将更改请求形式的管理操作挖掘到分布式分类账中。管理操作可以包括但不限于从网络中移除边缘节点(诸如由于边缘节点未遵从网络所遵循的设置协议而导致)。管理操作还可以包括向网络中的新资产(边缘节点)的添加和该新资产的配置,以及新软件更新将在所有边缘节点上被安装的建议。更进一步,管理操作可以包括在一些或所有边缘节点上的状态检查的执行,和/或可以在边缘节点处远程排序和本地应用的其他操作。
42.根据区块链规范,将对分布式分类账的更新传播到节点中的所有节点(诸如边缘节点和管理节点),包括经由对等共享。这允许管理节点以安全且不可变的方式通过分布式分类账将更改请求传达到边缘节点。这也允许管理操作的历史和当前记录的生成。这样,系统的历史状态和当前状态可以被存储,并从分布式分类账中被检索。
43.边缘节点中的每个边缘节点可以用作存储分布式分类账的完整或至少更新后的副本的完整节点。在一些实例中,没有一个边缘节点具有写入到分布式分类账的权限,因此不能向其他边缘节点发出更改请求。边缘节点可以读取分布式分类账的其本地副本,以获得更改请求。在接收到更改请求后,边缘节点可以实现更改请求并更新其状态以指示更改请求已被实现。该状态转变可以诸如以区块链事务的形式而被广播到其他节点。管理节点可以收集尚未写入到分布式分类账的事务,并将它们写入到分布式分类账,从而确保更改请求和状态转变的不可变且分布式记录。这样,分布式分类账可以记录边缘节点的当前和历史配置。
44.前述架构的使用确保管理操作是安全的、不可否认的、有序的和被许可的。管理业务变得部分“去中心化”;因为计算机网络内的数据中心用作强制执行策略并以电子方式建议更改的管理节点。一旦将更改挖掘到分布式分类账中,则系统中的每个系统都将实现更改,并且会有系统状态的清晰的记录和毫无争议的记录——当它随着时间的推移不断推进并发展时。例如,边缘节点可以从其他边缘节点(或从管理节点)同步其分布式分类账的副本,以获得当前有效且不可变的系统配置。前述允许系统缩放,因为系统的任何参与者都可以从分布式分类账访问当前(和历史)状态信息。可以通过向新节点提供分布式分类账的副本来添加新的边缘节点。然后,新的边缘节点可以根据来自其分布式分类账的副本中的当前状态信息来配置自身,或者以其他方式获得与当前状态信息相一致的软件或其他更新。
45.图1a图示出了根据本发明的实现的对计算机网络102外部的设备资产进行去中心化管理的系统100的示例。系统100可以包括区块链网络110。区块链网络110可以包括使用一个或多个连接协议(包括对等连接协议)彼此连接的多个节点。区块链网络110的节点可以包括管理节点12和边缘节点10。边缘节点10的特定数目、配置、以及边缘节点10之间的连接可以不同。这样,图1a中所示的边缘节点10的布置是仅出于说明目的。
46.管理节点12是计算机网络102的防火墙106的一部分并在防火墙106内操作,并且边缘节点10在防火墙外部操作。如上所述,并且如将在下面更详细描述的,这样的边缘节点10可以贡献如下数据,该数据可以被用于在群体学习上下文中训练全局ml模型的本地实例。计算机网络102还可以包括一个或多个备份系统104,其为管理节点12和/或在计算机网络内操作的其他组件108提供故障转移保护。计算机网络102的组件可以经由局域网(“lan”)彼此通信。计算机网络102的组件可以通过防火墙106来与计算机网络102外部的设备通信。防火墙106可以被配置为软件防火墙和/或硬件防火墙设备。防火墙106可以包括网络交换设备或与网络交换设备连接,该网络交换设备经由防火墙来将网络业务路由进出计算机网络。网络101可以包括连接防火墙106外部的设备的广域网(“wan”)。
47.现在将参考图1b描述管理节点12的更多细节的示例。管理节点12可以包括一个或多个处理器20(为方便起见,在本文中也可互换地被称为(多个)处理器20或处理器20)、一个或多个存储设备40和/或其他组件。处理器20可以由一个或多个计算机程序指令来编程。例如,处理器20可以被编程为执行管理用户接口22(被图示为“管理用户接口22”)、控制器24、区块链接口层30和/或用于执行各种操作的其他指令,其每一个都将在本文中更详细地描述。如本文中所使用的,为了方便起见,当实际上各种指令对处理器20(以及因此的管理节点12)进行编程以执行操作时,各种指令将被描述为执行该操作。
48.管理用户接口22可以提供接口,诸如图形用户接口、命令行接口和/或被配置为接收管理选项输入的其他类型的接口。例如,诸如系统管理员的用户可以使用管理用户接口22来输入要在区块链网络110的一个或多个边缘节点10上实施的管理操作,或者输入要被添加的边缘节点。以这种方式,用户可以基于源自计算机网络102内部的更改请求来管理边缘节点10。
49.控制器24可以获得要被执行的管理操作,并且可以将它们传达给相关的边缘节点10。可以从管理用户接口22和/或全局策略48获得管理操作。控制器24可以使用区块链接口层30来传达管理操作。例如,控制器24可以将管理操作写入到被广播给边缘节点10的区块链事务中。可以使用多播协议将区块链事务广播给若干或所有边缘节点10。在一些实例中,可以使用对等网络来广播区块链事务,在对等网络中,管理节点12用作对等方以向至少一个其他对等方(在这种情况下为边缘节点10)广播该事务,该至少一个其他对等方将事务广播给其他对等方,以此类推。在一些实现中,控制器24可以等待直到区块链事务如本文所述由边缘节点10签名为止,然后再将事务写入到分布式分类账42的区块(在本文中也被称为“分类账区块”)。在这些实现中,边缘节点10可以直接从所广播的事务中获得管理操作。在其他实现中,控制器24可以将事务写入到分布式分类账42的区块。在这些实现中,边缘节点10可以通过获得当前(换言之,最新)区块来获得管理操作,该当前区块引用具有管理操作的事务。
50.控制器24以任何方式使用区块链接口层30将管理操作广播到边缘节点10,控制器
可以以所有边缘节点10被引导的方式来这样做。例如,“检查状态”的管理操作可以被引导到区块链网络110的所有节点,从而每个边缘节点都被指令以执行状态检查。然后,每个边缘节点10将执行状态检查并广播其状态,该状态指示状态检查的结果(或如下所述的其他管理操作)。
51.在一些实例中,控制器24可以将一个或多个边缘节点10作为目标以接收管理操作。在这些实现中,控制器24可以在分布式分类账42上生成要被引导到(多个)目标边缘节点10的区块链事务和/或区块。例如,控制器24可以对被作为目标的边缘节点10的标识符进行编码。备选地或附加地,控制器24可以对以应执行管理操作的某些类型的边缘节点10为目标的设备类型进行编码。还有其他示例包括应作为目标的位置,以使某些地理位置中的边缘节点成为目标。智能合约44可以包括每个边缘节点10都遵循的规则,该规则引导节点检查事务和/或区块,以确定其是否应该应用事务和/或区块中包含的管理操作。在一些实现中,控制器24可以用目标边缘节点的10个公钥来加密要被执行的管理操作,使得只有目标边缘节点可以用其私钥来解密管理操作。
52.在一些实例中,某些管理操作可以在没有用户干预的情况下被周期性地执行。例如,控制器24可以执行守护程序或其他过程,守护程序或其他过程周期性地引起来自所有边缘节点10的状态检查被执行。该守护程序可以周期性地生成相关更改请求,该更改请求将被发出给边缘节点10,并经由分布式分类账42被跟踪。
53.在一个实现中,控制器24可以通过确保网络的状态符合全局策略来强制执行全局策略48。例如,控制器24可以周期性地从分布式分类账42获得当前系统状态。如在别处所指出的,边缘节点10的状态转变可以被记录在分布式分类账42上。备选地或附加地,状态检查的结果可以被写入到分布式分类账42,指示系统的当前状态。控制器24可以将当前系统状态(诸如区块链网络110的状态)与全局策略48进行比较,全局策略48可以指定系统的期望状态。期望状态可以包括作为整体的系统的宏观状态和/或边缘节点的任何个体或群组的微观状态。可以注意到任何差异,并且可以将未遵从的边缘节点10作为执行将解决该未遵从的管理操作的目标。在一些实例中,智能合约44和/或全局策略48可以对指定何时应将未遵从的边缘节点10脱机的规则进行编码。例如,规则可以指定在数目为n的区块已被写入到分布式分类账42之后继续处于未遵从的边缘节点10应当被脱机。其他参数也可以指定这种移除。前述内容可以使用区块链接口层30确保重复策略强制执行和遵从性。
54.在一个实施例中,结合某些类型的管理操作,控制器24可以使文件可供下载。例如,结合管理操作,可以使操作系统图像、软件更新、新软件和/或其他可下载文件或数据可用于边缘节点10下载。如将在下面描述的,在一些实施例中,可下载文件可以包括包含特定加密密钥、合并参数等的文件。这可以确保分布式分类账42本身不必存储这样的文件或数据,而是存储应被使用的当前文件或数据的不可变记录(以及此类文件或数据的历史列表)。
55.区块链接口层30可以被用于根据智能合约44来与分布式分类账42相连接(interface)。区块链接口层30在下面参考图1d进行描述。
56.存储设备40可以存储分布式分类账42、智能合约44、节点密钥46和/或其他数据。分布式分类账42可以包括一系列数据区块,其引用诸如先前区块之类的至少另一个区块。以这种方式,数据的区块可以被链接在一起。中本聪在著名的白皮书“bitcoin:a peer

to

peer electronic cash system(比特币:点对点电子现金系统)”(bitcoin.org)中描述了分布式分类账的示例,其内容通过引用整体并入本文。分布式分类账42可以存储指示边缘节点10的与其配置或其他管理信息相关的状态的区块。
57.智能合约44可以包括规则,这些规则将节点配置为相对于边缘节点的去中心化管理以某些方式表现。例如,规则可以指定:确定性的状态转变、哪些节点可以注册以参与去中心化管理、用于实现由管理节点12发出的更改请求的规则和/或边缘节点10或管理节点12可以采取以用于去中心化管理的其他动作。在一些实施例中,这样的规则可以指定何时选举合并领导者,从解密器选举中排除什么边缘节点10等。
58.节点密钥46可以与边缘节点10的身份(例如,互联网协议或其他地址和/或标识信息)相关联地存储边缘节点10的公共加密密钥。以这种方式,在一些实现中,更改请求可以以特定边缘节点10为目标,并且使用目标边缘节点的公钥而被加密。
59.全局策略48可以存储系统的安全性或其他策略。全局策略48可以包括例如由管理节点12管理的设备的网络配置设置、安全配置设置、操作系统设置、应用设置、策略规则和/或其他策略信息。
60.现在将参考图1c描述边缘节点10的更多细节的示例。边缘节点10可以是固定或移动设备。尽管在附图中仅详细图示出了边缘节点10中的一个边缘节点,但是可以以所图示的方式配置边缘节点10中的每个边缘节点。边缘节点10可以以对等的方式彼此通信。边缘节点10可以各自包括一个或多个处理器50(为方便起见,在本文中也可互换地被称为处理器50或(多个)处理器50)、一个或多个存储设备70和/或其他组件。
61.处理器50可以由一个或多个计算机程序指令来编程。例如,处理器50可以被编程为执行区块链代理52、配置管理器54、区块链接口层30和/或用于执行各种操作的其他指令,其每一个都将在本文中更详细地描述。如本文中所使用的,为了方便起见,当实际上各种指令对处理器50(以及因此的边缘节点10)进行编程以执行操作时,各种指令将被描述为执行该操作。
62.区块链代理52可以使用区块链接口层30来与其他边缘节点10和/或管理节点12通信。如参考图4所述,区块链接口层30可以在管理节点12和边缘节点10处以相同的方式操作以与区块链网络通信(除了能够写入到分布式分类账42之外)。例如,区块链代理52可以从一个或多个其他边缘节点10和/或管理节点12获得分布式分类账42的更新后的副本。区块链代理52还可以从由管理层写入的分布式分类账42中获得管理操作。以这种方式,管理节点12可以通过分布式分类账42传达在边缘节点10处要被执行的管理操作。
63.配置管理器54可以从区块链代理52获得一个或多个管理操作。配置管理器54可以将一个或多个管理操作应用于边缘节点10。在一些实例中,配置管理器54可以应用管理操作,而无需确定是否要这样做。在其他实例中,配置管理器54可以查阅一个或多个本地策略以确保边缘节点10可以遵从一个或多个管理操作。本地策略可以由智能合约44进行编码。备选地或附加地,一些本地策略可以被存储在本地策略78中,该本地策略78不必与其他边缘节点10共享。换句话说,本地策略78可以被具体地限定在为存储其的边缘节点处。
64.一旦配置管理器54已经对一个或多个管理操作起作用(无论是否通过应用它们),区块链代理52就可以将其状态广播到区块链网络110的其他节点。例如,区块链代理52可以生成并传输指示边缘节点10的状态的区块链事务(诸如是否、如何以及/和/或何时已经应
用一个或多个管理操作)。区块链事务可以包括标识已执行(或未执行)管理操作的信息。例如,标识管理操作的信息可以是区块标识符(例如,区块哈希),该区块标识符标识从其中获得管理操作的区块。以这种方式,指示节点状态的区块链事务可以记录已应用(或未应用)的管理操作。
65.对于在其中管理操作以边缘节点10为目标并使用目标边缘节点10的公钥72来加密管理操作的实现,区块链代理52可以使用边缘节点10的私钥74来解密管理操作。在一些实现中,区块链代理52可以对来自管理节点12的区块链事务进行数字签名,该区块链事务包括管理操作。例如,管理节点12可以生成被引导到边缘节点10的事务,并使用管理节点12的公钥对事务进行签名。
66.然后,管理节点12可以将已签名的事务写入到分布式分类账42,以创建目标边缘节点的状态更改和管理操作的不可变记录。以这种方式,可以安全地证明事务已由边缘节点10执行。应当指出,不需要特别地以边缘节点10为目标以便对事务进行签名,从而创建在事务中边缘节点10的状态以及因此的区块的记录。
67.在接收到事务后,边缘节点10通过使用边缘节点的私钥对事务进行签名,来应用管理操作并指示其已成功完成。管理节点12可以将此事务写入到分布式分类账42中,创建一个安全的、不可变的记录,该记录证明边缘节点已接收并应用了管理操作。在一些实现中,边缘节点10可以与一系列事务相关联,使得每个事务可以指向先前的事务哈希。事务可以由管理节点12写入到分布式分类账42,从而为给定的边缘节点10创建事务的不可变历史记录。
68.在一个实现中,配置管理器54可以周期性地确保与系统的当前状态的遵从性。例如,智能合约44可以对指定哪些事件触发这种检查的规则进行编码。事件可以包括重新启动、新的初始化、一段时间的经过、写入到分布式分类账42的区块数目、诸如检测到恶意软件的安全事件、指定应进行检查的来自用户的输入、和/或其他可以触发遵从性评估的事件。为了评估遵从性,配置管理器54可以确定是否有任何当前管理操作(如由对这些操作进行编码的最新区块所限定),包括全局操作和专门以边缘节点10目标的那些操作。如果是这样,则配置管理器54可以确定它们是否应该已被但尚未被实现。如果不是,则配置管理器54可以实现管理操作。以这种方式,边缘节点10可以自我强制执行当前管理操作(如当前系统状态所限定的)。
69.存储设备70可以存储边缘节点的分布式分类账42的副本、边缘节点的智能合约44的副本、边缘节点的公钥72、边缘节点的私钥74和/或其他数据。
70.现在将对图1d进行参考,其图示出了区块链接口层30的示例。边缘节点10和管理节点12中的每个节点可以实现区块链接口层30,除了边缘节点10可能不具有写入到分布式分类账42的权限之外。区块链接口层30可以包括被用于与区块链网络110通信的消息收发接口。消息收发接口可以被配置为安全超文本传输协议(“https”)微服务器31。也可以使用其他类型的消息收发接口。区块链接口层30可以使用区块链api 32,以基于区块链规范来调用区块链功能。区块链功能的示例包括但不限于读取和写入区块链事务34以及将区块链块读取和写入到分布式分类账42。区块链规范的一个示例是以太坊规范。也可以使用其他区块链规范。共识引擎36可以包括做出共识决定的功能,诸如是否注册节点以参与边缘节点的去中心化管理。节点10的状态可以由状态38来反映。
71.尽管在图1b和图1c中被图示为单个组件,但是管理节点12或边缘节点10可以分别包括多个个体组件(诸如计算机设备),多个个体组件中的每个组件都利用本文所描述的至少一些功能来进行编程。一个或多个处理器20或50可以各自包括由计算机程序指令编程的一个或多个物理处理器。本文所描述的各种指令是为了说明性目的而被提供。可以使用其他配置和指令数目——只要(多个)处理器20或50被编程来执行本文所描述的功能。
72.此外,应当意识到,尽管各种功能在图1b和图1c中被图示为共处于单个处理单元内,但是在(多个)处理器20或50包括多个处理单元的实现中,一个或多个指令可以在远离其他指令的情况下而被执行。
73.用于执行本文所描述的各种功能的各种指令可以被存储在存储设备40或70中,该存储设备可以包括随机存取存储器(ram)、只读存储器(rom)和/或其他存储器。存储设备40或70可以存储将分别由处理器20或50执行的计算机程序指令(诸如上述指令),以及可以由处理器20或50操纵的数据。存储设备40或70可以包括一种或多种非暂时性机器可读存储介质,例如软盘、硬盘、光盘、磁带或其他用于存储计算机可执行指令和/或数据的物理存储介质。
74.可以在诸如存储设备40或70的各种存储设备中存储分布式分类账42、事务队列、智能合约44、要被执行的管理操作和/或本文所述的其他信息。也可以使用其他存储设备,具体取决于特定存储和检索要求。例如,可以使用一个或多个数据库来存储本文描述的各种信息。数据库可以是例如由甲骨文公司商业出售的oracle
tm
关系数据库、或与其连接的数据库。其他数据库,诸如informix
tm
、db2(数据库2)或其他数据存储,包括基于文件的或查询格式、平台或资源诸如olap(在线分析处理)、sql(结构化查询语言)、san(存储区域网络)、microsoft access
tm
或其他工具,也可以被使用、并入或访问。数据库可以包括驻留在一个或多个物理设备中以及一个或多个物理位置中的一个或多个这样的数据库。数据库可以存储多种类型的数据和/或文件以及相关联的数据或文件描述、管理信息或任何其他数据。
75.图1c和图1b中分别图示出的边缘节点10和管理节点12可以经由网络而被耦合到其他节点,该网络可以包括例如互联网、内联网、pan(个域网)、lan(局域网)、wan(广域网)、san(存储局域网)、man(城域网)、无线网络、蜂窝通信网络、公共交换网络电话网络和/或其他网络中的任何一个或多个。在图1a中以及在其他图中,可以使用与所描绘的实体数目不同的实体。此外,根据各种实现,可以在硬件和/或配置硬件的软件中实现本文所描述的组件。
76.群体学习可以涉及操作的各个阶段或时段,包括但不限于:初始化和启用;安装和配置;以及整合和训练。初始化和启用可以指的是一个过程(其可以是一个脱机过程),该过程涉及对基于群体的ml感兴趣的多个实体,它们在一起共同制定去中心化系统的操作和法律要求。这包括诸如数据(参数)共享协议、确保跨实体的组织边界的节点可见性的布置以及对模型训练过程的预期结果的共识之类的各方面。诸如在启动期间所供应的对等发现节点以及节点之间的同步频率之类的由群体学习网络提供的可配置参数的值也在此阶段被最终确定。最后,可以商定要被训练的公共(全局)模型和奖励系统(如果适用的话)。
77.一旦初始化和启用阶段完成,所有参与者(例如,边缘节点10)就可以将群体学习平台/应用下载并安装到它们各自的机器上,即节点上。然后,群体学习平台可以启动,并且可以发起每个节点与基于群体学习/群体的区块链网络的连接。如本文中所使用的,术语群
体学习平台可以指的是节点之间的连接的基础网络上的区块链覆盖。启动过程可以是有序过程,在该过程中,首先启动被指明为对等发现节点的节点集(在初始化阶段期间),然后启动群体学习网络中的其余节点。
78.关于整合和训练阶段,群体学习平台可以提供使得能够与多个框架快速整合的一组api。这些api可以被并入到群体学习平台的现有代码库中,以将独立的ml节点快速转换为群体学习参与者。应当理解,在描述各种实施例时可以可互换地使用参与者和节点。
79.在高水平处,可以就注册、本地模型训练、参数共享、参数合并和停止标准检查方面来描述根据各种实施例的模型训练。图2a图示出了根据一个实施例的可以由群体学习平台执行的操作。在200处,发生注册。也就是说,群体学习网络中的每个节点都可以将自己注册或登记到群体学习合约中。在一个实施例中,这可以是一次性过程。在其他实施例中,可以在一段时间之后作为一种类型的验证过程来执行注册或登记。每个节点随后可以将其相关属性记录在群体学习合约中,例如统一资源定位符(url),其他节点可以从其中下载其自己的已训练参数集。
80.在202处,发生本地模型训练,其中每个节点继续以迭代的方式在可以被称为时期(epoch)的多个回合中训练全局或公共模型的本地副本。在每个时期期间,每个节点针对某个给定迭代次数使用一个或多个数据分批来训练其本地模型。可以在204处执行确定参数是否可以被合并的检查。检查可以确定是否已经达到阈值迭代次数和/或阈值数目的节点是否准备好共享它们相应的参数。这些阈值可以在初始化阶段期间被指定。在已经达到阈值迭代次数之后,每个节点的参数值将被导出到文件,然后可以将其上载到共享文件系统,以供其他节点访问。每个节点可以发信号通知其他节点:它已准备好共享其参数。
81.一旦参数共享开始,则在206处可以导出当前模型参数,并且在208处可以将所导出的参数发送到群体学习应用编程接口(api)(在下面更详细地描述)。参数共享阶段可以从合并或时期领导者的选举开始,其角色是合并在每个节点处对公共模型进行本地训练之后得到的参数。合并或时期领导者的这种选举可以在每个时期之后发生。虽然跨多个时期选举节点来用作合并领导者是可能的,但在每个时期之后选举一个合并领导者可以通过更改哪个节点具有公钥来帮助确保隐私。在选择群体学习网络的节点之一作为合并领导者后,每个参与者或节点的url信息可以被用于从每个节点下载参数文件。在一个实施例中,可以使用星形拓扑,其中单个合并领导者执行合并。也可以使用其他拓扑,诸如k路合并,其中合并是由一组节点来执行。
82.合并领导者然后可以合并(从每个群体学习网络节点下载的)参数文件。可以使用适当的合并机制或算法,例如,均值合并、加权均值合并、中值合并等等中的一个或多个。合并领导者可以组合来自所有节点的参数值以创建具有合并参数的新文件,并向其他节点发信号通知:新文件可用。在210处,每个节点可以经由群体api从合并领导者获得合并参数(被表示在新文件中)。在212处,每个节点可以利用合并参数来更新其公共模型的本地版本。
83.在214处,可以执行检查以确定是否已经达到停止标准。也就是说,节点中的每个节点都使用其本地数据,利用更新后的参数值来评估模型,以计算各种验证度量。从该操作所获得的值,使用智能合约状态变量而被共享。当每个节点完成此步骤时,它向群体学习网络发信号通知:更新和验证步骤已完成。在此期间,合并领导者可以继续检查来自每个节点
的更新完成信号。当它发现所有合并参与者均已发信号通知完成时,合并领导者合并本地验证度量编号以计算全局度量标准编号。可以将模型的这个更新视为同步步骤。如果在初始化期间决定的策略支持模型构建期间的货币化,则在此时将计算并分派与每个参与者的贡献相对应的奖励。此后,将群体学习网络的当前状态与停止标准进行比较,如果发现被满足,则群体学习过程结束。否则,将重复进行本地模型训练、参数共享、参数合并和停止标准检查的步骤,直到贯彻标准为止。
84.图2b图示出了示例群体学习架构220。该群体学习架构220可以包括在每个节点处的本地ml模型222a

222n(ml模型1,2,...,n)。这些本地ml模型222a

222n可以在组成群体学习网络的节点(例如,组成区块链网络110的上述边缘节点10)处被维持并被训练。群体学习架构220还可以包括群体学习组件224,该群体学习组件224可以包括api层226、控制层228、数据层230和货币化层232。群体学习组件224可以在区块链上下文中(如上所指出)操作,以确保区块链平台234在ml平台236的顶部上进行操作的数据隐私(其分布在群体学习网络的节点之中)。参数和验证损失值的共享可以使用区块链分类账238而被执行,该区块链分类账238可以是分布式分类账42的实施例。应当指出,群体学习架构220的组件或元素可以是模块化的,以使得在实现它们时所使用的技术可以基于要求而被更换、调整、适配等。整个框架被设计为在商品和高端机器上运行,从而支持群体学习网络中的一组异构基础设施。它可以被部署在数据中心内或跨数据中心进行部署,并且内置了对容错网络的支持,其中节点可以动态地退出和重新进入群体学习网络,而不会破坏或拖延模型构建过程。换句话说,区块链平台234被用作用于实现群体学习分类账(或黑板)的基础设施组件,其涵盖了用于ml模型构建、he密钥共享和参数共享逻辑的去中心化控制逻辑。边缘节点10(在其中训练了ml模型222a,222b

,222n)本身可以具有被用于控制/管理群体学习的所有基础设施组件和控制逻辑。
85.在一个实施例中,群体学习可以被实现为可用于多种流行框架(诸如tensorflow、keras等)的api库226。这些api提供类似于数据科学家所熟悉的本机框架中的训练api的接口。调用这些api会自动地插入群体学习所需的“钩子(hook)”,以使得节点在每个模型训练时期的结束处无缝交换参数,然后在将本地模型重置为全局合并参数之后继续训练。
86.将群体学习网络保持在全局一致状态的责任在于控制层228,其使用区块链技术来实现。控制层228确保以原子的方式执行所有操作和对应的状态转变。状态和所支持的操作都被封装在区块链智能合约中。状态(图1d的38)包括诸如当前时期、群体学习网络的当前成员或参与者、连同它们的ip地址和端口以及参数文件的uri之类的信息。所支持的操作集合包括用于选举接近每个时期的末尾的群体学习网络的合并领导者的逻辑、容错和自我修复机制、以及节点之间用于开始和完成各个阶段的信令。
87.数据层230控制跨群体学习网络的模型参数和验证损失值的可靠和安全共享。像控制层228一样,数据层230也能够支持不同的文件共享机制,诸如传输层安全性(tls)上的超文本传输协议安全(https)、行星际文件系统(ipfs)等。可以通过控制层228唤起的所支持的操作来控制数据层230,其中关于该层的信息也可以被维持。
88.图3图示出了同态加密的示例。同态加密(he)可以指的是通过允许对密文执行特定计算,获得加密结果(加密结果是对明文执行的操作结果的密文)来实现可信计算环境的技术的子集。在此,可信方300包括使用加密功能利用加密器302对明文输入值进行加密,以
及使用私钥利用解密器304对从不可信方310接收到的密文进行解密,从而得出明文答案。在此,可以利用非对称密钥加密,即使用私钥和公钥,以避免与任何参与者共享公共秘密。另外,he可以依赖于评估器312(在不可信侧310中),该评估器312对同态加密的数据执行评估操作,例如诸如加法、乘法等等的预先定义的和已证明的操作集合。也就是说,评估器312可以接收明文输入值的加密版本,并且以密文执行操作,在这种情况下为加法。因为评估器312仅对加密的数据(密文)进行操作,所以评估器312可以在不可信系统上运行,即在不可信侧310上运行。
89.如上所述,各种实施例针对防止群体学习网络中的任何参与者/节点获得对明文中的所有参数数据或验证损失信息的访问,或者对在参数和验证损失值合并过程中的任何点处的所有共享秘密的访问,确保即使合并领导者也无法解密传入的参数数据或本地验证损失值。此外,非对称密钥将由密钥管理器(在群体学习网络外部)生成。密钥管理器不是群体学习“核心”架构的一部分(而是实现群体学习所依赖的服务)。密钥管理器可以是企业级密钥管理器,它可以从容错和物理安全环境中生成并提供公钥/私钥。例如,密钥管理器可以是被专门化和强化的硬件/软件共同设计的应用。如上所指出,密钥管理器仅将公钥释放给合并领导者,以被发布给参与者,用于对其本地参数数据和本地验证损失值进行加密,并且参数/验证损失值合并是同态执行的。合并参数/合并验证损失值的解密可以由不是合并领导者的所选举的解密器节点来执行。该解密器节点可以从密钥管理器请求私钥来解密合并参数/本地验证损失值,并将其供应给合并领导者以进行分配。
90.图4a至图4f图示出了根据所公开技术的一个实施例的、可以被执行以使用同态加密来保护参数数据以实行群体学习的示例操作。
91.参照图4a,在一个实施例中,当群体网络(其可以是区块链网络110的实施例)的法定数目的节点(网络中的节点400

1至400

n)准备好合并它们的参数时,群体学习过程可以从合并领导者的选举开始。如图4a中所图示,每个节点400

1,400
‑2…
,400

n执行注册操作,导致每个节点400

1,400
‑2…
,400

n被登记分类账420中,分类账420可以是以上讨论的分类账42或分类账238的实施例。应该理解的是,上述智能合约44可以对规则进行编码,该规则用于注册节点以参与群体学习网络,例如,区块链网络110的实施例。规则可以指定所需的凭证和/或其他注册先决条件。所需的凭证可以对允许哪些节点参与施加权限。例如,区块链网络110可以被配置作为私有区块链,其中仅授权节点被允许参与迭代。此外,任何授权信息和期望的凭证可以被编码在智能合约44内或区块链网络110上的节点可用的其他存储信息内。一旦节点已被注册,区块链网络110就可以记录该节点的身份及其状态,以使得知道了所有节点的标识。这样的记录可以经由分布式分类账420中的条目来进行。这样,分布式分类账420可以记录节点的拓扑和节点的状态,并且这可以继续进行参数合并过程,这将在下面进一步描述。
92.如图4a中进一步所图示,节点400

1,400
‑2…
,400

n中的每个节点都可以使用由每个节点所呈现/贡献的本地数据来训练公共全局模型的实例。如上所指出,可以根据使用本地数据对模型的训练来得到例如权重的参数,然后可以将这些参数以其加密的状态或格式进行保留。在完成模型训练并保留从中得到的参数后,节点400

1,400
‑2…
,400

n中的每个节点都准备好将其特定参数与其他节点的参数合并。因此,可以通过将与节点400

1,400
‑2…
,400

n中的每个节点相关联的签入条目写入到分类账420来在分类账420中反映该
准备好合并状态。
93.参照图4b,节点400

1,400
‑2…
,400

n中的每个节点经历选举过程,以选择节点中的一个家电用作合并领导者。选举选票被记录在分类账420中。如上所指出,分类账420可以反映节点的状态及其身份的记录,因此可以将选票与提交那些选票的节点相关联,在此示例中,可以使成为合并领导者(后来的解密器)的被选节点知晓它的状态/当选的角色。在一些实施例中,每个节点使用商定的投票/选举逻辑,其获胜者被选举为合并领导者。例如,每个节点可以随机选择其在分类账420中登记的数字,并且登记最低数字(或最高数字、或最接近所限定的数字等)的节点可以被用作选举的基础。本领域普通技术人员将意识到可以在这种上下文中实现的不同选举机制。一旦选票被记录在分类账420中,节点400

1,400
‑2…
,400

n中的每个节点就查询分类账420以确定它是否已经被选择为合并领导者。在该示例中,碰巧已经选择了节点400

1,在此时,它可以通过首先要求密钥管理器402生成公钥/私钥对来开始参数合并过程。在生成所请求的公钥/私钥对后,密钥管理器将公钥发送到节点400

1。同时,其他节点——节点400

2至400

n中的每个节点进入等待状态,直到由密钥管理器402生成的公钥被选举为合并领导者的节点400

1发布到分类账420为止。在一些实施例中,合并领导者可以向其他节点发信号通知:公钥已经被发布。在本公开中,可以通过唤起智能合约中的改变分类账420中的公共共享状态的方法来完成信令。
94.现在参照图4c,节点400

1、400

2,...,400

n中的每个节点使用由密钥管理器402而被生成并由当选的合并领导者发布的公钥来加密其保留的参数,该合并领导者在该示例中是节点400

1。可以将由节点400
‑2…
,400

n中的每个节点对公钥的读取写入到分类账420。应该理解,因为节点400

1被选举为合并领导者,并且因为密钥管理器402通过将所生成的公钥传输到节点400

1来响应了公钥/私钥请求,所以节点400

1已经拥有了该公钥。
95.如以上关于图3所描述的,诸如加密器302的加密器可以是复杂函数,并且公钥成为该复杂函数的参数,因此具有基于在每个节点处训练公共全局模型来得到参数的能力。应当理解,x1和x2可以等同于由个体节点发送的明文参数。y1和y2是加密参数,并且z指的是通过执行同态加法运算(将y1和y2相加)得到的合并参数。z也被加密,并最终被解密以获得最终的合并参数x。在节点400

1,400
‑2…
,400

n中的每个节点完成其相应的参数加密过程后,节点400

1、400

2...,400

n中的每个节点将其状态(即准备好合并状态)写入到分类账420。分类账420将其记录为签入,类似于当节点400

1,400
‑2…
,400

n中的每个节点指示准备好在加密之前合并它们相应的保留参数。因为在此示例中,节点400

1用作合并领导者,所以节点400
‑2…
,400

n进入“等待合并”状态,直到节点400

1准备好执行(加密的)参数合并为止。在一些实施例中,节点400
‑2…
,400

n向节点400

1发信号通知它们相应的准备好合并。当所有其余节点(在此示例中为节点400

2...,400

n)准备好合并时,节点400

1从节点400

2...,400

n中的每个节点下载加密的保留参数,并执行合并以得到最终的合并参数,并且当合并完成时,节点400

1向分类账420写入:合并参数已准备好。如本文中所使用的,诸如参数合并之类的合并可以指代数学加权平均运算,其输出通过该数学加权平均运算基于输入参数而得到的单个参数。
96.关于提供其相应状态的节点,每个节点可以在分类账420中记录其自身的状态。例如,记录其已经读取由合并领导者(即节点400

1)发布的公钥的事实的诸如节点400

2之类的节点,向其他节点提供指示,该指示表明特定操作(在这种情况下为公钥的读取)已被执
行,并且如果是,则指示其是否被成功执行。节点400

2可以使用区块链api 32将其状态写入到与区块链网络110中的其他节点共享的事务。管理节点12可以使用区块链api 32获得事务并将它们挖掘到分布式分类账420中。这样做创建了区块链网络110的全局状态的毫无争议的、防篡改的出处,如本文中所使用的,其反映了节点400

1,400
‑2…
,400n之间的参数/合并/群体学习状态的全局状态。此外,每个节点从它们的分布式分类账420的本地副本中知晓群体学习网络的完整状态。这允许任何节点基于本地数据做出全局有效的决定,以及进行缩放以添加新节点或者考虑了重新启动需要与群体学习网络的当前状态进行同步的节点。
97.应该理解的是,上述阶段确保了本地的、节点特定的参数在被合并之前的完整保护。而且,通过将计算密集型加密过程分配给参与节点中的每个参与节点,可以避免缩放瓶颈。此外,该算法确保了完全的数据隐私,因为包括合并领导者在内的任何节点都不会以明文形式拥有来自另一个对等方的参数。还应指出,上述最终合并参数包括各个加密和保留参数的同态求和,其然后与1/quorumsize(1/法定数目大小)浮点常量进行标量乘法。由于合并过程使用基本同态运算符,因此可以利用大多数现有的/可用的he包来实现该算法。应当理解,he方案通常仅允许对数据执行某些类型的数学运算。例如,许多流行的me方案都限定加法和标量乘法。因此,为了简单/高效,可以使本文所述的参数合并依赖于这些基本运算。换句话说,可以在不改变其逻辑的情况下利用已知的he方案。由于合并过程使用基本同态运算符,因此可以使用大多数现有的/可用的he方案或软件包(例如rsa、eigamal、goldwasse

micali等)来实现此算法。一旦完成合并操作,合并领导者就用信号通知其他节点:合并参数准备解密。
98.现在参照图4d,每个节点(除了合并领导者,节点400

1),在读取记录在分类账420中的合并准备信号之后,参加解密器选举过程。如图4d中所图示,合并准备信号的读取也可以由分类账420记录,并且类似于上述用于选举合并领导者的选举过程,选举解密器。将特定节点用作解密器的选票写入到分类账420。合并领导者,在此示例中的节点400

1,被故意从解密器选择过程中排除,以确保无法选择它,以使得它对于被用于解密最终合并参数的私钥将不会拥有隐私权。回想一下,所公开技术的各个实施例所提供的安全性部分的前提是如下事实:没有一个参与者或节点既知道公钥又知道私钥。在此示例中,已选举节点400

2用作解密器,并且一旦发生该选举,其余节点将进入“等待合并参数”状态。解密器,在这种情况下是节点400

2,响应于来自合并领导节点400

1的先前请求,请求密钥管理器402生成的私钥。密钥管理器402通过将对应的私钥发送到节点400

2来响应节点400

2。再次,具有/已经具有被用于加密的公钥的节点400

1对于对应的私钥将不会拥有隐私权,从而防止节点400

1解密任何参数数据。此外,节点400

2,解密器对于任何其他本地参数或来自任何其他节点的参数数据不拥有隐私权,因为节点400

1才是当选的合并领导者。节点400

2通过以下操作来生成合并参数:对z(合并参数的加密版本)进行解密,其被变换为x(合并参数的解密版本)。
99.参照图4e,解密器(即节点400

2)从合并领导者(即节点400

1)下载合并参数,解密该合并参数,并将现在解密的合并参数上载回合并领导者,并请求密钥管理器402永久丢弃公钥/私钥对。作为响应,密钥管理器402丢弃公钥/私钥对。这确保没有其他节点(包括合并领导者)可以请求私钥来对来自另一个节点的参数进行解密。解密器发信号通知合并参
数准备好并且合并领导者可以使用它作为分类账420被更新的证据,以记录节点400

1对解密的合并参数进行上载/发布的事务。换句话说,在将解密的合并参数上载到合并领导者(节点400

1)后,合并领导者使解密的合并参数对其他节点可用。除节点400

2以外的其余节点(因为节点400

2已经知晓了合并参数)通过从节点400

1下载合并参数来读取合并参数。现在,所有节点400

1,400
‑2…
,400

n都可以将合并参数在本地应用到公共全局模型的其相应的本地实例。应当理解,合并参数的应用可以指的是从外部供应的覆盖参数,在这种情况下,最终的合并参数将覆盖节点400

1,400
‑2…
,400

n中的每个节点处的本地参数。
100.如图4f中所图示,节点400

1等待其他节点完成将合并参数应用于公共全局模型的其相应的本地实例,这可以被反映在分类账420中。当所有节点都完成了应用合并参数时,节点也可以在分类账420中用信号通知完成,在此时,节点400

1(合并领导者)记录到时期数/值的增量,并放弃其作为合并领导者的角色。如上所指出,该参数合并过程可以被重复,直到群体学习网络能够将全局模型收敛到期望的准确性水平为止。
101.图5a和图5b图示出了可以被执行以计算用于分布式或去中心化ml系统中的模型的验证损失的各种操作。如上所指出,每个参与节点可以使用每个参与节点本地的数据来训练模型的本地版本/实例。周期性地,来自本地训练模型的权重可以被合并以得到用于全局模型的权重。然后,合并权重可以由每个节点在其相应的本地模型上应用回去,以用作在后续训练迭代或时期期间进行训练的“基础”模型。
102.例如,图5a图示出了三个节点,节点500

1、节点500

2和节点500

n。节点500

1,500
‑2…
,500

n可以是边缘节点10(图1a)或节点400

1、400

2等的实施例。如图5a中所图示,分批训练502可以在节点500

1,500
‑2…
,500

n中的每个节点上开始。应当指出,“分批”可以指的是用于运行ml模型的一个训练迭代的训练数据的子集。通常,分批大小一次取大约16或32个训练示例,但这仅仅是示例。如本领域普通技术人员将理解的,ml模型可以在多个分批上迭代地进行训练,直到它被令人满意地训练或者其性能不再改善为止。如前所述,在节点500

1,500
‑2…
,500

n的每个节点处发生对公共全局模型的本地版本的训练。然而,应当指出,在分批训练502开始之前,可以将节点500

1,500

2,...,500

n中的每个节点处的相应的本地数据集拆分或以其他方式划分为训练数据集和验证数据集。也就是说,本地数据的第一子集可以被用于训练模型的本地版本,其中本地数据的第二子集可以被用于验证目的,以确定模型的执行情况的好(或坏)。
103.因此,如图5a中所反映的,节点500

1,500
‑2…
,500

n中的每个节点在每个节点相应的本地训练数据集上运行训练分批。应当理解,该分批训练是指对上面参考的并且在图4a中描述的本地数据进行模型的训练。也就是说,节点500

1、500

2...,500

n中的每个节点可以使用每个节点所呈现/贡献的本地数据来训练公共全局模型的实例。如上所指出,可以根据使用本地数据对模型的训练来得到例如权重的参数,然后可以将这些参数以其加密的状态或格式进行保留。
104.合并领导者(如上所述)被选举,以用于合并来自训练每个模型的全局模型的本地版本的本地参数的目的,并随后处理来自每个节点的相应的验证损失值。因此,节点500

1,500
‑2…
,500

n中的每个节点选举领导者。如上所述,领导者选举可能需要节点500

1,500
‑2…
,500

n中的每个节点经历选举过程以选择节点中的一个节点来用作合并领导者。将参与节点中的一个参与节点选举为领导者的选举投票可以被记录在反映节点的状态及其身
份记录的区块链分类账中,因此可以将选票与提交那些选票的节点相关联,并在此示例中,可以使成为合并领导者(后来的解密器)的被选节点知晓它的状态/当选的角色。同样,每个节点可以使用商定的投票/选举逻辑,其获胜者被选举为领导者。在该示例中,在508处节点500

1可以被选举用作领导者。
105.一旦领导者被选择,本地参数/权重共享就可以如以上关于图4b和图4c所描述的那样进行。也就是说,在节点500

1已经当选领导者的情况下,节点500

1可以通过首先要求密钥管理器生成公钥/私钥对来开始参数合并过程。密钥管理器可以将公钥发送到节点500

1。同时,其他节点——节点500

2至节点500

n中的每个节点进入等待状态,直到由密钥管理器生成的公钥被节点500

1发布为止。
106.节点500

1,500

2...,500

n中的每个节点然后可以使用由密钥管理器生成并由当选的领导者(在此示例中是节点500

1)发布的公钥来加密它们相应的保留参数。如上所述,节点500

1已经拥有公钥,并且可以加密其本地参数。一旦节点500

1,500
‑2…
,500

n中的每个节点完成它们相应的参数加密过程,则节点500

1,500
‑2…
,500

n中的每个节点指示它们准备好共享它们相应的参数。共享它们相应的参数可以通过节点500

1(当选的领导者)来实现,从节点500

2...,500

n中的每个节点下载加密的保留参数。然后,节点500

1可以合并参数(权重)以得到最终的合并参数(权重)。再次,参数合并可以指的是数学加权平均运算,其输出通过该数学加权平均运算基于输入参数而得到的单个参数。
107.如图5a中进一步所图示,当选的领导者,在这种情况下是节点500

1,可以将合并参数(权重)分配到参与节点,500

2...,500

n。因为合并参数是使用加密的本地参数(权重)而被实现的,因此必须对其进行解密。因此,其余节点(不是节点500

1,其已经出于合并参数(权重)的目的而被选举为领导者)参加解密器选举过程。例如,节点500

2可以被选举作为解密器,其可以请求由密钥管理器生成的私钥,然后通过将由节点500

1生成的合并参数(权重)的加密版本解密为合并参数(权重)的解密版本来生成合并参数。特别地,节点500

2可以从当选的领导者(即节点500

1)下载合并参数,解密该合并参数。节点500

2可以将现在解密的合并参数上载回节点500

1,并请求密钥管理器永久丢弃它生成的公钥/私钥对(密钥管理器这样做)。这确保没有其他节点(包括领导者)可以请求私钥来对来自另一个节点的参数进行解密。解密器节点500

2发信号通知:合并参数(权重)准备好并且对于领导节点500

1可用。除了节点500

2以外的其余节点(因为节点500

2已经知晓了合并参数/权重)可以通过从节点500

1下载合并参数(权重)来获得合并参数。现在,所有节点500

1,500
‑2…
,500

n都可以将合并参数本地应用到公共全局模型的它们相应的本地实例。如上所述,合并参数的应用可以指的是从外部供应的覆盖参数(权重),在这种情况下,最终的合并参数(权重)将覆盖节点500

1、500
‑2…
,500

n中的每个节点处的本地参数。
108.如上所指出,可以重复该参数合并过程,直到群体学习网络能够将全局模型收敛到期望的准确性水平为止。作为确定全局模型是否能够达成期望的准确性水平的一部分,验证损失可以被计算。如上所述,可以在本地执行验证,可以共享每个节点的本地验证损失,并且可以计算本地验证损失的平均值以得到全局验证损失。该全局验证损失可以与每个节点被共享,以使得每个节点可以从网络或系统范围(全局)的角度确定其本地模型被执行/已被训练的程度。
109.图5b继续可以被执行以计算用于分布式或去中心化ml系统中的模型的验证损失
的各种操作。如图5b中所图示,节点500

1,500
‑2…
,500

n中的每个节点可以计算本地验证损失。可以使用每个节点的本地验证数据集来计算本地验证损失。回想一下,在开始训练迭代之前,每个节点都可以将其本地数据集划分为训练数据子集和验证数据子集。可以使用当前已知的方法或将来可以已知的方法来实行本地验证损失的计算。例如,可以在验证数据子集上运行模型,在那之后,可以使用损失函数将输出与基本真值进行比较。节点500

1,500

2...,500

n中的每个节点将得到本地验证损失值,然后可以与当选的领导者共享本地验证损失值。
110.如上所述,当选的领导者,即节点500

1,先前被选择用作合并领导者,用于合并从在每一个节点处(使用训练数据子集)训练公共全局模型的每个本地实例中得到的本地参数(权重)。同样当选的领导者可以用于计算在所有节点上的平均验证损失以得到全局验证损失。因此,如图5b中所图示,节点500
‑2…
,500

n中的每个节点将其本地验证损失值报告给节点500

1(节点500

1知晓其自己计算的本地验证损失值)。
111.应该理解,尽管不是必须需要的,但是可以以与加密本地参数(权重)相同的方式对节点500

1,500

2,...,500

n中的每个节点的本地验证损失值进行同态加密。也就是说,节点500

1,当选的领导者,可以请求密钥管理器生成另一个公钥/私钥对以被用于分别加密和解密本地验证损失值和全局验证损失值。
112.例如,响应于节点500

1要求密钥管理器生成公钥/私钥对,密钥管理器可以将公钥传输到节点500

1。同时,其他节点——节点500

2至节点500

n中的每个节点进入等待状态,直到由密钥管理器生成的公钥被节点500

1发布为止。然后,节点500

1,500

2,...,500

n中的每个节点可以使用由密钥管理器生成并由节点500

1发布的公钥来加密其相应的本地验证损失值。如上所述,节点500

1已经拥有公钥,并且可以加密其本地验证损失值。在节点500

1,500

2,...,500

n中的每个节点完成它们相应的验证损失值加密过程后,节点500

1,500

2,...,500

n中的每个节点指示它们准备好共享它们相应的验证损失值。共享它们相应的验证损失值可以通过如下来完成:节点500

1(当选的领导者)从节点500

2...,500

n中的每个节点下载加密验证损失值。节点500

1然后可以将来自节点500
‑2…
,500

n中的每个节点的加密的验证损失值连同它自己的验证损失值进行平均,以得到全局验证损失值。类似于上述参数合并,可以使用数学加权平均运算来计算对本地验证损失值的平均,该数学加权平均运算输出通过该数学加权平均运算基于输入参数而得到的单个参数。
113.如图5b中进一步所图示,当选的领导者,在这种情况下是节点500

1,可以将全局验证损失值分配到节点,500

2...,500

n。因为全局验证损失值是使用加密的本地验证损失值而被实现的,所以必须对全局验证损失值进行解密。因此,其余节点(不是已经当选为领导者的节点500

1)同样可以参加解密器选举过程。例如,节点500

2可以被选举为解密器,其可以请求由密钥管理器生成的私钥,然后通过如下来生成全局验证损失值:将由节点500

1生成的全局验证损失值解密为全局验证损失值的解密版本。特别地,节点500

2可以从节点500

1下载全局验证损失值,并且可以解密全局验证损失值。节点500

2可以将现在解密的全局验证损失值上载回节点500

1,并请求密钥管理器永久丢弃它生成的公钥/私钥对(密钥管理器这样做)。这确保没有其他节点(包括领导者)可以请求私钥来对另一个节点的本地验证损失值进行解密。解密器节点500

2发信号通知:全局验证损失值已准备好,并
且对于领导节点500

1可用。除了节点500

2之外的其余节点(因为节点500

2已经知晓了全局验证损失值)可以通过从节点500

1下载全局验证损失值来获得全局验证损失值,在此时,训练分批在524处结束。应当理解,每个节点500

1,500
‑2…
,500

n可以使用全局验证损失值来确定是否需要进一步的训练迭代或者训练是否可以结束。
114.应当指出,在一些实施例中,在每个节点500

1,500
‑2…
,500

3处确定的验证损失值在共享之前不需要必须被加密。也就是说,保持隐私本地数据私有的愿望可能不必持续到保持ml模型性能信息(验证损失值)私有。相应地,如图5b中所图示,在一些实施例中,密钥管理器的使用以及获得公钥/私钥等可以被跳过,并且可以与领导节点500

1直接按原样共享本地验证损失值。同样,也可以跳过对全局验证损失值的解密。
115.图6是根据所公开技术的一个实施例的示例计算组件600,其可以被用于实现当选的合并领导者的各种特征。计算组件600例如可以是服务器计算机、控制器或能够处理数据的任何其他类似的计算组件。在图6的示例实现中,计算组件600包括硬件处理器602和机器可读存储介质604。在一些实施例中,计算组件600可以是边缘节点10(图1c)的处理器50的实施例。
116.硬件处理器602可以是一个或多个中央处理单元(cpu)/基于半导体的微处理器和/或适合于检索和执行存储在机器可读存储介质604中的指令的其他硬件设备。硬件处理器602可以获取、解码和执行指令(诸如指令606

618)以控制用于合并本地参数以使用同态加密在区块链上下文中实行群体学习的过程或操作。作为检索和执行指令的替代或补充,硬件处理器602可以包括一个或多个电子电路,该电子电路包括用于执行一个或多个指令的功能性的电子组件,诸如现场可编程门阵列(fpga)、专用集成电路(asic)或其他电子电路。
117.诸如机器可读存储介质604之类的机器可读存储介质可以是包含或存储可执行指令的任何电、磁、光或其他物理存储设备。因此,机器可读存储介质604可以是例如随机存取存储器(ram)、非易失性ram(nvram)、电可擦除可编程只读存储器(eeprom)、存储设备、光盘等等。在一些实施例中,机器可读存储介质604可以是非暂时性存储介质,其中术语“非暂时性”不涵盖暂时性传播信号。如以下详细描述的,机器可读存储介质604可以用可执行指令(例如,指令606

618)来进行编码。
118.硬件处理器602可以执行指令606以在训练节点处训练ml模型的本地版本。如上所述,在分布式或去中心化ml网络中,在例如边缘节点处对ml模型的训练可能需要使用边缘节点处的训练数据来训练公共全局模型的实例或版本。训练数据可以是边缘节点处的本地数据的训练数据子集。本地数据可以被划分为训练数据子集和验证数据子集(在模型的验证期间被使用)。
119.硬件处理器602可以执行指令608以将从训练ml模型的本地版本中得到的本地参数传输到领导节点。如上所述,根据一些实施例,可以通过使用同态加密来呈现数据隐私,其中节点中的一个节点可以被选举为领导者。作为领导节点,该节点可以合并来自每个节点的本地参数,这些本地参数是从在每个节点处训练ml模型的本地版本得到的。领导者可以请求单独的密钥管理器来生成被用于同态加密的非对称密钥对。
120.因此,硬件处理器602可以执行指令610以从领导节点接收从ml模型的全局版本中得到的合并参数。由于同态加密被用于对从ml模型的全局版本的本地版本中得到的本地化
参数进行加密,因此可以选择解密器节点(不是领导节点)来对(来自领导节点的)合并参数的加密版本进行解密。合并参数的解密版本可以由边缘节点获得。
121.硬件处理器602可以执行指令612以将合并参数应用于在训练节点处的ml模型的本地版本,以更新ml模型的本地版本。这发生在网络的每个边缘节点处。
122.在完成本地训练迭代/时期后,每个节点然后可以验证其ml模型。因此,硬件处理器602可以执行指令614以评估ml模型的更新后的本地版本以确定本地验证损失值。本地验证损失值(如从在每个节点处对本地ml模型的训练中得到的参数)可以被发送到当选的领导节点。在接收到来自网络中的其他节点的本地验证损失值后,当选的领导节点可以对本地验证损失值进行平均以得到可被返回给每个节点的全局验证损失值。
123.硬件处理器602可以执行指令616以将本地验证损失值传输到领导节点。如上所述,领导节点可以请求生成另一非对称密钥对,以使得本地验证损失值可以在传输到领导节点之前由每个节点对进行加密。领导节点在从分布式网络的节点接收到本地验证损失值后,可以对这些本地验证损失值进行平均以得到全局验证损失值。
124.因此,硬件处理器602可以执行指令618以从领导节点接收基于由训练节点传输的本地验证损失值而确定的全局验证损失值。如上所指出,验证损失值可以被用于确定模型的训练是否可以停止,或者是否需要进一步的训练来满足期望的性能水平。在此,全局验证损失值可以由每个节点可以使用,以确定它是否应该继续训练公共全局模型的其本地版本或者是否可以停止训练。
125.图7是根据本公开的技术的一个实施例的示例计算组件700,其可以被用于实现当选的领导节点的各种特征。计算组件700可以是例如服务器计算机、控制器或者能够处理数据的任何其他类似的计算组件。在图7的示例实现中,计算组件700包括硬件处理器702和机器可读存储介质704。在一些实施例中,计算组件600可以是边缘节点10(图1c)的处理器50的实施例。
126.硬件处理器702可以是一个或多个中央处理单元(cpu)、基于半导体的微处理器和/或适合于检索和执行存储在机器可读存储介质704中的指令的其他硬件设备。硬件处理器702可以获取、解码和执行指令(诸如指令706

718)以控制用于合并本地参数以使用同态加密来在区块链上下文中实行群体学习的过程或操作。作为检索和执行指令的替代或补充,硬件处理器702可以包括一个或多个电子电路,该电子电路包括用于执行一个或多个指令的功能性的电子组件,诸如现场可编程门阵列(fpga)、专用集成电路(asic)或其他电子电路。
127.诸如机器可读存储介质704之类的机器可读存储介质可以是包含或存储可执行指令的任何电、磁、光或其他物理存储设备。因此,机器可读存储介质704可以是例如随机存取存储器(ram)、非易失性ram(nvram)、电可擦除可编程只读存储器(eeprom)、存储设备、光盘等等。在一些实施例中,机器可读存储介质704可以是非暂时性存储介质,其中术语“非暂时性”不涵盖暂时性传播信号。如下面详细描述的,机器可读存储介质704可以用可执行指令(例如,指令706

718)来进行编码。
128.硬件处理器702可以执行指令706以训练ml模型的本地版本。同样,如上所述,分布式或去中心化机器学习涉及使用多个节点处的本地数据在那些节点处训练ml模型的本地版本。该本地数据在训练之前可以被划分为训练和验证数据集。训练数据集可以被用于训
练ml模型的本地版本,而验证数据集可以被用于确定ml模型的本地版本执行得如何好/差。
129.硬件处理器702可以执行指令708,以在被选举用作其他训练节点的领导节点后,接收从在其他训练节点处对ml模型的相应本地版本的训练中得到的本地参数。如上所述,可以采取预防措施来保护本地数据的隐私。作为这些预防措施的一部分,选举领导节点来执行本地化ml模型参数合并。该领导节点可以请求密钥管理器生成(用于非对称加密的公钥/私钥对的)公钥,以由每个训练节点用于加密其本地参数。
130.硬件处理器702可以执行指令710以合并接收到的本地参数。在从每个训练节点(包括其自身)接收到本地参数后,领导节点可以合并本地参数。以这种方式,硬件处理器702可以执行指令712以使用合并的本地参数来构建ml模型的全局版本。
131.硬件处理器702可以执行指令714以将经合并的本地参数传输到其他训练节点中的每个训练节点。合并的本地参数可以在从被选举用作解密器的另一个节点接收到解密版本后由领导节点传输。通过分开不同节点之间的合并/加密和解密操作,数据隐私可以被维持,因为任何单个节点都不知道公钥/私钥对(在一起)。
132.如上所指出,可以将每个训练节点处的本地数据拆分为训练和验证数据集。在训练迭代完成后,每个节点都可以执行验证过程,以确定其本地ml模型版本的执行情况。类似于本地参数的合并,领导节点可以对来自每个训练节点(包括其自身)的本地验证损失值进行平均。因此,硬件处理器702可以执行指令716以从每个其他训练节点接收从ml模型的相应本地版本的本地评估中得到的本地验证损失值。
133.硬件处理器702可以执行指令718以对本地验证损失值进行平均以得到可以被所有训练节点使用的全局验证损失值。在对本地验证损失值进行平均后,领导者可以将该全局验证损失值分配给其他每个训练节点。
134.所公开技术的各种实施例能够以几乎均匀的方式向所有参与者分配用于执行密码操作的计算。也就是说,尽管一些节点(诸如执行合并功能的合并领导节点或对数据进行解密的解密器)执行并非每个节点都执行的操作,但是所有节点都参与了ml模型训练,贡献了参数以进行合并,等等。此外,各种实施例采用了可以在区块链网络的所有参与者之间分配的群体学习/参数合并过程或算法,从而使得实现可以容易地进行缩放。此外,尽管是分布式的群体学习方面,其中许多操作是由边缘节点独立执行的,但是各种实施例的实现为ml和模型训练提供了容错解决方案。
135.应该理解,尽管本文描述的各种实施例是在区块链框架的上下文中进行呈现以保持数据完整性,但是从验证的角度来看,区块链分类账的使用不是必要的。也就是说,不管如何执行关于那些本地ml模型的分布式学习,都可以根据各种实施例来验证参与节点的本地ml模型。例如,可以使用常规的分布ml技术来执行在边缘网络中的每个参与节点处的本地ml模型训练。然而,如上所述,在训练迭代完成后,可以本地地计算验证损失,与领导节点进行共享,领导节点可以对本地验证损失值进行平均的,并向参与节点返回全局验证损失值而无需区块链分类账或其他与区块链相关的机制。相反,节点可以将例如本地验证损失值直接传达给当选的领导者,反之亦然。
136.图8描绘了在其中可以实现本文描述的各种实施例的示例计算机系统800的框图。计算机系统800包括总线802或用于传达信息的其他通信机制、与总线802耦合以用于处理信息的一个或多个硬件处理器804。(多个)硬件处理器804例如可以是一个或多个通用微处
理器。
137.计算机系统800还包括主存储器806,诸如随机存取存储器(ram)、高速缓存和/或其他动态存储设备,其耦合到总线802以用于存储将由处理器804执行的信息和指令。存储器806还可以被用于在要由处理器804执行的指令的执行期间存储临时变量或其他中间信息。这样的指令在被存储在处理器804可访问的存储介质中时,使计算机系统800变成被定制为执行指令中所指定的操作的专用机器。
138.计算机系统800还包括耦合到总线802以用于存储用于处理器804的静态信息和指令的只读存储器(rom)808或其他静态存储设备。存储设备810,诸如磁盘、光盘或usb拇指驱动器(闪存驱动器)等,被提供并耦合到总线802以用于存储信息和指令。
139.计算机系统800可以经由总线802而被耦合到显示器812,诸如液晶显示器(lcd)(或触摸屏),以向计算机用户显示信息。包括字母数字键和其他键的输入设备814耦合到总线802,以用于将信息和命令选择传达给处理器804。另一种类型的用户输入设备是光标控件816,诸如鼠标、跟踪球或光标方向键,以用于将方向信息和命令选择传达给处理器804并用于控制显示器812上的光标移动。在一些实施例中,可以在没有光标的情况下经由接收触摸屏上的触摸来实现与光标控件相同的方向信息和命令选择。
140.计算系统800可以包括用于实现gui的用户接口模块,该gui可以作为由(多个)计算设备执行的可执行软件代码而被存储在大容量存储设备中。举例来说,此模块和其他模块可以包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、过程、功能、属性、程序、子例程、程序代码段、驱动程序、固件、微代码、电路系统、数据、数据库、数据结构、表、数组和变量。
141.通常,如本文中所使用的,词语“组件”、“引擎”、“系统”、“数据库”、“数据存储库”等等可以指的是硬件或固件中体现的逻辑或集合,或者指的是以编程语言(诸如例如java、c或c++)编写的可能具有入口和出口点的软件指令集合。软件组件可以被编译并链接到可执行程序中,被安装在动态链接库中,或者可以用诸如例如basic、perl或python之类的解释性编程语言来进行编写。将意识到,软件组件可以从其他组件或从其自身被调用,和/或可以响应于检测到的事件或中断而被唤起。被配置用于在计算设备上执行的软件组件可以被提供在计算机可读介质(诸如压缩盘、数字视频光盘、闪存驱动器、磁盘或任何其他有形介质)上,也可以作为数字下载文件而被提供(并且最初可以以压缩的或可安装的格式被存储,这样的格式在执行之前需要安装、解压缩或解密)。这样的软件代码可以部分地或全部地存储在执行中的计算设备的存储器设备上,以用于由计算设备执行。软件指令可以被嵌入在诸如eprom之类的固件中。还将意识到,硬件组件可以包括诸如门和触发器之类的已连接逻辑单元,和/或可以包括诸如可编程门阵列或处理器之类的可编程单元。
142.计算机系统800可以使用定制化的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文所描述的技术,其与计算机系统结合使计算机系统800成为专用机器或将计算机系统800编程为专用机器。根据一个实施例,本文的技术由计算机系统800响应于(多个)处理器804执行包含在主存储器806中的一个或多个指令的一个或多个序列来执行。这样的指令可以从另一存储介质(诸如存储设备810)而被读取到主存储器806中。执行包含在主存储器806中的指令序列使(多个)处理器804执行本文所描述的过程步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令结合使用。
143.如本文所使用的,术语“非暂时性介质”和类似术语是指存储致使机器以特定方式进行操作的数据和/或指令的任何介质。这样的非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备810。易失性介质包括动态存储器,诸如主存储器806。非暂时性介质的常见形式包括例如软盘、柔性盘、磁盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、cd

rom、任何其他光学数据存储介质、带孔图案的任何物理介质、ram、prom和eprom、flash

eprom、nvram、任何其他存储芯片或盒式磁带以及它们的网络版本。
144.非暂时性介质不同于传输介质但可以与传输介质结合使用。传输介质参与了非暂时性介质之间的信息传送。例如,传输介质包括同轴电缆、铜线和光纤,包括构成总线802的导线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
145.计算机系统800还包括耦合到总线802的通信接口818。网络接口818提供双向数据通信,该双向数据通信耦合到一个或多个网络链路,该网络链路连接到一个或多个本地网络。例如,通信接口818可以是集成服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或者是用于提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,网络接口818可以是局域网(lan)卡,以提供到兼容lan(或与wan通信的wan组件)的数据通信连接。无线链接也可以被实现。在任何这样的实现中,网络接口818发送和接收电、电磁或光信号,其携带表示各种类型的信息的数字数据流。
146.网络链路通常提供通过一个或多个网络到其他数据设备的数据通信。例如,网络链路可以通过局域网提供到主机或互联网服务提供商(isp)运营的数据设备的连接。isp继而通过现在通常被称为“互联网”的全球分组数据通信网络来提供数据通信服务。局域网和互联网都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号和在网络链路上并且通过通信接口818的信号是传输介质的示例形式,这些信号携带去往和来自计算机系统800的数字数据。
147.计算机系统800可以通过(多个)网络、网络链路和通信接口818发送消息并接收数据,包括程序代码。在互联网示例中,服务器可以通过互联网、isp、局域网和通信接口818传输针对应用的被请求代码。
148.接收到的代码可以在其被接收时由处理器804执行,和/或被存储在存储设备810或其他非易失性存储中,以供以后执行。
149.前面各部分中描述的每个过程、方法和算法可以被体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器所执行的代码组件中,并且可以完全或部分地由其自动化。一个或多个计算机系统或计算机处理器还可以操作来在“云计算”环境中支持相关操作的执行或操作为“软件即服务”(saas)。过程和算法可以部分或全部被实现在专用电路系统中。以上描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式进行组合。不同的组合和子组合旨在落入本公开的范围内,并且在一些实现中可以省略某些方法或处理框。本文所述的方法和过程也不限于任何特定的顺序,并且与之相关的框或状态可以以适当的其他顺序来执行,或者可以并行地执行,或者以某种其他方式来执行。框或状态可以被添加到所公开的示例实施例或从所公开的示例实施例中去除。某些操作或过程的执行可以被分布在计算机系统或计算机处理器之间,不仅驻留在单个计算机内,而且可以跨多个计
算机进行部署。
150.如本文中所使用的,可以利用任何形式的硬件、软件或其组合来实现电路或组件。例如,一个或多个处理器、控制器、asic、pla、pal、cpld、fpga、逻辑组件、软件例程或其他机制可以被实现来构成电路。在实现中,本文描述的各种电路或组件可以被实现为分立的电路/组件,或者所描述的功能和特征可以在一个或多个电路/组件之间部分或全部共享。即使可以将各种功能性的特征或元素单独描述或要求保护为单独的电路/组件,这些特征和功能性也可以在一个或多个通用电路/组件之间共享,并且这种描述将不要求或暗示单独的电路/组件是实现此类特征或功能性所需的。在使用软件全部或部分地实现电路/组件的情况下,可以将这种软件实现为与能够执行关于此描述的功能性的计算或处理系统(诸如计算机系统800)一起操作。
151.如本文中所使用的,术语“或”可以以包括性或排他性的意义来解释。而且,单数形式的资源、操作或结构的描述不应被解读为排除复数。除非在所使用的上下文中以其他方式理解或者另外明确说明,否则诸如“可以”、“可能”或“可”之类的条件性语言通常旨在传达某些实施例包括而其他实施例不包括某些特征、元件和/或步骤。
152.除非另外明确说明,否则本文档中使用的术语和短语及其变体应被解释为开放性的而不是限制性的。诸如“常规”、“传统”、“正常”、“标准”、“已知”和类似含义的术语之类的形容词不应被解释为将所描述的项目限制为给定时间段或限制为给定时间可用的项目,而是应该被解读为涵盖现在或将来任何时候可用或已知的常规、传统、正常或标准技术。在一些实例中,诸如“一个或多个”、“至少”、“但不限于”或其他类似短语之类宽泛的单词和短语不应被解读为意指在这样的宽泛短语可能不存在的实例中意图或要求使用更窄的情况。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1