首页 / 专利库 / 专利权 / 申请 / 国际申请 / 修改 / 修改计算图

修改计算图

阅读:144发布:2020-05-11

专利汇可以提供修改计算图专利检索,专利查询,专利分析的服务。并且包括在计算机存储介质上编码的 计算机程序 的方法、系统和装置,用于 修改 计算图以包括发送 节点 和接收节点。通过将发送节点和接收节点插入到每个子图中,可以有效地处理执行计算图的不同子图的操作的独特设备之间的通信。当被执行时,这些发送节点和接收节点所代表的操作可以使得独特设备对能够以自给自足的方式彼此进行通信。这将协同通信的负担从后端移开,这为处理这种计算图表示的系统提供了在设备执行子图的同时执行一个或多个其他过程的机会。,下面是修改计算图专利的具体信息内容。

1.一种计算机实现的方法,包括:
获得表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应操作,并且其中每个有向边将相应第一节点连接至相应第二节点,所述相应第二节点表示接收由所述相应第一节点表示的操作的输出作为输入;
获得识别跨多个设备的所述计算图的分配的数据,其中所述分配将所述计算图中的每个节点指派给所述多个设备中的相应设备;
识别在所述计算图中的一个或多个跨设备有向边,其中每个跨设备有向边是将相应第一节点连接到相应第二节点的有向边,所述相应第二节点在所述分配中被指派给与所述相应第一节点不同的设备;
对于每个跨设备有向边:
在所述计算图中的所述相应第一节点和所述相应第二节点之间插入发送节点,在所述操作图中的所述发送节点和所述相应第二节点之间插入接收节点,以及修改所述分配以将所述发送节点指派给与所述相应第一节点相同的设备以及将所述接收节点指派给与所述相应第二节点相同的设备;以及
根据所修改的分配将由所述计算图中的节点表示的操作指派给所述多个设备。
2.根据权利要求1所述的方法,其中:
所述发送节点表示以下操作:(i)接收由所述相应第一节点表示的操作的输出作为输入,并且(ii)将由所述相应第一节点表示的操作的输出作为输出提供给所述接收节点;以及
所述接收节点表示以下操作:(i)接收由所述发送节点表示的操作的输出作为输入,并且(ii)将由所述发送节点表示的操作的输出作为输出提供给所述相应第二节点。
3.根据权利要求2所述的方法,其中,由所述相应第一节点表示的操作的输出是张量。
4.根据权利要求2或3所述的方法,其中:
由所述接收节点表示的操作进一步(iii)向所述发送节点提供将由所述发送节点表示的操作的输出作为输出的请求;以及
由所述发送节点表示的操作进一步(ii)响应于从所述接收节点接收到的一个或多个请求,将由所述相应第一节点表示的操作的输出作为输出提供给所述接收节点。
5.根据权利要求1、2、3或4所述的方法,其中,获得识别跨所述多个设备的所述计算图的所述分配的数据包括:
获得识别跨在一个或多个机器中包括的硬件资源的所述计算图的分配的数据。
6.根据权利要求5所述的方法,其中,发送节点和接收节点对中的每个节点表示操作,该操作接收根据与该发送节点和接收节点对被指派给的每个硬件资源和机器对应的协议进行通信的对中的另一节点表示的操作的输出作为输入。
7.根据任一前述权利要求所述的方法,其中:
在所述计算图中的所述相应第一节点和所述相应第二节点之间插入所述发送节点进一步包括对于每个跨设备有向边:
在所述发送节点和所述相应第一节点之间插入有向边;以及
在所述操作图中的所述发送节点和所述相应第二节点之间插入所述接收节点进一步包括对于每个跨设备有向边:
在所述接收节点和所述相应第二节点之间插入有向边。
8.根据任一前述权利要求所述的方法,其中,数据在由发送节点和接收节点对中的每个节点表示的操作之间独立交换。
9.根据任一前述权利要求所述的方法,其中,在由所述多个设备执行由所述计算图表示的操作期间,由每个发送节点和接收节点对表示的操作允许所述多个设备在所述多个设备中的设备之间独立地通信由计算图中的其他节点所表示的操作的输入和输出。
10.根据任一前述权利要求所述的方法,进一步包括:接收模型输入;以及根据由所修改的计算图表示的操作来处理所述模型输入。
11.一种方法,包括:提供与由权利要求1至9中的任一项所述的方法获得的所修改的计算图对应的机器学习模型;并使用所述机器学习模型来处理模型输入。
12.根据前述权利要求中的任一项所述的方法,其中,所述计算图是机器学习模型的表示。
13.一种系统,包括:
一个或多个数据处理装置;以及
其上存储有指令的计算机可读存储设备,所述指令在由所述一个或多个数据处理装置执行时使所述一个或多个数据处理装置执行操作,所述操作包括:
获得表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应操作,并且其中每个有向边将相应第一节点连接至相应第二节点,所述相应第二节点表示接收由所述相应第一节点表示的操作的输出作为输入;
获得识别跨多个设备的所述计算图的分配的数据,其中所述分配将所述计算图中的每个节点指派给所述多个设备中的相应设备;
识别在所述计算图中的一个或多个跨设备有向边,其中每个跨设备有向边是将相应第一节点连接到相应第二节点的有向边,所述相应第二节点在所述分配中被指派给与所述相应第一节点不同的设备;
对于每个跨设备有向边:
在所述计算图中的所述相应第一节点和所述相应第二节点之间插入发送节点,在所述操作图中的所述发送节点和所述相应第二节点之间插入接收节点,以及修改所述分配以将所述发送节点指派给与所述相应第一节点相同的设备以及将所述接收节点指派给与所述相应第二节点相同的设备;以及
根据所修改的分配将由所述计算图中的节点表示的操作指派给所述多个设备。
14.根据权利要求13所述的系统,其中:
所述发送节点表示以下操作:(i)接收由所述相应第一节点表示的操作的输出作为输入,并且(ii)将由所述相应第一节点表示的操作的输出作为输出提供给所述接收节点;以及
所述接收节点表示以下操作:(i)接收由所述发送节点表示的操作的输出作为输入,并且(ii)将由所述发送节点表示的操作的输出作为输出提供给所述相应第二节点。
15.根据权利要求14所述的系统,其中,由所述相应第一节点表示的操作的输出是张量。
16.根据权利要求14或15所述的系统,其中:
由所述接收节点表示的操作进一步(iii)向所述发送节点提供将由所述发送节点表示的操作的输出作为输出的请求;以及
由所述发送节点表示的操作进一步(ii)响应于从所述接收节点接收到的一个或多个请求,将由所述相应第一节点表示的操作的输出作为输出提供给所述接收节点。
17.根据权利要求13至16中的任一项所述的系统,其中,数据在由发送节点和接收节点对中的每个节点表示的操作之间被独立地交换。
18.根据权利要求13至17中的任一项所述的系统,其中,在由所述多个设备执行由所述计算图表示的操作期间,由每个发送节点和接收节点对表示的操作允许所述多个设备在所述多个设备中的设备之间独立地通信由计算图中的其他节点所表示的操作的输入和输出。
19.一种其上存储有指令的计算机可读存储设备,所述指令在由计算设备执行时使所述计算设备执行操作,所述操作包括:
获得表示计算图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应操作,并且其中每个有向边将相应第一节点连接至相应第二节点,所述相应第二节点表示接收由所述相应第一节点表示的操作的输出作为输入;
获得识别跨多个设备的所述计算图的分配的数据,其中所述分配将所述计算图中的每个节点指派给所述多个设备中的相应设备;
识别在所述计算图中的一个或多个跨设备有向边,其中每个跨设备有向边是将相应第一节点连接到相应第二节点的有向边,所述相应第二节点在所述分配中被指派给与所述相应第一节点不同的设备;
对于每个跨设备有向边:
在所述计算图中的所述相应第一节点和所述相应第二节点之间插入发送节点,在所述操作图中的所述发送节点和所述相应第二节点之间插入接收节点,以及修改所述分配以将所述发送节点指派给与所述相应第一节点相同的设备以及将所述接收节点指派给与所述相应第二节点相同的设备;以及
根据所修改的分配将由所述计算图中的节点表示的操作指派给所述多个设备。
20.根据权利要求19所述的存储设备,其中:
所述发送节点表示以下操作:(i)接收由所述相应第一节点表示的操作的输出作为输入,并且(ii)将由所述相应第一节点表示的操作的输出作为输出提供给所述接收节点;以及
所述接收节点表示以下操作:(i)接收由所述发送节点表示的操作的输出作为输入,并且(ii)将由所述发送节点表示的操作的输出作为输出提供给所述相应第二节点。
21.根据权利要求20所述的存储设备,其中,由所述相应第一节点表示的操作的输出是张量。
22.根据权利要求20或21所述的存储设备,其中:
由所述接收节点表示的操作进一步(iii)向所述发送节点提供将由所述发送节点表示的操作的输出作为输出的请求;以及
由所述发送节点表示的操作进一步(ii)响应于从所述接收节点接收到的一个或多个请求,将由所述相应第一节点表示的操作的输出作为输出提供给所述接收节点。
23.根据权利要求19至22中的任一项所述的存储设备,其中,在由所述多个设备执行由所述计算图表示的操作期间,由每个发送节点和接收节点对表示的操作允许所述多个设备在所述多个设备中的设备之间独立地通信由计算图中的其他节点所表示的操作的输入和输出。
24.一种用于使用多个设备根据计算图来处理模型输入的方法,所述计算图包括多个节点和有向边,其中每个节点表示相应操作,其中每个有向边将相应第一节点连接到相应第二节点,所述相应第二节点表示接收由所述相应第一节点表示的操作的输出作为输入的操作,其中所述方法包括对于所述多个设备中的第一设备:
接收表示指派给所述第一设备的所述计算图的子图的数据,所述子图包括来自所述计算图的多个节点和有向边;以及
执行由所述子图中的节点表示的操作,包括:
(1)执行由在所述子图中的相应第一节点表示的操作以生成第一输出;
确定所述第一节点通过有向边连接到所述子图中的发送节点;以及
执行由所述发送节点表示的操作以将由所述相应第一节点表示的操作的第一输出传送到所述多个设备中的另一个设备;和/或
(2)执行由在所述子图中的接收节点表示的操作,以获得由指派给所述多个设备中的另一个设备的第二节点表示的操作的第二输出;
确定所述接收节点通过有向边连接到所述子图中的第三节点;以及
使用所获得的第二输出作为输入来执行由所述第三节点表示的操作。
25.一种用于根据计算图来处理模型输入的系统,所述计算图包括多个节点和有向边,其中每个节点表示相应操作,其中每个有向边将相应第一节点连接到相应第二节点,所述相应第二节点表示接收由所述相应第一节点表示的操作的输出作为输入的操作,其中所述系统包括多个设备,并且其中所述多个设备中的第一设备被配置为执行操作,所述操作包括:
接收表示指派给所述第一设备的所述计算图的子图的数据,所述子图包括来自所述计算图的多个节点和有向边;以及
执行由所述子图中的节点表示的操作,包括:
(1)执行由在所述子图中的相应第一节点表示的操作以生成第一输出;
确定所述第一节点通过有向边连接到所述子图中的发送节点;以及
执行由所述发送节点表示的操作以将由所述相应第一节点表示的操作的所述第一输出传送到所述多个设备中的另一个设备;和/或
(2)执行由在所述子图中的接收节点表示的操作,以获得由指派给所述多个设备中的另一个设备的第二节点表示的操作的第二输出;
确定所述接收节点通过有向边连接到所述子图中的第三节点;以及
使用所获得的第二输出作为输入来执行由所述第三节点表示的操作。

