System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于在神经网络加速器上执行神经网络的方法和系统技术方案_技高网

用于在神经网络加速器上执行神经网络的方法和系统技术方案

技术编号:39945581 阅读:5 留言:0更新日期:2024-01-08 22:54
本发明专利技术涉及用于在神经网络加速器上执行神经网络的方法和系统。将包括一个或多个层的神经网络划分成运算块的方法,该运算块能够在能够配置成执行神经网络的硬件的硬件传递过程中执行。该神经网络的该一个或多个层能够划分成一个或多个层组,该一个或多个层组包括能够在该硬件的相同硬件传递过程中执行的层序列。每个层组能够划分成能够在该硬件的硬件传递过程中执行的一个或多个运算块。针对层组的一个或多个块由一个或多个分割参数定义。该方法包括:获得层组损失函数,该层组损失函数将性能度量表示为该层组的该一个或多个分割参数和一个或多个神经网络架构参数的函数,该性能度量与在该硬件上执行层组相关联。

【技术实现步骤摘要】

本申请涉及用于在神经网络加速器上执行神经网络的方法和系统


技术介绍

1、深度神经网络(dnn)是人工神经网络的一种形式,包括可用于机器学习应用程序的多个互连层。特别地,dnn可用于信号处理应用程序,包含但不限于图像处理和计算机视觉应用程序。图1示出了包括多个层102、104、106的示例dnn 100。每一层102、104、106接收输入数据,并且根据层来处理输入数据以产生输出数据。输出数据作为输入数据被提供给另一层,或者作为dnn的最终输出数据被输出。例如,在图1的dnn 100中,第一层102接收到针对dnn 100的原始输入数据108,并且根据第一层102来处理输入数据以产生输出数据110。第一层102的输出数据110成为第二层104的输入数据,并且第二层104根据第二层104处理输入数据110以产生输出数据112。第二层104的输出数据112成为第三层106的输入数据,并且第三层106根据第三层106处理输入数据112以产生输出数据114。然后,第三层106的输出数据114作为dnn的最终输出数据输出。在dnn用于分类的情况下,输出数据114是长度向量a,其中a是类别的数量,并且向量中的每个值表示某个类别的概率。

2、输入到dnn的层以及从该层输出的数据200可以被描述为张量。如本领域技术人员所知,张量是向量和矩阵的统称,并且可以被描述为n维阵列。向量是一维张量,并且矩阵是二维张量。dnn中的张量通常是三维的,但不一定是三维的。参考图2,该图示出了示例三维(3d)张量200。3d张量200可以被描述为cin个数据通道(或p个数据平面),其中每个通道(或平面)具有维度wxh。张量的元素可以被称为张素(tensel),类似于图片的元素被称为像素。

3、对层的输入数据执行的处理取决于层的类型。例如,dnn的每一层可以是多种不同类型中的一种类型。示例dnn层类型包括但不限于卷积层、激活层、归一化层、池化层以及逐元素运算层。对于本领域技术人员将显而易见的是,这些是示例dnn层类型,并且这不是详尽的列表,并且可存在其他dnn层类型。

4、对于卷积层,将输入数据与与所述层相关联的权重进行卷积。具体地,每个卷积层与多个权重k0…kg相关联,所述多个权重还可以被称为滤波器权重或系数。权重被分组以形成或定义一个或多个滤波器或内核,并且每个滤波器可以与偏移量偏置bias相关联。每个滤波器的尺寸可为kw×kh×cin(即,每个滤波器可包括一组kw×kh×cin个权重k),并且可根据在w方向和h方向上跨步sw和步sh的卷积运算被应用于输入数据,如图2所示。步长sw和sh可以被称为卷积的步幅。滤波器的数量和/或每个滤波器的权重的数量可在卷积层与卷积层之间变化。卷积神经网络(cnn)是一种有效的图像识别和分类方法,它是dnn的一种特殊类型,一般包括多个卷积层。

