基于先前的简化图执行的条件性图执行的制作方法

文档序号:19583046发布日期:2019-12-31 20:13阅读:266来源:国知局
基于先前的简化图执行的条件性图执行的制作方法

相关申请的交叉引用

本申请要求于2018年4月4日提交的美国专利申请号15/945,454和于2017年4月7日提交的美国临时专利申请号62/483,133的权益,出于所有目的这两个申请通过引用整体结合于此。

xxx



背景技术:

机器智能系统性能的最近的激增不是由于革命性新算法的发展。事实上,今天机器智能应用中使用的核心算法源于如今有半个多世纪历史的大量工作。相反,正是硬件和软件方面的改进以高效的方式实施了机器智能算法,这推动了最近的激增。曾经在计算方面过于密集而甚至无法利用最复杂的计算机来实施的算法现在可以利用单个用户的智能手机上的专用硬件来执行。硬件和软件方面的改进采取了各种形式。例如,传统地处理用于为计算机图形渲染多边形的向量的图形处理单元已经以高效的方式被重新利用,来操纵机器智能处理中使用的数据元素。作为另一示例,某些类别的硬件已经被从头开始设计,以通过使用诸如脉动型(systolic)阵列的专门处理元件来实施机器智能算法。进一步的进展集中于使用晶体管和存储器元件的集合来直接在硬件中模拟传统人工神经网络(artificialneuralnetwork,ann)中的神经元的行为。毫无疑问,机器智能领域已从这些改进中大大受益。然而,尽管对这些方法有着浓厚的兴趣,但机器智能系统仍然代表当今最有计算力和能量密集的计算应用之一,并且呈现了准备着进一步发展领域。

机器智能应用如此渴求资源的原因是,对其进行操作的数据结构通常非常大,并且必须在数据结构中的每一个上执行的离散原语计算的数量同样巨大。传统的ann接受输入向量,使用输入向量和一组权重向量进行计算,并产生输出向量。该组权重向量中的每个权重向量通常被称为网络的层,并且每个层的输出用作下一层的输入。在传统网络中,这些层是完全连接的,这需要在用权重向量的每个元素的计算中涉及输入向量的每个元素。因此,所涉及的计算的数量随着与每个层的大小的幂律(powerlaw)关系而增加。另外,机器智能算法的这一方面使得它们难以并行化,因为针对每一层的计算依赖于前一层的输出。

现代ann进一步加剧了前一段提到的问题。现代ann方法在工业和文学作品中通常被称为“深度学习”方法。这通常是指所涉及的大量层、或者一个层的输出和其他层的输入之间的关系的复杂性。例如,在现代深度学习ann中,下游层的输出可以被反馈到前一层,这从而在整体计算中添加递归元素。与层之间的递归关系相关联的附加的复杂性增加了实施现代ann所需的计算资源。

图1示出了用于现代机器智能系统的计算的有向图100。有向图100的输入是输入张量x。有向图100的输出是输出张量y。输入可以是用于图片(诸如猫101的图像)的编码。在这个示例中,有向图100的执行涉及图提供关于经编码图像的内容包含了什么的文本猜测的编码。图输出可以被称为由有向图生成的推理,因为机器智能系统高效地从图片的编码中推理图片显示了什么。由此,如果有向图100表示适当训练的机器智能系统,用输入张量x执行图100将产生输出张量y,该输出张量y编码了如图所示的单词“cat”。

有向图100的边表示执行该图必须进行的计算。在这个示例中,该图被分成两个部分——卷积部分102和完全连接部分103。卷积部分可以被称为卷积神经网络(convolutionalneuralnetwork,cnn)。cnn102的有向图中的顶点形成包括层106、107和108的一组层。层各自包括多组张量,诸如张量109、110和111。完全连接部分103的有向图中的顶点也形成包括层112和113的一组层。有向图100中的每条边表示涉及该边的原点顶点(originvertex)的计算。在cnn102中,计算是原点顶点和过滤器之间的卷积。cnn102中的每个边与不同的过滤器f11、fn1、f12、fn2等相关联。如图所示,过滤器f12和张量109经历全卷积以生成张量111的一个元素。过滤器f12绕张量109“滑动”,直到已在过滤器和原点顶点之间进行了卷积操作。在其他方法中,过滤器f12和张量109的一部分相乘以生成张量111的一个元素,并且全卷积用于生成张量111的多个元素。在完全连接部分103中,计算是一组权重和来自前一层的值之间的乘法。在完全连接部分103中,每个边与将在计算中使用的唯一权重值相关联。例如,边114表示权重wn和输入值115之间的乘积。元素116的值是涉及层112的所有元素和一组权重值的一组相同操作的总和,该组权重值唯一地对应于导向元素116的每个边的原点顶点。

