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

在图形处理单元上执行计算图的制作方法

2022-05-06 09:20:31 来源:中国专利 TAG:

在图形处理单元上执行计算图
1.分案说明
2.本技术属于申请日为2018年1月8日的中国发明专利申请201810015495.3的分案申请。
技术领域
3.本说明书涉及处理表示神经网络的计算图。


背景技术:

4.神经网络是机器学习模型,其使用一个或多个模型层来为接收到的输入生成输出,例如一个或多个分类。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层——即网络的下一个隐藏层或输出层——的输入。网络的每一层根据该层的相应参数集的当前值从接收到的输入生成输出。


技术实现要素:

5.本说明书大体描述了在一个或多个位置中的一个或多个计算机上实现为生成数据实体的计算机程序的系统。当数据实体被调用时,所述数据实体使得图形处理单元(gpu)通过执行与计算图相关联的运算来处理所述计算图。
6.通常,本说明书中描述的主题的一个创新方面可以体现在一种操作方法中,所述操作方法包括:接收标识计算图的数据,所述计算图包括表示运算的多个节点;获得用于在处理单元上处理所述计算图的编译工件;以及从所述编译工件生成数据实体,其中,所述数据实体在被调用时使得处理单元通过执行由所述多个节点表示的运算来处理计算图。
7.前述和其他实施例均可以可选地包括单独或组合的一个或多个以下特征。特别地,一个实施例包括所有以下特征的组合。编译工件进一步包括:缓冲区数据,所述缓冲区数据表示多个缓冲区参数和所述多个缓冲区参数与所述运算之间的关联的缓冲区数据,所述多个缓冲区参数中的每一个与所述运算中的相应运算相关联。所述编译工件进一步包括:指派给所述多个缓冲区参数的相应逻辑号,以及指定所述逻辑号与由所述多个节点表示的所述运算之间的关联的数据。编译工件进一步包括:表示(i)运算序列和(ii)所述运算之间的依赖性的数据结构。所述数据结构是有向无环图(dag)。所述方法进一步包括维护多个库,所述多个库中的每一个存储一个或多个子例程。所述编译工件进一步包括:库数据,所述库数据表示多个缓冲区参数和所述多个缓冲区参数与所述多个库之间的关联,所述多个缓冲区参数中的每一个与所述多个库中的相应库相关联。所述编译工件进一步包括:被配置为处理所述计算图的机器代码。所述运算是用于处理穿过神经网络的一个或多个层的所述神经网络的输入以生成所述神经网络的输出的运算。所述运算是通过调整神经网络的参数值来训练所述神经网络的运算。所述处理单元是gpu或中央处理单元(cpu)。
8.通常,本说明书中描述的主题的另一创新方面可以体现在一种操作方法中,所述操作方法包括:接收作为计算图的用户特定输入的输入缓冲区参数,所述计算图包括表示
运算的多个节点;接收数据实体,所述数据实体包括表示(i)包括所述输入缓冲区参数的多个缓冲区参数和(ii)所述多个缓冲区参数与所述运算之间的关联的缓冲区数据;以及利用所述输入缓冲区参数调用所述数据实体以使得处理单元通过执行所述运算来根据所述输入缓冲区参数处理所述计算图。
9.前述和其它实施例均可以任选地包括单独或组合的一个或多个以下特征。特别地,一个实施例包括所有以下特征的组合。利用所述输入缓冲区参数调用所述数据实体包括:基于所述数据实体从所述计算图识别一个或多个运算,所述一个或多个运算对应于所述输入缓冲区参数,以及将所述一个或多个运算在所述处理单元上排队来处理所述计算图。所述运算包括多个运算组,并且所述数据实体包括数据实体,所述数据实体表示(i)多个流,每个流表示运算序列和(ii)所述运算之间的依赖性,并且其中,利用所述输入缓冲区参数调用所述数据实体包括:基于所述数据实体,从所述计算图识别多个流,每个流与来自所述运算的相应运算组相关联,对于所述多个流中的每个流,将相应运算组排队到与所述相应运算组相关联的流中,以及基于所述数据实体来定义所述多个运算组之间的依赖性。所述处理单元是gpu或cpu。
10.本说明书中描述的主题可以在特定实施例中实现,以实现以下优点中的一个或多个。常规的编译系统需要主机cpu来处理运算。在该常规的编译系统中,当主机cpu正在处理一些运算时,gpu是空闲的。因此,常规的编译系统无法有效率地使用gpu的硬件资源。与常规的编译系统不同,本说明书中描述的系统生成数据实体,其包括用于执行运算的所有必要描述。具体地,数据实体在编译时生成,并且然后可以在运行时调用该数据实体以使得gpu处理计算图。这允许将由计算图表示的所有运算作为整体在gpu上排队,由此提高包括gpu的机器的效率。
11.在附图和下面的描述中阐述了本说明书的主题的一个或多个实施例的细节。该主题的其它特征、方面和优点将根据该描述、附图和权利要求书而变得显而易见。
附图说明
12.图1a图示用于从计算图生成数据实体的示例计算图系统。
13.图1b图示用于处理计算图的示例机器。
14.图2是用于从计算图生成数据实体的示例过程的流程图。
15.图3是通过执行由计算图表示的运算来调用数据实体以处理计算图的示例过程的流程图。
16.图4是通过执行由计算图表示的运算来调用数据实体以处理计算图的示例过程的流程图。
17.在各附图中相似的附图标记和名称指示相似的元素。
具体实施方式
18.本说明书大体描述了一种生成数据实体的计算图系统,该数据实体在被调用时使得图形处理单元(gpu)通过执行由计算图表示的运算来处理该计算图。具体地,当利用输入缓冲区参数调用数据实体时,该数据实体作为整体被排队到gpu中,并且gpu根据输入缓冲区参数来处理计算图。
19.图1a图示用于根据计算图生成数据实体的示例计算图系统100。计算图系统100是被实现为一个或多个位置中的一个或多个计算机上的计算机程序的系统的示例,其中可以实现下面描述的系统、组件和技术。
20.客户端102的用户可以请求在表示神经网络的计算图上执行运算。客户端102可以是在计算机上运行的应用。作为请求的一部分,客户端102向计算图系统100提供标识计算图的数据,并指定待在该计算图上执行的运算的类型。例如,该请求可以标识表示特定神经网络的推断的计算图并且可以标识应在其上执行该推断的输入。作为另一个示例,该请求可以标识表示待被训练的神经网络的计算图和应在其上执行训练的输入,例如训练数据。
21.计算图系统100接收包括计算图的数据作为输入。该计算图利用表示运算的节点来表示机器学习模型的计算。具体地,计算图利用表示运算的节点和表示运算之间的数据依赖性的有向边来表达例如机器学习模型的计算。到节点的传入边表示到该节点的输入流,即由该节点表示的运算的输入实参(argument)。如果运算所需的所有实参都可用于运算节点,则该节点被启用并且可以被执行。
22.从节点的传出边表示由节点表示的运算的输出流,其待被用作对由另一个节点表示的运算的输入。因此,将图中的第一节点连接到图中的第二节点的有向边指示由第一节点所表示的运算生成的输出被用作对由第二节点所表示的运算的输入。
23.在一些实施方式中,在计算图中表示的运算是线性代数运算——例如矩阵乘法、神经网络运算、或不同种类的机器学习模型的运算。神经网络是一种机器学习模型,其采用一层或多层非线性单元来预测接收到的输入的输出。一些神经网络是除了输出层之外还包括一个或多个隐藏层的深度神经网络。每个隐藏层的输出层被用作向网络中另一层——即另一隐藏层、输出层、或两者——的输入。网络的一些层根据相应的参数集的当前值从接收的输入生成输出,而网络的其他层可能不具有参数。
24.由计算图表示的运算可以是神经网络计算推断——即处理通过神经网络的层的输入以生成该输入的神经网络输出——所必需的运算。另外地或替选地,由计算图表示的运算可以是通过执行神经网络训练过程来调整神经网络的参数值——例如使用反向传播以从参数初始值确定参数训练值——以训练神经网络所必需的运算。在一些情况下,例如在训练神经网络期间,由计算图表示的运算可以包括由神经网络的多个副本执行的运算。
25.作为说明,接收来自先前层的输入的神经网络层可以使用参数矩阵来执行该参数矩阵和该输入之间的矩阵乘法。在某些情况下,矩阵乘法可以被表示为计算图中的多个节点。例如,矩阵乘法可以分为多个乘法和加法运算,并且每个运算可以由计算图中的不同节点表示。由每个节点表示的运算可以生成相应的输出,其在有向边上流向随后节点。在由最终节点表示的运算生成矩阵乘法的结果之后,该结果在有向边上流向另一节点。该结果等效于执行矩阵乘法的神经网络层的输出。
26.在一些其他情况下,矩阵乘法在图中被表示为一个节点。该节点表示的运算可以接收第一有向边上的输入张量和第二有向边上的权重张量——例如参数矩阵——作为输入。该节点可以处理——例如执行输入张量和权重张量的矩阵乘法,以在第三有向边上输出等效于神经网络层的输出的输出张量。
27.可以由计算图中的节点表示的其他神经网络运算包括其他数学运算,例如减法、除法和梯度计算;数组运算,例如串接、插替(splice)、分割、或排名;和神经网络构建块运
算,例如softmax、sigmoid、修正线性单元(relu)或卷积。
28.在一个示例系统中,计算图中的一个或多个节点集合可表示控制穿过计算图的数据流的运算。例如,该一个或多个节点集合可以表示条件、递归、和/或迭代控制流语句,包括:if语句,while循环,do-while循环,for循环,for-each循环的的,或者包括这些语句的组合的嵌套控制流语句。
29.计算图中的一个或多个节点集合可表示一些运算,其可以转化为高性能库的运算,所述高性能库包含线性代数——例如矩阵乘法或神经网络运算——例如后向卷积)的高性能实现。
30.在一个示例编译系统中,该编译系统将多个运算融合成融合运算,该融合运算可以在代码生成时间被转换为执行所有融合运算的调取(call)。这种融合过程为诸如cpu或gpu的设备生成高效代码。
31.计算图系统100包括编译器103和数据实体生成器105。编译器103可以转换运算的计算图以产生机器代码,所述机器代码在由一个或多个设备执行时使得该设备执行由计算图表示的运算。在一些实施方式中,机器可以包括一个或多个设备,例如gpu和cpu。gpu可以由主机cpu控制。gpu接收来自由主机cpu操作的主机程序的各个请求。例如,gpu可以一次接收用于启动单个数据并行子例程、用于标记一系列启动中的兴趣点、或者用于分配或解除分配作为gpu设备上的专用存储器的gpu存储器的请求。
32.具体地,当要在其上执行计算图的设备是gpu时,编译器103生成用于处理gpu上的计算图的编译工件(artifact)。编译工件包括执行由计算图的节点表示的运算所必需的所有描述。在一些实施方式中,编译工件包括机器代码、数据结构、缓冲区数据、和库数据。
33.生成机器代码来处理计算图。例如,可以为计算图的节点、计算图中的运算序列以及计算图中的运算的数组大小生成机器代码。由于该机器代码是为特定的计算图生成的,所以机器代码不需要虑及所有可能的数组大小的运算。因此,机器代码可以提高处理速度。机器代码供gpu用来处理计算图。例如,gpu可以使用机器代码来执行由计算图表示的特定运算。在一些实施方式中,机器代码可不包括用于cpu的代码。即使机器代码不包含用于cpu的代码,gpu也可以通过调用数据实体来执行运算。数据实体的细节将在下面参照图1b更详细地描述。
34.在一些实施方式中,编译工件包括数据结构。在一些实施方式中,数据结构可以是dag。数据结构可以表示(i)由计算图的节点表示的运算序列和(ii)运算之间的依赖性。
35.在一些实施方式中,编译工件包括缓冲区数据。缓冲区数据指定当gpu通过执行由计算图表示的运算来处理计算图时在哪个缓冲区上执行哪个运算。缓冲区数据表示缓冲区参数和缓冲区参数与运算之间的关联。在一些实施方式中,缓冲区参数可以是逻辑号(logical number)。例如,可以将相应的逻辑号指派给每个缓冲区,并且可以通过指定指派给特定缓冲区的逻辑号来在特定缓冲区上运算特定的运算。
36.在一些实施方式中,编译工件包括库数据。库数据表示应为特定运算调用哪个gpu库。在一些实施方式中,库数据还可以表示哪个缓冲区被用于哪个gpu库。像缓冲区数据一样,可以将相应的逻辑号指派给每个库,并且可以通过指定指派给特定缓冲区的逻辑号来针对特定的缓冲区调用特定的gpu库。
37.数据条目生成器105从编译工件生成数据实体。数据实体可以包括执行由计算图
的节点表示的运算所必需的所有描述。例如,上述所有的编译工件都可以捆绑在一起形成数据实体。结果,数据实体包括机器代码、数据结构——如dag、缓冲区数据和库数据。在一些实施方式中,编译工件中的机器代码、数据结构、缓冲区数据和库数据的特性可以保留在数据条目中。例如,编译工件中的运算之间的依赖性可以保存在数据条目中。在一些实施方式中,数据条目可以被加载到机器的存储器中。
38.计算图系统100通过数据通信网络114将数据实体提供给机器160-166之一。机器160-166的示例可以包括计算设备、个人计算机、移动设备和服务器。例如,每个机器可以包括一个或多个设备120-126,例如gpu和cpu。参照图1a,机器160-166分别包括设备120-126,例如gpu。由于数据实体包括执行运算所必需的所有描述,因此接收数据实体的机器可以使得设备——例如gpu——使用该数据实体来处理整个计算图。在一些实施方式中,因为例如配置gpu和缓冲区的所有必要描述已经在编译时间被确定并被包括在数据实体中,所以gpu可以继续处理整个计算图,使得可以减少或避免如传统系统中典型的gpu和主机cpu之间的频繁交互。当数据实体被调用时,设备——例如gpu——通过执行由计算图的节点表示的运算来处理计算图并且生成输出。包括设备的机器可以将该输出返回到计算图系统100,计算图系统100可以将所请求的输出返回到客户端102。在一些实施方式中,网络114可以是局域网(lan)或广域网(wan)。在一些实施方式中,机器160-166可以额外地包括用于存储指令和数据的存储器——例如随机存取存储器(ram)以及用于执行存储的指令的处理器。通常,每台机器都是独立于其他机器执行运算的硬件资源。
39.图1b图示用于处理计算图的示例机器160-166和示例设备120-126。在图1b中,机器160-166分别包括设备120-126,例如gpu。机器160接收输入缓冲区参数130。输入缓冲区参数130是计算图形的用户特定输入。另外,机器160-166可以从计算图系统100接收数据实体。在该示例中,包括设备120的机器160从计算图系统100接收数据实体。机器160利用输入缓冲区参数调用数据实体,并使得设备120处理计算图。由于数据实体是由包括缓冲区数据的编译工件生成的,所以数据实体包括缓冲区数据。数据实体包括输入缓冲区参数和输入缓冲区参数与运算之间的关联。因此,可以基于输入缓冲区参数来识别来自计算图的运算。所述运算作为整体在设备120上排队。当运算在设备120上排队时,设备120通过执行排队的运算来处理计算图并且生成输出。机器160将该输出返回到计算图系统100,计算图系统100可以将该输出返回到客户端102。
40.在一些实施方式中,多个机器160-166可以分别接收输入缓冲区参数130和数据实体。在该示例中,运算被排队到设备120-126中的每一个中,并且设备120-126可以通过执行运算来同时处理计算图。设备120-126生成相应的输出,并且机器160-166将输出返回到计算图系统100。
41.图2是用于从计算图生成数据实体的示例流程图。在一些实施方式中,数据实体的生成在处理计算图之前在编译任务的场境(context)中执行。在一些示例中,该生成是在主机cpu上执行,并且基于生成的数据实体来在gpu上发生计算图的处理。
42.为了方便,将过程200描述为由位于一个或多个位置的一个或多个计算机的系统执行,并且根据本说明书适当地编程。例如,适当地编程的图1a的示例计算图系统100可以执行过程200。
43.系统接收标识计算图的数据(202)。计算图可以包括表示运算的节点。
44.系统获得用于在gpu上处理计算图的编译工件(204)。编译工件由编译器生成,该编译器编译计算图以供由gpu处理。编译工件包括执行由计算图的节点表示的运算所必需的描述。例如,编译工件包括机器代码,表示多个运算序列以及运算、缓冲区数据和库数据之间的依赖性的数据结构。
45.系统从编译工件生成数据实体(206)。当数据实体被调用时,该数据实体通过执行由多个节点表示的运算来使得gpu处理计算图。数据实体可以包括执行由计算图的节点表示的运算所必需的所有描述。例如,上述所有的编译工件都可以捆绑在一起形成数据实体。结果,数据实体包括机器代码、数据结构——如dag、缓冲区数据和库数据,以使得gpu通过执行运算来处理计算图。在一些实施方式中,编译工件中的机器代码、数据结构、缓冲区数据和库数据的特性可以保留在数据条目中。例如,编译工件中的运算之间的依赖性可以保存在数据条目中。在一些实施方式中,数据条目可以被加载到机器的存储器中。
46.图3是用于通过执行由计算图表示的运算来调用数据实体以处理计算图的示例流程图。为了方便,将过程300描述为由一个或多个gpu执行。例如,适当地编程的图1b的示例机器160-166可以执行过程300。
47.机器接收输入缓冲区参数(302)。机器可以包括一个或多个设备,诸如gpu和cpu。输入缓冲区参数是计算图的用户特定输入。在一些实施方式中,机器可以从用户接收输入缓冲区参数。计算图包括表示运算的多个节点。
48.机器接收数据实体(304)。数据实体可以包括缓冲区数据,其表示(i)包括输入缓冲区参数的多个缓冲区参数和(ii)多个缓冲区参数与运算之间的关联。在一些实施方式中,机器可以从计算图系统接收数据实体。
49.机器利用输入缓冲区参数调用数据实体(306)。当数据实体被调用时,数据实体使得设备——例如gpu——通过执行运算根据输入缓冲区参数来处理计算图。在一些实施方式中,可以基于数据实体来识别来自与输入参数缓冲区相对应的计算图的运算。机器将所识别的运算作为整体排队到设备中以处理计算图。
50.图4是用于通过执行由计算图表示的运算来调用数据实体以处理计算图的示例流程图。为了方便,将过程400描述为由一个或多个gpu执行。例如,适当地编程的图1b的示例机器160-166可以执行过程400。机器可以包括一个或多个设备,例如gpu和cpu。在这个示例中,运算包括多组运算,并且数据实体包括表示(i)流和(ii)流中的运算之间的依赖性的数据结构。
51.机器基于数据实体从计算图表中识别流(402)。每个流可以与运算中的相应运算组相关联。
52.机器对于每个流将相应的运算组排对到与相应运算组相关联的流中(404)。对于每个流,机器可以基于数据实体来识别相应的运算组。一旦机器针对流识别出相应运算组,机器便将相应的运算组排队到每个流中。
53.机器基于数据实体来定义多个运算组之间的依赖性(406)。数据实体包括表示运算之间的依赖性的数据结构。根据运算之间的依赖性,可以确定多个运算组之间的依赖性。在一些实施方式中,来自所有流的依赖性可以被构建到特定的流。这个特定的流可以被定义为主流。
54.本说明书中描述的主题和功能操作的实施例可用数字电子电路、有形实施的计算
机软件或固件、包括本说明书中公开的结构及其结构等同物的计算机硬件、或其中一个或多个的组合实现。本说明书中描述的主题的实施例可被实现为一个或多个计算机程序,即,编码在有形非暂时性程序载体上供数据处理装置执行或用于控制数据处理装置的操作的计算机程序指令的一个或多个模块。替选地或另外地,程序指令可被编码在人工生成的传播信号——例如机器生成的电、光、或电磁信号,生成该传播信号是为了编码用于传输到合适的接收器装置以供数据处理装置执行的信息。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备、或其中一个或多个的组合。然而,计算机存储介质不是传播信号。
55.术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括举例来说可编程处理器、计算机、或多个处理器或计算机。装置可以包括,专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,装置还可以包括创建讨论中的计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或其中一个或多个的组合的代码。
56.计算机程序(还可被称为或描述为程序、软件、软件应用、模块、软件模块、脚本、或代码)可用任何形式的编程语言来编写,编程语言包括编译或解释语言、或声明式或过程式语言;并且它可按任何形式进行部署,包括被部署为独立程序或模块、组件、子例程、或适用于计算环境的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可被存储在保持其他程序或数据——例如存储在标记语言文档中的一个或多个脚本——的文件的一部分中、在专用于所讨论的程序的单个文件中、或在多个协调文件——例如存储一个或多个模块、子程序、或代码的部分的文件——中。计算机程序可被部署成在一个计算机上或位于一个地点或跨多个地点分布并且通过通信网络互连的多个计算机上执行。
57.如在本说明书中所使用的,“引擎”或“软件引擎”指代提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,例如库、平台、软件开发工具包(“sdk”)或对象。每个引擎可以在任何适当类型的计算设备上实现,例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、pda、智能电话、或其他包括一个或多个处理器和计算机可读介质的固定或便携式设备。另外,两个或更多个引擎可以在相同的计算设备上或者在不同的计算设备上实现。
58.可通过执行一个或多个计算机程序以通过对输入数据进行运算并且生成输出来执行功能的一个或多个可编程计算机来执行本说明书中描述的过程和逻辑流程。处理和逻辑流程也可以由专用逻辑电路——例如fpga(现场可编程门数组)或asic(专用集成电路)——来执行,并且装置也可以被实现为专用逻辑电路。
59.适用于执行计算机程序的计算机包括举例来说可以基于通用或专用微处理器或这二者、或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或这二者接收指令和数据。计算机的基本元件是用于执行或实行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备——例如磁盘、磁光盘、或光盘,或者可操作地耦合以从一个或多个大容量存储设备接收数据或将数据传递到一个或多个大容量存储设备,或者这两者。然而,计算机不需要具有这些设备。此外,计算机可嵌入另一个设备,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器、或便
携式存储设备——例如通用串行总线(usb)闪存驱动器,仅举数例。
60.适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括举例来说半导体存储器设备,例如,eprom、eeprom和闪存存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;cd-rom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或者并入专用逻辑电路。
61.为了提供与用户的交互,本说明书中描述的主题的实施例可在具有以下的计算机上实现:用于向用户显示信息的显示设备——例如crt(阴极射线管)或lcd(液晶显示器)监视器和用户可借此向计算机提供输入的键盘和指示设备——例如鼠标或跟踪球。也可使用其他种类的设备提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈、或触觉反馈;可以接收来自用户的包括声学、语言、或触觉输入的任何形式的输入。另外,计算机可通过将文档发送到用户所使用的设备并且从其接收文档——例如通过响应于从用户的客户端设备上的web浏览器接收的请求将网页发送到web浏览器——来与用户交互。
62.本说明书中描述的主题的实施例可在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器;或包括中间件组件,例如应用服务器;或包括前端组件,例如,具有用户通过其可与本说明书中描述的主题的实现方式交互的图形用户界面或web浏览器的客户端计算机;或一个或多个这些后端、中间件、或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信——例如通信网络——来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如,互联网。
63.计算系统可包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络交互。凭借在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序,产生客户端和服务器的关系。
64.虽然本说明书包含许多具体实现方式细节,但这些不应该被理解为限制任何发明的范围或可要求保护的范围,而应理解为对于可以是特定发明的特定实施例所特定的特征的描述。在分开的实施例的场境下在本说明书中描述的某些特征还可组合地在单个实施例中实现。相反地,在单个实施例的背景下描述的各个特征还可分开地在多个实施例中或以任何合适的子组合实现。此外,虽然特征可在以上描述为以某些组合起作用并甚至初始地被如此要求保护,但要求保护的组合中的一个或多个特征可在某些情况下被从组合中删除,并且要求保护的组合可涉及子组合或子组合的变型。
65.类似地,虽然在附图中以特定次序描绘了操作,但这不应该被理解为需要以所示出的特定次序或以顺序次序来执行这些操作,或者执行所有例示的操作,来实现所期望的结果。在某些情形下,多任务和并行处理可以是有利的。此外,上述实施例中的各个系统模块和组件的分离不应该被理解为需要所有实施例中的这样的分离,并且应该理解,所描述的程序组件和系统可通常一起被集成在单个软件产品中或封装在多个软件产品中。
66.其他实施方式在以下示例中进行了总结:
67.示例1:一种方法,包括:接收标识计算图的数据,所述计算图包括多个表示运算的节点;获得用于在处理单元上处理计算图的编译工件;以及从所述编译工件生成数据实体,其中,所述数据实体在被调用时使得所述处理单元通过执行由所述多个节点表示的所述运算来处理所述计算图。
68.示例2:如示例1所述的方法,其中编译工件进一步包括:缓冲区数据,所述缓冲区数据表示多个缓冲区参数和所述多个缓冲区参数与所述运算之间的关联,所述多个缓冲区参数中的每一个与所述运算中的相应运算相关联。
69.示例3:如示例2所述的方法,其中,所述编译工件进一步包括:指派给所述多个缓冲区参数的相应逻辑号,以及指定所述逻辑号与由所述多个节点表示的所述运算之间的关联的数据。
70.示例4:如示例1至3之一所述的方法,其中,所述编译工件进一步包括:表示(i)运算序列和(ii)所述运算之间的依赖性的数据结构。
71.示例5:如示例4所述的方法,其中,所述数据结构是有向无环图。
72.示例6:如示例1至5之一所述的方法,进一步包括:维护多个库,所述多个库中的每一个存储一个或多个子例程。
73.示例7:如示例6所述的方法,其中,所述编译工件进一步包括:库数据,所述库数据表示多个缓冲区参数和所述多个缓冲区参数与所述多个库之间的关联,所述多个缓冲区参数中的每一个与所述多个库中的相应库相关联。
74.示例8:如示例1至7之一所述的方法,其中,所述编译工件进一步包括:被配置为处理计算图的机器代码。
75.示例9:如示例1至8之一所述的方法,其中,所述运算是用于处理穿过神经网络的一个或多个层的所述神经网络的输入以生成所述神经网络的输出的运算。
76.示例10:如示例1至9之一所述的方法,其中,所述运算是用于通过调整神经网络的参数值来训练所述神经网络的运算。
77.示例11:如示例1至10之一所述的方法,其中,所述处理单元是图形处理单元(gpu)或中央处理单元(cpu)。
78.示例12:一种方法,包括:接收作为计算图的用户特定输入的输入缓冲区参数,所述计算图包括表示运算的多个节点;接收数据实体,所述数据实体包括表示(i)包括所述输入缓冲区参数的多个缓冲区参数和(ii)所述多个缓冲区参数与所述运算之间的关联的缓冲区数据;以及利用所述输入缓冲区参数调用所述数据实体以使得处理单元通过执行所述运算来根据输入缓冲区参数处理所述计算图。
79.示例13:如示例12所述的方法,其中,利用所述输入缓冲区参数调用所述数据实体包括:基于所述数据实体从所述计算图识别一个或多个运算,所述一个或多个运算对应于所述输入缓冲区参数,以及将所述一个或多个运算在所述处理单元上排队以处理所述计算图。
80.示例14:如示例12或13所述的方法,其中,所述运算包括多个运算组,并且所述数据实体包括数据结构,所述数据结构表示(i)多个流,每个流表示运算序列,以及(ii)所述运算之间的依赖性,以及其中,利用所述输入缓冲区参数调用所述数据实体包括:基于所述数据实体,从所述计算图识别多个流,每个流与来自所述运算的相应运算组相关联,对于所述多个流中的每个流,将相应的运算组配对到与相应的运算组相关联的流中,以及基于所述数据实体来定义所述多个运算组之间的依赖性。
81.示例15:如示例12至14之一所述的方法,其中,所述处理单元是gpu或cpu。
82.示例16:一种系统,包括一个或多个计算机和一个或多个存储设备,所述存储设备
存储指令,所述指令在由所述一个或多个计算机执行时使得所述一个或多个计算机执行系统操作,所述系统操作包括:接收标识计算图的数据,所述计算图包括表示运算的多个节点;获得用于在处理单元上处理所述计算图的编译工件;以及从所述编译工件生成数据实体,其中,所述数据实体在被调用时使得所述处理单元通过执行由所述多个节点表示的所述运算来处理所述计算图。
83.示例17:如示例16所述的系统,其中,所述编译工件进一步包括:缓冲区数据,所述缓冲区数据表示多个缓冲区参数和所述多个缓冲区参数与所述运算之间的关联,所述多个缓冲区参数中的每一个与所述运算中的相应运算相关联。
84.示例18:如示例17所述的系统,其中,所述编译工件进一步包括:指派给所述多个缓冲区参数的相应逻辑号,以及指定所述逻辑号与由所述多个节点表示的所述运算之间的关联的数据。
85.示例19:如示例16至18之一所述的系统,其中,所述编译工件进一步包括:表示(i)运算序列和(ii)运算之间的依赖性的数据结构。
86.示例20:如示例19所述的系统,其中,所述数据结构是有向无环图。
87.示例21:如示例16至20之一所述的系统,进一步包括:维护多个库,所述多个库中的每一个存储一个或多个子例程。
88.示例22:如示例21所述的系统,其中,所述编译工件进一步包括:库数据,所述库数据表示多个缓冲区参数和所述多个缓冲区参数与所述多个库之间的关联,所述多个缓冲区参数中的每一个与所述多个库中的相应库相关联。
89.示例23:如示例16至22之一所述的系统,其中,所述编译工件进一步包括:被配置为处理所述计算图的机器代码。
90.示例24:如示例16至23之一所述的系统,其中,所述运算是用于处理穿过神经网络的一个或多个层的所述神经网络的输入以生成所述神经网络的输出的运算。
91.示例25:如示例16至24之一所述的系统,其中,所述运算是用于通过调整神经网络的参数值来训练所述神经网络的运算。
92.示例26:如示例16至25之一所述的系统,其中,所述处理单元是gpu或cpu。
93.示例27.一种系统,包括一个或多个计算机和一个或多个存储设备,所述存储设备存储指令,所述指令在由所述一个或多个计算机执行时使得所述一个或多个计算机执行系统操作,所述系统操作包括:接收作为计算图的用户指定输入的输入缓冲区参数,所述计算图包括多个表示运算的节点;接收数据实体,所述数据实体包括表示(i)包括所述输入缓冲区参数的多个缓冲区参数和(ii)所述多个缓冲区参数与所述运算之间的关联的缓冲区数据的数据实体;以及利用所述输入缓冲区参数调用所述数据实体以使得处理单元通过执行所述运算来根据所述输入缓冲区参数处理所述计算图。
94.示例28:如示例27所述的系统,其中,利用所述输入缓冲区参数调用所述数据实体包括:基于所述数据实体从所述计算图识别一个或多个运算,所述一个或多个运算对应于所述输入缓冲区参数,以及将所述一个或多个运算在所述处理单元上排队以处理所述计算图。
95.示例29:如示例27或28的系统,其中,所述运算包括多个运算组并且所述数据实体包括数据结构,所述数据结构表示:(i)多个流,每个流表示运算序列,和(ii)所述运算之间
的依赖性,以及其中,利用所述输入缓冲区参数调用所述数据实体包括:基于所述数据实体,从所述计算图识别多个流,每个流与来自所述运算的相应运算组相关联,对于所述多个流中的每个流,将相应的运算组排队到与相应的运算组相关联的流中,以及基于所述数据实体来定义所述多个运算组之间的依赖性。
96.示例30:如示例27至29之一的系统,其中,所述处理单元是gpu或cpu。
97.已经描述了主题的特定实施例。其他实施例在所附权利要求书的范围内。例如,在权利要求书中阐述的动作可按不同次序执行并且仍然实现所期望结果。作为一个示例,附图中描绘的过程不一定需要所示出的特定次序或顺序次序来实现所期望结果。在某些情况下,多任务和并行处理可以是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献