5、通常但不一定在卷积层之后的激活层将一个或多个激活函数应用于到层的输入数据。激活函数接收输入张量,并对输入张量中的每个值或元素执行特定的非线性数学运算。换句话说,激活函数分别对输入张量中的每个值或元素进行运算。在一些示例中,激活层可通过实现relu函数(即,f(x)=max(0,x))充当整流线性单元(relu),或者可通过实现prelu函数充当参数化整流线性单元(prelu)。

6、归一化层被配置成对输入数据执行归一化函数,诸如局部响应归一化(lrn)函数。

7、通常但不一定插入连续卷积层之间的池化层执行池化函数,例如max函数、min函数或average函数,以汇总输入数据的子集。因此,池化层的目的是减小表示的空间大小,以减少网络中参数和计算的数量,并且因此还控制过度拟合。

8、逐元素运算层被配置成接收输入数据(例如输入张量),并且可选地使用另一数据集(例如另一张量)对输入数据(例如输入张量)执行逐元素运算。对输入数据(例如输入张量)执行逐元素运算意味着对输入数据/张量的每个元素(例如每个输入数据值或每个张素)执行相同运算。可以对输入数据执行的逐元素运算包括但不限于加法、乘法、最大值和最小值。

9、因此,dnn的每个层接收输入数据值(例如输入张量),并且生成输出数据值(例如输出张量);并且一些层(诸如但不限于卷积层)也接收权重和/或偏置。

10、dnn的实现或执行通常在计算上较复杂。因此,已开发出神经网络加速器,其允许以有效方式(例如以需要更小硅面积或更少处理能力的方式)来执行或实现包括dnn的神经网络。希望能够在神经网络加速器(或可配置成执行dnn的其他硬件)上尽可能有效地地执行dnn。

11、下文描述的实施方案仅借助于示例来提供,并且不限制解决用于在神经网络加速器(或可配置成执行dnn的其他硬件)上执行dnn的已知方法的任何或所有缺点的具体实现。


技术实现思路

1、提供本
技术实现思路
是为了介绍在以下详细描述中进一步描述的一些概念。本
技术实现思路
不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

2、本文中描述了将包括一个或多个层的神经网络划分成运算块的方法,所述运算块可在可配置成执行神经网络的硬件的硬件传递过程中执行。神经网络的一个或多个层可划分成一个或多个层组,其中每个层组包括可在硬件的硬件传递过程中执行的层序列。每个层组可划分成可在硬件的硬件传递过程中执行的一个或多个运算块。针对层组的一个或多个块由一个或多个分割参数定义。所述方法包括:获得层组损失函数,所述层组损失函数将性能度量表示为层组的一个或多个分割参数和一个或多个神经网络架构参数的函数,所述性能度量与在硬件上执行层组相关联;基于表示与在硬件上执行神经网络相关联的性能度量的层组损失函数来生成神经网络损失函数;以及选择一个或多个层组的分割参数,所述分割参数在由硬件施加的一个或多个约束下使神经网络损失函数最小化。

3、第一方面提供了一种将包括一个或多个层的神经网络划分成可在硬件的硬件传递过程中执行的运算块的计算机实现的方法,所述硬件可配置成执行神经网络,神经网络的一个或多个层可划分成包括可在硬件的相同硬件传递过程中执行的层序列的一个或多个层组,每个层组可划分成可在硬件的硬件传递过程中执行的一个或多个运算块,针对层组的一个或多个块由一个或多个分割参数定义,所述方法包括:获得层组损失函数,所述层组损失函数将性能度量表示为层组的一个或多个分割参数和一个或多个神经网络架构参数的函数,所述性能度量与在硬件上执行层组相关联;基于表示与在硬件上执行神经网络相关联的性能度量的层组损失函数来生成神经网络损失函数;以及选择一个或多个层组的分割参数,所述分割参数在由硬件施加的一个或多个约束下使神经网络损失函数最小化。