有向图100的执行涉及许多计算。在图示中,在竖直方向上使用点来指示有向图中涉及的较大程度的重复。另外,有向图100表示相对简单的ann,因为现代ann可以包括多得多的层,这些层之间具有复杂得多的相互关系。尽管没有由有向图100示出,但是一个层的输出可以循环回到前一层的输入,以形成通常被称为递归神经网络(recursiveneuralnetwork,rnn)的东西。通过具有许多元素提供给机器智能系统的高度的灵活性以及层数和它们的相互关系的复杂性方面的增加,使得机器智能系统不太可能未来在复杂性方面降低。因此,机器智能系统的计算复杂性在未来可能会增加而不是减少。



技术实现要素:

公开了一种用于执行有向图的计算机实施的方法,其中每个步骤由处理器执行。该方法包括导出有向图的简化版本,并将先导(pilot)输入张量应用于有向图的简化版本。该方法还包括在将先导输入张量应用于有向图的简化版本期间获得执行数据的集合。该方法还包括将实时输入张量应用于有向图,并且在将实时输入张量应用于有向图期间、使用执行数据的集合来条件化(conditioning)有向图的执行。该方法还包括从有向图的条件性(conditional)执行中获得输出张量。

公开了一种用于从神经网络生成推理的计算机实施的方法,其中每个步骤由处理器执行。该方法包括导出神经网络的简化版本。该方法还包括将第一输入应用于神经网络的简化版本。该方法还包括在将第一输入应用于神经网络期间获得执行数据的集合。该方法还包括将第二输入应用于神经网络。该方法还包括在将第二输入应用于神经网络期间条件化神经网络的计算。该方法还包括从神经网络的条件性计算中获得推理。使用执行数据来条件化神经网络的条件性计算。与使用第二输入的神经网络的非条件性计算相比,神经网络的条件性计算在计算密集方面更小。

附图说明

图1包括根据相关技术的人工神经网络的有向图。

图2包括用于有向图的条件性执行的一组方法的流程图和相应的数据流图。

图3包括导出有向图的简化版本的具体方法的图示。

图4包括用于在有向图的简化版本的执行期间获得和存储执行数据的具体方法的图示。

图5包括用于条件性地执行有向图的具体方法的图示。

图6包括被公开应用于实施复杂神经网络的有向图的切片(slice)的方法的图示。

具体实施方式

可以通过执行图的简化版本来获得用于条件化该图的后续执行的信息,来使得有向图的执行在计算上更不密集。这个断言就成立,只要用于导出简化版本、执行简化版本和条件化该图的执行的附加计算要求在计算密集性方面、比在该图的条件性执行和非条件性执行之间的差异更小。另外,这个断言只与条件性执行产生可执行结果的程度相关。如果条件性执行产生了非常不准确的结果,那么计算复杂性方面的节省是不值得的。

下面公开的某些方法允许以高效的方式进行有向图的条件性执行,同时保持对非条件性执行的保真度。可以保持准确性,同时通过各种方法识别到效率的提高。例如,导出该图的简化版本的具体方法、用于获得和应用用于条件性执行的信息的具体方法以及用于条件化执行的具体方法本身使得通过高效的条件性执行产生高保真结果。下面将依次详细描述来自这些类中的每一个的方法。尽管实现机器智能算法的有向图在整个本公开中被用作普通示例,但是下面公开的某些方法更广泛地适用于与有向图的高效计算相关的任何领域。