说明书全文

修改计算图

背景技术

[0001] 本说明书涉及修改表示神经网络的计算图和/或经修改的计算图在处理模型输入中的应用。
[0002] 神经网络是机器学习模型,其采用一层或多层模型来为接收到的输入生成输出,例如一个或多个分类。一些神经网络除了输出层之外还包含一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层(即网络的下一个隐藏层或输出层)的输入。网络中的每个层根据该层相应参数集的当前值从接收到的输入生成输出。
[0003] 神经网络的层可以由单个设备处理。该设备可以具有执行诸如从输入生成层的输出的操作的处理器,并且将来自该操作的输出存储在存储器中。由于通常需要在神经网络中生成输出的操作具有大的数量和大小,所以一个设备可能花费大量时间来处理神经网络的层。发明内容
[0004] 通常,本说明书描述了用于修改表示神经网络和其他机器学习模型的计算图的系统。
[0005] 本说明书中描述的主题的特定实施例可以被实现以便实现以下优点中的一个或多个。神经网络的操作(例如,从输入生成推理或训练神经网络的操作)可以表示为节点和有向边的计算图。系统处理这种计算图表示以有效地执行神经网络的操作。作为说明,可以将计算图的子图指派给独特的设备,其中的每个子设备在相应的子图中执行操作,以减少执行神经网络操作所需的总体时间。通过将发送节点和接收节点插入到每个子图中,可以有效地处理执行计算图的不同子图的操作的独特设备之间的通信。当被执行时,这些发送节点和接收节点表示的操作可以使得独特设备对能够以自给自足的方式彼此进行通信。这将协同通信的负担从后端移开,这为处理这种计算图表示的系统提供了在设备执行子图的同时执行一个或多个其他过程的机会。发送节点和接收节点用作以这样的方式划分子图,该方式允许神经网络或由这些子图表示的神经网络的一部分在一个设备上被训练,并且随后被分配给另一个设备。至少由于这些原因,将计算图修改为包括发送节点和接收节点对可以帮助减少以分布式方式处理计算图所需的时间成本以及网络通信量。
[0006] 在一个方面,本说明书中描述的主题可以体现在一种方法中,其可以包括获得表示计算图的数据的动作,该计算图包括多个节点和有向边,其中每个节点表示相应的操作,并且其中每个有向边将相应的第一节点连接到相应的第二节点,该相应的第二节点表示接收由相应的第一节点表示的操作的输出作为输入的操作;获得识别跨越多个设备的计算图的分配的数据,其中该分配将计算图中的每个节点指派给多个设备中的相应设备,识别计算图中的一个或多个跨设备有向边,其中每个跨设备有向边是将相应的第一节点连接到相应的第二节点的有向边,所述相应的第二节点在分配中被指派给与相应的第一节点不同的设备;并且对于每个跨设备有向边,在计算图中的相应的第一节点和相应的第二节点之间插入发送节点,在操作图中的发送节点和相应的第二节点之间插入接收节点,以及修改分配以将发送节点指派给与相应的第一节点相同的设备以及将接收节点指派给与相应的第二节点相同的设备;和根据所修改的分配将由计算图中的节点表示的操作指派给所述多个设备。这些方法可以是计算机实现的方法。
[0007] 在一个实施方式中,该方法还包括:接收模型输入;以及根据由修改的计算图表示的操作处理模型输入。
[0008] 另一方面,本说明书中描述的主题可体现在这样的方法中,其可包括提供与通过第一方面的方法获得的修改的计算图对应的机器学习模型的动作;并使用机器学习模型处理模型输入。处理可以构成对机器学习模型的训练,或者可以构成从模型输入生成推论。
[0009] 另一方面,本说明书中描述的主题可体现这样的方法中,其可包括由多个设备执行通过第一方面的方法获得的修改的计算图的动作。
[0010] 在这些方面中,计算图可以是机器学习模型的表示,诸如,例如神经网络。
[0011] 另一方面,本说明书中描述的主题可体现在这样的方法中,其可包括使用多个设备根据计算图处理模型输入,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由相应的第一节点表示的操作的输出作为输入的操作,其中所述方法包括对于所述多个设备中的第一设备:接收表示指派给第一设备的计算图的子图的数据,所述子图包括来自计算图的多个节点和有向边;并且执行由子图中节点表示的操作,包括:(1)执行由子图中的相应的第一节点表示的操作以生成第一输出;确定第一节点通过有向边连接到所述子图中的发送节点;以及执行由发送节点表示的操作以将由相应的第一节点表示的操作的第一输出传送到多个设备中的另一个设备;和/或(2)执行由子图中的接收节点表示的操作,以获得由指派给多个设备中的另一个设备的第二节点表示的操作的第二输出;确定接收节点通过有向边连接到子图中的第三节点;并且使用所获得的第二输出作为输入来执行由第三节点表示的操作。在这方面,计算图可以通过本发明另一方面的方法获得。
[0012] 这个和其他方面的其他实施方式包括被配置为执行编码在计算机存储设备(其可以是或者可以不是非暂时性存储设备)上的方法的动作的相应系统、装置和计算机程序。一个或多个计算机的系统可以通过安装在系统上的软件固件硬件或它们的组合来配置,在操作中使系统执行这些动作。一个或多个计算机程序可以借助于具有当数据处理装置执行时,使装置执行动作的指令来配置。
[0013] 这些其他版本可以分别包含一个或多个以下功能。例如,发送节点表示执行以下步骤的操作:(i)接收由相应的第一节点表示的操作的输出作为输入,并且(ii)将由相应的第一节点表示的操作的输出作为输出提供给接收节点;以及接收节点表示执行以下步骤的操作:(i)接收由发送节点表示的操作的输出作为输入,并且(ii)将由发送节点表示的操作的输出作为输出提供给相应的第二节点。在一些实施方式中,由接收节点表示的操作可进一步(iii)向发送节点提供将由发送节点表示的操作的输出作为输出的请求;以及由发送节点表示的操作可进一步(ii)响应于从接收节点接收到的一个或多个请求,将由相应的第一节点表示的操作的输出作为输出提供给接收节点。在一些示例中,由相应的第一节点表示的操作的输出可以包括张量。
[0014] 在一些实施方式中,获得识别跨多个设备的计算图的分配的数据可以包括获得识别跨一个或多个机器中包括的硬件资源的计算图的分配的数据。在这些实施方式中,发送节点和接收节点对中的每个节点例如可以表示操作,该操作接收根据与该发送节点和接收节点对被指派的每个硬件资源和机器对应的协议进行通信的对中的另一节点表示的操作的输出作为输入。
[0015] 在一些示例中,在计算图中的相应的第一节点和相应的第二节点之间插入发送节点还可以包括:对每个跨设备有向边,在发送节点和相应的第一节点之间插入有向边。另外,在操作图中的发送节点和相应的第二节点之间插入接收节点还可以包括:对每个跨设备有向边,在接收节点和相应的第二节点之间插入有向边。
[0016] 在一些实施方式中,在由多个设备执行由计算图表示的操作期间,由每个发送节点和接收节点对表示的操作可以允许多个设备独立地在多个设备中的设备之间通信由其他节点表示的操作的输入和输出的计算图。在一些示例中,数据可以在由发送节点和接收节点对中的每个节点表示的操作之间独立交换。
[0017] 在附图和下面的描述中阐述了本说明书的主题的一个或多个实施例的细节。主题的其他特征、方面和优点将从说明书、附图和权利要求中变得显而易见。应意识到,各方面和实施方式可以被组合,并且在一个方面或实施方式的上下文中描述的特征可以在其他方面或实施方式的上下文中实现。

