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

跨计算装置分布张量计算的方法、系统和介质与流程

2022-06-05 05:51:44 来源:中国专利 TAG:

跨计算装置分布张量计算的方法、系统和介质
1.分案说明
2.本技术属于申请日为2019年8月5日的中国发明专利申请201980017284.6的分案申请。
3.相关申请的交叉引用
4.本技术根据35u.s.c.
§
119(e),要求于2018年8月3日提交的美国专利申请no.62/714,586“distributing tensor computations across computing devices(跨计算装置分布张量计算)”的优先权,并且通过引用将其合并于此。


背景技术:

5.本说明书涉及跨多个计算装置分布张量计算以便执行。例如,张量计算可以是用于训练神经网络或其它机器学习模型的操作。
6.神经网络是采用一个或多个非线性单元层来预测接收到的输入的输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一层(即,下一隐藏层或输出层)的输入。网络的每个层根据相应参数集合的当前值来从接收到的输入生成输出。


技术实现要素:

7.本说明书描述了一种实施为在位于一个或多个位置的一个或多个计算机上的计算机程序的系统,该系统响应于接收到的请求而跨计算装置分布张量计算。张量计算接收分别具有一个或多个相应输入维度的一个或多个输入张量作为输入。另外或可替代地,张量计算可以被定义为生成分别具有一个或多个相应输出维度的一个或多个输出张量作为输出。在本说明书中,接收或生成张量的张量计算意味着:配置为执行张量计算的计算装置执行张量计算以接收一个或多个输入张量,生成一个或多个输出张量,或者进行这两者,这取决于张量计算的定义。
8.每个计算装置包括至少一个处理器以及用于存储张量的存储器。计算装置可以包括处理器核、处理器、微处理器、专用逻辑电路系统(例如,fpga(现场可编程门阵列)或asic(专用集成电路)或任何其它适当的计算装置。在一些示例中,计算装置都是相同类型的计算装置。在其它示例中,计算装置可以包括不同类型的处理单元。例如,一个装置可以包括一个或多个cpu(中央处理单元),而其它装置可以包括一个或多个gpu(图形处理单元)或tpu(张量处理单元)。
9.例如,张量计算可以是用于训练神经网络或其它种类的机器学习模型的操作或用于使用神经网络或其他机器学习模型来执行推理的操作。
10.具体地,该系统允许用户提交规范数据,该规范数据指定在张量计算中所涉及的张量的布局,即,应该如何跨计算装置分布在张量计算中所涉及的每个张量的每个维度。例如,用户可以提交规范数据,该规范数据针对每个张量的每个维度指定是应该在装置中的至少一些装置之中拆分维度还是应该在装置中的所有装置上复制维度。
11.基于布局,该系统将张量计算编译为装置本地操作,并且若必要,将张量计算编译为引起装置之间的通信以组合装置本地操作的输出的通信原语操作。
12.然后,该系统可以通过使每个装置对装置接收到的输入执行对应的装置本地操作(以及若必要,执行通信原语操作)来使得执行张量计算。该系统可以使装置按照各种方式中的任何方式来执行对应的装置本地操作,例如,通过向装置发送适当的指令或控制信号,这些适当的指令或控制信号使装置在装置本地操作的输入变为可用时执行分配给装置的每个装置本地操作。
13.当张量计算是用于训练机器学习模型的操作时,用户可以为在针对一批训练数据执行的机器学习训练过程的迭代期间处理的(即,接收到的或生成的)张量指定布局。然后,该系统可以使得反复对不同的几批训练数据执行张量计算以反复更新机器学习模型的参数以将模型训练到收敛或直到满足某一其它条件为止。
14.可以实施在本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个优点。
15.通过允许用户仅通过指定相关张量的布局来指定如何分布张量计算,可以按照简单的方式来指定复杂的分布方案。因此,用户可以有效地实施使得以导致装置的计算能力的一次或多次地高效利用,提高性能或减少计算时间的方式来执行张量计算(例如,模型训练操作)的有效的分布方案。
16.使用本文描述的用于指定分布方案的方法可以通过将计算装置之间的通信最小化(例如,通过利用网格中的计算装置之间的现有物理连接)来更有效地利用计算装置的计算能力。计算装置之间的通信通常比计算更昂贵,并且在并行程序中,尤其在分布式设置中,通常是瓶颈。本文描述的方法可以展现与其它并行化策略(诸如,例如,属主计算策略)更细粒度的并行性。
17.通过使用在本说明书中描述的用于指定分布方案的技术,可以指定并且实施用于使对非常大型的机器学习模型(即,不适合在单个计算装置上的模型)的训练并行性的方案。这允许模型得以训练以实现有关相对于现有技术的各种机器学习任务中的任何任务的改进的性能,例如,因为可以有效地训练比传统模型具有更多参数(例如,更多隐藏单元)的模型。此外,通过利用可用装置中的所有装置的计算能力,还可以针对训练和推理两者,有效地实施处理非常大的输入的模型。当进行推理时,系统可以以比传统方法更低的延迟来执行模型,因为操作被跨计算装置地分布。
18.此外,通过按照在本说明书中描述的方式来指定分布方案,可以轻松地将给定的分布方案推广到其它硬件或模型类型。因此,一旦发现了有效的分布方案,就可以轻松地推广该方案以有效地分布其它类似的张量计算。
19.在附图和下面的描述中阐述了本说明书的主题的一种或多种实现方式的细节。本主题的其它特征、方面和优点将通过说明书、附图以及权利要求书而变得显而易见。
附图说明
20.图1是包括多个计算装置的计算系统的框图。图2a至图2d示出了布局在二维网格上的二维张量的示例布局。
21.图3是用于根据指定张量计算的分布的规范数据来在多个计算装置上执行操作的
示例过程的流程图。
22.各个附图中的相同附图标记和标号指示相同的元件。
具体实施方式
23.图1是计算系统100的框图,该计算系统100包括相互连接以形成网格110的多个计算装置。计算系统100还可以包括布局引擎120、计算图引擎130和网格执行引擎140。出于本说明书的目的,网格是相互连接的计算装置的n维阵列。例如,网格110是相互连接的计算装置的二维阵列。网格110的计算装置的二维阵列可以说具有形状[4,4],表示计算装置的4x4阵列。
[0024]
可以为同一物理装置集合定义不同的网格,并且因此,网格的形状不暗示计算装置如何相互连接的物理网络拓扑。相反,网格的形状是指根据n维阵列的每个维度表示的若干计算装置,一般地表示为[k1,k2,...kn],其中,每个ki(i≤n)表示网格中的第i维的长度。
[0025]
例如,具有16x16x2环形网络互连的512核心张量处理单元(“tpu”)群集可以被表示为:形状为[16,16,2]的三维阵列;形状为[32,16]的二维阵列或形状为[512]的一维阵列。可以为具有不同类型的处理单元(例如,中央处理单元(cpu)、图形处理单元(gpu)和tpu)的计算装置定义网格。
[0026]
可选地,计算系统100还可以接收指定若干操作180的数据。在一些实现方式中,计算系统100被配置为使用网格110中的计算装置并且对输入数据150执行操作180。
[0027]
在一些实现方式中,计算系统100不被配置为接收指定若干操作180的数据。在那些实现方式中,计算系统100被配置为使用网格110中的计算装置来执行若干预定操作。
[0028]
如下面更详细地描述的,计算系统100根据由布局参数值160指定的一种或多种并行技术来处理输入数据150,并且生成与处理过的输入数据相对应的输出数据170。
[0029]
网格执行引擎140可以接收指定应该如何在网格110上分布张量和操作的布局。张量是数值或其它值(例如,字符串)的多维阵列,具有与阵列的维度对应的特定阶。例如,标量值是0阶张量,数值向量是1阶张量,以及值矩阵是2阶张量。
[0030]
如下面描述的,布局引擎120可以根据提供给计算系统100的布局参数值160来生成布局。网格执行引擎140可以接收并且分配与输入数据150相关联的张量数据、用于不同操作的参数值(例如,用于神经网络的权重),并且可以根据布局来分配数据和操作。由布局引擎120生成的布局被统称为“规范数据”,因为张量的相应布局指定了网格执行引擎140将如何在网格110上分布或“布局”张量。
[0031]
取决于布局,网格执行引擎140可以被配置为实施用于处理网格110中的计算装置上的输入数据150的不同的并行技术。例如,布局引擎120可以生成布局并且将其发送至网格执行引擎140,该网格执行引擎140将相应张量和操作的维度分配给不同的计算装置,以实施数据并行性。数据并行性是指一类技术,在该类技术中,跨多个计算装置划分和分布输入数据,但是每个计算装置对不同的数据执行相同的操作。
[0032]
在一些实现方式中,布局引擎120可以生成布局并且将其发送至网格执行引擎140,该网格执行引擎140转而分布相应的张量和操作以实施模型并行性。在这些实现方式中,在网格110上执行的操作是用于通过机器学习模型来处理输入数据140的操作。模型并行性是指一类技术,在该类技术中,在多个计算装置中的每个计算装置上复制输入数据,其
中,每个计算装置对相同数据的副本执行机器学习模型的不同操作。
[0033]
因此,在数据并行性实现方式中,跨网格110中的计算装置划分和分布数据;以及在模型并行性实现方式中,跨计算装置划分和分布操作。在一些实现方式中,布局引擎120可以生成并且发送使网格执行引擎140分布相应的张量和操作以实施数据并行性和模型并行性两者的布局。
[0034]
转向由布局引擎120生成的布局的形式细节和定义,当网格执行引擎140根据特定布局来向每个计算装置分配张量的一个切片时,张量可以说“被布局”在计算装置的网格上。张量的切片是张量的子张量,并且可以是张量本身。如下面利用示例描述的,张量的分配给相应计算装置的每个切片不需要是唯一的。例如,张量可以被切成若干切片,并且一个特定切片可以被布局在网格110中的每个计算装置上。
[0035]
网格执行引擎140可以沿一个或多个维度对张量进行切片。沿维度进行切片意味着:沿维度来将张量划分为子张量。例如,考虑维度0水平穿过张量并且维度1垂直穿过张量的二维张量。如果沿维度0对张量进行切片,则切片将是其值水平跨过张量的子张量。同样,如果沿维度1对张量进行切片,则子张量具有垂直跨过张量的值。
[0036]
通常,张量和网格可以具有相应任意数量的维度,并且可以在任何张量维度上对张量进行切片以及在任何网格维度上对其进行布局。在本说明书中,张量的维度将被称为张量维度,并且网格的维度将被称为网格维度。
[0037]
张量被切成的切片的数量取决于在其上布局张量的网格维度中的计算装置的数量。例如,如果网格是沿维度具有两个计算装置的计算装置的二维阵列,则如果在该维度上布局了张量,则计算系统100可以将张量切成两个相等大小的子张量。同样,如果网格是沿维度具有六个计算装置的计算装置二维的阵列,则计算系统100可以将张量切成六个相等大小的子张量。
[0038]
在一些实现方式中,网格执行引擎140可以对具有不同形状的张量的相应切片进行切片并且对其进行分配。出于本说明书的目的并且除非另有说明,否则当将张量切成多个切片时,每个切片具有相同的形状。
[0039]
到目前为止,布局一般地被称为指定网格执行引擎140如何跨网格110中的计算装置分配张量和操作的格式。更具体地,布局引擎120可以为相应张量生成单独的布局,例如,表示输入数据150、输出数据170或通过处理分配给网格110的操作而生成的任何中间输入和输出数据的张量。
[0040]
布局引擎120还可以为待在网格110中的计算装置上处理的操作生成单独的布局。例如,可以通过存储在对应的权重张量中的一个或多个权重值来表示操作。计算装置中的每个计算装置都可以被配置为通过将输入张量的全部或一部分与权重张量的全部或一部分相乘来执行操作(例如,矩阵乘法)。通过指定权重张量的布局,可以按照与分布存储输入或输出数据的张量相同的方式来跨网格中的计算装置分布操作。形式上,布局是从k维张量的张量维度到n维网格的网格维度的内射局部映射。布局定义了在网格的哪些维度上拆分张量的维度。布局可以是合法的或非法的。根据布局,如果当网格执行引擎140将张量放在网格110之外时,该引擎导致张量的一些切片丢失,则该布局是非法的。否则,该布局被称为合法布局。
[0041]
布局在k维网格上的n维张量的布局可以被表示为n元组:《d0,d1,d2,...dn》,其中,
每个di是空标识符(表示为)或在0与k之间的某个整数值的标识符。每个di的标识符表示沿哪个网格维度对张量维度i进行布局。如果di为空,即,等于则不以张量维度i来对张量进行布局,而是跨每个计算装置上复制通过张量沿维度i存储的值。
[0042]
例如,跨三维网格布局的三维张量的布局表示:
[0043]
·
沿张量维度0对张量进行切片,并且向沿网格维度1的每个计算装置分配相应切片;
[0044]
·
沿张量维度1对张量进行切片,并且向沿网格维度0的每个计算装置分配相应切片;以及
[0045]
·
不沿由空标识符指示的张量维度2对张量进行切片。相反,在网格维度2上完整地复制张量。
[0046]
图2a至图2d示出了布局在二维网格上的二维张量的示例布局。在这些示例中,二维张量中的每个值表示图像210的相应像素,并且从维度0开始对张量和网格的相应维度进行索引。维度0是这些示例中的网格的“水平”维度,并且维度1是该网格的“垂直”维度。
[0047]
图2a示出了根据空布局230的布局在四个计算装置a至d的网格220上的张量。空布局复制了整个张量并且由二元组表示。
[0048]
图2b示出了布局在四个计算装置a至d的网格220上的张量,其中,沿张量维度0对张量进行了切片,并且切片布局在网格维度0上。跨网格维度1未对张量进行切片以及布局。表示该布局的二元组是
[0049]
图2c示出了布局在四个计算装置a至d的网格220上的张量,其中,沿张量维度0对张量进行了切片,并且切片布局在网格维度0上。还沿张量维度1对张量进行了切片,其中,切片布局在网格维度1上。在图2c中示出的布局被表示为《0,1》。
[0050]
图2d示出了布局在四个计算装置a至d的网格220上的张量,其中,沿张量维度0对张量进行了切片,并且切片布局在网格维度0上。又沿张量维度0对张量进行了切片,但是切片布局在网格维度1上。如在图2d中示出的,在跨网格对张量进行布局之后,图像210的右侧丢失。因此,布局《0,0》是非法布局。计算系统100可以被配置为接收布局和张量,并且根据布局来将被布局的张量分配到网格120。
[0051]
计算系统100可以被配置为接收针对输入数据150中的每个张量的标识符《d0,d1,d2,...dn》的相应n元组,作为布局参数值160的一部分。然后,网格执行引擎140可以根据接收到的相应n元组来对每个张量进行布局。
[0052]
在一些实现方式中,计算系统100被配置为接收标识用于实施例如,数据并行性、模型并行性或两者的并行性技术的标识符。在那些实现方式中,与由标识符标识的并行性技术一致,布局引擎120可以为输入数据150中的每个张量生成相应布局。因此,指定并行性技术的用户可以这样做,而无需专门为与并行性技术对应的布局提供参数值。
[0053]
在一些实现方式中,计算系统100被配置为接收布局参数值160和指定要实施的并行性技术的一个或多个标识符的组合。例如,用户可以向计算系统100提供指定系统应该通过实施数据并行性技术来处理输入数据150的标识符。另外,用户可以提供与应该如何在网格110上分布输入数据150的张量对应的布局参数值。按照这种方式,用户可以对网格执行
引擎140如何向每个计算装置分配数据和操作进行更多控制。
[0054]
计算系统100可以被配置为向用户呈现(例如,在用户装置的显示器上)例如,由标识符的n元组表示的张量的当前布局。通过在用户装置上显示的用户界面,用户可以修改n元组的值,计算系统100随后可以接收并且实施这些值。计算系统100可以被配置为:首先标识用户所修改的布局是合法的还是非法的,并且如果用户尝试向计算系统提供非法布局,则通知用户。
[0055]
另外,网格执行引擎140可以被配置为执行使网格110中的计算装置彼此通信的通信原语操作。例如,在计算装置例如,通过分布存储表示神经网络操作的权重的张量,执行由网格执行引擎140分配的相应的装置本地操作之后,通过在网格110中的计算装置之间执行通信原语操作,每个计算装置生成网格执行引擎140可以组合以生成输出数据170的相应输出。
[0056]
作为另一示例,在网格执行引擎140将输入张量的子张量分配给网格110上的不同计算装置之后,网格执行引擎140可以执行通信操作原语以组合与分配的输入子张量对应的输出子张量,以形成表示输入数据150的输出的输出数据180。
[0057]
计算系统可以实施布局api 190(“应用程序接口”),该布局api 190定义了与指定张量的布局相关并且用于在网格110上分配和执行操作的若干函数。例如,布局api 190可以包括可以利用布局参数值160中的适当值来调用,且在由计算系统100执行时使计算系统100根据所提供的自变量来生成布局的函数。例如,自变量可以指定生成的布局应该实施数据并行性、模型并行性还是两者。
[0058]
作为另一示例,布局api 190可以实施当利用适当的输入参数值来调用时,使计算系统100根据自变量来修改网格110的形状的函数。作为另一示例,布局api 190可以实施用于指定要在网格110上执行的机器学习模型的函数。
[0059]
布局api 190还可以实施与分布式编程以及将数据和操作分配给网格110中的不同计算装置相关的若干函数。例如,布局api 190可以实施在mpi(“消息传递接口”)中指定的函数。
[0060]
计算系统100的网格110中的每个计算装置可以实施用于将在计算装置处计算的输出张量传送至网格110中的其它计算装置的若干通信原语操作。例如,计算系统100可以跨网格110中的多个计算装置实施函数f的逐片应用。逐片应用意味着可以将与函数f对应的操作分配给多个计算装置中的每个计算装置,并且每个计算装置被配置为对相应所分配的张量切片执行函数f。
[0061]
计算系统100还可以被配置为处理分配给网格110中的计算装置的装置本地操作,这些装置本地操作产生形状与对应的输入张量不同的输出张量。
[0062]
如果沿约简的维度j对输入张量进行布局,则系统100可以被配置为执行allreducej操作以沿维度j对每个张量切片进行约简。在一些实现方式中,这类似于由mpi实施的分组的allreduce。allreduce是指用于对由网格110中的每个计算装置生成的所有输出值执行约简并且将该约简广播到每个计算装置的操作。计算系统100可以通过首先将网格110中的计算装置划分成组来实施allreducej操作,使得组中的每个计算装置具有仅在网格维度j(即,约简的维度)中不同的坐标。然后,可以对分配给每个计算装置并且针对每个组的张量进行求和或否则约简,并且可以将所得到的约简的值分配给组中的每个计算
装置。
[0063]
如果未沿约简的维度j对输入张量进行布局,则系统100可以执行逐片约简,其中,没有在网格110上的通信。
[0064]
计算系统100还可以被配置为广播张量切片,在本说明书中,广播张量切片是指将一个或多个新维度插入到张量中,并且沿那些维度复制值。另外,除了实施矩阵乘法之外,计算系统100还可以被配置为实施来自预写库(诸如,tensorflow)的其它函数。
[0065]
计算系统100还可以被配置为将经过布局的张量从一种布局转换为另一种布局。这会对快速修改布局以实施不同的并行化技术有用。张量的附加切片可以由每个计算装置作为本地操作加以执行,并且不需要使用像allreduce一样的原语的网络通信。另一方面,“不切片(un-slicing)”维度被实施为allgather操作,例如,在mpi中定义的allgather。allgather是指用于收集网格110中的每个计算装置的所有输出值并且将收集的输出值广播到每个计算装置的操作。
[0066]
如上面参照图1描述的,可以通过布局api 190来实施这些以及其它函数。规范数据可以包括一个或多个调用函数,该一个或多个调用函数定义计算系统100和网格110中的计算装置应该如何在彼此之中传送中间张量输出。
[0067]
计算系统100可以增大表示一组互连操作的计算图,并且指定该图的计算布局。计算图是表示一系列相关操作的图。例如,计算图可以表示用于通过神经网络来处理输入的操作。每个操作可以接收零个或多个输入,并且可以生成输出。输入和输出可以是例如,张量。
[0068]
多个操作(例如,网格执行引擎140可以跨计算装置分布的操作)可以被表示为具有多个节点和一个或多个边的有向非循环计算图。计算图的每个节点表示多个操作中的相应操作。计算图的一个节点被指定为最终节点f。由最终节点f表示的操作的输出是由计算图表示的操作的最终输出。
[0069]
对于计算图中的任何两个节点u和v,边(u,v)是有向边,并且表示从u到v的数据依赖性。从u到v的数据依赖性是指由节点u表示的操作生成输入至由节点v表示的操作的输出。因此,必须在执行节点v操作之前执行节点u操作。在计算图中,不存在循环数据依赖性,例如,边(u,v)和边(v,u),因为计算图是非循环的。
[0070]
布局计算图是表示接收输入和生成输出作为经过布局的张量的操作的计算图。计算系统100可以通过向计算图中的每个输入和输出张量分配布局来从该图生成经过布局的计算图。在本说明书中,用于经过布局的计算图的操作被称为经过布局的操作,并且用于经过布局的操作的相应输入和输出张量的布局被称为操作布局。共同地,与用于经过布局的计算图的所有经过布局的操作对应的操作布局被称为计算布局。
[0071]
计算系统100还可以接收规则的计算图,以及通过布局引擎120来生成经过布局的计算图。然后,网格执行引擎140可以接收经过布局的计算图,并且将经过布局的张量和经过布局的操作分配给网格110中的计算装置。取决于布局参数值160,布局引擎120可以为实施一种或多种并行化技术的计算图生成计算布局。
[0072]
例如,计算系统100可以接收表示具有以下内容的神经网络的计算图:输入层、具有非线性激活函数a的隐藏层以及输出层。神经网络还包括两个权重张量w1和w2,分别存储表示神经网络的输入层和隐藏层的权重的值。同时,用于处理x以从神经网络获得y的操作
可以被表示为:
[0073]y←
a(xw1)w2[0074]
等式1
[0075]
在该示例中,假设计算系统100的网格110是计算装置的一维网格。计算系统100可以生成在示例神经网络上实施数据并行性的经过布局的计算图。每个操作的输入和输出张量的操作布局可以被表示为:
[0076][0077]
输出张量y、输入张量x以及通过执行激活函数a(xw1)而生成的激活量的布局为并且指定沿张量维度0对每个张量进行切片并沿网格维度0在网格上对每个张量进行布局。权重张量w1和w2的布局为并且指定不对权重张量进行切片,而是在每个计算装置上完整地复制权重张量。同时,这些操作布局表示用于实施数据并行性的一般计算布局。计算系统100可以根据计算布局来向每个计算装置分配相应的张量切片,并且在网格120上执行经过布局的计算图,因为完全地复制了权重张量,但是并行地对数据进行了拆分、分布和操作。
[0078]
下面的等式3表示在等式1中示出的神经网络的计算图的计算布局,该计算布局实施模型并行性:
[0079][0079][0081]
在等式3中,注意:根据空布局来对分别与神经网络的输入和输出对应的张量x和y进行布局,同时根据布局来在网格上对权重张量w1和w2进行布局。由于对输入和输出数据进行复制,但是在网格上对权重张量的权重进行切片和分布,因此,等式3表示在神经网络上的模型并行性实现方式。
[0082]
下面的等式4表示在等式1中示出的神经网络的计算图的计算布局,该计算布局实施数据并行性和模型并行性两者:
[0083][0084]
等式4示出了根据布局的在网格上布局的每个张量。由于在网格上对所有张量进行切片和分布,因此,等式5表示在神经网络上的数据并行性和模型并行性两者。
[0085]
计算系统100可以接收操作180和输入数据150,并且生成计算图。在一些实现方式中,计算图引擎130被配置为接收输入数据150和操作180,并且生成对应的计算图。然后,布局引擎120可以接收计算图并且从计算图生成经过布局的计算图,并且将经过布局的计算图发送至网格执行引擎140。
[0086]
计算系统100可以被配置为在用户装置的显示器上显示计算布局,并且提供用于
接收来自例如,计算系统100的用户的布局参数值160和操作180的接口。例如,布局api 190可以定义用于接收、生成和修改计算布局的一个或多个函数。
[0087]
在一些实现方式中,计算系统100可以被配置为生成并且输出与计算图对应的计算布局,而无需在网格110上执行计算图。然后,系统可以接收计算布局作为输入,该系统被配置为根据计算布局来执行由计算图表示的操作。
[0088]
计算系统100可以为表示transformer序列到序列模型的计算图生成计算布局。序列到序列模型是一种机器学习模型,该机器学习模型接收输入序列(例如,一种语言的单词的输入序列),并且从输入序列生成输出序列,例如,将输入序列翻译成另一种语言。transformer模型包括encoder层和decoder层,它们都包括若干子层,包括multi-head attention子层、feed-forward子层和multi-head attention子层。在vaswani等人的、于2017年发表的“attention is all you need”中提供了对transformer模型的详细讨论。
[0089]
计算系统100可以生成针对transformer模型的计算图的计算布局,该计算布局在由网格执行引擎140执行时使计算系统100执行实施模型并行性的transformer模型。因此,计算系统100可以迅速扩大transformer模型的规模以包括数十亿个参数值并且超越用于这些以及其它类型的模型的传统方法的性能。
[0090]
图3是用于根据指定张量计算的分布的规范数据来在多个计算装置上执行操作的示例过程300的流程图。为了方便起见,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行,并且根据本说明书被适当编程。例如,被适当编程的计算系统(例如,图1的计算系统100)可以执行过程300。
[0091]
计算系统接收指定张量计算在多个计算装置之中的分布的规范数据(步骤310)。如上面参照图1描述的,计算系统可以接收指定每个输入和输出张量的相应布局的规范数据,该布局将输入或输出张量的每个维度分配给多个计算装置中的一个或多个计算装置。如上所述,每个张量计算可以被表示为计算图中的一个或多个操作。每个操作可以接收分别具有一个或多个相应输入维度的一个或多个输入张量作为输入,以及生成分别具有一个或多个相应输出维度的一个或多个输出张量作为输出。一些操作既可以接收输入张量,也可以生成一个或多个输出张量作为输出。
[0092]
该系统基于输入和输出张量的布局来向多个计算装置中的每个计算装置分配相应的装置本地操作(步骤320)。如上面参照图1描述的,计算系统可以包括根据张量的相应布局来分布张量的网格执行引擎。可以通过将表示权重的张量的切片分配给多个装置中的一个或多个装置来跨多个计算装置分布操作。
[0093]
该系统通过使多个计算装置中的每个计算装置至少执行分配给计算装置的相应的装置本地操作来使多个计算装置执行张量计算(步骤330)。如上面参照图1描述的,与根据相应布局如何对每个张量进行布局一致,计算系统的网格执行引擎可以使网格中的计算装置执行张量计算。必要时,该系统还可以执行用于组合通过在计算装置上执行装置本地操作而生成的单独的输出的一个或多个通信原语,以生成组合的输出,该组合的输出可以是用于张量计算的输出或用于另一计算的输入。
[0094]
可以在数字电子电路系统中、有形体现的计算机软件或固件中、计算机硬件中(包括本说明书所公开的结构及其结构等效物)或它们中的一个或多个的组合中实施本说明书中描述的主题的实施例和功能操作。可以将本说明书中描述的主题的实施例实施为一个或
多个计算机程序,即,编码在有形非暂时性存储介质上以由数据处理设备执行或者控制数据处理设备的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储装置、机器可读存储基板、随机或者串行存取存储器装置或者它们中的一个或多个的组合。可替代地或者另外,程序指令可以编码在人工生成的传播信号上,例如,机器生成的电气、光学或者电磁信号,生成该信号是为了对信息进行编码以便传输至合适的接收器设备以由数据处理设备执行。
[0095]
本说明书结合系统和计算机程序组件使用术语“被配置为”。对于要被配置为执行特定操作或者动作的一个或多个计算机的系统意味着已经在系统上安装了在操作中使系统执行操作或者动作的软件、固件、硬件或者它们的组合。对于要被配置为执行特定操作或者动作的一个或多个计算机程序意味着一个或多个程序包括指令,该指令在由数据处理设备执行时使设备执行操作或者动作。
[0096]
术语“数据处理设备”是指数据处理硬件并且囊括了用于处理数据的所有种类的设备、装置和机器,包括:例如,可编程处理器、计算机或多个处理器或计算机。该设备还可以是或者进一步包括专用逻辑电路系统,例如,fpga(现场可编程门阵列)或者asic(专用集成电路)。除了硬件之外,该设备可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
[0097]
可以用任何形式的程序语言(包括:编译语言或解释语言或陈述性语言或程序语言)来编写计算机程序(也可以被称为或者描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码),并且可以按照任何形式(包括:作为独立式程序或模块、组件、子例程或适合用于计算环境的其它单元)来部署计算机程序。程序可以但并非必须与文件系统中的文件对应。可以将程序存储在保持其它程序或者数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或者存储在专用于所探讨中的程序的单个文件中,或者存储在多个协作文件(例如,存储一个或多个模块、子程序或者部分代码的文件)中。可以将计算机程序部署为在一个计算机上执行或者在位于一个站点处或者分布在多个站点中并且通过数据通信网络互相连接的多个计算机上执行。
[0098]
同样,在本说明书中,广泛地使用术语“引擎”来指代被编程为执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将被实施为安装在位于一个或多个位置的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其它情况下,可以在相同的一个或多个计算机上安装并运行多个引擎。
[0099]
可以通过一个或多个可编程计算机来执行本说明书中描述的过程和逻辑流,该一个或多个可编程计算机执行一个或多个计算机程序以通过操作输入数据并且生成输出来执行功能。还可以通过专用逻辑电路系统(例如,fpga或者asic)或者专用逻辑电路系统和一个或多个编程计算机的组合来执行处理和逻辑流。
[0100]
适合于计算机程序的执行的计算机可以基于通用或者专用微处理器或者两者或者任何其它种类的中央处理单元。一般而言,中央处理单元将接收来自只读存储器或者随机存取存储器或者两者的指令和数据。计算机的必要元件是用于进行或者执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器装置。中央处理单元和存储器可以由
专用逻辑电路系统补充或者可以并入该专用逻辑电路系统中。一般而言,计算机还将包括用于存储数据的一个或多个海量存储装置(例如,磁盘、磁光盘或者光盘),或者计算机可以操作地耦合以接收来自该海量存储装置的数据或者将数据传输至该海量存储装置或者进行两者。然而,计算机不需要具有这种装置。此外,计算机可以嵌入在另一装置中,例如,移动电话、个人数字助理(pda)、移动音频或者视频播放器、游戏机、全球定位系统(gps)接收器或者便携式存储装置(例如,通用串行总线(usb)闪存驱动器),仅举数例。
[0101]
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,包括:例如,半导体存储器装置(例如,eprom、eeprom和闪速存储器装置);磁盘(例如,内部硬盘或者可移动盘);磁光盘;以及cd rom盘和dvd-rom盘。
[0102]
为了提供与用户的交互,可以在计算机上实施本说明书中描述的主题的实施例,该计算机具有用于向用户显示信息的显示装置,例如,crt(阴极射线管)或者lcd(液晶显示器)监视器;以及键盘和指向装置,例如,鼠标或者轨迹球,用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以用任何形式(包括声输入、语音输入或者触觉输入)来接收来自用户的输入。另外,计算机可以通过向用户所使用的装置发送文档和从该装置接收文档(例如,通过响应于从网络浏览器接收到的请求而向用户的装置上的网络浏览器发送网页)来与用户进行交互。而且,计算机可以通过向个人装置(例如,运行消息传送应用的智能电话)发送文本消息或者其它形式的消息,并且又从用户接收响应消息来与用户进行交互。
[0103]
用于实施机器学习模型的数据处理设备还可以包括例如,用于处理机器学习训练或生产(即,推理)、工作量的公共部分和计算密集型部分的专用硬件加速器单元。
[0104]
可以使用机器学习框架(例如,tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet框架)来实施和部署机器学习模型。
[0105]
本说明书中描述的主题的实施例可以被实施在计算系统中,其包括后端组件(例如,作为数据服务器)或者包括中间件组件(例如,应用服务器)或者包括前端组件(例如,具有用户可以通过其来与本发明中所描述的主题的实现方式交互的图形用户界面、网络浏览器或者app的客户端计算机)或者包括一个或多个这种后端组件、中间件组件或者前端组件的任何组合。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的组件相互连接。通信网络的示例包括:局域网(“lan”)和广域网(“wan”),例如,互联网。
[0106]
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。在一些实施例中,服务器向用户装置传输数据(例如,html页面),例如,为了向与装置(该装置充当客户端)进行交互的用户显示数据和接收来自该用户的用户输入。可以在服务器处从装置接收在用户装置处生成的数据(例如,用户交互的结果)。
[0107]
除了所附权利要求书的实现方式和上面描述的实现方式之外,以下编号的实现方式也是创新的:
[0108]
实现方式1是一种计算机实现的方法,其包括:接收指定张量计算在多个计算装置之中的分布的规范数据,其中,每个张量计算(i)被定义为接收分别具有一个或多个相应输
入维度的一个或多个相应输入张量作为输入,(ii)被定义为生成分别具有一个或多个相应输出维度的一个或多个相应输出张量作为输出,或者进行这两者,以及其中,规范数据为每个输入和输出张量指定相应布局,该布局将输入或输出张量的每个维度分配给多个计算装置中的一个或多个计算装置;基于输入和输出张量的布局来向多个计算装置中的每个计算装置分配相应的装置本地操作;以及通过使多个计算装置中的每个计算装置至少执行分配给计算装置的相应的装置本地操作来使多个计算装置执行张量计算。
[0109]
实现方式2是一种方法,其包括:接收指定张量计算在多个计算装置之中的分布的规范数据,其中,每个张量计算(i)接收分别具有一个或多个相应输入维度的一个或多个相应输入张量作为输入,(ii)生成分别具有一个或多个相应输出维度的一个或多个相应输出张量作为输出,或者进行这两者,以及其中,规范数据为每个输入和输出张量指定相应布局,该布局将输入或输出张量的每个维度分配给多个计算装置中的一个或多个计算装置;基于输入和输出张量的布局来向多个计算装置中的每个计算装置分配相应的装置本地操作;以及通过使多个计算装置中的每个计算装置至少执行分配给计算装置的相应的装置本地操作来使多个计算装置执行张量计算。
[0110]
实现方式3是根据实现方式1至2中任一项的方法,其中,张量计算是用于使用机器学习训练技术来关于训练数据训练机器学习模型的操作,以及其中,规范数据为在对一批训练数据执行机器学习训练技术的迭代时处理的每个张量指定相应布局。
[0111]
实现方式4是根据实现方式1至3中任一项的方法,其中,张量计算由通过有向边连接的节点的有向图表示,每个节点表示相应的张量计算,并且节点的每个入边表示由节点表示的张量计算的输入张量,以及节点的每个出边表示由节点表示的张量的输出张量,以及其中,规范数据为由有向图中的边表示的张量中的每个张量指定相应布局。
[0112]
实现方式5是根据实现方式1至4中任一项的方法,其中,对于每个输入和输出张量,布局针对张量的每个维度指定(i)在多个计算装置中的所有计算装置上复制沿维度的数据或者(ii)在多个处理器中的至少两个处理器之中拆分沿维度的数据。
[0113]
实现方式6是根据实现方式1至5中任一项的方法,其中,多个计算装置布置成n维阵列,并且其中,对于每个输入和输出张量,布局针对张量的每个维度指定(i)在多个装置中的所有计算装置上复制沿维度的数据或者(ii)沿n维阵列的一个维度来在计算装置之间拆分沿维度的数据。
[0114]
实现方式7是根据实现方式1至6中任一项的方法,其中,输入和输出张量中的每一个的形状被称为形状符号的元组,并且其中,规范数据针对形状符号中的至少一个形状符号标识从形状符号到针对n个维度中的一个维度的标识符的映射。
[0115]
实现方式8是根据实现方式1至7中任一项的方法,其中,对于每个张量计算,基于对输入和输出张量的n个维度的分配来向多个计算装置分配相应的装置本地操作:对于张量计算的每个输入张量和每个装置,标识由规范数据分配给装置的输入张量的切片;以及向每个装置分配张量计算的逐片实例,该逐片实例将张量计算应用于分配给装置的输入张量的切片。
[0116]
实现方式9是根据实现方式1至8中任一项的方法,其中,基于对输入和输出张量的维度的分配来向多个计算装置分配相应的装置本地操作包括:对于第一张量计算,确定第一张量计算的逐片实例需要装置之间的通信以为第一张量计算生成正确的输出,以及向多
个装置分配一个或多个通信操作,该一个或多个通信操作使装置之间的通信组合由第一张量计算的逐片实例生成的输出。
[0117]
实现方式10是一种系统,其包括:一个或多个计算机以及存储指令的一个或多个存储装置,这些指令在由一个或多个计算机执行时可操作以使一个或多个计算机执行根据实现方式1至9中任一项的方法。
[0118]
实施例11是编码有计算机程序的计算机存储介质,该程序包括指令,这些指令在由数据处理设备执行时可操作以使数据处理设备执行根据实现方式1至9中任一项的方法。
[0119]
虽然本说明书包括许多具体实施细节,但是不应该将这些细节视为对任何发明或者可能被要求的内容的范围的限制,而是作为可以针对特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的背景下描述的某些特征还可以组合地实施在单个实施例中。相反,在单个实施例的背景中描述的各种特征也可以单独地或者按照任何合适的子组合实施在多个实施例中。此外,虽然上文可能将特征描述为以某些组合来起作用并且最初甚至同样地对该特征进行了要求,但是在一些情况下,可以从组合中删除来自所要求的组合的一个或多个特征。并且所要求的组合可以指向子组合或者子组合的变形。
[0120]
同样,虽然在附图中按照特定顺序示出了操作,但是不应该将其理解为需要按照所述的特定顺序或者按照相继的顺序来进行这种操作,或者需要进行所有图示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,不应该将在上述实施例中的各种系统模块和组件的分离理解为在所有实施例中需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
[0121]
已经描述了本主题的特定实施例。其它实施例在以下权利要求书的范围内。例如,可以按照不同的顺序来执行权利要求书中阐述的动作,并且仍然实现期望的结果。作为一个示例,在附图中描绘的过程不一定需要所示的特定顺序或者相继顺序,以实现期望的结果。在一些情况下,多任务处理和并行处理可以是有利的。
再多了解一些

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

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

相关文献