图2包括用于执行有向图的一组计算机实施的方法的流程图200。流程图200的步骤可以参考概念性数据流图210来解释。步骤中的每一个可以由与存储器结合操作的处理器来执行,该存储器用于存储相关的数据结构和实行这些步骤所必需的指令。流程图预先假定存储器中的有向图的可用性。有向图可以是响应于输入从机器智能系统获得推理所需的计算的具体表示。将输入应用到有向图可以概念化为向图的原点顶点提供值。例如,参考图1,将输入张量x应用于有向图100包括从存储器获得张量x的元素的值,并且使它们可用于将执行与有向图100的第一组边相关联的计算的硬件。有向图的执行将包括执行与有向图的边相关联的计算以及最终生成输出张量y。因此张量y是从有向图获得的,并且一旦有向图被执行,该张量y可以作为不同的数据单元存储在存储器中。张量y可以是由机器智能系统生成的推理张量。然而,由流程图200的方法执行的有向图可以包括多个输入或多个输出,并且可以表示除了与机器智能相关联的那些计算系统之外的其他计算系统。

流程图从导出有向图的简化版本的步骤201开始。与有向图本身相比,处理器可以更高效地执行该图的简化版本。下面参考图3描述导出有向图的简化版本的方法。有向图的简化版本可以是有向图的下采样版本。下采样可以包括降低与有向图的边和顶点相关联的各个元素的分辨率。例如,具体参照具有卷积层和完全连接层的ann,权重和过滤器值可以四舍五入(roundoff),以减少表示每个值所需的位数。简化可以在图级别、扇区(sector)级别、层级别或元素级别进行。

流程图继续到步骤202和步骤203,其中将先导输入张量应用于有向图的简化版本,并且在应用先导输入张量期间获得执行数据的集合。执行这些步骤以便评估有向图的简化版本的响应,以便确定该图的哪些部分对整体执行具有较小的影响。然后所获得的信息稍后可以用于使得实际有向图的执行更加高效。下面参照图4描述获得和存储执行数据的方法。执行数据通常将提供在图形执行期间进行的不同计算对有向图的总输出的相对贡献的某种指示。

步骤202和203被示为顺序的,因为执行数据通常可用于在输入张量已经被应用并且图已经完成执行之后被存储在存储器中。这是因为在已执行整个图并且已获得输出张量之前,不可能确定地知道图的不同部分对最终输出的实际贡献。然而,取决于获得了什么执行数据,步骤203可以在有向图的完全执行之前完成。

数据流图210表示先导输入张量x’被应用于有向图212的简化版本以产生执行数据213。执行数据213被表示为有向图的简化版本的标记,其中突出显示的部分被标识为对输出张量具有几乎可以忽略的贡献。然而,执行数据可以采取许多其他形式。

流程图继续步骤204和步骤205,其中在步骤205将实时输入张量应用于有向图,并且在步骤204使用执行数据的集合条件性地执行有向图。当从有向图的条件性执行中获得输出张量时,流程图在步骤206中完成。执行这些步骤是为了通过使用在步骤203中获得的执行数据,以更高效的方式对原始有向图执行原始期望的计算。执行数据可以提供对有向图的哪些部分可以在不影响有向图执行的保真度的情况下以更高效但不太准确的方式计算的估计。因此,它们提供了关于计算效率和准确性之间的折衷的信息。因此,在步骤206中获得的输出张量将类似于如果有向图211没有被条件性地执行而将获得的、但是将利用较少的计算资源获得的输出张量。下面参考图5描述用于响应于应用实时输入张量来条件化有向图的执行以获得输出张量的方法。

步骤204和205被示为两者源自步骤203并通向步骤206,因为它们可以按顺序执行或同时执行。例如,在通过改变与图的顶点或边相关联的值来应用输入张量之前,可以使用执行数据来修改有向图。在机器智能系统的示例中,这种方法可以包括在将输入应用到系统之前对与系统的权重或过滤器相关联的值进行四舍五入或下采样。作为另一示例,可以使用执行数据以通过在具体计算被设置为发生时实时禁止具体计算来条件化有向图的执行。

