首页 / 用于机器学习的联邦学习解决方案

用于机器学习的联邦学习解决方案实质审查 发明

技术内容

用于机器学习的联邦学习解决方案 背景技术 [0001] 机器学习(ML)模型通常使用大型数据集进行训练,以基于数据调整机器学习模型的权重、偏差和/或其他参数。数据可以跨多个基于云的储存系统存储、存储在各个数据中心处本地、或其组合。在理想情况下,所有相关数据都将被收集在中心位置处,并且使用该数据训练模型。然而,出于法律和逻辑原因,这通常是不切实际的或不可能的。将需要在中心位置中收集的海量数据可能严重影响在中心位置中收集所有该数据的网络和储存资源。 此外,数据保护和隐私法可能对包括某些国家、州或省份或其他已经施行此类法律的地区的居民的个人身份信息的数据的使用和储存提出严格保密要求。公司或其他实体可能在对数据保护和隐私施行了此类限制的多个地区中开展业务。因此,包含此类个人身份信息的数据不能被合法地移动到这些司法管辖区之外的中央存储库。因此,需要提供用于促进训练ML模型的解决方案的改进的系统和方法,其中训练数据被分布在多个位置之中。 发明内容 [0002] 根据本公开的示例数据处理系统可以包括处理器和存储可执行指令的机器可读介质。指令在执行时使得处理器执行操作,这些操作包括:在第一仓库中接收配置参数以用于使用存储在多个第二仓库中的数据执行机器学习模型的联邦训练;基于配置参数生成联邦学习流水线以用于自动执行与机器学习模型的联邦学习相关联的多个任务,包括自动生成用于执行多个任务的代码、脚本或两者以用于在多个第二仓库中的每个相应仓库中使用存储在相应仓库中的数据训练机器学习模型的本地实例,以及用于向第一仓库提供与机器学习模型的本地实例相关联的相应可学习参数信息,同时确保与用于训练机器学习模型的本地实例的数据相关联的数据保护和隐私要求被满足;使得多个第二仓库中的每个相应仓库根据联邦学习流水线训练机器学习模型的本地实例;在第一仓库处获得与多个第二仓库中的每个第二仓库的机器学习模型的本地实例相关联的可学习参数信息;以及聚合从多个第二仓库获得的可学习参数信息以获得已经根据可学习参数信息已微调的机器学习模型的主实例。 [0003] 在数据处理系统中实现的用于执行机器学习模型的联邦学习的示例方法包括:在第一仓库中接收配置参数以用于使用存储在多个第二仓库中的数据执行机器学习模型的联邦训练;基于配置参数生成联邦学习流水线以用于自动执行与机器学习模型的联邦学习相关联的多个任务,包括自动生成用于执行多个任务的代码、脚本或两者以用于在多个第二仓库中的每个相应仓库中使用存储在相应仓库中的数据训练机器学习模型的本地实例,以及用于向第一仓库提供与机器学习模型的本地实例相关联的相应可学习参数信息,同时确保与用于训练机器学习模型的本地实例的数据相关联的数据保护和隐私要求被满足;使得多个第二仓库中的每个相应仓库根据联邦学习流水线训练机器学习模型的本地实例;在第一仓库处获得与多个第二仓库中的每个第二仓库的机器学习模型的本地实例相关联的可学习参数信息;以及聚合从多个第二仓库获得的可学习参数信息以获得已经根据可学习参数信息已微调的机器学习模型的主实例。 [0004] 其上存储指令的示例机器可读介质。指令在执行时使得可编程设备的处理器执行以下操作:在第一仓库中接收配置参数以用于使用存储在多个第二仓库中的数据执行机器学习模型的联邦训练;基于配置参数生成联邦学习流水线以用于自动执行与机器学习模型的联邦学习相关联的多个任务,包括自动生成用于执行多个任务的代码、脚本或两者以用于在多个第二仓库中的每个相应仓库中使用存储在相应仓库中的数据训练机器学习模型的本地实例,以及用于向第一仓库提供与机器学习模型的本地实例相关联的相应可学习参数信息提供给第一仓库,同时确保与用于训练机器学习模型的本地实例的数据相关联的数据保护和隐私要求被满足;使得多个第二仓库中的每个相应仓库根据联邦学习流水线训练机器学习模型的本地实例;在第一仓库处获得与多个第二仓库中的每个第二仓库的机器学习模型的本地实例相关联的可学习参数信息;以及聚合从多个第二仓库获得的可学习参数信息以获得已经根据可学习参数信息已微调的机器学习模型的主实例。 [0005] 提供本发明内容从而以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,其也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决本公开的任何部分中指出的任何或所有缺点的实现。 附图说明 [0006] 附图仅以示例的方式而非限制的方式描绘了符合本教导的一个或多个实现。在图中,相同的附图标记指代相同或相似的元件。此外,应该理解,附图不一定按比例绘制。 [0007] 图1A和图1B是示出其中可以实现本文提供的技术的两个示例计算环境的图。 [0008] 图2是在高层次上示出在根据本文提供的技术的联邦学习会话的迭代期间可以在编排器与仓库之间交换的数据的类型的图。 [0009] 图3A和图3B是可以由图1和图2中所示的编排器提供的示例用户界面的图。 [0010] 图3C是示出编排器动态更新图3A中所示的联邦学习流水线的示例的图。 [0011] 图3D是示出编排器动态更新图3A中所示的联邦学习流水线的另一示例的图。 [0012] 图4是用于机器学习模型的联邦学习的过程的流程图。 [0013] 图5是示出示例软件架构的框图,其各个部分可以与本文描述的各种硬件架构结合使用,其可以实现任何所描述的特征。 [0014] 图6是示出被配置为从机器可读介质读取指令并执行本文描述的任何特征的示例机器的组件的框图。 具体实施方式 [0015] 在以下详细说明中,以示例的方式阐述了许多具体细节,以便提供对相关教导的透彻理解。然而,应该显而易见的是,本教导可以被实践而没有此类细节。在其他实例中,众所周知的方法、过程、组件和/或电路已经在相对高层次上被描述,但没有详细说明,以便避免不必要地模糊本教导的方面。 [0016] 提供了用于联邦机器学习的技术,其解决在分布在多个位置之中的数据上训练ML模型的技术问题,而无需针对分析将数据收集在集中位置处。这些技术的技术优点在于用于训练模型的数据集的数据针对本地分析在其上存储有数据的计算环境上。数据不被收集在集中位置处,从而确保与各种数据集相关联的数据保护和隐私要求被满足。这些要求通过实现编排器来满足,该编排器被配置为协调利用“仓库”对ML模型的联邦训练,这些“仓库”可以访问要用于训练ML模型的数据的相应部分。每个仓库中的数据与其他仓库的数据分离,并且每个仓库被分配有计算和储存资源以用于存储数据并对数据执行各种计算任务。编排器通过向仓库提供可学习参数信息来协调与仓库的联邦训练,该可学习参数信息可以包括初始模型权重、偏差和/或与ML模型相关联的其他参数。可学习参数信息是由ML网络的隐藏层内的节点使用以对已经被输入到网络中的数据变换以基于该网络来生成预测的参数。每个仓库使用本地可用数据对ML模型的本地实例训练。然后,仓库将经更新的可学习参数信息提供给编排器,该编排器聚合从仓库中的每个仓库接收到的模型权重以更新由编排器维护的主要版本ML模型。本文讨论的联邦机器学习技术的技术优点提供了确保在一个实现中只有可学习参数信息可以在编排器与仓库之间交换的隐私保护。与用于训练ML的仓库中的每个仓库相关联的数据决不在仓库的外部公开,从而保持仓库的数据独立性,并确保与仓库的数据集相关联的数据保护和隐私要求被满足。 [0017] 本文提供的技术显著简化了使用联邦学习的ML模型的训练。编排器提供了简化生成、维护和部署用于训练ML模型的联邦学习流水线的过程的用户界面。用户界面提供了用于轻松导航联邦学习流水线以及添加、修改和移除联邦学习流水线的阶段的部件。用户界面使得用户能够轻松配置正在训练的ML模型的超参数和/或联邦学习过程的其他配置参数。超参数可以定义在ML模型的训练期间将执行多少个训练时期(epoch)。时期表示通过用于训练模型的训练数据集中包括的所有训练样本的完整传递。超参数还可以定义指示要在训练迭代中处理的来自训练数据集的指定数量的训练样本的批大小。编排器在生成联邦学习流水线时考虑这些超参数,并基于用于训练ML模型的数据集的大小、批大小和期望的时期数向联邦流水线自动添加指定数量的训练迭代阶段。过去,复杂的代码和/或脚本将已经由数据科学家或其他人手动编写以定义训练过程的工作流程。本文描述的联邦学习技术通过经由基于这些参数自动生成联邦学习流水线的工作流程使该过程的大部分自动化来提供对该问题的解决方案。编排器被配置为部分基于为正在训练的ML模型指定的超参数和/或其他配置参数(诸如下面讨论的那些)自动生成联邦学习流水线。 [0018] 编排器还在生成联邦学习流水线时考虑其他配置参数。在一些实现中,配置参数包括标识其中要ML模型的本地实例的训练的仓库中的每个仓库的信息、要由仓库分配用于训练ML模型的本地实例的计算资源和/或储存资源的量、要由每个仓库用于训练ML模型的本地实例的输入数据源或多个数据源、以及用于配置模型的本地实例要由仓库如何训练的其他参数。在一些实现中,配置参数还可以包括指示在联邦学习流水线的每个阶段处可以由编排器和/或由仓库执行的预处理和后处理的类型的信息。 [0019] 编排器通过自动生成用于在编排器和仓库上实现联邦学习的大部分代码和/或脚本来进一步简化训练过程。可以定制代码和/或脚本以满足正在训练的机器学习模型的要求。自动化代码和/或脚本定义如何部署可学习参数信息,诸如模型权重、偏差和/或其他参数,要部署到其中要训练ML模型的仓库中的每个仓库,用于设置用于在仓库中的每个仓库中训练模型的实例的计算和储存资源,用于从与每个仓库相关联的相应数据存储或多个数据存储中检索训练数据,用于在每个仓库中对ML模型的本地实例执行训练,以及用于将来自ML模型的每个本地实例的可学习参数信息从仓库提供回到编排器。所有这些操作将已经需要由数据科学家或实现ML模型的联邦学习的其他用户手动生成大量复杂代码和/或脚本。 [0020] 由编排器提供的用于创建和生成联邦学习流水线的用户界面以及代码和/或脚本到仓库的自动生成和部署显著减少了用户可能将配置错误引入到训练过程中的机会,其将需要重新运行联邦学习过程来纠正这些错误。因此,通过消除此类错误,可以显著减少由编排器和仓库消耗的存储器、计算资源和/或网络资源的量。 [0021] 本文提供的技术的另一技术优点在于联邦学习流水线不是静态的,并且编排器可以在ML模型的训练期间动态更新联邦学习流水线。在一些实现中,编排器在正在执行联邦学习流水线的同时评估ML模型的性能以确定模型的性能是否满足指示模型是否需要附加训练的某些条件。编排器响应于模型的性能而向联邦学习流水线添加附加训练迭代阶段,修改联邦学习流水线的现有训练迭代状态,或者移除联邦学习流水线的现有训练迭代状态。编排器还可以响应于用户指定的标准而动态改变联邦学习流水线的流程。编排器可以向联邦学习流水线添加附加阶段,修改联邦学习流水线的现有阶段,或者响应于用户指定的标准得到满足而从联邦学习流水线中删除阶段。这种方法允许编排器在正在执行训练的同时调整ML模型的训练。因此,可以减少训练ML模型所需的训练会话数量,从而减少训练ML模型所需的计算、存储器和网络资源。 [0022] 联邦学习流水线与当前的机器学习流水线的方法相比提供了显著的改进,当前的机器学习流水线的方法通常是静态的、非常复杂的,并且需要大量的手动干预来构建和维护机器学习流水线。此外,本文提供的技术可以显著减少与跨仓库实现和执行联邦学习相关联的存储器、计算资源和/或网络资源。本文公开的技术的这些和其他技术优点将从随后的示例实现的讨论中显而易见。 [0023] 图1A和图1B是示出其中可以实现本文提供的技术的两个示例计算环境的图。编排器110被配置为与仓库115a、115b、115c、115d和115e(统称为仓库115)协调以实现本文描述的联邦学习技术。编排器110和仓库115a、115b、115c、115d和115e中的每个在编排器110和仓库115a、115b、115c、115d和115e所在的相应的基于云的环境中被分配计算和储存资源。 图1A中所示的示例中的编排器110和所有仓库与单个工作空间105相关联。相比之下,在图 1B中所示的示例中,编排器110和仓库115a、115b、115c、115d和115e与多个单独的工作空间相关联。在图1B中,编排器110和仓库115e与工作空间105相关联,仓库115a和115c与第二工作空间125a相关联,并且仓库115b和115d与第三工作空间125b相关联。 [0024] 工作空间提供用于创建、训练、管理机器学习模型和将机器学习模型部署到计算环境(诸如仓库115a、115b、115c、115d和115e)的集中式平台。该工作空间可以使用Microsoft Azure Machine  工作空间来实现。其他实现使用与另一机器学习平台相关联的另一类型的工作空间。工作空间可以维护与工作空间相关联的ML模型的训练运行的历史,其可以由数据分析师使用以确定ML模型是否如期望的执行并保持跟踪迄今为止已经对ML模型执行的训练。历史可以包括各种信息,包括但不限于日志、度量、输出和在训练中使用的脚本的快照。历史信息可以用于确定产生最佳ML模型以满足特定目标的训练。 [0025] 工作空间还可以促进将ML模型部署到其中可以利用由模型输出的预测的各种计算环境,诸如但不限于仓库115a、115b、115c、115d和115e。可以根据业务或操作需求将模型部署到未参与模型的训练的其他仓库。可以将ML模型部署到其上的资源在本文中被称为“计算目标”,并且工作空间可以支持多种不同类型的计算目标。计算目标可以包括但不限于容器、Kubernetes集群和超文本递送协议(HTTP)端点。容器提供了一种用于打包、部署和管理基于云的应用的安全部件。容器包括可执行应用代码和支持服务。容器可以提供比使用虚拟机更轻量和灵活的解决方案,虚拟机通常用于在基于云的计算环境中实现应用。 Kubernetes集群是节点的集合,诸如分配给仓库的计算资源,其可以被配置为运行容器化应用。HTTP端点提供了一种用于在基于云的环境中访问资源的部件。HTTP端点可以为提交到HTTP端点的请求定义基本统一资源定位器(URL)。其他实现可以促进将机器学习模型部署到其他类型的计算目标。 [0026] 工作空间可以提供促进运行实验、创建流水线和管理数据集的工具。可以设置实验来执行用于构建ML模型的训练运行。流水线是可重复使用的工作流程,其中用户可以定义和/或管理用于训练和/或重新训练ML模型的可重复使用的工作流程。工作空间还可以包括用于管理用于训练模型的数据和用于创建用于使用数据来训练和/或重新训练ML模型的流水线的工具。如将在随后的示例中更详细讨论的,编排器110与其他计算环境(诸如仓库 115a、115b、115c、115d和115e)协调这些实验的实现。编排器110还可以提供用于创建、维护和执行联邦学习流水线的工具,该联邦学习流水线可以自动化和/或显著简化与实验以训练ML模型相关联的许多任务。 [0027] 工作空间可以与一个或多个仓库相关联,仓库诸如为图1A和图1B中所示的仓库 115a、115b、115c、115d和115e。编排器110被配置为维护要使用本文描述的联邦训练技术来训练的一个或多个ML模型的主要版本。用于训练ML模型的数据的至少一部分可能存在于仓库115a、115b、115c、115d和115e中。无论仓库与编排器110相同工作空间相关联还是与不同于编排器110相关联,编排器110都可以与仓库115a、115b、115c、115d和115e中的每个协调联邦训练。由于由仓库所在的司法管辖区施行的数据保护和/或数据隐私要求,仓库115可能与不同的工作空间相关联。仓库115还可以与不同的组织相关联,这些组织可能对为特定目的开发机器学习模型有共同的兴趣,但不能或不想向另一组织公开数据。编排器110可能能够在与编排器110相同的工作空间相关联的仓库115的计算资源上自动执行作业。然而,可能需要采取附加步骤以允许编排器110利用与不同于编排器的工作空间相关联的仓库 115联邦学习操作。可以实现代码签名和策略控制以促进利用与不同的工作空间相关联的仓库115的联邦学习。这些特征将在随后的示例中更详细地讨论。 [0028] 仓库115中的数据可能受到各种类型的数据保护和隐私要求的约束。如上面所讨论的,某些司法管辖区可能施行禁止企业或其他组织公开客户数据的数据保护和隐私法。 这些数据保护可以扩展到但不限于财务数据、医学数据、就业数据和其他类型的敏感信息。 组织或企业还可以针对可以如何处理敏感数据施行数据保护和隐私规则。这些数据保护可以扩展到但不限于研究数据、财务数据、会员数据、业务计划、客户或会员信息以及对组织或企业有价值的其他类型的数据。组织或企业信息也可能受到数据保护和隐私法的保护。 [0029] 访问策略控制的一种方法是实现访问控制策略,该访问控制策略标识哪些信息不能由仓库115与编排器110共享。在这样的实现中,任何未被访问控制策略明确禁止共享的数据都可以与编排器110共享。在一些实现中,仓库115可以与工作空间相关联,并且工作空间可以实现访问控制策略,该访问控制策略定义谁可以访问与工作空间相关联的仓库115中的数据、这些用户可以对该数据执行的动作、以及数据可以从仓库115导出到与工作空间相关联的其他仓库还是不与工作空间相关联的其他仓库。在其他实现中,每个仓库115都实现仓库级访问控制策略,该仓库级访问控制策略定义谁可以访问仓库115中的数据、这些用户可以对这些数据执行的动作、以及数据是否可以从仓库115导出。在这样的实现中,任何未被访问控制策略明确禁止共享的数据都可以与编排器110共享。 [0030] 在访问策略控制的第二种方法中,访问控制策略(无论是在工作空间级别还是仓库级别实现)都可以被配置为明确地将可以由仓库115与编排器110共享的数据标识为特定数据。未明确由访问控制策略标识的数据都不能与编排器110共享。在一些实现中,可以与编排器110共享的数据可以仅限于与在仓库中正在训练的ML模型的本地实例相关联的可学习参数信息。访问控制策略还可以允许与ML模型的本地实例的训练相关联的元数据与编排器110共享。该元数据可以包括指示ML模型的本地实例的训练是否成功、ML模型的本地实例的训练需要多长时间才能完成的信息、指示本地实例的训练何时启动以及训练何时完成的信息、标识阻止ML模型的本地实例的训练完成的错误条件的信息。 [0031] 如随后的示例中所讨论的,编排器110自动生成脚本和/或代码以实现联邦学习流水线,并将这些脚本和/或代码提供给要在其中训练ML模型的仓库115中的每个仓库。脚本和/或代码可以实现仓库115的访问控制策略,其中正在执行脚本和/或代码以训练ML模型的本地实例。 [0032] 编排器110可以提供用于创建、维护和/或执行联邦ML流水线的用户界面。用户界面可以自动化许多以前将是手动的和劳动密集的过程的任务。编排器110可以将正在开发的ML模型的主要版本、用于训练这些ML模型的联邦学习流水线的流水线信息、以及与实现ML模型的联邦学习相关的其他数据存储在分配给编排器110的储存资源中。联邦ML流水线用户界面可以访问和/或更新存储在分配给编排器110的储存资源中的此信息。用户界面的示例和可以由此用户界面提供的功能将在随后的示例中详细描述。 [0033] 编排器110还可以被配置为促进设置新的工作空间和/或更新与编排器110相关联的工作空间105外部的工作空间的访问控制策略。 [0034] 以下场景演示了在哪里可以利用图1A和图1B中所示的实现。在基于图1A中所示的实现的第一种场景中,公司A是存在于多个国家中的国际公司,这些国家中的每个国家都与来自仓库115a、115b、115c、115d和115e的仓库相关联。Alice是为公司A的销售部门工作的数据科学家,并且正在开发用于基于客户数据预测销售的机器学习模型。由仓库115a、 115b、115c、115d和115e表示的数据存储中的每个数据存储都与该示例中的编排器110相同的工作空间105相关联。因此,编排器110被允许在仓库115a、115b、115c、115d和115e的计算资源上启动与本文描述的联邦学习过程相关联的作业。在基于图1B中所示的实现的第二种场景中,Ben是A公司的审计部门的数据科学家,并且正在开发用于检测客户会计数据中的异常的机器学习模型。在此示例实现中,仓库115a和115c与第一客户的客户数据相关联,而仓库115b和115d与第二客户相关联。由于隐私和保护法和/或客户对数据隐私和保护的要求,仓库115a、115b、115c和115d中的数据不能从其相应的仓库中复制。因此,与第一客户相关联的仓库115a和115c与工作空间125a相关联,而仓库115b和115d与工作空间125b相关联。仓库115e中的数据与公司A相关联,并且与编排器110落入相同工作空间105内。因此,编排器110可以在仓库115e上启动与本文描述的联邦学习过程相关联的作业。然而,附加策略考虑涉及分别与单独的工作空间125a和125b相关联的仓库115a、115b、115c和115d中启动作业。如将在随后的示例中更详细讨论的,工作空间125a和125b的管理员可以通过策略控制允许编排器110在工作空间125a和125b上启动作业。还可以通过代码签名和其他过程来确保仓库115a、115b、115c和115d的数据存储的安全性和完整性,以确保由仓库125a和125b的计算资源执行的任何软件均源自可信源。 [0035] 以下场景示出其中本文提供的联邦学习技术可以在仓库115中的一个或多个仓库所在的环境中实现的另一实例,其中要用于训练ML模型的数据与不同于编排器110的工作空间相关联。在此示例中,研究医院联盟正在开发用于预测某些疗法在处置与特定疾病相关联的症状方面的功效的ML模型。每家医院都有其自己的仓库115,其包括患者处置数据,但没有一家医院可以向其他医院公开患者特定信息。编排器110可以由这些医院之一实现,并且被配置为与其他医院的仓库115协调联邦学习。编排器110可以维护ML模型的主要版本。编排器110可以向每个仓库提供主ML模型的可学习参数信息,诸如模型权重、偏差和/或其他参数,并且仓库可以各自使用该医院的相应患者数据来训练ML模型的本地实例。一旦本地副本已经被训练,每个仓库115就可以向编排器110提供经更新的可学习参数信息以供聚合。然后,经聚合的权重、偏差和/或其他参数可以用于更新由编排器110维护的主ML模型的权重、偏差和/或其他参数。训练过程可以包括联邦训练的多次迭代以进一步微调ML模型的性能。 [0036] 图2是高层次的示出在根据本文描述的技术的联邦学习会话的迭代期间可以在编排器110与仓库115之间交换的数据的类型的图。编排器115可以向仓库115发送联邦学习请求205。联邦学习请求115可以包括与要使用联邦学习来微调的预训练的机器学习模型相关联的机器学习权重。联邦学习请求115可以触发仓库执行代码,该代码被配置为使得仓库在仓库115的计算资源上实例化ML模型的本地实例,使用仓库115的储存资源中维护的相关私有数据训练模型的本地实例,和/或执行与本文提供的联邦学习技术相关联的其他操作。仓库115可以确定编排器115是否是相同工作空间的部分,并在执行之前认证请求,如随后的示例中所讨论的。一旦仓库115已经完成了所请求的操作,仓库115就可以向编排器110提供联邦学习响应210,其包括ML模型的本地实例的经更新的权重。仓库115还可以提供与ML模型的训练相关联的系统元数据,编排器110可以使用这些系统元数据用于报告目的。系统元数据不包括可能与特定客户相关联的任何客户特定信息。相反,元数据可以包括高级信息,诸如其数据被包含在用于微调ML模型的数据集中的客户的数量、与处理的记录相关联的数据范围、和/或可能对报告目的有用的其他信息。例如,元数据信息可能对数据分析师是有用的,以用于评估模型的性能并用于确定用于进一步微调模型的训练策略(如果需要进一步微调)。编排器110可以将ML模型的性能与一个或多个性能标准比较以确定可能是否需要附加训练迭代。图2中所示的示例操作可以由编排器110和包括要用于微调ML模型的训练的数据的仓库115中的每个仓库执行。 [0037] 图3A和图3B是可以由编排器110提供的示例用户界面的图。用户界面305是用于构建用于实现联邦学习的联邦学习流水线的用户界面的示例。用户界面305提供用于动态定义联邦学习流水线和/或修改联邦学习流水线的部件。联邦学习流水线可以是动态联邦学习流水线,其已经由编排器根据与联邦学习流水线相关联的配置参数自动生成。如前面的示例中所讨论的,配置参数可以包括正在执行联邦学习的ML模型的超参数信息。配置参数还可以包括标识其中要ML模型的本地实例的训练的仓库中的每个仓库的信息、要由仓库为训练ML模型的本地实例而分配的计算资源和/或储存资源的数量、要由每个仓库用于训练ML模型的本地实例而使用的输入数据源或多个数据源、以及用于配置模型的本地实例要由仓库如何训练的其他参数。配置参数还可以包括指示在联邦学习流水线的每个阶段处可以由编排器和/或由仓库执行的预处理和后处理的类型的信息。用户界面305可以为用户提供用于查看、创建和/或修改用于生成ML流水线的配置参数的部件。编排器110可以使用该信息来生成新的联邦训练流水线或修改现有的联邦学习流水线。如前面的示例中所讨论的,编排器110可以至少部分地基于配置参数自动生成用于实现联邦学习流水线的各个阶段的脚本和/或代码。编排器110可以被配置为将代码和/或脚本推送到参与ML模型的训练的仓库中的每个仓库。 [0038] 在用户界面305中,用户可以向联邦学习流水线添加阶段、从流水线中删除阶段和/或修改流水线的阶段的参数。在一些实现中,用户界面305可以包括用于选择和向流水线添加阶段的工具栏340。工具栏340可以提供拖放界面,该拖放界面提供用户可以添加到联邦学习流水线的阶段的类型的图形表示。用户还可以单击或以其他方式选择联邦流水线的阶段以查看和/或修改该流水线的阶段的参数。用户界面305还可以包括控件330,其使得用户能够启动、暂停和/或停止由流水线定义的联邦学习过程。编排器110还可以对用户认证,以确定是否允许用户利用编排器110来创建、修改或执行联邦学习流水线。 [0039] 在图3A中所示的示例中,联邦学习流水线包括五个阶段310a‑310e,以演示可能被包含在联邦学习流水线中的阶段的类型中的一些。每个阶段都与以下中的一个状态相关联:待处理、运行或已完成。已完成状态指示与联邦学习流水线的阶段相关联的操作已经成功完成。运行状态指示与联邦学习流水线的阶段相关联的操作当前正在由编排器110和/或仓库115中的一个或多个仓库执行。待处理状态指示联邦学习流水线的阶段未到达并且一旦前面的阶段已经完成就等待执行。 [0040] 在预处理阶段310a中,用户可以定义可以采取的各种动作来初始化ML模型的主要版本以准备联邦训练。例如,可以使用一个或多个公共可用数据集对ML模型的主要版本预训练。预训练过程可以用于初始化ML模型,ML模型然后将使用联邦学习过程对其微调以使模型适应特定任务。此外,预处理阶段可以包括数据的数据标准化、空值的移除或替换、和/或其他操作以准备要用于预训练模型的数据。要执行的特定预处理操作可能取决于要由模型处理的数据的类型。用户可以点击或以其他方式激活阶段310a以使得编排器110显示可以由用户配置的预处理阶段的详细信息。用户可以指定要用于执行预处理阶段的编排器 110的计算和储存资源。用户可以标识要用于预训练ML模型的一个或多个训练数据集,并且还可以创建或定制要执行的一个或多个脚本或代码以执行ML模型的预训练。 [0041] 图3中所示的示例还包括训练迭代阶段310b、310c和310d,他们各自表示应用于ML模型的联邦训练过程的迭代。每次迭代表示由编排器110和将在其上发生ML模型的联邦学习的相应仓库115执行的操作的集合。将由每个仓库115使用在该仓库115的储存资源中本地可用的一批训练数据来训练ML模型的本地实例。批大小可以等于完整的训练数据集,或者可以是仓库115中可用的完整的训练数据集的子集。例如,如果训练数据包括10,000个训练示例并且批大小为5,000个训练示例,则将需要两次迭代才能在整批训练示例上训练ML模型。训练示例的数量和批大小可能取决于仓库115中的每个仓库中包含的数据集的大小而变化。在一些实现中,编排器110可以被配置为查询仓库115中的每个仓库以获得每个仓库可用的记录数,并基于批大小确定推荐的迭代次数。编排器110可以默认自动将推荐的迭代次数添加到联邦学习流水线。因此,编排器110可以向联邦学习流水线添加其他阶段以适应推荐的迭代次数。然而,可以通过删除已经由编排器自动添加到流水线的训练迭代阶段或通过手动添加其他训练迭代阶段向用户提供增加或减少流水线中包含的训练迭代阶段的数量的选项。训练迭代阶段还可以允许用户定义附加信息,诸如包括要在其上训练模型的数据的仓库115的计算和储存资源的位置。图3B提供了呈现可以在训练迭代阶段期间执行的操作的详细信息的示例用户界面350。由编排器110自动添加或由用户手动添加的训练迭代阶段可以被自动填充有配置参数、可执行脚本和/或代码、以及用于实现联邦训练流水线的训练迭代阶段的其他信息。 [0042] 训练迭代阶段310b、310c和310d还可以与一个或多个完成条件相关联,该一个或多个完成条件当得到满足时指示ML模型已经被训练为达到期望的性能阈值。编排器110可以评估完成条件以确定是否需要附加联邦训练迭代。然后,编排器110可以根据需要继续附加训练阶段或继续进行联邦训练流水线的接下来的阶段。 [0043] 后处理阶段310e可以对由联邦学习流水线的先前阶段得到的机器学习模型执行各种操作。后处理阶段310e可以包括更新由编排器110维护的ML模型的主实例的权重。后处理阶段310还可以包括将经更新的ML模型部署到一个或多个仓库115的计算环境和/或其他计算环境,以用于生成用于已经训练ML模型的目的的预测。除了这些示例操作中的一个或多个之外或代替这些示例操作中的一个或多个的其他操作可以在后处理阶段310e中执行。 [0044] 图3B提供了呈现可以在训练迭代阶段期间执行的操作的详细信息的示例用户界面350。当用户点击或以其他方式激活图3A中所示的联邦学习流水线的训练迭代阶段时,可以呈现用户界面350。用户界面350可以呈现对联邦学习过程的各种输入的图形表示,以及在训练迭代阶段(诸如图3A中所示的训练迭代阶段310b、310c和310d)期间对那些输入执行的操作。图形表示可以被呈现为流程图,该流程图示出了数据如何在训练迭代阶段内从一个操作流向另一操作,以及编排器110如何评估和利用训练迭代阶段的结果来确定ML模型的训练是否应该继续或者已经达到期望的性能阈值。 [0045] 预训练的模型信息355表示由编排器110维护的主ML模型的版本的模型权重。预训练的模型355可以是由预处理阶段310a或由先前训练迭代阶段(诸如图3A中所示的阶段 310b或310c)生成的预训练的模型的初始版本。用户可以能够通过单击或以其他方式激活用户界面350中所示的预训练的模型信息355的表示来查看包括模型权重的预训练的模型信息355。预训练的模型信息355可以包括模型的版本信息,该版本信息标识正在训练的版本以及图3A中所示的联邦训练流水线的正在执行的当前训练阶段的指示。一些预训练的模型信息355可能在联邦训练流水线内的训练迭代阶段被到达并待处理或完成之前不可用。 [0046] 输入数据源360a表示要用于训练模型的与仓库115a相关联的数据。输入数据源 360b表示要用于训练模型的与仓库115b相关联的数据。输入数据源360c表示要用于训练模型的与仓库115c相关联的数据。输入数据源360d表示要用于训练模型的与仓库115d相关联的数据。输入数据源360e表示要用于训练模型的与仓库115e相关联的数据。输入数据源 360a、360b、360c、360d和360e统称为输入数据源360。每个相应的仓库工作使用数据源360中包含的相应私有数据训练ML模型的本地版本。输入数据源360中的每个中的数据在联邦训练过程期间保持在其相应的仓库内,并且不在仓库边界的外部公开。虽然本文所示的示例包括五个输入数据源360,但输入数据源360的数量可能因实现而变化,这具体取决于要根据其训练特定ML模型的源的数量。 [0047] 用户界面350可以提供用于添加输入数据源360的各种部件。在一些实现中,用户界面350可以包括按钮或其他控件,其当被激活时,允许用户定义包括要在其上训练ML模型的数据的新数据源。用户界面350可以提供用于输入标识分配给其中要训练模型所在的仓库的计算和储存资源的信息的部件。在一些实现中,用户界面350可以向用户呈现默认配置文件,诸如YAML文件,其可以利用与仓库相关联的计算位置和储存位置定制。在其他实现中,用户界面提示用户输入此信息并自动为用户生成配置文件。配置文件可以与对与相应输入数据源360相关联的相应仓库115的联邦学习请求205一起提供给仓库,使得模型微调器365在正确的数据源上操作。在一些实现中,配置文件指定是否要使用相应输入数据源 360中包含的数据中的全部或其子集来训练ML模型实例。在一些实现中,用户界面350可以为用户提供用于定义标识在训练模型时应该使用来自输入数据源360的哪些数据的部件。 [0048] 每个输入数据源360与相应模型微调器365相关联。模型微调器365被配置为使用来自其中正在执行训练的仓库的输入数据源360的数据实例化和训练ML模型的本地实例。 模型微调器360基于预训练的模型信息355中提供的权重实例化ML模型的本地实例。在一些实现中,模型微调器365使用诸如但不限于Python的解释语言来实现,该解释语言定义了可以在数据上执行以微调模型的动作。模型微调器365a、365b、365c、365d和365e中的每个模型微调器中实现的逻辑可以基本上相同。每个模型微调器365可以利用与相应数据源360相关联的配置参数来确定要用于微调ML模型的本地实例的数据源和计算资源。模型微调器 365可以由分配给相应仓库115的计算资源执行,并且在逻辑上被隔离以防止模型微调器 365将任何数据导出到仓库115的外部或者访问用于存储要用于训练模型的数据的定义的存储器位置的外部的任何存储器。 [0049] 在由模型微调器单元365完成ML模型的训练后,模型微调器365将模型的微调得到的权重提供给与仓库115相关联的数据递送单元370a、370b、370c、370d和370e中的相应数据递送单元370。数据递送单元370被配置为将联邦学习响应210发送到具有由模型微调器 365生成的模型的本地版本的经更新的ML模型权重的编排器110。联邦学习响应可以包括与训练过程相关的状态信息,诸如在训练过程期间可能已经发生的错误条件。错误条件指示对于与失败的阶段相关联的操作无法完成模型的本地实例的微调。编排器110确定是否停止联邦训练过程的当前迭代或者尝试将联邦学习请求205重新提交给经历错误的相应仓库 115。 [0050] 编排器110实现模型权重聚合单元375和模型评估单元380。模型权重聚合单元375被配置为从仓库中的每个仓库接收经更新的模型权重,并对经更新的模型权重执行聚合逻辑以生成由编排器110维护的主ML模型的经更新的版本。在一些实现中,聚合逻辑使用诸如但不限于Python的脚本语言来实现。在一些实现中,聚合逻辑可以对来自模型中的每个模型的权重平均以确定聚合模型权重。然而,用户界面350可以为用户提供用于定制聚合逻辑以满足正在开发的ML模型的要求的部件。 [0051] 模型权重聚合单元375将经更新的ML模型提供给模型评估单元380。模型评估单元 380使用参考数据评估经更新的ML模型的性能。模型评估单元380提供参考数据作为ML模型的输入,并将由模型输出的预测与参考输出数据比较。模型评估单元380可以被配置为输出评估的结果,该评估的结果可以由编排器110用于确定如何在联邦学习流水线上继续进行。 例如,编排器110可以确定模型需要附加训练,并且可以确定应该执行另一次训练迭代。编排器110可以确定图3A中所示的联邦学习流水线是否包括后续训练迭代阶段,诸如训练迭代阶段310b、310c或310c。如果编排器110确定需要附加训练,但当前在联邦学习流水线中未包含任何后续训练迭代阶段,则编排器110可以被配置为动态更新联邦学习流水线以包括一个或多个附加迭代阶段,以在正在执行联邦学习流水线的同时进一步微调ML模型。这种方法的技术优点在于,可以在ML模型的训练过程中的同时调整联邦学习流水线以避免修改联邦学习流水线并重新启动训练过程的需要。因此,通过避免重新启动ML模型的训练的需要,可以节省计算、存储器和网络资源。用户界面305和/或310可以包括用于供用户配置编排器何时可以添加附加训练迭代阶段并对可以自动添加多少附加迭代阶段施加限制的部件。这些限制可以防止编排器110继续将ML模型的训练自动扩展到由用户设置的限制以外。 [0052] 为了确保数据隐私和保护要求被满足,可以对模型微调器365、数据递送单元370和/或要在相应仓库115上执行的其他脚本或代码数字签名,以确保脚本或代码已经由编排器110提供并且自脚本或代码被签名以后未被改变或损坏。可以使用与编排器110相关联的私钥对脚本和/或代码签名。仓库115可以使用与编排器110相关联的公钥来验证脚本和/或代码未被改变。每个仓库115还可以实现策略服务,该策略服务被配置为确定是否允许编排器110在仓库115的计算资源上运行作业。策略服务可以确定脚本或代码是否被签名、脚本或代码是否被配置为访问与他们正在其上运行的相应仓库115相关联的数据存储资源,以及是否仅将不包括任何客户特定信息的模型权重和/或有限的系统元数据递送到仓库的外部。如果策略条件中的任何都得不到满足,则仓库115可以禁止执行联邦学习过程和/或禁止将所得到的数据提供给编排器110。编排器110可以从仓库115接收无法执行联邦学习过程的指示。然后,编排器110可以提醒管理员可能需要手动干预来解决阻止联邦学习过程完成的问题。 [0053] 图3C是示出编排器110动态更新图3A中所示的联邦学习流水线的示例的图。该图的左侧示出了联邦学习流水线的第一状态,其中训练迭代阶段310d当前正在运行,而该图的右侧示出了联邦学习流水线的第二状态,其中编排器110已经动态更新了流水线。编排器 110的模型评估单元380分析由模型权重聚合单元375生成的主ML模型的经更新的版本的性能,并确定需要附加训练迭代阶段310来进一步改进主ML模型的性能。编排器110被配置为更新联邦学习流水线以包括附加训练迭代阶段310f,其中对ML模型执行附加训练。编排器 110被配置为自动生成执行附加训练迭代阶段310f所需的代码和/或脚本,并将代码提供给其中要执行ML模型的本地实例的训练的仓库115b、115c、115d和115e。编排器110还可以向仓库115b、115c、115d和115e中的每个提供经更新的配置参数,以实现经更新的联邦学习流水线。 [0054] 图3D是示出编排器110动态更新联邦学习流水线的另一示例的图。在图3D中所示的示例实现中,该图的左侧示出了联邦学习流水线的第一状态,其中训练迭代阶段310c当前正在运行,而该图的右侧示出了联邦学习流水线的第二状态,其中编排器110已经动态更新了流水线。在图3D中所示的示例中,编排器110的模型评估单元380分析由模型权重聚合单元375生成的主ML模型的经更新的版本的性能,并确定不需要附加训练迭代阶段310。在该示例中,编排器移除待处理的训练迭代阶段310d。联邦学习流水线被更新,使得在完成阶段310c后,联邦学习流水线继续进到后处理阶段310e。 [0055] 图3C和图3D中所示的示例实现是编排器110可以修改联邦学习流水线的几种方式的示例。在其他实现中,编排器110可以以其他方式改变联邦学习流水线的流程。例如,编排器110可以向联邦学习流水线添加其他类型的附加阶段、修改现有阶段或从联邦学习流水线中移除阶段。在一些实现中,图3A中所示的用户界面305可以为用户提供用于定义触发编排器110向联邦学习流水线添加附加阶段、修改现有阶段或从联邦学习流水线中移除阶段的条件的部件。 [0056] 图4是用于使用联邦学习来训练可以由编排器110实现的机器学习模型的示例过程400的示例流程图。 [0057] 过程400可以包括操作410,其在第一仓库中接收配置参数以用于使用存储在多个第二仓库中的数据执行机器学习模型的联邦训练。第一仓库可以是与编排器110相关联的仓库,而多个第二计算环境可以是前面的示例1中讨论的仓库115。编排器110可以从被授权访问和利用编排器110来训练机器学习模型的用户接收用于训练机器学习模型的配置参数。配置参数可以包括但不限于编排器110的计算和储存资源的位置以及维护将用于训练ML模型的数据的仓库115。配置参数还可以包括与要训练的机器学习模型相关联的超参数和/或可以用于配置联邦学习流水线的行为的其他参数。 [0058] 过程400可以包括操作420,其基于配置参数生成联邦学习流水线以用于自动执行与机器学习模型的联邦学习相关联的多个任务。操作420还包括生成联邦学习流水线,包括自动生成用于执行多个任务的代码、脚本或两者以用于在多个第二仓库中的每个相应仓库中使用存储在相应仓库中的数据训练机器学习模型的本地实例,以及用于将与机器学习模型的本地实例相关联的相应可学习参数信息提供给第一仓库,同时确保与用于训练机器学习模型的本地实例的数据相关联的数据保护和隐私要求被满足。用于训练机器学习模型的本地实例的数据不在相应仓库的外部公开。图3A、图3B、图3C和图3D中所示的用户界面示出了联邦学习流水线的各个方面。 [0059] 过程400可以包括操作430,其使得多个第二仓库中的每个相应仓库根据联邦学习流水线训练机器学习模型的本地实例。如前面的示例中所讨论的,编排器110可以自动执行在联邦学习流水线的阶段中定义的各种过程,包括协调在用于训练模型的数据所在的仓库 115上执行各种操作。执行联邦学习的第二仓库115集合中的每个仓库在联邦学习流水线的每个阶段执行由编排器110生成的代码和/或脚本。如前面的示例中所讨论的,可以实现代码签名和/或策略控制以确保保护多个第二仓库115中包含的数据的完整性和隐私。 [0060] 过程400可以包括操作440,其在第一仓库处获得与多个第二仓库中的每个第二仓库的机器学习模型的本地实例相关联的可学习参数信息。多个第二仓库中的每个第二仓库 115向编排器110提供机器学习模型的本地实例的权重、偏差和/或其他可学习参数信息,使得由编排器110维护的机器学习模型的主实例可以基于由机器学习模型的本地实例的学习而被微调。 [0061] 过程400可以包括操作450,其聚合从多个第二仓库获得的可学习参数信息以获得已经根据可学习参数信息已微调的机器学习模型的主实例。编排器110聚合从仓库中的每个仓库接收到的权重、偏差和/或其他可学习参数信息以微调由编排器110维护的机器学习模型的主实例。 [0062] 本文呈现了结合图1至图4描述的系统、设备和技术的详细示例,以说明本公开及其益处。此类使用示例不应该被解释为对本公开的逻辑过程实施例的限制,也不应该将与本文描述的用户界面方法不同的用户界面方法视为在本公开的范围之外。应理解,对显示或呈现项目的引用(诸如但不限于在显示设备上呈现图像、经由一个或多个扬声器呈现音频、和/或使设备振动)包括发出使得或合理地预期使得设备或系统显示或呈现该项目的指令、命令和/或信号。在一些实施例中,图1至图4中描述的各种特征在相应的模块中实现,这些模块也可以被称为和/或包括逻辑、组件、单元和/或机制。模块可以构成软件模块(例如,体现在机器可读介质上的代码)或硬件模块。 [0063] 在一些示例中,硬件模块可以机械地、电子地或利用其任何适当的组合实现。例如,硬件模块可以包括被配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以包括专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可以包括由软件临时配置为执行某些操作的可编程逻辑或电路,并且可以包括用于这种配置的机器可读介质数据和/或指令的一部分。例如,硬件模块可以包括包含在被配置为执行一组软件指令的可编程处理器内的软件。将认识到,机械地、在专用且永久配置的电路中、或在(例如,由软件配置的)临时配置的电路中实现硬件模块的决定可能由成本、时间、支持和工程考虑因素驱动。 [0064] 因此,短语“硬件模块”应该被理解为包含能够执行某些操作的有形实体,并且可以以某种物理方式被配置或布置,其是物理上构造、永久配置(例如,硬连线)和/或临时配置为以某种方式操作或执行本文描述的某些操作的(例如,编程的)实体。如本文所使用的,“硬件实现的模块”是指硬件模块。考虑其中硬件模块被临时配置(例如,编程的)的示例,硬件模块中的每个硬件模块不需要在任何一个时间实例处被配置或实例化。例如,在硬件模块包括由软件配置为成为专用处理器的可编程处理器的情况下,可编程处理器可以在不同时间处被配置为分别不同的专用处理器(例如,包括不同的硬件模块)。软件可以相应地配置一个或多个处理器,例如,在一个时间实例中构成特定硬件模块,并在不同时间实例处构成不同的硬件模块。使用一个或多个处理器实现的硬件模块可以被称为“处理器实现的”或“计算机实现的”。 [0065] 硬件模块可以向其他硬件模块提供信息,并且从其他硬件模块接收信息。因此,所描述的硬件模块可以被视为通信地耦合。在多个硬件模块同时存在的情况下,可以通过硬件模块中的两个或更多个硬件模块之间或之中的信号传输(例如,通过适当的电路和总线)实现通信。在多个硬件模块在不同时间处被配置或实例化的实施例中,此类硬件模块之间的通信可以例如通过在多个硬件模块可以访问的存储器设备中储存和检索信息来实现。例如,一个硬件模块可以执行操作并将输出存储在存储器设备中,并且然后另一硬件模块可以访问该存储器设备以检索和处理存储的输出。 [0066] 在一些示例中,方法的操作中的至少一些可以由一个或多个处理器或处理器实现的模块执行。此外,一个或多个处理器还可以用于支持在“云计算”环境中或作为“软件即服务”(SaaS)执行相关操作的性能。例如,操作中的至少一些操作可以由多台计算机(作为包括处理器的机器的示例)执行,并且/或者在多台计算机之中执行,其中这些操作可经由网络(例如,互联网)和/或经由一个或多个软件界面(例如,应用程序界面(API))访问。操作中的某些的执行可以分布在处理器之中,不仅驻留在单个机器中,而且可以跨若干机器部署。 处理器或处理器实现的模块可以位于单个地理位置中(例如,在家庭或办公室环境或服务器场内),或者可以跨多个地理位置分布。 [0067] 图5是示出示例软件架构502的框图500,其各个部分可以与本文描述的各种硬件架构结合使用,这些硬件架构可以实现上述特征中的任何。图5是软件架构的非限制性示例,并且将理解,可以实现许多其他架构以促进本文描述的功能。软件架构502可以在硬件(诸如图6的机器600)上执行,该硬件包括处理器610、存储器630和输入/输出(I/O)组件650等。示出了代表性硬件层504并且其可以表示例如图6的机器600。代表性硬件层504包括处理单元506和相关联的可执行指令508。可执行指令508表示软件架构502的可执行指令,包括本文描述的方法、模块等的实现。硬件层504还包括存储器/储存510,其还包括可执行指令508和随附数据。硬件层504还可以包括其他硬件模块512。由处理单元506持有的指令508可以是由存储器/储存510持有的指令508的部分。 [0068] 示例软件架构502可以被概念化为层,每个层提供各种功能。例如,软件架构502可以包括层和组件,诸如操作系统(OS)514、库516、框架518、应用520和表示层544。在操作上,应用520和/或层内的其他组件可以调用对其他层的API调用524并接收对应的结果526。示出的层本质上是代表性的,而其他软件架构可以包括附加的或不同的层。例如,一些移动或专用操作系统可能不提供框架/中间件518。 [0069] OS 514可以管理硬件资源并提供公共服务。OS 514可以包括例如内核528、服务 530和驱动器532。内核528可以充当硬件层504与其他软件层之间的抽象层。例如,内核528可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络化、安全设置等。服务530可以为其他软件层提供其他公共服务。驱动器532可以负责控制底层硬件层504或与底层硬件层504对接。例如,驱动器532可以包括显示驱动器、相机驱动器、存储器/储存驱动器、外围设备驱动器(例如,经由通用串行总线(USB))、网络和/或无线通信驱动器、音频驱动器等,这具体取决于硬件和/或软件配置。 [0070] 库516可以提供可以由应用520和/或其他组件和/或层使用的公共基础架构。库 516通常提供供其他软件模块使用以执行任务的功能,而不是直接与OS 514交互。库516可以包括系统库534(例如,C标准库),其可以提供诸如存储器分配、字符串操作、文件操作的功能。此外,库516可以包括API库536,诸如媒体库(例如,支持图像、声音和/或视频数据格式的呈现和操纵)、图形库(例如,用于在显示器上渲染2D和3D图形的OpenGL库)、数据库库(例如,SQLite或其他关系数据库功能)和网络库(例如,可以提供网络浏览功能的WebKit)。 库516还可以包括各种其他库538以向应用520和其他软件模块提供许多功能。 [0071] 框架518(有时也称为中间件)提供更高级的公共基础架构,其可以由应用520和/或其他软件模块使用。例如,框架518可以提供各种图形用户界面(GUI)功能、高级资源管理或高级位置服务。框架518可以为应用520和/或其他软件模块提供广泛的其他API。 [0072] 应用520包括内置应用540和/或第三方应用542。内置应用540的示例可以包括但不限于联系人应用、浏览器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用542可以包括由特定平台的供应商以外的实体开发的任何应用。应用520可以使用经由OS 514、库516、框架518和表示层544可用的功能来创建用户界面以与用户交互。 [0073] 一些软件架构使用虚拟机,如由虚拟机548所示出的。虚拟机548提供执行环境,其中应用/模块可以像他们在硬件机器(例如,诸如图6的机器600)上执行一样执行。虚拟机 548可以由主机OS(例如,OS 514)或管理程序托管,并且可以具有虚拟机监视器546,其管理虚拟机548的操作以及与主机操作系统的互操作。可能不同于虚拟机外部的软件架构502的软件架构在虚拟机548内执行,诸如OS 550、库552、框架554、应用556和/或表示层558。 [0074] 图6是示出被配置为从机器可读介质(例如,机器可读介质)读取指令并执行本文描述的特征中的任何的示例机器600的组件的框图。示例机器600是计算机系统的形式,在其内可以执行用于使得机器600执行本文描述的特征中的任何的指令616(例如,以软件组件的形式)。因此,指令616可以用于实现本文描述的模块或组件。指令616使得未编程和/或未配置的机器600作为被配置为执行所描述的特征的特定机器操作。机器600可以被配置为作为独立设备操作,或者可以耦合(例如,联网)到其他机器。在联网部署中,机器600可以在服务器‑客户端网络环境中以服务器机器或客户端机器的身份操作,或者在对等或分布式网络环境中作为节点操作。机器600可以被体现为例如服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、游戏和/或娱乐系统、智能电话、移动设备、可穿戴设备(例如,智能手表)和物联网(IoT)设备。此外,尽管仅示出了单个机器600,但术语“机器”包括单独或联合执行指令616的机器的汇集。 [0075] 机器600可以包括处理器610、存储器630和I/O组件650,他们可以经由例如总线 602通信地耦合。总线602可以包括经由各种总线技术和协议耦合机器600的各个元件的多个总线。在示例中,处理器610(包括例如中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC或其适当组合)可以包括一个或多个处理器612a至612n,他们可以执行指令616并处理数据。在一些示例中,一个或多个处理器610可以执行由一个或多个其他处理器610提供或标识的指令。术语“处理器”包括多核心处理器,其包括可以同时执行指令的核心。尽管图6示出了多个处理器,但机器600可以包括具有单个核心的单个处理器、具有多个核心的单个处理器(例如,多核心处理器)、各自具有单个核心的多个处理器、各自具有多个核心的多个处理器、或其任何组合。在一些示例中,机器600可以包括分布在多个机器之中的多个处理器。 [0076] 存储器/储存设备630可以包括主存储器632、静态存储器634或其他存储器,以及储存单元636,两者均可由处理器610访问,诸如经由总线602。储存单元636和存储器632、 634存储实现本文描述的功能中的任何一个或多个的指令616。存储器/储存设备630还可以存储处理器610的临时、中间和/或长期数据。指令616在其执行期间还可以完全或部分地驻留在存储器632、634内、储存单元636内、处理器610中的至少一个处理器内(例如,命令缓冲器或高速缓冲存储器内)、I/O组件650中的至少一个I/O组件内的存储器内、或其任何适当的组合。因此,存储器632、634、储存单元636、处理器610中的存储器、以及I/O组件650中的存储器是机器可读介质的示例。 [0077] 如本文所使用的,“机器可读介质”是指能够临时或永久存储指令和数据的设备,这些指令和数据使得机器600以特定方式操作,并且可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪存存储器、光储存介质、磁储存介质和设备、高速缓冲存储器、网络可访问或云储存、其他类型的储存和/或其任何适当的组合。术语“机器可读介质”适用于用于存储指令(例如,指令616)以供机器600执行的单个介质、或多个介质的组合,使得指令当由机器600的一个或多个处理器610执行时使得机器600执行本文描述的特征中的一个或多个。因此,“机器可读介质”可以是指单个储存设备,以及包括多个储存装置或设备的“基于云的”储存系统或储存网络。术语“机器可读介质”不包括信号本身。 [0078] I/O组件650可以包括各种硬件组件,这些硬件组件适于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量等。特定机器中包含的具体I/O组件650将取决于机器的类型和/或功能。例如,诸如移动电话的移动设备可以包括触摸输入设备,而无头服务器或IoT设备可以不包括这样的触摸输入设备。图6中所示的I/O组件的特定示例决不是限制性的,并且其他类型的组件可以被包括在机器600中。I/O组件650的分组仅仅是为了简化本讨论,并且分组决不是限制性的。在各种示例中,I/O组件650可以包括用户输出组件652和用户输入组件654。用户输出组件652可以包括例如用于显示信息的显示组件(例如,液晶显示器(LCD)或投影仪)、声学组件(例如,扬声器)、触控组件(例如,振动电机或力反馈设备)、和/或其他信号发生器。用户输入组件654可以包括例如字母数字输入组件(例如,键盘或触摸屏)、指向组件(例如,鼠标设备、触摸板或另一指向仪器)和/或被配置用于接收诸如用户命令和/或选择的触觉输入组件(例如,提供触摸或触摸手势的位置和/或力的物理按钮或触摸屏)的各种用户输入。 [0079] 在一些示例中,I/O组件650可以包括生物识别组件656、运动组件658、环境组件 660和/或定位组件662,以及各种其他物理传感器组件。生物识别组件656可以包括例如用于检测身体表情(例如面部表情、声音表达、手势或身体姿势、或眼球追踪)、测量生物信号(例如心率或脑电波)和标识人(例如经由基于语音、视网膜、指纹和/或面部的标识)的组件。运动组件658可以包括例如加速度传感器(例如加速度计)和旋转传感器(例如陀螺仪)。 环境组件660可以包括例如照明传感器、温度传感器、湿度传感器、压力传感器(例如气压计)、声学传感器(例如用于检测环境噪声的麦克风)、接近传感器(例如附近对象的红外感测)和/或可以提供对应于周围物理环境的指示、测量或信号的其他组件。定位组件662可以包括例如位置传感器(例如全球定位系统(GPS)接收器)、高度传感器(例如可以从中导出高度的气压传感器)和/或取向传感器(例如磁力计)。 [0080] I/O组件650可以包括通信组件664,其实现能用于经由相应的通信耦合672和682将机器600耦合到(多个)网络670和/或(多个)设备680的各种技术。通信组件664可以包括一个或多个网络接口组件或其他适当的设备以与(多个)网络670对接。通信组件664可以包括例如适于提供有线通信、无线通信、蜂窝通信、近场通信(NFC)、蓝牙通信、Wi‑Fi和/或经由其他模态的通信的组件。(多个)设备680可以包括其他机器或各种外围设备(例如,经由USB耦合)。 [0081] 在一些示例中,通信组件664可以检测标识符或包括适于检测标识符的组件。例如,通信组件664可以包括射频识别(RFID)标签读取器、NFC检测器、光学传感器(例如,一维或多维条形码,或其他光学代码)和/或声学检测器(例如,用于标识标记的音频信号的麦克风)。在一些示例中,位置信息可以基于来自通信组件662的信息来确定,诸如但不限于经由互联网协议(IP)地址的地理位置、经由Wi‑Fi、蜂窝、NFC、蓝牙或其他无线站标识和/或信号三角测量的位置。 [0082] 虽然已经描述了各种实施例,但该描述旨在为示例性的,而不是限制性的,并且应理解,在实施例的范围内还有多得多的可能的实施例和实现。虽然在附图中示出了特征的许多可能组合,并且在本详细描述中进行了讨论,但所公开的特征的许多其他组合是可能的。除非特别限制,否则任何实施例的任何特征都可以与任何其他实施例中的任何其他特征或元件组合使用或替代任何其他实施例中的任何其他特征或元件。因此,应理解,本公开中示出和/或讨论的特征中的任何都可以以任何适当的组合一起实现。因此,除了根据所附权利要求及其等同物之外,实施例不应受到限制。此外,可以在所附权利要求的范围内进行各种修改和变化。 [0083] 虽然前面已经描述了被认为是最佳模式和/或其他示例的内容,但应理解,可以在其中进行各种修改,并且可以以各种形式和示例实现本文公开的主题,并且可以将教导应用于众多应用中,本文已经描述了其中的仅一些应用。旨在由所附权利要求要求保护落入本教导的真实范围内的任何和所有应用、修改和变型。 [0084] 除非另有说明,否则本说明书中、包括在随后的权利要求中阐述的所有测量、值、额定值、位置、大小、尺寸和其他规格都是近似的,而不是精确的。他们旨在具有与他们所涉及的功能以及他们所属领域的惯例一致的合理范围。 [0085] 保护范围仅受所附权利要求的限制。该范围旨在并且应该被解释为尽可能广泛,与根据本说明书和随后的审查历史进行解释时权利要求中使用的语言的通常含义一致,并涵盖所有结构和功能等效物。尽管如此,任何权利要求都不旨在包涵未满足专利法第101、 102或103条要求的主题,其也不应该以这种方式进行解释。在此声明对此类主题的任何非预期包涵均予以否认。 [0086] 除了如上面直接陈述的之外,任何陈述或说明的内容均不旨在或不应该被解释为使得向公众捐献任何组件、步骤、特征、对象、益处、优点或等同物,无论其是否在权利要求中记载。 [0087] 应理解,本文中使用的术语和表达具有与相对于其对应的相应查询和研究领域赋予此类术语和表达的普通含义,除非本文已经另外阐述了具体含义。诸如第一和第二等的关系术语可以仅用于区分一个实体或动作与另一实体或动作,而不一定要求或暗示在此类实体或动作之间存在任何实际此类关系或顺序。术语“包括”、“包含”或其任何其他变型旨在覆盖非排他性包含,使得包括元件的列表的过程、方法、物品或装置不仅包括这些元件,而且还可以包括未明确列出或此类过程、方法、物品或装置固有的其他元件。在没有进一步约束的情况下,以“一”或“一个”开头的元件并不排除在包括该元件的过程、方法、物品或装置中存在附加相同元件。 [0088] 提供公开的摘要以允许读者快速地确定本技术公开的性质。提交时应理解,其将不被用于解释或限制权利要求的范围或含义。此外,在前述详细说明中,可以看出,为了简化本公开的目的,各种特征在各种示例中被组合在一起。这种公开方法不应被解释为反映权利要求需要比每个权利要求中明确记载的更多的特征的意图。相反,如所附权利要求所反映的,发明主题处于单个公开的示例的少于全部的特征中。因此,所附权利要求在此并入详细说明中,其中每个权利要求都作为单独要求的主题独立存在。