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

具有快速逐点卷积的高效推断的制作方法

2022-04-16 15:23:09 来源:中国专利 TAG:

具有快速逐点卷积的高效推断
1.根据35 u.s.c.
§
119的优先权要求
2.本专利申请要求于2019年9月16日提交的题为“efficient inferencing with fast pointwise convolution(具有快速逐点卷积的高效推断)”的非临时申请no.16/571,760的优先权,该非临时申请已转让给其受让人并且由此通过援引被明确纳入于此。


背景技术:

3.本公开的各方面涉及优化机器学习模型性能,尤其涉及改进逐点卷积的效率。
4.机器学习可以产生经训练模型,诸如人工神经网络、分类树等,其表示对被标记的训练数据集合的广义拟合。将经训练模型应用于新数据产生推断,这可被用于获得关于新数据的洞察。在一些情形中,将经训练模型应用于新数据被称为对新数据“运行推断”。
5.创建推断是计算密集型的,尤其是随着模型复杂度的增加。相应地,需要用于改进机器学习模型的性能的方法,诸如通过使用神经网络模型来使得推断更高率。
6.简要概述
7.某些实施例提供了一种方法,包括:在卷积神经网络(cnn)模型处接收输入数据;生成包括cnn模型的第一层和cnn模型的第二层之间的多个连接的分解计算网络,其中:分解计算网络包括n个输入,分解计算网络包括m个输出,并且分解计算网络包括从n个输入中的每个输入到m个输出中的每个输出的至少一条路径;将分解计算网络中的多个连接的连接权重设置为1,以使得分解计算网络的权重密度《100%;使用分解计算网络来执行快速逐点卷积以生成快速逐点卷积输出;以及向cnn模型的第二层提供快速逐点卷积输出。
8.某些实施例进一步提供了一种处理系统,包括:存储器,其包括计算机可执行指令;以及第一处理器,其被配置成执行计算机可执行指令并使处理系统执行以下操作:在卷积神经网络(cnn)模型处接收输入数据;生成包括cnn模型的第一层和cnn模型的第二层之间的多个连接的分解计算网络,其中:分解计算网络包括n个输入,分解计算网络包括m个输出,并且分解计算网络包括从n个输入中的每个输入到m个输出中的每个输出的至少一条路径;将分解计算网络中的多个连接的连接权重设置为1,以使得分解计算网络的权重密度《100%;使用分解计算网络来执行快速逐点卷积以生成快速逐点卷积输出;以及向cnn模型的第二层提供快速逐点卷积输出。
9.某些实施例进一步提供了一种包括指令的非瞬态计算机可读介质,这些指令在由处理系统的第一处理器执行时使处理系统执行方法,该方法包括:在卷积神经网络(cnn)模型处接收输入数据;生成包括cnn模型的第一层和cnn模型的第二层之间的多个连接的分解计算网络,其中:分解计算网络包括n个输入,分解计算网络包括m个输出,并且分解计算网络包括从n个输入中的每个输入到m个输出中的每个输出的至少一条路径;将分解计算网络中的多个连接的连接权重设置为1,以使得分解计算网络的权重密度《100%;使用分解计算网络来执行快速逐点卷积以生成快速逐点卷积输出;以及向cnn模型的第二层提供快速逐点卷积输出。
10.以下描述和相关附图详细阐述了一个或多个实施例的某些解说性特征。
11.附图简述
12.附图描绘了该一个或多个实施例的某些方面,并且因此不被认为限制本公开的范围。
13.图1a-1d描绘了各种类型的神经网络的示例。
14.图2描绘了逐点卷积运算的示例。
15.图3描绘了具有输入和输出激活的示例网络。
16.图4描绘了自底向上办法中的快速逐点卷积方法的示例。
17.图5描绘了具有自顶向下办法的快速逐点卷积方法的示例。
18.图6描绘了利用可变权重密度缩减的形式的快速逐点卷积的示例,其中各阶段完全加权或完全不加权。
19.图7a和7b描绘了示出快速逐点卷积在复杂度和参数数目两者方面相对于常规逐点卷积和蝶形变换逐点卷积的性能改进的示例计算。
20.图8描绘了用于执行快速逐点卷积的示例方法800。
21.图9描绘了可以使用本文所描述的实施例来实现的片上系统(soc)的示例实现。
22.图10描绘了可以使用本文所描述的实施例来实现的多处理器处理系统的示例示意图。
23.为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想了一个实施例的要素和特征可有益地被纳入其他实施例而无需具体引述。
24.详细描述
25.本公开的各方面提供了用于优化机器学习模型性能的装置、方法、处理系统和计算机可读介质,尤其用于改进逐点卷积的效率。
26.深度神经网络与深度学习
27.深度学习架构可通过学习以在每一层中以逐次更高的抽象水平来表示输入、藉此构建输入数据的有用特征表示来执行复杂任务(诸如对象识别)。以此方式,深度学习解决了常规机器学习的主要瓶颈。
28.在深度学习出现之前,用于任务的机器学习办法可能严重依赖人类工程设计的特征,或许与浅分类器相结合。浅分类器可以是两类线性分类器,例如,其中可将输入值(例如,输入向量分量)的加权和与阈值作比较以预测输入属于哪一类别。人类工程设计的特征可以是由拥有领域专业知识的工程师针对特定问题领域定制的模版或核。
29.相比之下,深度学习架构可学习以表示与人类工程师可能会设计的类似的特征,但它是通过训练来学习的。此外,深度网络(例如,深度神经网络)可以学习以表示和识别人类可能还没有考虑过的新类型的特征。
30.深度学习架构可被配置成学习特征阶层。例如,如果向第一层呈递视觉数据,则第一层可学习以识别输入流中的相对简单的特征(诸如边缘)。在另一示例中,如果向第一层呈递听觉数据,则第一层可学习以识别特定频率中的频谱功率。取第一层的输出作为输入的第二层可以学习以识别特征组合,诸如对于视觉数据识别简单形状或对于听觉数据识别声音组合。例如,更高层可学习以表示视觉数据中的复杂形状或听觉数据中的词语。再高层可学习以识别常见视觉对象或口语短语。
31.深度学习架构在被应用于具有自然阶层结构的问题时可能表现特别好。例如,机
动交通工具的分类可受益于首先学习以识别轮子、挡风玻璃、以及其他特征。这些特征可在更高层以不同方式被组合以识别轿车、卡车和飞机。
32.神经网络可被设计成具有各种各样的连通性模式。例如,在前馈网络中,信息从较低层被传递到较高层,其中给定层中的每个神经元向更高层中的神经元进行传达。
33.神经网络还可具有回流或反馈(也被称为自顶向下(top-down))连接。从给定层中的神经元的输出到相同层中的另一神经元的连接被称为回流连接。回流架构可有助于识别跨越不止一个按顺序递送给该神经网络的输入数据组块的模式。从给定层中的神经元到更低层中的神经元的连接被称为反馈(或自顶向下)连接。当高层级概念的识别可辅助辨别输入的特定低层级特征时,具有许多反馈连接的网络可能是有助益的。
34.神经网络的各层之间的连接可以是全连接的或局部连接的。
35.图1a解说了全连接神经网络102的示例。在全连接神经网络102中,第一层中的神经元可将它的输出传达给第二层中的每个神经元,从而第二层中的每个神经元将从第一层中的每个神经元接收输入。
36.图1b解说了局部连接神经网络104的示例。在局部连接的神经网络104中,第一层中的神经元可连接到第二层中有限数目的神经元。更一般化地,局部连接的神经网络104的局部连接层可被配置成使得一层中的每个神经元将具有相同或相似的连通性模式,但其连接强度可具有不同的值(例如,110、112、114和116)。局部连接的连通性模式可能在更高层中产生空间上相异的感受野,这是由于给定区域中的更高层神经元可接收到通过训练被调谐为到网络的总输入的受限部分的性质的输入。
37.局部连接神经网络的一个示例是卷积神经网络。图1c解说了卷积神经网络106的示例。卷积神经网络106可被配置成使得与针对第二层中每个神经元的输入相关联的连接强度被共享(例如,108)。卷积神经网络可能非常适合于其中输入的空间位置有意义的问题。
38.卷积网络的每一层的处理可被认为是空间不变模版或基础投影。如果输入首先被分解成多个通道,诸如彩色图像的红色、绿色和蓝色通道,那么在该输入上训练的卷积网络可被认为是三维的,其具有沿着该图像的轴的两个空间维度以及捕捉颜色信息的第三维度。卷积连接的输出可被认为在后续层中形成特征图,该特征图中的每个元素从先前层中一定范围的神经元以及从该多个通道中的每个通道接收输入。特征图中的值可以用非线性(诸如矫正max(0,x))进一步处理。来自毗邻神经元的值可被进一步池化(这对应于降采样)并可提供附加的局部不变性以及维度缩减。
39.一种类型的卷积神经网络是深度卷积网络(dcn)。深度卷积网络(dcn)是卷积层的网络,其配置有附加的池化和归一化层。dcn可使用监督式学习来训练,其中输入和输出目标两者对于许多典范是已知的并被用于通过使用梯度下降法来修改网络的权重。
40.dcn可以是前馈网络。另外,如上所述,从dcn的第一层中的神经元到下一更高层中的神经元群的连接跨第一层中的神经元被共享。dcn的前馈和共享连接可被利用于进行快速处理。dcn的计算负担可比例如类似大小的包括回流或反馈连接的神经网络的计算负担小得多。
41.图1d解说了被设计成识别来自图像捕捉设备130(诸如车载相机)的图像126输入的视觉特征的dcn 100的详细示例。可对当前示例的dcn 100进行训练以标识交通标志以及
在交通标志上提供的数字。当然,dcn 200可被训练用于其他任务,诸如标识车道标记或标识交通信号灯。这些仅是一些示例任务,而许多其他任务是可能的。
42.可以用受监督式学习来训练dcn 100。在训练期间,可向dcn 100呈递图像(诸如限速标志的图像126),并且随后可计算“前向传递(forward pass)”以产生输出122。
43.在该示例中,dcn 100包括特征提取区段和分类区段。在接收到图像126之际,卷积层132向图像126应用卷积核(未示出),以生成第一组特征图118。一般而言,核包括被指定成强调输入数据通道的不同方面的二维权重阵列,而滤波器包括包含堆叠在一起的多个核的三维结构。三维滤波器在深度学习中被频繁使用。
44.在一个示例中,卷积层132的卷积核可以是生成28x28特征图的5x5核。进一步在本示例中,由于在第一组特征图118中生成四个不同的特征图,因此在卷积层132处四个不同的卷积核被应用于图像126。卷积核还可被称为滤波器或卷积滤波器。
45.第一组特征图118可由最大池化层(未示出)进行子采样以生成第二组特征图120。最大池化层减小第一组特征图118的大小。即,第二组特征图120的大小(诸如14x14)小于第一组特征图118的大小(诸如28x28)。经减小的大小向后续层提供类似的信息,同时减小存储器消耗。第二特征图集合120可经由一个或多个后续卷积层(未示出)被进一步卷积,以生成一个或多个后续特征图集合(未示出)。
46.在图1d的示例中,第二组特征图120被卷积以生成第一特征向量124。此外,第一特征向量124被进一步卷积以生成第二特征向量128。第二特征向量128的每个特征可包括与图像126的可能特征(诸如“标志”、“60”和“100”)相对应的数字。softmax(软最大化)函数(未示出)可将第二特征向量128中的数值转换为概率。如此,dcn 100的输出122是图像126包括一个或多个特征的概率。
47.在本示例中,输出122中“标志”和“60”的概率高于输出122的其他数字(诸如“30”、“40”、“50”、“70”、“80”、“90”和“100”)的概率。
48.在训练dcn 100之前,由dcn 100产生的输出122很可能是不正确的。由此,可计算输出122与目标输出之间的误差。目标输出是图像126的真实(例如,“标志”和“60”)。dcn 100的权重可随后被调整以使得dcn 100的输出122与目标输出更紧密地对齐。
49.为了调整dcn 100的权重,学习算法可为权重计算梯度向量。该梯度可指示在权重被调整情况下误差将增加或减少的量。在顶层处,该梯度可直接对应于连接倒数第二层中的活化神经元与输出层中的神经元的权重的值。在较低层中,该梯度可取决于权重的值以及所计算出的较高层的误差梯度。权重可随后被调整以减小误差。这种调整权重的方式可被称为“后向传播”,因为其涉及在神经网络中的“后向传递(backward pass)”。
50.在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。在学习之后,dcn 100可被呈递新图像并且在网络中的前向传递可产生输出122,其可被认为是该dcn的推断或预测。
51.卷积神经网络中的卷积
52.卷积是一种用于例如信号处理、图像处理、机器学习和其他技术领域的数据分析技术。在深度学习中,卷积被用于从输入数据集中提取有用的特征。例如,在卷积神经网络
中,诸如上文所述,卷积使得能够使用滤波器来提取不同的特征,滤波器的权重在训练期间被自动学习。随后组合所提取的特征以进行推断。
53.减少计算负担(例如,其按每秒浮点运算(flop)来测量)和与卷积神经网络相关联的参数数目的一种方法是使用可分离逐深度卷积将卷积层分解为两个组成部分:(1)空间融合,其中每个空间通道通过逐深度卷积被独立卷积;以及(2)通道融合,其中所有的空间通道通过1x1卷积来线性组合,称为逐点卷积。
54.在空间融合期间,网络从空间面学习特征,而在通道融合期间,网络跨通道学习这些特征之间的关系。有时使用3x3滤波器实现空间融合,并且使用1x1滤波器实现通道融合。一般而言,经由逐点卷积的通道融合对于高效计算的降维、高效的低维嵌入或特征池、以及在卷积之后再次应用非线性都是有用的,仅列举几个示例。
55.例如,逐点卷积可以使用1x1xd核,该核迭代遍历深度为d的输入图像中的每个单点。逐点卷积核的深度d通常与输入数据的通道数相匹配,诸如具有多个用于颜色数据的通道的图像。
56.一般而言,激活层(诸如relu、prelu、softmax或其他)可以在神经网络的每一层之后应用。应用1x1xd核并在核之后添加激活层可能增加网络深度,这可提高其性能。
57.图2描绘了逐点卷积运算的示例,其中1x1x5核204迭代遍历8x8x5输入图像202以生成8x8x1的输出图像206。如在该示例中所描绘的,输出图像206具有降低的维度(1通道对8通道),这允许使用输出图像206进行更高效的计算。
58.尽管未在图2中描绘,但多个(例如,m个)逐点卷积核(例如,在滤波器中)可被用来增加输入数据的输出通道的数目。因此,例如,可以生成m=256个1x1x5核204,每个核各自输出8x8x1输出图像(例如,206),并且这些输出图像可被堆叠以获得8x8x256的所得图像,即,8像素宽
×
8像素高、具有深度为256个通道的图像。输出通道的所得增加为训练提供了更多的参数,这可以改进模型标识特征的能力(例如,在输入图像202中)。
59.在推断时间检视分解卷积神经网络的计算轮廓揭示了空间融合的计算负担比通道融合的计算负担要小得多。实际上,通道融合中的逐点卷积的计算复杂度是通道数的二次方(o(n2),其中n是通道数)。
60.图3描绘了具有n=4个输入和m=4个输出的全连接网络300的示例。为了确定在网络300上执行常规逐点卷积的复杂度,考虑从输入特征图x获取n个激活并产生m个激活作为输出特征图y的逐点(1x1)卷积。因此:
61.y=wx,其中x∈rn,w∈r
n*m
,并且y∈rm。
62.在常规逐点卷积运算中,在激活(x)和权重(w)之间有n*m次乘法;因此,复杂度阶数是o(n2)。
63.快速逐点卷积方法
64.本文所描述的是快速逐点卷积方法,其使用分解和减少的权重密度而不是严格的逐点乘法来实现以显著减少的操作复杂度和降低的权重(参数)数目使用运算y=wx从特征图x到特征图y的类似变换。
65.例如,假定x具有形状[x0,x1,x2,x3],并且y具有形状[y0,y1,y2,y3],分别沿着x和y的x1和y1维度,并且进一步假定size(x1)=n和size(y1)=m。随后,常规逐点卷积如下所定义地在权重w上以n*m的复杂度来运算:
[0066]
wm×n=[[w
01
,w
02
,...,w
0(n-1)
],[w
11
,w
12
,...,w
1(n-1)
],...,[w
(m-1)1
,w
(m-1)2
,...,w
(m-1)(n-1)
]]
[0067]
相比之下,本文所描述的方法使用分解和减少的权重密度来减少逐点卷积所需的权重数和由此的乘法。权重密度通常指网络中加权连接或边缘占该网络中所有连接或边缘的百分比。在常规逐点卷积中,由于分解计算网络中的所有连接都被加权,所以权重密度为100%。相比之下,本文所描述的分解和权重密度减少导致n*log2n n的所需参数数目和复杂度,其在复杂度和所需参数数目两者上都是n*m的显著改进(如图7a和7b中所描绘的)。
[0068]
一般而言,给定网络的权值密度越高,网络的可训练权重就越多,基于该网络的所得模型就越有表现力。然而,如本文进一步描述的,权重密度可以改变以在经训练模型性能和训练复杂度之间达成合适的平衡。
[0069]
本文所描述的快速逐点卷积方法导致胜过常规方法的许多改进。例如,减少执行逐点卷积所需的乘法数目减少在执行逐点卷积的处理系统中的功率使用和等待时间。此外,减少可训练权重的数目减小了模型大小,这有利地减少了存储器使用(例如,更少的存储器事务);所需的存储器大小(例如,用于保持较小的激活);和等待时间(因为更少的存储器事务)。减少存储器(例如,片上存储器)大小进一步降低了功率使用和成本。因此,快速逐点卷积对于移动设备和资源受限的边缘设备尤其有利。
[0070]
快速逐点卷积在任何机器学习上下文中都是有益的,其中某一精度是可以用性能来交换的。例如,在释放实际乘积中的“运行时间”权重之前,可以使用快速逐点卷积来执行模型压缩。经压缩的权重可以有益地减少乘积的存储器和处理需求。
[0071]
图4描绘了网络400上自底向上办法中的快速逐点卷积方法的示例。网络400可被称为分解计算网络或图。
[0072]
在该示例中,使用以下约定:f
ij
是第i阶段中第j个向下连接权重;g
ij
是第i阶段中第j个向上连接的权重;d
ij
是第i阶段中第j个直接连接的权重;而所有其他直接连接的权重等于1(替换地被称为“幺元”)。直接连接权重可替换地被称为水平连接重量,并且向上和向下连接权重可替换地被称为交叉连接权重。此外,连接可替换地被称为边缘。
[0073]
一般而言,计算网络400包括多个阶段(402和404),其具有在输入(例如,[x0,x1,x2,x3])、加法节点(例如,408)(其也可被称为累加器节点)、和输出(例如,[y0,y1,y2,y3])之间连接的阶段间连接(例如,d
ij
、f
ij
、和g
ij
的阶段间连接)。阶段n的数目可通过log2n来确定,其中n是输入的数目(例如,输入通道的数目)。因此,在该示例中,n=log24=2。
[0074]
在该示例中,在分解的每个阶段中,输入被组织成不同的对,这导致输入[x0,x1,x2,x3]在第一级402中被组织成对[x0,x1]和[x2,x3],而在第二级404中被组织成[x0,x2]和[x1,x3]。
[0075]
随后,计算所有第一阶段402的直接连接权重(d
ij
)和交叉连接权重(f
ij
和g
ij
),其在该示例中包括d
00
、f
00
、g
00
、d
01
、d
02
、f
01
、g
01
、和d
03
。然而,在第二阶段404中,仅计算交叉连接权重,其在该示例中包括f
10
、g
10
、f
11
、和g
11
。在该示例中,第二阶段直接连接权重被设置等于1(或“幺元”),这降低了网络400的权重密度,并且因此降低了其复杂度。
[0076]
注意,在本示例中,由于输入和输出节点的索引原点为0,因此阶段索引号比其序数参照少1。例如,在此,“第一阶段”的阶段索引为0,“第二阶段”的阶段索引为1。这些可替换地被称为阶段0和阶段1,与索引一致。
[0077]
值得注意的是,网络400是完全连接的,因为每个输入x被连接到每个输出y,如同图3中的网络300,但是在基于完全连接的输入来计算输出时,减少数目的可训练权重的减少了必要的乘法数目。具体地,在该示例中,第二阶段404中的直接连接权重406都等于1,并且因此不需要被训练或相乘。相反,来自第一阶段402的权重可以正好沿着直接连接权重404来携带。因此,该示例中网络400的分解得到以下等式:
[0078]
y0=d
00
x0 g
00
x1 d
02g10
x2 g
01g10
x3[0079]
y1=f
00
x0 d
01
x1 f
01g11
x2 d
03g11
x3[0080]
y2=d
00f10
x0 g
00f10
x1 d
02
x2 g
01
x3[0081]
y3=f
00f11
x0 d
01f11
x1 f
01
x2 d
03
x3[0082]
如以上等式组所描绘的,与常规逐点卷积(例如,如图3的示例所示)中所需的n*m=16个参数相比,该快速逐点卷积方法仅有12个参数。因此,在该示例中,网络400的权重密度为12/16=3/4或即75%。尽管复杂度显著降低,使用该快速逐点卷积方法所得模型的性能与常规逐点卷积的性能非常相似。因此,在性能的优先级胜过绝对性能的上下文中,快速逐点卷积是有益的。
[0083]
图5描绘了网络500上具有自顶向下办法的快速逐点卷积方法的示例。在计算上,该自顶向下替换办法等效于参照图4所描述和描绘的自底向上办法。然而,实现考量可导致相对于一种办法相对于另一种办法的偏好。
[0084]
在这里,再次,在分解的每个阶段中,输入被组织成不同的对,并且阶段的数目n再次由n=log2n来确定,其中n是输入(例如,输入通道)的数目。因此,在该示例中,分解的阶段数目被确定为n=log24=2。如上所述,输入[x0,x1,x2,x3]可以再次在第一阶段502中被组织成对[x0,x1]和[x2,x3],并且在第二阶段504中被组织成对[x0,x2]和[x1,x3]。
[0085]
在该示例中,仅计算第一阶段502交叉连接权重(f
ij
和g
ij
),其在该示例中包括f
00
、f
01
、g
00
和g
01
。随后,在第二阶段504中,计算直接连接权重(d
ij
)和交叉连接权重(f
ij
和g
ij
),其在该示例中包括d
10
、f
10
、g
10
、d
11
、d
12
、f
11
、g
11
和d
13