数据流图210表示实时输入张量x被应用于与执行数据213覆盖的有向图211。有向图的执行被示为产生输出向量y。与数据流图的上述解释一致,执行数据213可以表示对输出张量具有可忽略影响的有向图部分,这些部分因此在用输入张量x条件性执行有向图211期间被禁止。实时输入张量和先导输入张量两者都使用参考字符x来标识。这是因为具有两个张量而产生的益处相似。具体地,在机器智能空间中,许多系统基于分类问题,其中输入被识别为属于具体类别。因此,基于输入向量的类别,有向图可以具有非常不同的响应。通常,先导输入张量和实时输入张量应随机相关,以确保从有向图的简化执行中获得可执行信息。

流程图200示出的方法可以应用于神经网络的计算。有向图211可以是神经网络,并且有向图的一组边可以是涉及用于神经网络的一组权重的计算。如果神经网络涉及卷积层,则该组边还可以包括使得一组值与神经网络的过滤器的卷积相关的计算。输入张量、权重和过滤器可以全部是四维或五维张量。神经网络的过滤器和权重可以在神经网络的训练期间改变。有向图的执行可以在训练期间或在神经网络部署期间进行,用于从神经网络获得推理张量。推理张量可以是神经网络对实时输入张量的响应。与有向图的非条件性执行相比,有向图的条件性执行可以以高效的方式产生推理张量。例如,与使用相同输入张量的神经网络的非条件性计算相比,但是推理张量可以等同于在非条件性执行期间产生的推理张量。例如,如果已经保持精度,利用用于分类的神经网络进行的有向图的条件性执行将响应于给定的输入张量产生与使用相同输入张量进行有向图的非条件性执行而产生的相同的类。

有向图的简化版本可以比有向图本身更高效地执行。有向图的简化版本通常将从有向图的原始版本中导出。使用有向图作为起点的原因是,有向图的简化版本的目的是提供原始有向图行为的近似。有向图的简化版本可以是有向图的下采样版本,或者是有向图中的各个值被四舍五入、被更基本的数据结构替换或以其他方式简化的版本。利用更基本的数据结构替换值的示例是利用低精度定点数据结构替换高精度浮点数据结构。与原始有向图相比,有向图的简化版本也可以表现出更显著的差异。例如,简化版本可以具有与对应于原始有向图的相应顶点和边的那些张量相比更低的秩或维数的张量相关联的顶点和边。另外,与原始有向图相比,有向图的简化版本可能具有被禁止的边,或者已经完全被移除的顶点和边。

在通过下采样过程导出简化版本的情况下,有向图的下采样可以以多种方式进行。一般而言,在步骤201中有向图的简化版本的导出将涉及以采样因子s对有向图进行下采样。因此有向图的简化版本将是有向图的下采样版本。例如,与有向图的顶点和边相关联的张量可以以因子s下采样,或者通过沿着任意数量的维度取s个相邻元素并对它们求平均来下采样。在实施ann的有向图的具体示例中,ann中的一维权重层可以通过将权重分组为五个权重的群组来进行下采样,其中每第五个权重的两个最近的邻近者被拉到群组中,并对这些值进行平均。在这个示例中,下采样速率s=5。下采样也可以在任何维度上以任何速率进行。下采样可以使用基本平均、同步滤波法或多项式插值法。在ann的具体方法中,神经网络的简化版本的导出可以包括使用上述参考方法以采样因子对一组权重值、过滤器值或在神经网络的计算中使用的任何其他值进行下采样。

有向图的简化版本也可以在分辨率方面被简化,因为与有向图的边和顶点相关联的各个元素可以简化为更基本的值。一般而言,与有向图的执行相关联的原始值可以被替换值替换,以简化有向图的执行。替换值以及来自原始有向图的未被替换的任何数据将表示有向图的简化版本。替换值可以表示与原始值的各种关系。例如,替换值可以是原始值的四舍五入版本或由比原始值更基本的数据结构表示的类似值。在具体的示例中,原始值可以经历涉及减少原始值的位数以获得替换值的过程。在原始值由浮点数据结构表示的情况下,可以使用来自该组原始值中的一组指数来计算替换值。作为具体示例,如果原始有向图使用浮点数,则简化版本可以涉及在运行时丢弃尾数,并且仅使用指数或指数的前n位来粗略地表示有向图中的每个值。作为另一示例,可以仅使用原始值的符号。作为另一示例,对于每个量可以仅使用单个位。所得到的二进制化网络可以以高效率来执行,并且仔细选择用于值的二进制排序的截止(cutoff)值可以有助于在简化图形执行的性能中保持保真度。这些方法也可以以各种方式组合。例如,四舍五入这些值的方法可以与利用不同的数据结构替换值相结合,其中四舍五入间隔被专门选择为避免需要更高分辨率的数据结构。