附图说明

[0018] 图1A图示了用于分布以计算图表示的神经网络的操作的示例计算图系统。
[0019] 图1B是用于在系统中分布以计算图表示的神经网络的操作的示例架构的概念图
[0020] 图2A-C是示例计算图。
[0021] 图3是通过执行包括在计算图中的示例性发送节点和接收节点而提供的示例过程的流程图
[0022] 图4A-B是指定给设备的计算图的示例性部分。
[0023] 图5是用于修改计算图的示例过程的流程图。
[0024] 在各个附图中相同的附图标记和名称表示相同的元件。

具体实施方式

[0025] 本说明书大体描述了以分布式方式执行由计算图表示的操作的计算图系统。特别地,本说明书描述了用于以使设备之间能够无缝通信的方式修改计算图的技术。这些技术可以帮助确保每个计算图以快速且有效的方式由多个设备共同执行。
[0026] 计算图包括通过有向边连接的节点。计算图中的每个节点表示一操作。到节点的传入边表示到节点的输入流,即由节点表示的操作的输入。来自节点的传出边表示由节点表示的操作的输出流,将要用作由另一节点表示的操作的输入。因此,将图中的第一节点连接到图中的第二节点的有向边指示由第一节点表示的操作生成的输出被用作由第二节点表示的操作的输入。
[0027] 通常,在计算图中沿着有向边流动的输入和输出是张量。张量是数值或其他值的多维数组,例如,具有与数组的维度相对应的特定阶的字符串。例如,标量值是0阶张量,数值向量是1阶张量,矩阵是2阶张量。
[0028] 在一些实施方式中,计算图中表示的操作是神经网络操作或用于不同种类的机器学习模型的操作。神经网络是一种机器学习模型,其采用一层或多层非线性单元来预测接收到的输入的输出。一些神经网络是深度神经网络,其除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中另一层(即另一个隐藏层、输出层或两者)的输入。网络的一些层根据相应参数集的当前值从接收到的输入生成输出,而网络的其他层可能不具有参数。
[0029] 例如,由计算图表示的操作可以是神经网络计算推理所需的操作,即,处理通过神经网络的层的输入以生成输入的神经网络输出。作为另一示例,由计算图表示的操作可以是通过执行神经网络训练过程以训练神经网络来调节神经网络的参数值所需的操作,例如以从参数的初始值确定参数的训练值。在一些情况下,例如在训练神经网络期间,由计算图表示的操作可以包括由神经网络的多个副本执行的操作。
[0030] 作为说明,接收来自前一层的输入的神经网络层可以使用参数矩阵来执行参数矩阵和输入之间的矩阵乘法。在一些情况下,这种矩阵乘法可以表示为计算图中的多个节点。例如,矩阵乘法可以分为多个乘法和加法运算,并且每个运算可以由计算图中的不同节点表示。由每个节点表示的操作可以生成相应的输出,该输出在有向边上流向后续节点。在由最终节点表示的操作生成矩阵乘法的结果之后,结果在有向边上流向另一节点。结果等同于执行矩阵乘法的神经网络层的输出。
[0031] 在一些其他情况下,矩阵乘法在图中表示为一个节点。由节点表示的操作可以接收作为输入的第一有向边上的输入张量和第二有向边上的权重张量,例如参数矩阵。该节点可以处理,例如,执行输入和加权张量的矩阵乘法,以在第三有向边上输出等效于神经网络层的输出的输出张量。
[0032] 可由计算图中的节点表示的其他神经网络操作包括其他数学运算,例如减法、除法和梯度计算;数组运算,例如连结(concatenate)、拼接(splice)、分割(split)或排序(rank);和神经网络构建操作,例如SoftMax、Sigmoid、整流线性单元(ReLU)或卷积。
[0033] 将神经网络表示为计算图提供了一种灵活而细致的方式来高效地实现神经网络,特别是如果神经网络的操作分布在具有不同硬件简档的多个设备上时。
[0034] 图1A图示了用于分布表示为计算图的神经网络的操作的示例计算图系统100。系统100是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中可以实现下面描述的系统、组件和技术。
[0035] 客户端102的用户可以请求在表示神经网络的计算图上执行操作。客户端102可以是在计算机上运行的应用。
[0036] 作为请求的一部分,客户端102向系统100提供识别计算图的数据,并且指定要在计算图上执行的操作的类型。
[0037] 例如,该请求可以识别表示用于特定神经网络的推断的计算图并且可以识别应在其上执行推理的输入。
[0038] 作为另一个例子,该请求可以识别表示用于特定神经网络的训练过程的计算图并且可以识别应在其上执行训练的输入,例如训练数据。在该示例中,当接收到处理表示训练过程的计算图的请求时,系统100可以例如使用常规反向传播或其他神经网络训练技术来确定计算图的一个或多个边的参数的修改值。系统100可以将修改的参数存储在设备的存储器中,并且执行器106可以在系统100处检索并存储经修改的权重的地址。在来自客户端102对推理、训练或需要经修改的权重的其他操作的进一步请求时,系统100可以使用该地址访问经修改的权重。
[0039] 在某些情况下,请求可能会指定应响应于该请求而传送的响应。例如,对于神经网络训练请求,客户端102可以请求已经完成所请求的神经网络训练操作的指示,以及任选地请求神经网络的参数的训练值或者训练值可以被客户端102访问的存储位置的指示。作为另一个示例,对于神经网络推理请求,客户端102可以请求表示来自计算图的一个或多个特定节点的推断操作的输出值。
[0040] 系统100执行操作以通过跨多个设备116-122划分由计算图表示的操作来生成特定输出。系统100通过数据通信网络114(例如局域网(LAN)或广域网(WAN))将操作划分到多个设备116-122。设备116-122执行操作,并且如果适用的话,将相应的输出或指示返回到系统100,系统100可以将所请求的输出或指示返回到客户端102。
[0041] 执行神经网络操作的任何设备(例如设备116-122)可以包括用于存储指令和数据的存储器(例如,随机存取存储器(RAM))和用于执行存储的指令的处理器。通常,每个设备都是独立于其他设备执行操作的硬件资源。例如,每个设备都可以具有自己的处理单元。该设备可以是图形处理单元(GPU)或中央处理单元(CPU)。作为说明,一台机器可以托管一个或多个设备,例如多个CPU和GPU。这种设备和机器的示例可以在图1B中看出。
[0042] 图1B是用于在系统100中分布表示为计算图的神经网络的操作的示例性架构的概念图。现参照图1B,机器的示例可以包括计算设备126,个人计算机128,移动设备130和服务器132。每台机器可以例如包括一个或多个设备,诸如GPU116和CPU118。
[0043] 每个设备也可以具有相应的计算能。也就是说,设备可以具有不同数量的存储器、处理速度或其他结构特征。因此,一些设备可以执行其他设备无法执行的操作。例如,一些操作需要只有特定设备具有的一定数量的存储器,或者一些设备被配置为仅执行特定类型的操作,例如推理操作。
[0044] 再参照图1,系统100中的会话管理器104可以从客户端102接收开始会话的请求,在该会话期间执行计算图的操作。会话管理器104管理可以执行计算图的操作的设备集合,例如设备116-122,并且可以向布局器108提供可用于执行操作的设备集合。
[0045] 布局器108为要在计算图表中执行的每个操作确定执行该操作的相应目标设备(例如设备116),并且在一些实施方式中确定相应目标设备执行操作的时间。一些操作可以并行执行,而其他操作要求在完成计算图中的先前操作,例如该其他操作处理先前操作的输出作为输入。
[0046] 在设备执行由布局器108分配的操作以生成输出之后,执行器106可以检索输出。执行器106可以生成对该请求的适当响应,例如输出或处理已经完成的指示。然后,执行器
106可以将该响应返回给客户端102。
[0047] 会话管理器104还向执行器106提供要在计算图中执行的操作集。执行器106周期性地从与操作的图执行有关的设备116-122中检索运行时间统计量。执行器106将运行时间统计量提供给布局器108,其可以重新优化进一步操作的布置和调度。
[0048] 在操作中,系统100可以从客户端102接收处理计算图的请求。例如,请求可以是执行由指定输入上的计算图表示的神经网络推断的请求,执行由指定训练数据集上的计算图表示的神经网络训练操作的请求,执行由计算图表示的其他神经网络操作,如上所述。
[0049] 在接收到请求时,系统100可以获得表示计算图的数据。在一些情况下,数据与客户端的请求一起发送。在其他情况下,该请求识别计算图并且系统100检索表示从存储器识别的图的数据。作为说明,表示图的数据可以是图中节点的数组。每个节点都可以包含指定操作类型、名称和节点传入边和传出边列表的信息。
[0050] 系统100可以识别用于执行所请求的操作的多个可用设备。如果设备当前正在执行其他操作并且无法被指派进一步的操作或者无法执行图形处理操作,则设备可能被视为繁忙。如果该设备可以被指派进一步的操作,则该设备可以被认为是可用的,例如,该进一步的操作可以排队等待该设备的操作。
[0051] 系统100可以将计算图划分成多个子图。每个子图包含计算图中的一个或多个节点。在一些示例中,系统100可以通过分解计算图中彼此相邻但指派给不同设备的节点对来获得这些子图。
[0052] 系统100可以为每个子图将由子图中的一个或多个节点表示的操作指派给相应的可用设备。在一些实施方式中,系统100可以将每个子图指派给具有执行由子图中的节点表示的操作所必需的计算能力的设备。在一些实施方式中,来自客户端的请求包括由用户指定的数据,该数据识别特定类型的设备以执行用于特定节点的操作。
[0053] 因此,系统100跨多个设备生成计算图的分配,其将计算图中的每个节点指派给多个设备中的相应设备。每个子图包括计算图中的一个或多个节点的给定组,如上所述,其可以被指派给相同的设备。示例性的子图到设备映射可以在图1B中看到。在该示例中,计算图140的示例性子图140A和140B可以分别被分配给GPU116和CPU118。GPU 116和CPU 118可以驻留在机器126-132中的不同的或相同的一个机器中。在操作中,GPU 116和CPU 118可以执行由系统100已经指派给它们的子图中包括的节点表示的操作。
[0054] 系统100可以使设备执行包括在分别指派给设备的子图中的节点的操作。在一些实施方式中,系统100可以向每个设备发送开始在指派给相应设备的子图中包括的节点的操作的请求。响应于从系统100接收到这样的请求,每个设备可以继续执行在指派给设备的子图中包括的节点的操作。
[0055] 鉴于计算图中节点和节点组之间可能存在各种依赖关系,因此将需要协同各种设备之间的通信,以便这些设备能够共同执行计算图。例如,表示正在第一设备上执行的操作的节点可以接收另一节点的输出作为输入,该另一节点的输出表示正在位于远程的第二设备上执行的操作。在该示例中,可能需要以有效的方式来协同由另一个节点表示的操作从第二设备到第一设备的输出的通信,以便确保计算图的正确且及时的执行。
[0056] 在一些示例中,根据需要,这些设备可以协同彼此的输入和输出的交换。在这些示例中,设备之间的通信可以独立于系统100而发生。也就是说,系统100可以向每个设备发送执行其相应子图的操作的请求,并且响应于该请求,每个设备可以响应于系统100的请求继续执行其相应子图的操作,其可包括协同与其他设备的通信而无需系统100的附加干预。
[0057] 在一些实施方式中,为了允许设备独立于系统100进行通信,系统100修改计算图,使得它包括表示节点之间的通信操作的附加节点。具体而言,设备的相应子图可以包括表示操作的节点,该操作在由设备执行时允许设备与执行对方操作的另一设备无缝地通信。然后可以根据由修改的计算图表示的操作来处理接收到的模型输入。
[0058] 更具体地,系统100可以将“发送”和“接收”节点插入到计算图中。每个发送节点代表一种操作,其中诸如张量的数据被中继到指派给与发送节点不同的设备的接收节点。系统100可以通过识别图中的任何跨设备有向边来确定在图中插入发送节点和接收节点对的位置。跨设备有向边是计算图中的有向边,它将计算图中待分配的节点连接到两个不同的设备。系统100可以在确定计算图的分配时或之后识别这种跨设备有向边。在识别图中包括的每个跨设备有向边之后,系统100可以通过拆分每个跨设备有向边并且插入发送节点和接收节点对代替跨设备有向边来修改计算图。下面参照图2A-C进一步描述这个修改过程。
[0059] 图2A-C图示了示例计算图。作为例子,计算图系统,例如图1A的系统100,可以接收来自客户端的请求,给定输入集合,使用计算图200A计算推断。计算图200A可以接收来自示例性源201的输入并将输出提供给示例性信宿(sink)215。示例性源201和信宿215可以例如是计算图的一个或多个其他节点。
[0060] 例如,系统可以确定跨三个不同设备分配计算图200A。为了做出该确定,系统可以分析计算图200A以识别可以被划分成子图并分配给可用设备的一个或多个节点。例如,系统可以确定将由节点204、212和214形成的第一链分配给第一设备,由节点206、208和210形成的第二链分配给第二设备,并将节点202分配给第三设备。尽管其他可能的节点链是可能的,但系统可以选择使子图的数量最小的链。
[0061] 在该特定分配下,系统可将有向边220A和230A识别为跨设备有向边。也就是说,系统可以识别出有向边220A和230A各自连接了系统已经确定分配给不同设备的节点。例如,可以看出,有向边220A将节点202连接到节点208,系统已经确定将该节点208分别分配给第三和第二设备。类似地,有向边230A通过从对应于第二设备的节点208延伸到对应于第一设备的节点212而跨越设备边界。
[0062] 响应于识别在计算图200A中包括的每个跨设备有向边,系统可以继续修改计算图200A以生成经修改的计算图,例如,图2B所示的经修改的计算图200B。更具体地,系统可以在节点202和208之间插入发送节点和接收节点对来代替有向边220A。以类似的方式,系统还可以在节点208和212之间插入发送节点和接收节点对来代替有向边230A。可以看到,在每个发送节点或接收节点和与这样的发送节点或接收节点相邻的每个节点之间也插入有向边。
[0063] 现在参照图2B,可以看出,表示由系统修改的计算图200A的版本的修改的计算图200B包括两个发送节点和接收节点对。具体地说,第一发送节点S1已经插入在节点202和
208之间,并且相应的第一接收节点R1已经插入在第一发送节点S1和节点208之间。通过这些插入,系统分配第一发送节点S1到与节点202相同的设备(即,第三设备),并且将第一接收节点R1分配给与节点208相同的设备(即,第二设备)。双向桥接器220B将第一发送节点S1连接到第一接收节点R1。桥接器220B可以被看作表示第一发送节点S1和第一接收节点R1之间的通信信道。
[0064] 当执行时,由第一发送节点S1和第一接收节点R1表示的操作使得第二和第三设备能够以预定方式进行通信。例如,这些操作的执行可以包括遵守特定的通信协议的第二和第三设备。也可以将每个相应设备和/或正在由每个相应设备执行的节点的地址信息嵌入到这些操作。以这种方式,第一发送节点S1和第一接收节点R1可以封装可能需要在第二和第三设备之间执行的每个通信过程,以便令人满意地执行它们相应的子图。下面参照图3和4A-B进一步描述这些通信过程。
[0065] 类似地,已经在节点208和212之间插入第二发送节点S2,并且已经在第二发送节点S2和节点212之间插入对应的第二接收节点R2。通过这些插入,系统将第二发送节点S2分配给与节点208相同的设备(即,第二设备),并且将第一接收节点R1分配给与节点208相同的设备(即,第一设备)。双向桥接器230B将第二发送节点S2连接到第二接收节点R2,并且可以被看作表示第二发送节点S2和第二接收节点R2之间的通信信道。就像第一发送节点S1和第一接收节点R1一样,第二发送节点S2和第二接收节点R2使得能够容易地在第二和第一设备之间协同通信。
[0066] 如由图2C中的修改的计算图200C所示,系统100可以修改分配,使得每个发送节点被分配给一个相应的子图并且每个接收节点被分配给另一个相应的子图。例如,第一发送节点S1可以与节点202一起被分配给包括在机器130中的第三设备,作为系统已经指派给第三设备的子图240的一部分。类似地,第一接收节点R1和第二发送节点S2可以与节点206、208和210一起被分配给包括在机器126中的第二设备,作为系统已经指派给第二设备的子图246的一部分。此外,第二接收节点R2可以与节点204、212和214一起被分配给包括在机器
132中的第一设备,作为系统已经指派给第一设备的子图242的一部分。
[0067] 在执行时,由第一发送节点S1表示的操作可以包括将节点202的输出中继到第一接收节点R1。例如,这种交换可以在机器130和126可以访问的网络215上以信道220B的方式发生。网络215可以类似于上面结合图1描述的网络114。被利用来进行该通信的协议可以反映在由第一发送节点和接收节点对S1和R1表示的操作中,并且可以取决于与子图240和246的执行相关联的设备、机器、节点和网络的一个或多个特性。由第一接收节点R1表示的操作继而可以包括将从第一发送节点S1接收到的由节点202表示的操作的输出作为输入传送到节点208。
[0068] 类似地,由第二发送节点S2表示的操作可以包括将由节点208表示的操作的输出中继到第二接收节点R2。这种交换可以例如在机器132和126可以访问的网络215上以信道230B的方式发生。被利用来进行该通信的协议可以反映在由第二发送节点和接收节点对S2和R2表示的操作中,并且可以取决于与子图246和242的执行相关联的设备、机器、节点和网络的一个或多个特征。由第二接收节点R2表示的操作继而可以包括将从第二发送节点S2接收到的由节点208表示的操作的输出作为输入传送到节点212。
[0069] 图3是通过执行包括在计算图中的示例性发送节点和接收节点而提供的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。结合过程300描述的计算图和操作可以是上面已经描述的那些。例如,可以通过执行由系统100提供的计算图的一个或多个部分来执行过程300,如上面结合图1所述。
[0070] 如上所述,由发送节点和接收节点表示的操作可以在它们被指派到的设备之间产生双向通信。分别由发送节点和接收节点S3和R3表示的操作330和340可以最初包括确定用于这种双向通信的通信协议(332和342)。由发送节点和接收节点对表示的操作所利用的通信协议可取决于与手头中执行子图的设备、机器、节点和网络的一个或多个特征。在下面参照图4A-B进一步描述这个确定过程。
[0071] 然后由发送节点S3表示的操作330可以用于确定是否已经提供了上游节点310的操作的输出(310)。这样的输出可以包括通过由指派的设备执行包括节点310和发送节点S3的子图产生的张量。一旦被提供,由发送节点S3表示的操作330可以用来将由节点310表示的操作的输出作为输入提供给由接收节点R3表示的操作340,该操作340可以继而用来将其作为输入提供给由节点320表示的操作。
[0072] 由接收节点R3表示的操作340的执行可以涉及发送一个或多个消息到对应的发送节点S3(344)。这样的消息可以用作接收节点R3所属的子图已准备好通过执行对应的发送节点S3来接收输入的指示。通过这种方式,这些消息可以被看作是接收由一个或多个上游操作输出的数据的请求。在图3的例子中,由接收节点R3表示的操作340可以从发送节点S3接收包括由节点310表示的操作的输出的输入。
[0073] 在执行时,由发送节点S3表示的操作330可以包括响应于接收到这种消息的数据中继。在一些示例中,由发送节点S3表示的操作330可以在接收到这样的消息之前不用来中继由节点310表示的操作的输出(336)。以这种方式,可以调节设备之间的信息流,以确保成功交换张量。在这些示例中,由节点310表示的操作的输出可以被缓存或以其它方式存储在正执行发送节点S3的设备本地的一个或多个存储器区域中(337)。在一些实施方式中,该操作的输出可以被存储在设备所属的机器上的其他地方或在一个或多个网络可访问设备上。一旦接收到接收节点消息,存储的操作的输出可以被与接收节点R3相关联的参与方通信(336至338),并且随后从存储器中刷新或以其他方式删除。在确定已经接收到作为输入的来自由发送节点S3表示的操作的输出(346)时,由接收节点R3表示的操作可以用来将这样的输出提供作为对由下游节点320表示的操作的输入(348)。
[0074] 可以看出,通过执行分别由发送节点和接收节点S3和R3表示的操作330和340,执行神经网络的部分或对应于相关联的子的其他机器学习模型所需的所有数据交换(为了方便起见,这将被称为“关联子图的执行”)可以由执行子图的设备来协同和执行。提供给执行操作330和340的设备对的通信自治可用来将协同通信的负担从后端转移开。以这种方式,诸如系统100的计算图系统可以能够在设备执行子图的同时执行一个或多个其他过程,而不是主动调节这些设备之间的通信。至少出于这个原因,修改计算图以包括发送节点和接收节点对可以帮助降低以分布式方式处理计算图所需的时间成本和网络通信量。
[0075] 在一些实施方式中,可利用由发送节点和接收节点S3和R3表示的操作330和340来处理给定设备的所有传入和/或传出通信。例如,由接收节点R3表示的操作340可用于接收来自由发送节点S3表示的操作330的传入通信以及来自由一个或多个其他发送节点表示的操作。类似地,由接收节点S3表示的操作330可用于将传出通信作为输入提供给由接收节点R3代表的操作340以及由一个或多个其他接收节点代表的操作。以这种方式,由发送节点和接收节点S3和R3表示的操作330和340可用于向其所指派的设备提供类似集线器的功能。
[0076] 发送节点和接收节点S3和R3可用于以这样的方式划分子图,该方式允许神经网络或由这些子图表示的神经网络的一部分在一个设备上被训练,并且随后被分配给另一个设备。发送节点和接收节点S3和R3也可允许神经网络或由一个或多个子图表示的神经网络的部分以新方式进行训练或测试。例如,由接收节点R3表示的操作340可以向由节点320表示的操作提供输入,该操作模拟由节点310表示的操作的输出的张量,以便训练节点320下游的计算图的一个或多个部分接收节点R3。在一些实施方式中,可以利用客户端设备(诸如上面参照图1描述的客户端设备102),为接收节点R3提供这样的输入。在这些实施方式中,客户端设备可以执行由向操作330提供预定张量作为输出的专用节点表示的操作,操作330也可以在客户端设备上执行。这样的专用节点可以被看作是计算图中接收节点R3和节点320上游的节点的替代。以这种方式,用户可能能够通过在其客户端设备上执行由专用节点表示的操作以及操作330,远程测试和/或训练神经网络或由一个或多个下游子图表示的神经网络的部分。由这种类型的专用节点表示的操作的输出的张量可以例如是静态的、用户定义的、随机生成的、或者基于与手中执行子图相关联的设备、机器、节点和网络的一个或多个特征所确定的。
[0077] 在一些实施方式中,与发送节点和接收节点S3和R3相关联的设备之间交换的数据可以被压缩。也就是说,由发送节点S3表示的操作330可以用于在由节点310表示的操作的输出时执行一个或多个压缩过程。类似地,由接收节点R3表示的操作340可用来在通过执行由发送节点S3表示的操作330而作为输出提供的压缩数据时,执行一个或多个解压缩过程。所执行的压缩操作可以包括适用于在两个设备之间传输数据的任何常规压缩算法。例如,设备之间交换的数据可以被下变频、截断或其组合。同样,由这些数据传达的数值也可进行概率性四舍五入。这种压缩操作可以基于与手中的执行子图相关联的设备、机器、节点和网络的一个或多个特征来选择。例如,可以基于机器学习模型的噪声容限来选择压缩操作。尽管已经结合操作330和340描述了压缩,但是应该理解,这样的操作可以利用各种信号处理和调节技术中的任何一种。
[0078] 如上所述,由发送节点和接收节点对表示的操作所利用的通信协议可取决于与手头的执行子图相关联的设备、机器、节点和网络的一个或多个特性。图4A-B描绘了包括发送节点和接收节点并且被分配给设备的计算图400A和400B的两部分。可以看出,计算图400A中包括的发送节点已经被指派给设备412A(设备412A在本示例中是GPU),并且计算图400A中包括的接收节点已经被指派给设备414A(设备414A在本示例中也是GPU)。在这个示例中,GPU 412A和GPU 414A驻留在同一机器410A内。由于计算图400A的发送节点和接收节点都是GPU并且都驻留在同一机器410A内,所以这对于它们的交换在远程过程调用(RPC)或其他本地化的请求/响应协议下进行可能是有利的。
[0079] 在一些实施方式中,要使用的特定通信协议可以通过在子图分配之后执行由发送节点和接收节点表示的操作来确定。例如,可以基于这些操作已知的地址信息来做出这样的确定。在这个示例中,GPU412A和GPU 414A可以执行与发送节点和接收节点相关联的操作,这些操作指示这两个设备都驻留在机器410A内,并随后在RPC下协同通信。在其他实施方式中,通信协议可以是预定的,并且在每个发送节点和接收节点插入时由每个发送节点和接收节点表示的操作内指示。在这些实施方式中,每个通信协议可以以类似于上面描述的方式来确定。
[0080] 可以看出,在计算图400B中包含的发送节点已经被指派给设备422B(其可以是CPU或GPU),并且在计算图400B中包括的接收节点已经被指派给设备442B(其也可以是CPU或GPU)。设备422B可以驻留在机器420B中并且设备442B可以驻留在机器440B中。可以通过使用与上面已经描述的技术类似的技术为这些设备确定通信协议。在这个示例中,设备422B和442B之间的交换可以在远程直接存储器访问(RDMA)协议下进行。该协议对于两个不同机器的设备可能是有利的,因为它允许进行通信而不涉及与每个设备相关联的操作系统。在这个示例中,设备422B和442B可以执行与发送节点和接收节点相关联的操作,这些操作指示两个设备驻留在不同设备中,并且随后在RDMA下协同通信。
[0081] 图5是用于修改计算图以包括发送节点和接收节点的示例过程500的流程图。为了方便,过程500将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,计算图系统,例如图1A的计算图系统100,适当编程,可以执行过程500。
[0082] 该系统可以获得表示包括多个节点和有向边的计算图的数据(502)。例如,计算图可以在从一个或多个客户端设备接收到请求之后由计算图系统获得。在一些示例中,计算图中的每个节点是操作的实例。
[0083] 该系统可以获得识别跨多个设备的计算图的分配的数据(504)。例如,计算图系统可以确定如何跨越多个可用设备指派在所获得的计算图中包括的每个节点。在一些实施方式中,这可以包括获得识别跨一个或多个机器中包括的硬件资源的计算图的分配的数据。
[0084] 该系统可以识别在计算图中的连接指派给不同设备的节点的一个或多个有向边(506)。例如,计算图系统可以识别一个或多个跨设备有向边。
[0085] 该系统可以在由识别的有向边连接的节点对之间插入发送节点和接收节点(508)。例如,计算图系统可以用通过双向桥接器连接的发送节点和接收节点对来替换每个识别的跨设备有向边。这样做时,系统可以进一步在发送节点和相应的第一节点之间插入有向边,以及在接收节点和相应的第二节点之间插入有向边。
[0086] 在一些实施方式中,可以在由发送节点和接收节点对中的每个节点表示的操作之间独立地交换数据。在一些情况下,发送节点和接收节点对中的每个节点可以表示一操作,该操作接收根据与每个硬件资源和机器(该对发送节点和接收节点被指派的)对应的协议进行通信的对中的另一节点表示的操作的输出作为输入。如上所述,这样的协议可以例如包括RPC和RDMA。
[0087] 例如,每个发送节点可以表示接收由相应第一节点表示的操作的输出作为输入,并且将由相应第一节点表示的操作的输出作为输出提供给接收节点的操作。例如,由相应的第一节点表示的操作的输出可以是张量。类似地,每个接收节点可以表示接收由发送节点表示的操作的输出作为输入,并且将由发送节点表示的操作的输出作为输出提供给相应的第二节点的操作。在一些实施方式中,由接收节点表示的操作还可以向发送节点提供将由发送节点表示的操作的输出作为输出的请求。在这些实施方式中,响应于从接收节点接收到的一个或多个请求,由发送节点表示的操作可以将由相应第一节点表示的操作的输出作为输出提供给接收节点。
[0088] 系统可以修改分配以将发送节点和接收节点指派给设备(510)。例如,计算图系统可以将每个发送节点指派给与发送节点上游的节点相同的设备,并且同样可以将每个接收节点指派给与接收节点下游的节点相同的设备。
[0089] 系统可以根据修改后的分配将由节点表示的操作指派给多个设备(512)。例如,计算图系统可以请求多个设备中的每一个执行包括在相应子图中的操作。在一些实施方式中,系统可以将计算图划分成多个子图。
[0090] 本说明书中描述的主题的实施例和功能性操作可以在以下中实施:数字电子电路,有形实施的计算机软件或者固件,计算机硬件,包括本说明书中公开的结构及其结构等同体,或者上述中的一者以上的组合。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即,一个或多个计算机可读程序载体如有形非暂时性程序载体上编码的计算机程序指令的一个或多个模块,用以被数据处理设备执行或者控制数据处理设备的操作。作为替代或者附加,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电信号光信号或者电磁信号,上述信号被生成为编码信息以传递到用数据处理设备执行的适当的接收器设备。计算机存储介质可以是机器可读存储装置、机器可读的存储基板、随机或者串行存取存储器装置或者上述装置中的一种或多种的组合。然而计算机存储介质不是传播信号。
[0091] 术语“数据处理设备”包含所有种类的用于处理数据的设备、装置以及机器,作为示例,包括可编程处理器、计算机或者多重处理器或者多重计算机。设备可以包括专用逻辑电路,例如,FPGA(现场可编程阵列)或者ASIC(专用集成电路)。设备除了包括硬件之外,还可以包括创建相关计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一种或多种的组合代码。
[0092] 计算机程序(还可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或者代码)可以以任意形式的编程语言而被写出,包括编译语言或者解释语言或者声明性语言或过程式语言,并且计算机程序可以以任意形式展开,包括作为独立程序或者作为模块、组件、子程序或者适于在计算环境中使用的其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以被存储在保存其他程序或者数据的文件的一部分中,例如,存储在如下中的一个或多个脚本:在标记语言文档中;在专用于相关程序的单个文件中;或者在多个协同文件中,例如,存储一个或多个模块、子程序或者代码部分的文件。计算机程序可以被展开为执行在一个计算机或者多个计算机上,所述计算机位于一处,或者分布至多个场所并且通过通信网络而互相连接。
[0093] 如本说明书中所使用的,“引擎”或“软件引擎”是指提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,例如库、平台、软件开发工具包(“SDK”)或对象。每个引擎可以在任何适当类型的计算设备上实现,例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或包括一个或多个处理器和计算机可读介质的其他固定或便携式设备。另外,两个或更多个引擎可以在相同的计算设备上或不同的计算设备上实现。
[0094] 在本说明书中描述的处理和逻辑流程可以由一个或多个可编程计算机执行,该计算机通过运算输入数据并且生成输出而执行一个或多个的计算机程序,以运行函数。处理和逻辑流程还可以由专用逻辑电路,例如,FPGA(可现场编程门阵列)或者ASIC(专用集成电路)执行,并且设备也可以被实施为专用逻辑电路。
[0095] 适于实行计算机程序的计算机包括并且示例性地可以基于通用微处理器或者专用微处理器或者上述处理器两者,或者任意其他种类的中央处理单元。通常地,中央处理单元将接收来自只读存储器或者随机存取存储器或者这两者的指令和数据。计算机的主要元件是用于运行或者执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。通常地,计算机还将包括或者是可操作性地耦合,以从用于存储数据的一个或多个大容量存储装置接收数据或者传递数据到大容量存储装置,或者接收和传递两者,该大容量存储器例如为磁盘、磁光盘或者光盘。然而,计算机不必须具有这样的装置。此外,计算机可以被嵌入到另一装置中,例如,移动电话、个人数字助理(PDA)、移动音频或者视频播放器、游戏主控台、全球定位系统(GPS)接收器或者可移动存储设备,例如,通用串行总线(USB)闪存盘等。
[0096] 适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失存储器、介质和存储器装置,作为实例,包括:半导体存储器装置,例如,EPROM、EEPROM和闪速存储器装置;磁盘,例如,内置硬盘或者可移动磁盘;磁光盘;CD-ROM和DVD-ROM盘。处理器和存储器可以补充以或者并入至专用逻辑电路。
[0097] 为了提供与用户的交互,本说明书中描述的主题的实施方式可以被实施在计算机上,该计^机具有:显示装置,例如,CRT(阴极射线管)监控器,LCD(液晶显示器)监控器或OLED显示器,用于向用户显示信息;以及用于向计算机提供输入的输入设备,例如键盘鼠标或存在敏感显示器或其他表面。其他种类的装置也可以用于提高与用户的交互;例如,提供给用户的反馈可以是任意形式的传感反馈,例如,视觉反馈、听觉反馈或者触觉反馈;以及来自用户的输入可以以任意形式接收到,包括声响输入、语音输入或者触觉输入。另外,计算机可以通过将资源发送至由用户使用的装置并且接收来自该装置的资源而与用户交互;例如,通过响应于接收到的来自web浏览器的请求,而将网页发送到用户的客户端装置上的web浏览器。
[0098] 本说明书中描述的主题的实施方式可以在计算系统中实施,该计算系统包括例如数据服务器这样的后端组件,或者包括例如应用服务器这样的中间组件,或者包括例如客户端计算机这样的前端组件,该客户端计算机具有图形用户界面或者web浏览器,用户可以通过图形用户界面或者web浏览器而与本说明书中描述的主题的实施进行交互,或者该计算机系统包括一个或多个这种后端组件、中间组件或者前端组件的任意组合。系统中的组件可以通过例如通信网络的任意形式或介质的数字数据通信而互相连接。通信网络的实例包括局域网络(“LAN”)和广域网络(“WAN”),例如,互联网。
[0099] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络而交互。客户端与服务器之间的关系利用在各自的计算机上运行并且具有彼此之间的客户端-服务器关系的计算机程序而产生。
[0100] 虽然本说明书包含很多具体的实施细节,但是这些不应当被解释为对任何发明的范围或者对可以要求保护的内容的范围的限制,而是作为可以使特定发明的特定实施方式具体化的特征的说明。在独立的实施方式的语境中的本说明书中描述的特定特征还可以与单个实施方式组合地实施。相反地,在单个实施方式的语境中描述的各种特征还可以独立地在多个实施方式中实施,或者在任何合适的子组合中实施。此外,虽然以上可以将特征描述为组合作用并且甚至最初这样要求,但是来自要求的组合的一个或多个特征在一些情况下可以从该组合去掉,并且要求的组合可以转向子组合或者子组合的变形
[0101] 相似地,虽然以特定顺序在附图中描述了操作,但是不应当理解为:为了实现期望的结果,要求这样的操作以示出的特定顺序或者以顺序次序而执行,或者所有图示的操作都被执行。在特定情况下,多任务处理和并行处理可以是有利的。此外,上述实施方式中的各种系统模块和组件的分离不应当理解为在所有实施方式中要求这样的分离,并且应当理解程序组件和系统可以通常被一体化在单个软件产品中或者打包至多个软件产品中。
[0102] 已经描述了主题的特定实施方式。其他实施方式在以下权利要求的范围内。例如,在权利要求中记载的活动可以以不同的顺序执行并且仍旧实现期望的结果。作为一个实例,为了实现期望的结果,附图中描述的处理不必须要求示出的特定顺序或者顺序次序。在特定实施方式中,多任务处理和并行处理可以是有优势的。
相关专利内容
标题 发布/更新时间 阅读量
OCT图像修改 2020-05-12 120
一种修改液 2020-05-12 370
修改命令 2020-05-11 244
修改液笔 2020-05-11 1041
可见性信息修改 2020-05-12 826
一种环保修改液 2020-05-12 611
修改分析流 2020-05-11 259
移动呼叫修改 2020-05-12 733
修改设备通知 2020-05-13 408
修改笔 2020-05-11 264
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