[0086]
如同图4中的网络400,在此,网络500是完全连接的,因为每个输入x被连接到每个输出y。并且在这里,再次,跨多个阶段(502和504)使用可变加权密度允许减少数目的可训练权重,以及由此减少数目的乘法。具体地,在该示例中,第一阶段504中的直接连接权重506都等于1(或幺元),并且因此不需要被训练或相乘。因此,该示例中网络400的分解得到以下等式:
[0087]
y0=d
10
x0 g
10
x1 g
00d10
x2 g
01g10
x3[0088]
y1=f
10
x0 d
11
x1 g
00f10
x2 g
01d11
x3[0089]
y2=f
00d12
x0 f
01g11
x1 d
12
x2 g
11
x3[0090]
y3=f
00f11
x0 f
01d13
x1 f
11
x2 d
13
x3[0091]
在这里,再次,与将在常规逐点卷积(例如,如图3的示例所示)中所需的n*m=16个参数相比,该快速逐点卷积方法在以上等式组中仅有12个参数。因此,在此,网络500的权重密度再次为3/4或即75%。
[0092]
用于快速逐点卷积的通用数学模型
[0093]
根据以下关于图3和4所描述的示例,用于快速逐点卷积的通用数学模型可被描述如下。
[0094]
从简单的情形开始,n=2个输入的直接连接权重(dn)可被表示如下:
[0095][0096]
类似地,n=2个输入的向下交叉连接权重(fn)可被表示如下:
[0097][0098]
并且最后,n=2个输入的向上交叉连接权重(gn)可被表示如下:
[0099][0100]
因此,对于m=2个输出,可使用以下表达式:
[0101]
y2(d2⊙
f2⊙
g2)x2[0102]
在以上等式中,