具体参照ann,可以替换网络和累加值两者,以简化ann的计算。在具有卷积层和完全连接层的ann中,权重和过滤器值可以四舍五入,以减少表示每个值所需的位数。神经网络的简化版本的导出可以包括使用上述参考方法利用一组替换值替换一组权重值、过滤器值或在神经网络的计算中使用的任何其他值。

图3提供了用于执行来自图2的步骤201的一种方法的图示。两组轴300和310示出了用于从有向图211导出有向图212的简化版本的一种方法。两组轴的x轴是“i”,其是用于表示在有向图的执行中使用的张量的元素的计数器变量。在这个示例中,张量是由有向图表示的ann层中的一组权重。在现代ann中,权重的数量可能相当大,例如,张量可能包含一百万个元素。曲线图300的y轴示出了与计数器“i”相关联的权重值。在这个示例中,有向图212的简化版本是通过使用多项式插值法对权重张量301进行下采样来获得的。在此方法中,多项式311被导出以产生函数f(i),该函数将给出权重wi的值的近似。多项式可以由等于1加上多项式阶数的一组系数来表示。因此,通过将计算转换到多项式空间,并使用小得多的系数张量312对权重层的输入进行操作,可以极大地简化利用权重张量301进行的计算。除了与导出多项式和转换到系数空间和从系数空间进行转换相关联的开销之外,由于执行有向图中与权重张量301相关联的层和有向图的简化版本中的系数张量312需要采用的减少的乘法次数,有向图的简化版本在计算密集性方面将更小。

一旦获得有向图的简化版本,先导张量被应用于简化版本,如以上参考步骤202所述。使用先导张量和有向图的简化版本来获得关于当实时输入张量被应用于有向图时实际的有向图将如何响应的相关信息。因此,先导输入张量在某些情况下可以与实时输入张量相同。然而,如果需要利用有向图的简化版本操作,或者进一步简化有向图的简化版本的执行,也可以修改先导输入张量。例如,如果有向图的简化版本与实时输入张量的秩或维数不兼容,则先导输入张量可以具有比实时输入张量更低的秩或维数。先导输入张量也可以是实时输入张量的下采样或以其他方式简化的版本。例如,先导输入张量可以是实时输入张量的其中用于存储张量的值的数据结构已经被更简化的结构代替的版本。这种方法也可以与其中有向图本身以类似方式被简化的方法相结合。例如,如果简化图利用4位定点值代替8位浮点值,则先导输入张量可以利用来自实时输入张量的值做同样的事情。在另一类方法中,先导输入张量将是由另一机器智能系统产生将被分类为与实时输入张量相同的类别的张量进行的最佳猜测尝试。一般而言,先导输入张量与实时输入张量随机相关,使得简化有向图对先导输入张量将具有与有向图对实时输入张量的反应相似的反应。

当先导输入张量被应用于有向图的简化版本时,获得执行数据,该执行数据稍后将被用于条件化有向图的执行。数据通常在有向图的执行期间获得,但是可以与用于获得有向图的输出而产生的实际值分离和不同。例如,执行数据可以是一组执行数据值,诸如ann中的每个隐藏层的输出。然而,执行数据值也可以通过比较或其他计算从这些值中导出。执行数据值可以表示或者可以用于导出计算的相对重要性的近似,其中在有向图的整体执行中这些值从该计算中产生。例如,执行数据值可以各自唯一地对应于有向图中的一组顶点,该组顶点中的每个顶点可以对由有向图产生的推理张量产生贡献,并且每个执行数据值在量级上与对每个顶点的推理张量的贡献成比例。执行数据值可以对应于有向图的任何方面,并且可以以任何数量的方式表示有向图的这个方面的重要性。在具体方法中,相对重要性将由设定的级别(诸如高、中或低)来表示。然而,相对重要性可以由与对有向图的相应方面对推理张量的影响成比例的数值来表示。比例可以是线性的或对数的。