4、与在硬件上执行层组相关联的性能度量可以是在硬件上执行层组的周期数量。

5、层组损失函数可以是以下两者的比率:(i)在硬件上执行层组的运算总数,以及(ii)由硬件对层组每周期执行的最大可达运算数量。

6、由本文档来自技高网...

【技术保护点】

1.一种将包括一个或多个层的神经网络划分成能够在硬件的硬件传递过程中执行的运算块的计算机实现的方法(600),所述硬件能够配置成执行神经网络,所述神经网络的所述一个或多个层能够划分成包括能够在所述硬件的相同硬件传递过程中执行的层序列的一个或多个层组,每个层组能够划分成能够在所述硬件的硬件传递过程中执行的一个或多个运算块,针对层组的一个或多个块由一个或多个分割参数定义,所述方法(600)包括:

2.如权利要求1所述的方法(600),其中与在所述硬件上执行层组相关联的所述性能度量是在所述硬件上执行所述层组的周期数量。

3.如权利要求2所述的方法(600),其中所述层组损失函数是以下两者的比率:(i)在所述硬件上执行所述层组的运算总数,以及(ii)由所述硬件对所述层组每周期执行的最大可达运算数量。

4.如权利要求3所述的方法(600),其中由所述硬件对层组每周期执行的所述最大可达运算数量取决于所述层组是带宽受限还是计算受限,并且所述层组是带宽受限还是计算受限的确定是基于屋顶线模型。

5.如权利要求4所述的方法(600),其中所述屋顶线模型将所述硬件的运算性能绘制为所述硬件每周期执行的最大可达峰值运算、所述硬件的峰值带宽速率和层组的算术强度的函数,其中层组的所述算术强度是所述层组的运算总数除以传入或传出针对所述层组的所述硬件的字节总数。

6.如权利要求3至5中任一项所述的方法(600),其中在所述硬件上执行层组包括对输入张量执行一种或多种不同类型的运算,并且用于执行所述层组的所述运算总数包括用于执行所述层组的所述一种或多种不同类型的运算中的每一种类型的运算的数量的总和。

7.如权利要求1所述的方法(600),其中与在所述硬件上执行层组相关联的所述性能度量是将数据传入和传出所述硬件以执行所述层组的总带宽。

8.如权利要求7所述的方法(600),其中将数据传入和传出所述硬件以执行层组的所述总带宽是与将一个或多个数据元素中的每个数据元素传入和传出所述硬件以执行所述层组相关联的带宽的总和。

9.如权利要求1至5和7至8中任一项所述的方法(600),其中每个层组接收一个或多个输入,并且针对层组的所述一个或多个分割参数包括至少一个参数,所述至少一个参数定义所述一个或多个输入中的一个输入在所述输入的维度上的分割。

10.如权利要求9所述的方法(600),其中针对层组的所述一个或多个分割参数包括定义所述一个或多个输入中的一个输入在所述输入的维度上的分割的至少两个参数,以及定义所述一个或多个输入的所述分割被处理的顺序的参数。

11.如权利要求9所述的方法(600),其中在所述硬件上执行层组包括对输入张量执行一个或多个运算,并且所述一个或多个输入包括所述输入张量。

12.如权利要求1至5和7至8中任一项所述的方法(600),其中所述硬件包括一个或多个缓冲器,所述一个或多个缓冲器用于存储输入到所述硬件以及/或者由所述硬件生成的数据,并且由所述硬件施加的所述一个或多个约束是基于所述一个或多个缓冲器中的一个或多个缓冲器的大小。

13.如权利要求1至5和7至8中任一项所述的方法(600),其中每个层组被配置成接收由宽度、高度和通道数量定义的输入张量,并且针对层组的所述一个或多个分割参数包括输入交织值,所述输入交织值定义以交织方式存储在一起的所述输入张量的通道数量。