表示逐元素乘法运算。
[0103]
以上关于n=2的简单情形的等式可被推广到任何n个输入,其中n=2n(或等效地,n=log2n)并且n是正整数,如下所示。
[0104]
首先,令表示kronecker乘法运算。随后,从n=2n→2n 1
,权重矩阵可由下式来表示:
[0105][0106]
类似地,向下交叉连接权重可被表示如下:
[0107][0108]
并且最后,向上交叉连接权重可被表示如下:
[0109][0110]
因此,以下通用表达式:
[0111]yn
=(dn⊙fn
⊙gn
)xn[0112]
因此,例如,在n=4个输入和m=4个输出的另一示例中,可以使用以下表达式:
[0113]
y4=(d4⊙
f4⊙
g4)x4[0114]
并且,在n=4个输入、m=4个输出的情况下,可以导出下式:
[0115][0116]
[0117][0118]
值得注意的是,关于n=4的上式仅是一个示例,而可以在对于具有不同输入节点数目n的网络的各阶段上逐步做出相同推导。
[0119]
在一个示例中,可以通过将某些直接连接权重设置为1来降低计算图的权重密度,诸如以上参照图4和5所描述的。所以,例如,对于n=4的示例,直接连接权重矩阵的经修改的版本可被配置成(其中所指示的d

的权重中的一者或多者被设置为1):
[0120][0121]
值得注意的是,这仅是一个示例,并且许多其他示例也是可能的。
[0122]
快速逐点卷积线性缩放方法
[0123]
因为如上所述,当创建分解计算网络时,输入被成对组织,输入数目n优选为数字2n,其中n是正整数。当n不是数字2n时,n可被推导为n=ceil[log2(n)],其中ceil[]是上限函数,其将实数朝正无穷舍入。对n有此类定义保证计算图总是等于或大于作为正整数的任意n所需的大小。
[0124]
此外,如果输入数目n与输出数目m不匹配,则上述分解方案不直接适用。在任一情形中,可以将具有空激活跳过的线性缩放应用于快速逐点卷积计算网络,以使得快速逐点卷积将如上所述地工作。
[0125]
以下是用于应用具有空激活能力的线性缩放的示例算法。最初,分别假定n和m作为用于输入和输出特征的通道数目。随后,可以将以下算法应用于快速逐点卷积(fpc):
[0126]
1:设置numstages=int(ceil(log2(max(n,m))))(将numstages设置为大于或等于n和m中较大者的log2的最小整数值);
[0127]
2:设置n
new
=m
new
=2
numstages
;(注意n
new
≥n和m
new
≥m);
[0128]
3:将n
new-n个0沿通道维度附加到输入张量;
[0129]
4:执行fpc(n
new
,m
new
),而不是fpc(n,m),但跳过所有以“0”值作为输入激活的乘法运算;以及
[0130]
5:在输出处,返回沿通道维度的张量中前m个输出通道。
[0131]
假定fpc(n
new
,m
new
)的计算复杂度(或参数数目)为c。于是使用该提议的线性缩放方法所得的新复杂度(或参数数目)变为cnm/(n
newmnew
)。
[0132]
例如,可以在asic神经网络加速器或其他具有专用指令/加速器扩展的可编程核上实现具有空激活跳过的线性缩放方法。
[0133]
具有跳过连接的快速逐点卷积
[0134]
常规逐点卷积不利用“跳过连接”,其是跳过层的连接,并且可以因此也被称为“捷径”连接。跳过层的动机是简化网络,在初始训练阶段使用较少层。这通过减少消失梯度的影响来加速学习,因为要传播通过的层较少。该网络随后在其学习特征空间时逐渐恢复跳
[0160]
在一些情形中,可执行灵敏度分析,以确定将特定阶段作为非加权阶段或加权阶段的影响(例如,在经训练模型性能方面)。
[0161]
使用快速逐点卷积的示例性能改进
[0162]
图7a和7b描绘了示出快速逐点卷积在复杂度和参数数目两个方面相对于常规逐点卷积和蝶形变换逐点卷积的性能改进的示例计算。
[0163]
从图7a中的表清楚地看出,在将快速逐点卷积与常规逐点态卷积、并且甚至与改进性能的逐点卷积(诸如通过蝶形变换逐点卷积)进行比较时,用于n