图4示出了来自图2的步骤203的示例实施方式的数据流图400。在数据流图中,先导输入张量401被应用于有向图402以产生输出张量403。因此,在该图中用于执行有向图的主要数据流是横向的。然而,与有向图的主数据流正交地产生和存储执行数据404。可以通过各种方式获得和存储执行数据。通过监控在与有向图的边相关联的计算期间内部产生的值,可以在将输入张量应用于有向图的简化版本期间获得执行数据。

执行数据可以用于产生有向图的简化版本的标记,该标志以不同的优先级级别(诸如高、中或低)给有向图贴标签。然后,这些优先级值可以与有向图的不同部分相关联地存储。不同的优先级级别可以描述有向图的不同部分对输出张量的贡献的多少。标记可以有固定的等级,或者可以是在整个图形上具有平滑过渡以指示各个优先级级别的热图。在有向图正在执行与边或顶点相关联的计算时,可以实时计算每个边或顶点的优先级值。例如,具体计算的量级可以被用作这个计算的优先级的代理(proxy),并且一旦已经实行了该计算,就可以保存执行数据。然而,这些值也可以随着图形继续实行整个计算而不断更新。在下游计算高效地抵消了上游计算的感知影响的情况下,这种方法是有益的。这样,下游计算的量级可以被反馈,用于影响来自沿通过有向图的相同路径的先前计算的所存储的执行数据。这个反馈的效果可以在正在更新的值和新获得的值之间经过了有向图中的多少层来定制。

还可以使用执行数据为有向图的后续执行生成具体指令。例如,以可以使用执行数据来生成标签以指示有向图的具体边具有“低”优先级的同样的方式,也可以使用执行数据来生成降低与有向图的该边相关联的计算的保真度的指令,或者抑制与有向图的这个边相关联的计算的指令。下面将更详细地讨论用于条件化有向图的执行的具体方法。这些方法中的许多方法可以通过从标签中读取优先级信息并基于这个标签触发某种形式的条件性计算来触发。然而,其中执行数据是指令本身的方法通过直接生成用于稍后如何执行有向图的一部分的指令来短路(shortcircuit)该中间查找步骤。

执行数据可以与它们以各种方式所相关的有向图部分而相关联地存储。例如,标记可以被存储在分布式的一组存储器位置中,或者存储在单个存储器位置处,使得可以使用单个存储器地址或连续的存储器地址序列来重新调用所有数据。数据也可以作为完全分离的数据结构存储在存储器中。使用213的示例,热图可以与标识图的具体部分的优先级级别和标签分离地存储。可替换地,数据或标记可以直接存储在表示有向图的数据结构中,并且可以通过对存储器的单个地址调用与有向图的数据一起获得。例如,执行数据可以存储在数据包报头中,其中每个数据包的有效载荷是表示有向图本身的数据。为了使用实施ann的有向图的示例,ann的权重或过滤器可以与表示该权重或过滤器响应于先导输入张量对输出张量的影响的值一起存储。在根据这类方法的具体示例中,权重张量的优先级值和权重张量本身可以使用单个存储器地址从存储器位置获得。

图4提供了在有向图的执行期间如何生成执行数据和标记的概念性数据流图。如图所示,有向图的不同边将与不同的计算405和406相关联。两个图示的计算是两个矩阵乘法,这两个矩阵乘法可以表示一组权重与来自前一层的输入的乘法以便为人工神经网络中的下一层生成数据元素。在图4所示的基本示例中,将这些计算的输出与阈值z进行比较。如果超过阈值,则认为该计算具有高优先级。如果未超过阈值,计算将被视为低优先级。在这个例中,执行数据是由这个计算做出的确定。然后,执行数据可以被用于对有向图的标记做出贡献,如标记404中由不同的阴影级别所示。可替代地或组合地,执行数据可以用于为在计算405和406中利用的数据元素设置报头值。如图所示,然后可以使用单个存储器地址从存储器中检索包括有效载荷和报头的组合数据包。为了说明的目的,张量407和408的值包含比计算405和406中使用的张量更多的信息。这表明这样的事实,即执行数据可以用于标记、贴标签或以其他方式修改原始有向图,而不是有向图的简化版本。在这些情形下,张量407和408是来自有向图的、与来自计算405和406中使用的有向图的简化版本的张量对应的张量。