14.如权利要求13所述的方法(600),其中所述硬件支持针对所述输入张量的一个或多个输入交织值,并且由所述硬件施加的所述一个或多个约束包括所述输入交织值是一个或多个所支持的输入交织值中的一个所支持的输入交织值的约束。

15.如权利要求1至5和7至8中任一项所述的方法(600),其中每个层组被配置成生成由宽度、高度和通道数量定义的输出张量,并且针对层组的一个或多个分割参数包括输出交织值,所述输出交织值定义以交织方式存储在一起的所述输出张量的通道数量。

16.如权利要求15所述的方法(600),其中所述硬件支持所述针对输出张量的一个或多个输出交织值,并且由所述硬件施加的所述一个或多个约束包括所述输出交织值是所述一个或多个所支持的输出交织值中的一个所支持的输出交织值的约束。

17.如权利要求1至5和7至8中任一项所述的方法(600),其中所述硬件包括神经网络加速器。

18.如权利要求1至5和7至8中任一项所述的方法(600),所述方法还包括生成一组指令,所述一组指令用于使得所述硬件在由所述一个或多个层组的所选分割参数标识的所述块中执行所述神经网络(610)。

19.如权利要求1至5和7至...

【技术特征摘要】

1.一种将包括一个或多个层的神经网络划分成能够在硬件的硬件传递过程中执行的运算块的计算机实现的方法(600),所述硬件能够配置成执行神经网络,所述神经网络的所述一个或多个层能够划分成包括能够在所述硬件的相同硬件传递过程中执行的层序列的一个或多个层组,每个层组能够划分成能够在所述硬件的硬件传递过程中执行的一个或多个运算块,针对层组的一个或多个块由一个或多个分割参数定义,所述方法(600)包括:

2.如权利要求1所述的方法(600),其中与在所述硬件上执行层组相关联的所述性能度量是在所述硬件上执行所述层组的周期数量。

3.如权利要求2所述的方法(600),其中所述层组损失函数是以下两者的比率:(i)在所述硬件上执行所述层组的运算总数,以及(ii)由所述硬件对所述层组每周期执行的最大可达运算数量。

4.如权利要求3所述的方法(600),其中由所述硬件对层组每周期执行的所述最大可达运算数量取决于所述层组是带宽受限还是计算受限,并且所述层组是带宽受限还是计算受限的确定是基于屋顶线模型。

5.如权利要求4所述的方法(600),其中所述屋顶线模型将所述硬件的运算性能绘制为所述硬件每周期执行的最大可达峰值运算、所述硬件的峰值带宽速率和层组的算术强度的函数,其中层组的所述算术强度是所述层组的运算总数除以传入或传出针对所述层组的所述硬件的字节总数。

6.如权利要求3至5中任一项所述的方法(600),其中在所述硬件上执行层组包括对输入张量执行一种或多种不同类型的运算,并且用于执行所述层组的所述运算总数包括用于执行所述层组的所述一种或多种不同类型的运算中的每一种类型的运算的数量的总和。

7.如权利要求1所述的方法(600),其中与在所述硬件上执行层组相关联的所述性能度量是将数据传入和传出所述硬件以执行所述层组的总带宽。

8.如权利要求7所述的方法(600),其中将数据传入和传出所述硬件以执行层组的所述总带宽是与将一个或多个数据元素中的每个数据元素传入和传出所述硬件以执行所述层组相关联的带宽的总和。

9.如权利要求1至5和7至8中任一项所述的方法(600),其中每个层组接收一个或多个输入,并且针对层组的所述一个或多个分割参数包括至少一个参数,所述至少一个参数定义所述一个或多个输入中的一个输入在所述输入的维度上的分割。

10.如权利要求9所述的方法(600),其中针对层组的所述一个或多个分割参数包括定义所述一个或多个输入中的一个输入在所述输入的维...

【专利技术属性】
技术研发人员:A·阿马迪C·迪基奇C·查奈J·罗杰斯
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1