n逐点卷积的参数(例如,权重)数目存在急剧减少。如上所讨论的,该参数减少直接转化为执行逐点卷积的处理系统的性能改进。此外,如上所述,参数计数的减少意味着可以有益地减少用于支持依赖于逐点卷积的模型的硬件需求,这进一步节省了芯片面积、功率使用和成本,仅举几个优点。
[0164]
类似地,图7b中描绘的图描绘了在乘法-累加运算数目方面,与常规逐点卷积和蝶形变换逐点卷积相比,如本文所述的快速逐点卷积的复杂度减少。在执行逐点卷积的处理系统中,乘法-累加运算的减少有益地减少了等待时间和功耗。
[0165]
用于执行快速逐点卷积的示例方法
[0166]
图8描绘了用于执行快速逐点卷积的示例方法800。
[0167]
方法800始于步骤802,在卷积神经网络(cnn)模型处接收输入数据。
[0168]
方法800随后行进至步骤804,生成包括cnn模型的第一层和cnn模型的第二层之间的多个连接的分解计算网络。在一些实施例中,分解计算网络包括n个输入。在一些实施例中,分解计算网络包括m个输出。在一些实施例中,分解计算网络包括从n个输入中的每个输入到m个输出中的每个输出的至少一条路径。
[0169]
方法800随后行进至步骤806,将分解计算网络中的多个连接的连接权重设置为1,以使得分解计算网络的权重密度《100%。
[0170]
方法800随后行进至步骤808,使用分解计算网络执行快速逐点卷积以生成快速逐点卷积输出。
[0171]
方法800随后行进至步骤810,向cnn模型的第二层提供快速逐点卷积输出。
[0172]
在方法800的一些实施例中,分解计算网络包括数个,n=log2n个,阶段。
[0173]
在方法800的一些实施例中,该多个连接包括连接到cnn模型的第一层和cnn模型的第二层之间的加法节点的多个加权连接,诸如以上在一个实施例中参照图4-6所描述的。
[0174]
在一些实施例中,将分解计算网络中的多个连接的连接权重设置为1包括将该数个阶段中的至少一个阶段的所有连接权重设置为1,诸如以上参照图6所描述的。在一些实施例中,将分解计算网络中的多个连接的连接权重设置为1包括将该数个阶段中的至少一个阶段的连接权重子集设置为1,诸如以上参照图4和5所描述的。
[0175]
在一些实施例中,方法800进一步包括:对分解计算网络执行具有空激活跳过的线性缩放,诸如在n≠2n和n是正整数时,或者在n≠m时。
[0176]
在一些实施例中,诸如执行具有空激活的线性缩放的那些实施例,向cnn模型的第二层提供快速逐点卷积输出包括向cnn模型的第二层仅提供快速逐点卷积输出的前m个通道。
[0177]
在一些实施例中,方法800进一步包括:向分解计算网络添加多个跳过连接。
[0178]
在一些实施例中,方法800进一步包括:从cnn模型生成模型输出;以及将所生成的模型输出提供给在移动电子设备上运行的低功率应用。
[0179]
在一些实施例中,方法800进一步包括:由第一处理器基于快速逐点卷积输出来执行第一推断;由第二处理器使用分解计算网络执行第二快速逐点卷积以生成第二快速逐点卷积输出;以及向cnn模型的第二层提供第二快速逐点卷积输出。换言之,在多处理器处理系统中,快速逐点卷积可以跨硬件资源来并行化。例如,第一处理器和第二处理器可以是以下参照图9和/或10所描述的处理器之一。
[0180]
在方法800的一些实施例中,从移动电子设备中的传感器(例如,图9中的传感器914之一)接收输入数据。在一些实施例中,输入数据与在移动电子设备上运行的应用相关联,并且配置成用于以下至少一项:生物特征检测、人类存在检测、环境条件检测、对象检测或对象分类。
[0181]
在方法800的一些实施例中,输入数据是图像数据、视频数据、音频数据或信号数据中的一者。在其他实施例中,输入数据可以表示已被量化的其他“特征”。
[0182]
用于优化机器学习模型性能的示例处理系统
[0183]
图9解说了根据本公开的某些方面的片上系统(soc)900的示例实现,其可包括配置成执行并行monte carlo丢弃(dropout)功能的中央处理单元(cpu)902或多核cpu。变量(例如,神经信号和突触权重)、与计算设备相关联的系统参数(例如,带有权重的神经网络)、延迟、频率槽信息、以及任务信息可被存储在与神经处理单元(npu)908相关联的存储器块中、与cpu 902相关联的存储器块中、与图形处理单元(gpu)904相关联的存储器块中、与数字信号处理器(dsp)906相关联的存储器块中、存储器块918中,或可跨多个块分布。在cpu 902处执行的指令可从与cpu 902相关联的程序存储器加载或可从存储器块918加载。
[0184]
soc 900还可包括为具体功能定制的附加处理块(诸如gpu 904、dsp 906、连通性块910,其可包括第五代(5g)连通性、第四代长期演进(4g lte)连通性、wi-fi连通性、usb连通性、蓝牙连通性等)以及例如可检测和识别姿势的多媒体处理器912。在一种实现中,npu实现在cpu 902、dsp 906、和/或gpu 904中。soc 900还可以包括与任何种类的传感器相关联的一个或多个传感器处理器914、一个或多个图像信号处理器(isp)916、和/或导航模块920(其可以包括全球定位系统)。
[0185]
soc 900可基于arm指令集。在本公开的一方面中,加载到cpu 902中的指令可包括用于在与输入值和滤波器权重的乘积相对应的查找表(lut)中搜索所存储的乘法结果的代码。加载到cpu 902中的指令还可包括用于在乘法乘积的查找表命中被检测到时在该乘法乘积的乘法运算期间禁用乘法器的代码。另外,加载到cpu 902中的指令可包括用于在乘积的查找表未命中被检测到时存储输入值和滤波器权重的所计算乘积的代码。
[0186]
soc 900和/或其组件可被配置成执行本文所描述的方法。
[0187]
图10描绘了可以使用本文所述的实施例来实现的多处理器处理系统1000的示例示意图。
[0188]
在该示例中,系统1000包括处理器1001、1003和1005,但在其他示例中,可以使用任何数目的个体处理器。此外,尽管类似地描述,但处理器1001、1003和1005可以代表电子设备中各种不同类型的处理器,诸如本文所述的cpu、gpu、dsp、npu等。
[0189]
处理器1001、1003和1005中的每一者包括指令调度器、各种硬件子组件(例如,硬
件x、硬件y和硬件z)和局部存储器。在一些实施例中,局部存储器可以是紧密耦合存储器(tcm)。注意,处理器1001、1003和1005中的每一者的组件在该示例中被示为相同,每个处理器可以具有不同的硬件配置、不同的硬件元件等。
[0190]
处理器1001、1003和1005中的每一者还与全局存储器(诸如ddr存储器或其它类型的易失性工作存储器)进行数据通信。
[0191]
在一些实现中,在多处理器处理系统(诸如1000)中,处理器之一可以充当主处理器。例如,在该示例中,处理器1001可以是主处理器。主处理器可以包括编译器,编译器在被执行可以确定模型(诸如神经网络模型)将如何被处理系统1000的各种组件来处理例如,硬件并行性可以通过将模型的各处理部分映射到给定处理器(例如,处理器1001)内的各种硬件(例如,硬件x、硬件y和硬件z)、以及将模型的各处理部分映射到其他处理器(例如,处理器1003和1005)及其相关联的硬件来实现。
[0192]
提供先前描述是为了使本领域任何技术人员均能够实践本文中所述的各种实施例。本文所讨论的示例并非是对权利要求中阐述的范围、适用性或者实施例的限定。对这些实施例的各种改动将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他实施例。例如,可以对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可以按与所描述的次序不同的次序来执行所描述的方法,并且可以添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
[0193]
如本文中所使用的,术语“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
[0194]
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:a、b、c、a-b、a-c、b-c、和a-b-c,以及具有多重相同元素的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、和c-c-c,或者a、b和c的任何其他排序)。
[0195]
如本文中所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及诸如此类。而且,“确定”可包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。“确定”还可包括解析、选择、选取、确立及诸如此类。
[0196]
本文中所公开的各方法包括用于实现方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。此外,上述方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(asic)、或处理器。一般地,在存在附图中解说的操作的场合,这些操作可具有带相似编号的相应配对装置加功能组件。
[0197]
以下权利要求并非旨在被限定于本文中示出的实施例,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,对单数元素的引用不旨在意指“有且只有一个”(除非专门如此声明),而是“一个或多个”。除非另外特别说明,否则术语“一些”是指一个或多个。权利要求的任何要素都不应当在35u.s.c.
§
112(f)的规定下来解释,除非该要素是使用短语“用于
……
的装置”来明确叙述的或者在方法权利要求情形中该要素是使用短语“用于
……
的步骤”来叙述的。贯穿本公开所描述的各种方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,无论在权利要求书中是否明确地记载了此类公开内容,本文所公开的内容都不旨在捐献于公众。
再多了解一些

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

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

相关文献