执行数据可以用于以多种方式条件化有向图的执行。一般而言,为了生成有向图的简化版本而用于简化有向图的方法也可以被应用于条件化有向图的执行。然而,由于条件性执行(conditionalexecution)是由已经获得的关于图的性能的信息来指导的,所以在条件化执行(conditionedexecution)的情况下,计算被简化的程度比生成简化版本的情况下大得多。如前所述,与图2中的条件性执行相关联的步骤是沿着分离的路径绘制的,因为在不同的方法中,它们将展现彼此之间的各种时间关系。例如,可以使用存储的执行数据,在有向图的条件性执行之前将有向图准备好用于进行条件性执行。具体地,在执行数据被存储在表示有向图的数据包的报头中的方法中,有向图由此将被高效地准备用于进行条件性执行,因为在数据包的有效载荷在有向图的执行期间被拉出(pull)用于计算时,优先级数据将可用于实时的条件化执行。准备好可以包括标识有向图数据的相关联部分,将执行数据和有向图数据打包成数据包,并将数据包存储在存储器中的设定位置处。在另一示例中,在实行计算以确定是否以及应如何条件化相关联的计算时,有向图的执行将参考(reference)分离的数据结构。分离的数据结构可以是具有与有向图中的具体位置的标识符相结合存储的优先级的标记,并且有向图的执行可以涉及在实行相关联的计算时使用标识符从分离的数据结构获得优先级。

有向图的执行可以以多种方式来条件化。一般而言,条件化计算的程度可以被设置为在有向图中变化,并且可以包括与图的这个部分的相对优先级对齐的各种等级。例如,可以正如在非条件性执行的有向图中一样计算相对高优先级的区域,而相对低优先级的区域可以被从计算完全排除。下面讨论的条件性计算的各种方法可以混合,并以各种方式将其分配给优先级级别。例如,高、中和低优先级可以与三个完全分离的条件性计算方案相关联。作为另一示例,条件性计算方案可以在有向图中保持恒定,但是方案的相对精度可以根据优先级来修改。例如,四舍五入或下采样的程度可以被设置为与优先级级别成比例,该优先级级别具有从原始值执行到四舍五入值执行、再到独立于原始值进行的执行的平稳过渡。如果优先级值是平滑变化的数值,则可以高效地应用这种方法。

有向图的实际条件性执行可以以各种方式进行。条件化、和条件性计算的形式是分离的概念。基于执行数据,有向图的执行中各种计算的保真度可以被选择性地降低到不同的级别。例如,条件性计算可以涉及减少用于表示给定计算的输入或输出的位数。作为另一示例,用于表示给定计算的输入或输出的数据结构可以被简化(例如,从8位浮点到4位定点)。作为另一示例,条件性计算可以涉及提供固定值来代替执行计算。在一个特殊示例中,这个值可以存储在计算中涉及的数据结构的报头中。作为另一示例,计算的实际算术部分可以被简化,使得它从计算中丢弃一定数量的lsb。作为另一示例,甚至不需要提供屏蔽值就可以完全抑制计算。在更具体的方法中,计算的输出的替换值可以与有向图的后续阶段相关联地存储在下游。

图5是可以执行有向图的条件性执行的各种方式的图示。数据流图500包括需要被计算以执行有向图的第一计算501。沿着页面向下移动的分支指示可以基于计算501的优先级值来代替原始计算的各种条件性执行级别。例如,如果计算501对有向图的输出张量具有重大影响,则它可以被完整地执行。然而,如果影响很小,则可以根据由502至505示出的替代级别中的一个条件地执行计算。应用的精确性级别可以被预先确定,并被准备好在计算发生时影响计算,或者可以实时被应用。优先级502将涉及数据值的轻微四舍五入以及存储这些值的数据结构所利用的位数方面的潜在减少。优先级503将涉及只保留原始值的符号和指数。优先级504将只涉及保持原始值的符号。优先级505将涉及利用被应用的预定值替换该值,而不管运行时间期间数据实际是什么。如图所示,该值可以存储在数据包的报头中,并且如果条件性执行系统确定数据包的有效载荷的优先级非常低,则该值可以被拉出用于替换。

有向图的简化版本可以与各种输入先导张量相结合来存储和利用,以便开发不同的执行数据,这些不同的执行数据取决于需要准确的条件性执行的特殊实时输入张量。如果有向图被修改,诸如通过训练或一些其他更新,则有向图的简化版本也可以被重新计算。在ann的具体示例中,有向图的简化版本可以在每次训练会话之后或者激活已经被改变给定增量之后自动更新。作为另一示例,每当监控系统确定有向图的训练或使用中存在足够的中断时,可以重新计算有向图的简化版本。作为另一示例,如果监控系统确定有向图的简化版本不再准确,则可以周期性地重新计算有向图的简化版本。这种监控系统可以被配置为针对有向图和有向图的简化版本周期性地运行相同的输入张量,并针对预定指标检查保真度的损失。如果监控系统检测到保真度损失超过这个指标,则可以重新计算有向图的简化版本。

图6是具有卷积层和直接连接层的ann的有向图的切片600。输入张量601被示为棱镜(prism),并包括55x55x48次激活。围绕棱镜601滑动的过滤器602和603是5x5x48。从过滤器到下一层604的虚线示出了过滤器在前一层中的一个位置如何在下一层中产生一个元素或“像素”。请注意,这意味着需要25x48次乘法才能在下一层产生单个像素。没有示出直接图形的所有棱镜,也没有示出每条边,因为每个层中的所有像素都将与导回(leadbackto)前一层的边相关联,并且过滤器的具体位置将是图的顶点。所示的切片包括两个突出显示的节段605和606。突出显示包括不同的阴影,并被附接到有向图的不同方面。突出显示节段605比节段606更暗。突出显示是有向图被如何标记的图示。突出显示的阴影与有向图相关联的方面的优先级值成比例。节段605是ann的过滤器。标记通常可以与过滤器相关联,或者在它存在于有向图的这个切片中示出的具体位置时它可以与过滤器相关联。节段606是用于ann的激活的整个棱镜,其已被标记有某个优先级值。如图所见,标记可以在任何粒度级别下与ann的任何方面相关联。优先级值也可以在更细化的级别上诸如分配给激活或各个激活的节段。

在ann的具体应用中,条件性计算可以用于从ann生成推理张量和用于ann的训练两者。在使用反向传播的方法中,反向传播期间权重的更新可以基于网络的这个区段的已知优先级而变化。例如,权重更新或修改的程度可能受到ann的该部分的优先级的限制。神经网络的高度灵敏和重要的部分中的权重可以以高精度更新,而神经网络的低灵敏度部分中的权重可以在反向传播期间保持恒定。

虽然已经针对本发明的具体实施例详细描述了说明书,但是应当理解的是,本领域技术人员在理解前述内容后,可以容易地想到这些实施例的改变、变化和等同物。上面讨论的任何方法步骤都可以由处理器来执行,该处理器与存储用于这些方法步骤的指令的计算机可读非暂时性介质一起操作。计算机可读介质可以是个人用户设备内的存储器或网络可访问的存储器。用于实施本文描述的系统的权重、累加值、过滤器、输入、输出等的张量可以全部是四维或五维张量。本文描述的有向图和有向图的简化版本可以是在存储器中实施的完全不同的结构。然而,简化版本可以构建于有向图的原始数据结构,并且为了以后的执行而调用有向图可以包括利用指向在简化期间被替换的有向图的旧值的指针。以这样的方式,图的两个版本的重叠值不需要在内存中占用的一个以上的空间。尽管本公开中的示例通常针对机器智能系统,但是相同的方法可以用于涉及有向图的执行的任何计算密集型应用。尽管本公开中的示例通常针对人工神经网络,但是可以利用相同的方法来增强支持向量机、神经形态硬件、以及涉及复杂层集合的任何深度学习方法的操作。在不脱离本发明的范围的情况下,本领域技术人员可以对本发明进行这些和其他修改和变化,本发明的范围在所附权利要求中更具体地阐述。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1