用于可变卷积运算的弹性瓶颈架构的制作方法

文档序号:34259133发布日期:2023-05-25 04:14阅读:58来源:国知局
用于可变卷积运算的弹性瓶颈架构的制作方法
用于可变卷积运算的弹性瓶颈架构
1.相关申请的交叉引用
2.本技术要求于2021年7月19日提交的美国专利申请no.17/379,833、以及于2020年7月20日提交的美国临时专利申请no.63/054,147的利益和优先权,这两件申请的全部内容通过援引纳入于此。
3.引言
4.本公开的各方面涉及机器学习。
5.机器学习可以产生经训练模型(例如,人工神经网络、树或其他结构),其表示对先验已知的训练数据集合的广义拟合。将经训练模型应用于新数据产生推断,这可被用于获得关于新数据的洞察。在一些情形中,将模型应用于新数据被描述为对新数据“运行推断”。
6.机器学习模型被越来越多地用于各种领域,包括用于分类、检测和识别任务。例如,机器学习模型正被用于基于由电子设备上的一个或多个机载传感器所提供的传感器数据在这些设备上执行复杂任务,诸如对图像内的特征(例如,面部)进行自动分类。
7.机器学习能力通常通过用于执行机器学习任务(包括训练和推断)的专用硬件得到增强。例如,可以优化专用推断处理器以基于模型输入数据来执行快速推断。但是,与进入处理设备(尤其是大小和功率受限的设备,诸如移动设备、常开设备、边缘处理设备等)的所有硬件一样,存在为了满足整体产品规格而必需的设计约束和妥协。
8.例如,专用推断处理器(特别是集成电路(ic)或专用集成电路(asic)芯片的形式)可能受到物理资源容量的约束,诸如缓冲器/存储器大小、数据路径大小、向量和/或矩阵乘法单元的能力等等。因此,专用推断处理器可以实现的模型大小同样受限。作为一个示例,基于处理硬件的物理约束,深度学习模型在卷积层中所支持的通道数目方面可能受限。
9.该问题因机器学习模型随着这些模型变得越来越有能力而变得越来越大的趋势被复杂化。由此,已投入使用的处理硬件可能快速变得无法实现最新近的模型,从而极大地降低了现有处理硬件的效用。
10.当专用机器学习硬件(例如,推断处理器)对于特定模型、或模型的特定上下文或用例而言过大时,出现类似的问题,并且由此当较小的模型由过大硬件处理时处理循环、功率等等可能会浪费。一般而言,模型大小和硬件配置的固定性质导致机器学习模型架构与机器学习处理硬件之间的频繁低效配对。
11.相应地,需要用于提高现有处理硬件处置动态范围的机器学习模型大小的能力而不会改变硬件的物理能力的系统和方法。
12.简要概述
13.某些方面提供了一种方法,包括:确定弹性瓶颈块的卷积层的循环数目;对于该数目个循环中的每个循环:加载因循环而异的卷积权重集;使用该因循环而异的卷积权重集来执行卷积运算;以及将因循环而异的卷积结果存储在本地存储器中;以及基于对与该数目个循环中的每个循环相关联的因循环而异的卷积结果的求和来确定该卷积层的输出。
14.进一步方面提供了一种方法,包括:训练供弹性瓶颈块在基本模式中操作的第一权重集,其中:在该基本模式中,该弹性瓶颈块的每个卷积层被配置成循环一次;训练供该
弹性瓶颈块在扩展模式中操作的第二权重集,其中:在该扩展模式中,该弹性瓶颈块的一个或多个卷积层被配置成循环不止一次;以及将该第一权重集和该第二权重集存储在该弹性瓶颈块可访问的存储器中。
15.其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的那些方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的那些方法的装置。
16.以下描述和相关附图详细阐述了一个或多个方面的某些解说性特征。
17.附图简述
18.附图描绘了该一个或多个方面中的某些方面,并且因此不被认为限制本公开的范围。
19.图1描绘了弹性瓶颈块的示例。
20.图2a描绘了使用三层瓶颈块的基本和扩展卷积模式的示例。
21.图2b描绘了扩展逐点卷积处理的示例。
22.图3描绘了基本卷积模式处理流和扩展卷积模式处理流的比较。
23.图4描绘了用于使用弹性瓶颈块进行推断的示例方法。
24.图5描绘了用于训练弹性瓶颈块的示例方法。
25.图6描绘了用于执行本文所描述的各个方面的示例处理系统。
26.为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想一个方面的要素和特征可有益地被纳入到其他方面中而无需进一步引述。
27.详细描述
28.本公开的各方面提供了一种可缩放机器学习模型架构,其实现可变机器学习模型表达性(expressiveness)而不会改变可用于被分配成处理机器学习模型的处理硬件的底层物理资源(例如,存储器大小、卷积通道数目、位宽等等)。具体而言,本文所描述的可缩放机器学习模型架构实现了弹性瓶颈块,其可被配置成基于上下文、用例和条件来扩展或收缩模型以使得与固定大小的机器学习模型架构相比硬件使用被优化并且硬件设计受到较少约束。有益地,弹性瓶颈块可以动态地(例如,在运行时)以及静态地(例如,在模型设计期间)来配置。
29.瓶颈块是在许多机器学习模型架构中用于提高效率的卷积结构。常规瓶颈块可被用于使用高效逐点卷积(例如,具有1
×
1大小的核的卷积)来减少卷积运算期间的通道数目(由此用作信息“瓶颈”)。例如,瓶颈块中的初始逐点卷积层可减少用于后续深度卷积层(例如,使用3
×
3卷积核)的通道数目。在瓶颈块中减少用于中间层的通道数目减少了中间层所需要的参数数目,从而一般在性能损失最小的情况下减少计算成本(用于处理参数)和存储器使用(用于存储参数)。一般而言,瓶颈块的最终逐点卷积可被用于设置块输出中的输出通道数目,这取决于配置可与瓶颈块的输入相同或不同。常规地,瓶颈块具有固定数目的参数并且由此具有固定表达性。此类常规瓶颈块可被称为“非弹性瓶颈块”。
30.本文所描述的各方面涉及“弹性”瓶颈块架构,其实现对机器学习模型的瓶颈块中
的计算的动态缩放以实现机器学习模型的动态表达性。有益地,弹性瓶颈块可以替代流行的卷积神经网络(cnn)架构(诸如mobilenetv2、mobilenetv3、efficientnet等)的现有瓶颈块,而无需进一步修改这些网络架构,从而增强这些网络的能力。此外,可在其他和新的模型架构中实现弹性瓶颈块以相比于常规办法提高性能。
31.如下文更详细描述的,弹性瓶颈块架构的灵活性质可通过选择性地扩展或收缩弹性瓶颈块内的处理来达成。此外,弹性瓶颈块可被配置成约束输入和输出大小(例如,通道数目)以替代现有模型架构中的现有瓶颈块。
32.在各个方面,通过瓶颈块中的各个模型层在所配置数目的“循环”中串行地处理附加数据,使得扩展或收缩弹性瓶颈块内的处理成为可能。一般而言,向处理添加循环允许在每个附加循环中处理具有附加权重的附加数据。循环数目可基于上下文、用例或运行时的其他条件来增加或减少,以实现灵活性和效率而无需改变底层硬件。在一些情形中,循环数目可基于被选择以供处理的数据通道的数目。
33.此外,在一些方面,输入数据的通道可(例如,在训练期间)进行分析并按对最终模型输出的重要性或影响进行排名和/或排序,并且可在运行时选择可用的输入数据通道的总集合的子集以供处理。可配置循环实现用于扩展和收缩供弹性瓶颈块处理的通道数目的高效机制。
34.本文所描述的弹性瓶颈块架构有许多用例。一般而言,其中机器学习模型的处理要求是多模式或条件式的任何用例或上下文都可以受益于弹性瓶颈块架构。
35.例如,在多传感器系统(诸如全自动或半自动交通工具)中,并非所有传感器始终需要或可用。作为示例,当在晴朗天气行驶时,交通工具可使用相机数据和lidar(激光雷达)数据来辅助导航。然而,在恶劣天气下,交通工具可使用附加数据,诸如雷达数据。基于条件使用的附加传感器数据可能超过现有机器学习模型处理硬件的设计约束,或者需要更强大的硬件以使得所有可能的输入数据需要一直处理,这是低效的。相比之下,使用弹性瓶颈块架构允许通过动态地扩展或收缩瓶颈块中的操作来选择性地使用附加数据的能力,以基于条件(例如,晴朗或恶劣天气)根据需要来计及附加或不必要的数据。由此,现有处理硬件的能力在没有底层硬件改变的情况下被扩展,并且处理系统硬件的效率和能力极大提高。
36.前述示例和其他示例中处理系统的提高的效率可导致减少的功率使用、减少的热量生成、减少的存储器使用、更长的电池寿命、共享处理环境中用于其他系统的处理循环的改进可用性、附加设备可用性、以及更广泛的模型部署可能性,仅举一些益处。此外,处理系统的提高的效率可允许随着机器学习模型继续演进而处理更广泛且更新的机器学习模型架构。由此,现有处理硬件可提高其性能并延长其使用寿命,并且可基于届时可用的模型架构以较少的约束来设计新硬件。
37.弹性瓶颈块的示例
38.图1描绘了包括弹性瓶颈块101的弹性瓶颈块架构100的示例。
39.在该示例中,弹性瓶颈块101包括第一逐点卷积层110,其被配置成使用逐点卷积核111来处理输入数据(x)。在一些情形中,逐点卷积层110可被用于降低用于深度卷积层114的数据的维度,以提高深度卷积的效率。逐点卷积层110的输出是非线性或算数运算块112的输入,该非线性或算数运算块112在一些示例中可以是非线性激活块,诸如relu块。块
112的输出是被配置成使用深度卷积核113来处理数据的k
×
k深度卷积层114的输入,其中k》1。卷积层114的输出是另一非线性或算数块116(其同样可以是非线性激活块)的输入。块116的输出是被配置成使用逐点卷积核115来处理输入数据的第二逐点卷积层118的输入。逐点卷积层118的输出是另一非线性或算数运算块120(其同样可以是非线性激活块)的输入。块120的输出是池化层122(例如,最大池化、平均池化等等)的输入。最后,池化层122的输出被提供给累加器130。累加器130可用作加法运算器(例如,逐点加法运算器)以将中间卷积输出数据与存储在激活存储器106中的其他中间卷积层输出数据相加。值得注意的是,这仅是弹性瓶颈块的一个示例,并且具有不同层布置和结构的其他弹性瓶颈块是可能的。
40.在图1的示例中,卷积层110、114和118中的每一者分别与本地缓冲器124、126和128相关联。这些缓冲器一般可用作为其相应层保留的“暂存空间”以保存所有本地计算或累加。如下文更详细解释的,本地缓冲器124、126和128可以被用于在多次循环通过一层时存储数据,诸如输入数据和权重。这些缓冲器可例如从权重存储器104和激活存储器106接收数据。
41.弹性瓶颈块101与权重存储器104处于数据通信以用于为卷积层110、114和118提供权重(例如,通过主机系统存储器和dma 102)以及与激活存储器106处于数据通信以用于存储弹性瓶颈块101的输出。
42.弹性瓶颈块101还与模式控制器108处于数据通信,该模式控制器108包括用于执行弹性瓶颈块101的控制和处置逻辑。例如,控制逻辑可基于层110、114和118中每一层的参数(诸如循环参数(如下文更详细描述的))来指定和控制层110、114和118中的卷积运算。如下文进一步描述的,模式控制器108可按“基本”模式来配置弹性瓶颈块101以用于常规运算,或者按实现循环和/或信道选择的一个或多个扩展模式来配置弹性瓶颈块101以获得模型的可变表达性。
43.用于单个瓶颈块(诸如弹性瓶颈块101)的卷积运算一般可描述如下,其中为简单起见某些运算(例如,批量归一化、非线性等)从数学描述中省略,但那些非卷积运算被包括在实际执行中。
44.逐点卷积(诸如在逐点卷积层110和118中执行的)可在数学上被建模为y=wx,其中是大小为c
in
的输入向量,表示权重矩阵,表示大小为c
out
的输出向量,并且c一般表示一层的输入通道数目(c
in
)或输出通道数目(c
out
)。
45.诸如在层114中,通过使用核条目编索引,逐点卷积的数学公式可被扩展到具有k
×
k核(替换地被称为过滤器)的深度卷积,其中k>1。例如,对于k=3,,通道的所有9个权重条目可从0编索引至k
2-1=8(在该示例中使用基于0的编索引,但其他编索引同样合适)并以向量格式表示。核条目编索引由此允许深度卷积的数学模型仍然保留y=wx的形式。
46.弹性瓶颈块中的层循环
47.仍然参照图1,弹性瓶颈块101的灵活性质在一些方面是通过选择性地扩展或收缩块101内的处理并约束由弹性瓶颈块101处理的数据的输入(x)和输出(y)大小来达成的,其中弹性瓶颈块101意在替代具有设定输入和输出大小的现有瓶颈块。
48.为了扩展弹性瓶颈块101的处理能力,可实现层循环。层循环一般是通过在给定层中循环某个次数来处理该层中多于一组输入和权重数据的概念。该循环允许扩展由层处理的数据量而不会改变该层的大小。层循环可被应用于弹性瓶颈块(诸如101)中的一些或所
有卷积层。
49.为了使层循环增加表达性,可在层的每个处理循环中应用不同的权重。例如,可对每个循环编索引,并且可基于循环索引来加载因循环而异的权重集每个循环编索引,并且可基于循环索引来加载因循环而异的权重集作为示例,对于基于0的编索引方案(在其他示例中,编索引可以替代地基于1),和对应于要用于层“1”的循环索引“0”和“1”的权重。由此,层循环允许针对每一层使用多于一个权重集来处理相同的输入数据x(例如,给定层的每个循环不同的权重)。由于每一循环的中间输出可被存储和累加,因此底层硬件(例如,缓冲器大小等)不需要进行改变以容适附加处理能力。随之可以通过改变弹性瓶颈块(例如,101)的各层的循环特性来达成可变的表达性。
50.弹性瓶颈块(诸如101)内的各层的循环可以按层配置。在一些方面,可通过为给定卷积层设置循环参数来配置循环,该循环参数对应于给定卷积将被“循环”的次数。例如,逐点卷积层(例如,110)可被循环n次,并且之后逐点卷积层110的第n循环的最后执行的输出随后可由非线性或算数运算块112处理,其随后变成卷积层114的输入。在一些方面,循环参数可由模式控制器108解读和实现。在一些方面,循环参数在弹性瓶颈块101的处理期间可被存储在本地层缓冲器(例如,124、126或128)中。
51.如上所述,层循环可例如由图1中的模式控制器108控制。例如,模式控制器108可配置每一层(例如,图1的110、114和118)要执行多少循环、可控制在循环期间绕过各层、对输入编索引等等。
52.使用循环层输出的扩展卷积模式
53.如上所述,层循环允许创建附加中间激活,其可以有益地被用于扩展卷积运算而无需扩展底层硬件能力。
54.在使用弹性瓶颈块(例如,图1中的101)来执行扩展卷积运算时,第一卷积层的输入大小(例如,在该示例中以通道计)c
1,in
可保持与基本卷积模式中相同。然而,输出通道的数目(c
1,out
)相比于基本卷积模式可被扩展到(例如,通道计数可增加)以实现扩展卷积。有益地,扩展输出大小允许将新的输入数据注入到弹性瓶颈块的中间处理而不会改变x的输入大小,因为
55.对于第二卷积层,存在两种可能的中间层模式。在第一中间层模式中,该层的输入通道数目(c
2,in
)被设置为等于(即,)并且该层的输出通道数目(c
2,uot
)与基本卷积模式保持不变。由此,在第一中间层模式中,卷积的扩展被限定于第一卷积层与第二卷积层之间的中间运算。这可被称为层通道输出静态模式。
56.替换地,在第二中间层模式中,层的输入通道数目(c
2,in
)被设置为等于前一层输出的通道数目(c
1,out
)并且输出通道数目(c
2,out
)从基本卷积模式扩展到其中第二中间层模式一般可被称为层通道输出扩展模式。扩展输出通道数目一般可增加模型的表达性,这是因为可以处理更多数据。
57.例如,在附加数据可用的情况下,可通过扩展通道数目来处理该数据,或者在数据变得不可用的情况下,可以收缩通道数目。作为另一示例,在处理设备的操作条件已改变(诸如设备从电池供电变成市电供电条件)的情况下,可以扩展通道数目,这是由于在该状
况下可以用功率效率换取模型性能,反之亦然。作为又一示例,如果处理系统从过热变成正常操作温度,则可以扩展通道数目,反之亦然。值得注意的是,这些仅是几个示例,并且许多其他示例也是可能的。
58.随后,对于第三卷积层,该层的输入通道数目(c
3,in
)可被设置为等于前一层的输出通道数目如在弹性瓶颈块101中,如果第三卷积层是瓶颈块的最后一层,则可使c
3,out
与基本模式中一样,并且由此即使中间大小被改变,输出大小对于瓶颈块也不变。另一方面,如果第三卷积层不是瓶颈块的最后卷积层,则可选取对中间层模式的相同选择,如上所述。
59.当c
layer,in
(c
层,输入
)或c
layer,out
(c
层,输出
)从层的基本卷积模式增加时,多个对应权重子矩阵(例如,和)从存储权重的缓冲器的存储器(诸如图1的权重存储器104)加载并且这些权重子矩阵在循环中单独处理。值得注意的是,累加器(诸如图1中的130)的大小可被设定为足以保存来自扩展卷积模式的扩展数据。
60.以下数学表达式将使用弹性瓶颈块101的示例架构的基本卷积模式与扩展卷积模式进行比较。注意,这仅是一个示例,并且基于其他瓶颈块架构的许多其他示例是可能的。
61.使用图1的示例架构的基本卷积模式的示例数学模型如下:
[0062][0063][0064][0065]
上述标记中的上标表示循环索引并且下标表示层索引,例如,和值得注意的是,由于上述示例涉及不存在循环的基本卷积模式,因此循环索引对于所有运算相同(0)。此外,在上述表达式中,σ(
·
)一般被用于标示非线性运算,诸如像relu之类的非线性激活函数。然而,在非线性不需要或未应用的情形中,对应的σ(
·
)可替代地被定义为恒等函数(诸如y=f(x)=x)以使得可以以其他方式保持相同的数学描述。前述表达式可假定使用机器学习模型处理器的全部物理容量来处理每个表达式。
[0066]
由此,在基本卷积模式中,每个卷积层可被配置成对一层恰好运行1个循环。换言之,弹性瓶颈块101可被配置成当每一层被设置为仅循环一次时用作常规瓶颈块,并且可以被配置成通过实现对一个或多个卷积层的多于单个循环来增强块的表达性,其中每次循环可具有特定于该循环的相关联权重集(例如,如通过循环索引号关联)。
[0067]
相比之下,使用图1的示例架构的扩展卷积模式的示例数学模型如下,其中*符号表示相比于基本卷积模式扩展的数据以供处理:
[0068][0069]
[0070][0071]
值得注意的是,扩展卷积模式的前述表达式允许使用机器学习模型处理器的相同物理容量的更复杂(并且由此更有表达性)模型。这是通过以下事实展现的:虽然和是基本模式中所支持的最大维度权重矩阵,但扩展模式允许处理与附加特征数据相关联的附加权重矩阵,包括:和
[0072]
此外,用于扩展卷积模式的权重矩阵(诸如上面的和)自身可包括一个或多个子矩阵,以使得模型容量(或表达性)可以针对对应层进一步扩展。
[0073]
例如,扩展权重矩阵可被定义如下:
[0074]
以使得
[0075][0076]
在另一示例中,扩展权重矩阵可被定义如下:
[0077]
并且
[0078]
以使得
[0079][0080]
其中p>1和q>1是前述表达式中的整数。
[0081]
换言之,用于扩展卷积层的附加权重(例如,以权重矩阵的形式)未被限于仅一个集合(例如,一个矩阵),而是可包括一个或多个子集(例如,一个或多个矩阵或子矩阵)。
[0082]
在一些情形中,用于扩展卷积模式的权重可基于权重对模型输出的重要性来选择。例如,在一些情形中重要性可基于权重的绝对值。
[0083]
扩展卷积模式可例如由图1中的模式控制器108控制。例如,模式控制器108可以配置扩展层输入和/或输出大小、用于每一中间层的中间层模式等等。
[0084]
弹性瓶颈块的扩展卷积能力
[0085]
图2a描绘了用于使用三层瓶颈块200(诸如图1的示例瓶颈块101)的基本和扩展卷积模式的示例流程。在图2a的示例中,包括从输入到最终输出求和的跳跃(或“恒等”)连接
208。
[0086]
在所描绘的示例中,块202a-202c(使用第一交叉阴影图案描绘的)表示用于基本卷积模式的处理路径而没有扩展任何中间层。
[0087]
块204(使用第二交叉阴影图案描绘的)表示单层输入的扩展,诸如上面参照第一中间层模式所描述的。相应地,在扩展卷积的第一示例中,块202a-202c和204被处理以生成输出y而不改变x的输入数据大小或y的输出大小。这表示由块202a-202c提供的瓶颈容量的增加。
[0088]
块206a-206d(使用第三交叉阴影图案描绘的)表示多于一层输入和/或输出的扩展,诸如上面参照第二中间层模式所描述的。相应地,在扩展卷积的第二示例中,块202a-202c、204和206a-206d都被处理以生成输出y,而再次不改变x的输入数据大小或y的输出大小。这表示由块202a-202c提供的瓶颈容量的另一增加。
[0089]
由此,图2a描绘了弹性瓶颈块内的卷积模式的“弹性”性质,取决于瓶颈块架构、循环配置和中间层模式,可以按基本模式或按多种扩展模式来配置卷积模式,全部得到可变的表达性。具有循环和层扩展的弹性瓶颈架构显然能够基于深度优先数据和执行流水线使用更多权重、更复杂卷积和更多非线性(例如,通过更多非线性运算σ)来实现增加的模型表达性。由于人工神经网络中的非线性运算类似于计算机程序中的分支逻辑。由此,更多非线性暗示人工神经网络模型的更大表达性。
[0090]
弹性瓶颈架构由此实现用于深度神经网络模型的条件式多模式/多源处理。例如,考虑在推断引擎上已经使用其全部物理资源的设计。如果有条件或偶尔需要处置较大数量的特征,诸如来自附加类型的传感器源(多模式感测)或传感器源的附加实例(多源感测)的特征,则弹性瓶颈架构可被用于通过中间层扩展来容适附加特征,如上所述。并且这些附加特征可有益地使用因特征而异的权重集来训练。
[0091]
例如,如图2a中,当新输入数据特征可用时,可以在第一扩展卷积模式中选择性地使用此外,当进一步输入数据特征可用时,可在第二扩展卷积模式中选择性地使用和在该示例中,基于什么输入数据可用,存在瓶颈块的至少三个不同级别的表达性,并且这些可以基于条件来选择。由此,瓶颈块可被扩展以在需要时利用附加数据,或者在数据不可用或不需要时收缩。如上所述,这是在不需要添加或扩展机器学习模型处理器(诸如模型推断引擎)的物理资源的情况下完成的。
[0092]
图2b描绘了扩展逐点卷积处理的示例250。
[0093]
在所描绘的示例中,输入数据252(x)具有维度h
×w×
256(c
1,
=256),这可表示可用于在弹性瓶颈块处进行处理的数据通道总数量。在该示例中,所有数据通道例如由图1中的模式控制器108选择以供处理,但底层处理硬件可被限制于或被优化用于128个通道,这可以是用于基本操作模式中的弹性瓶颈块的标准输入大小。在该示例中为了处理附加数据,输入数据252在块253被拆分成输入数据子集x1和x2,其各自具有维度h
×w×
128。
[0094]
随后在具有四个不同权重集和的块256a-256d对输入数据子集x1和x2执行卷积处理。块256a-256d的卷积处理结果随后被累加(256a与256c以及256b和256d)以生成中间输出258a(y1)和258b(y2)。
[0095]
最后,中间结果被级联以将输出260(y)通道维度(c
1,
)返回至256个通道。注意,在
其他示例中,输出维度可被降低,诸如在示例250中的处理是弹性瓶颈块中的第一逐点卷积层的情况下。例如,池化层(诸如图1中的122)可被用于对输出进行下采样。
[0096]
图3描绘了基本卷积模式处理流302与扩展卷积模式处理流304的另一比较,其中弹性瓶颈块的宽度被用于指示每个瓶颈块的相对表达性(较宽指示更有表达性)。此外,每个流302和304包括多个弹性瓶颈块以展示弹性瓶颈块的益处在处理整个模型架构时可被累加多次。此外,由于不同的瓶颈块可包括不同数目的层和通道,因此每个流中的弹性瓶颈块被指示为不同宽度。
[0097]
如所描绘的,在基本卷积模式302中,表达性一般可如在常规瓶颈块架构中一样受限,该常规瓶颈块架构自身可围绕其上部署模型的设备的硬件限制来设计。相比之下,在扩展卷积模式304中,弹性瓶颈块的一层或多层可如上所述地被扩展以考虑附加数据,这增加表达性。
[0098]
类似地,处理系统可以开始于最大扩展卷积模式(例如,如示例流304中)并基于上下文、用例和/或条件移回基本模式(例如,如示例流302中)。即,弹性瓶颈块不必总是开始于基本模式并且随后扩展;相反,弹性瓶颈块可以开始于扩展状态并基于上下文、用例和/或条件来逐步下降(例如,表达性较低)或上升状态(例如,表达性较高),诸如由基于条件的模式选择箭头306所指示的。如上所述,模型的扩展或收缩可基于为每个瓶颈块配置的循环数目和输入数据量(例如,通道数目)来完成。由此,虽然图3经由处理流302和304描绘了两个示例模式,但这些可被视为范围的两端,其中可基于上下文、用例、条件等定义任何数目的中间模式。
[0099]
使用弹性瓶颈块和扩展卷积的示例推断方法
[0100]
图4描绘了用于使用弹性瓶颈块(诸如上面参照图1和2所描绘和描述的)进行推断的示例方法400。
[0101]
方法400在步骤402开始于确定弹性瓶颈块的卷积层的循环数目。如上所述,循环数目不改变弹性瓶颈块的输入大小或输出大小。在一些方面,循环数目可基于由模式控制器(诸如图1中的108)配置的循环参数。
[0102]
方法400随后行进至步骤404:加载因循环而异的卷积权重集。例如,可加载用于弹性瓶颈块的第2层的第2循环的权重在一些方面,因循环而异的卷积权重集可从权重存储器或缓冲器(诸如图1中的权重存储器104)加载。在一些方面,权重可存储在因层而异的缓冲器(诸如图1中的缓冲器124、126或128)中。
[0103]
方法400随后行进至步骤406:使用该因循环而异的卷积权重集来执行卷积运算。
[0104]
方法400随后行进至步骤408:将因循环而异的卷积结果存储在本地存储器中。在一些方面,本地存储器可以是缓冲器,诸如图1的缓冲器124、126或128。
[0105]
方法400随后行进至步骤410:基于循环数目来确定当前循环是否是最后循环。如果当前循环不是最后循环,则该过程可返回至步骤404;否则,如果当前循环是最后循环,则该过程可行进至步骤412。
[0106]
例如,如果当前循环数目低于为卷积层配置的循环数目,则方法400返回至步骤404以开始卷积层的另一循环。如果当前循环数目等于为卷积层配置的循环数目,则方法400行进至步骤412。
[0107]
在步骤412,方法400行进至基于对与该数目个循环中的每个循环相关联的因循环
而异的卷积结果的求和来确定该卷积层的输出。例如,存储在本地缓冲器(诸如图1中的缓冲器124、126或128)中的中间结果可被累加并且随后作为输入提供给后一层。
[0108]
在一些方面,方法400进一步包括:将因循环而异的卷积结果累加至存储在本地存储器中的当前卷积结果值。
[0109]
在一些方面,方法400进一步包括:确定用于弹性瓶颈块的卷积层的中间层模式;以及基于该中间层模式来配置循环参数,其中该循环参数配置循环数目。例如,层模式可以是层通道输出静态模式或层通道输出扩展模式,如上所述。
[0110]
在一些方面,方法400进一步包括:对卷积层的输出执行非线性运算以生成中间激活数据;以及将该中间激活数据作为输入提供给弹性瓶颈块中的第二卷积层。例如,如图1中所描绘的,非线性或算术运算块112可对卷积层110的输出执行非线性运算(诸如relu)以生成卷积层114的中间激活数据。
[0111]
在一些方面,方法400进一步包括:加载瓶颈块配置数据;以及基于该配置数据来配置弹性瓶颈块的多个卷积层。在方法400的一些方面,该多个卷积层包括该卷积层,该瓶颈块配置数据为该多个卷积层中的每个相应层配置循环参数,并且该瓶颈块配置数据为该多个卷积层中的每个卷积层配置输入大小和输出大小。
[0112]
在一些方面,方法400进一步包括:基于对与该数目个循环中的每个循环相关联的因循环而异的卷积结果的求和以及来自卷积层的输入的跳跃连接来确定卷积层的输出。
[0113]
在方法400的一些方面,卷积层是弹性瓶颈块中的多个卷积层之一,诸如图1的示例中所描绘的。
[0114]
在方法400的一些方面,卷积层包括逐点卷积层,诸如图1的逐点卷积层110和118。
[0115]
在方法400的一些方面,卷积层包括深度卷积层,诸如图1中的深度卷积层114。
[0116]
在方法400的一些方面,循环数目基于可用于卷积层的输入数据源的数目。例如,如上所述,输入数据源的数目可与多模式过程(诸如自动驾驶系统)的传感器数据输入的数目有关。
[0117]
在方法400的一些方面,弹性瓶颈块包括非卷积层。例如,弹性瓶颈块可进一步包括池化层,诸如图1中的池化层122。
[0118]
在一些方面,如步骤402中的确定弹性瓶颈块的卷积层的循环数目可基于为了实现模型性能配置而要处理的所选通道数目。例如,在上下文、用例或条件要求减少的功率使用或处理时间的情况下,可选择来自具有所有可能数据通道的集合的通道子集以供处理。这进而可被用于确定循环数目。
[0119]
在一些情形中,循环数目可基于被选择以供处理的通道数目以及处理设备的硬件配置。例如,在处理设备被配置用于64个输入数据通道的高效处理的情况下,所选的通道数目可以是64的倍数,其随后给出偶数循环数目。由此,1次循环用于64个通道,2次循环用于128个通道,依此类推。注意,所选的通道数目不需要总是硬件配置的偶数倍,但出于处理效率可能期望这样做。
[0120]
在一些方面,对通道的选择可基于以表达性或对模型输出的重要性为基础对可用通道的经排名和/或经排序次序。在一个示例中,此类次序可与权重一起存储在图1的权重存储器104中。例如,在期望更高效处理的情况下,较低排名的通道可从被选择以供处理的子集中省略,并且该省略会影响在步骤402处确定的循环数目。同样地,在期望更准确处理、
并且模型当前未使用所有可用输入数据的情况下,可例如使用如上所述的扩展卷积模式向被选择以供处理的子集添加附加通道。这同样会影响在步骤402处确定的循环数目。
[0121]
注意,虽然贯穿该示例使用了诸如图1的100的瓶颈块架构,但方法400也可扩展到其他弹性瓶颈块架构。
[0122]
用于弹性瓶颈块和扩展卷积的示例训练方法
[0123]
图5描绘了用于训练弹性瓶颈块的示例方法500。
[0124]
方法500在步骤502开始于训练供弹性瓶颈块在基本模式中操作的第一权重集,其中:在该基本模式中,弹性瓶颈块的每个卷积层被配置成循环一次。
[0125]
在一些方面,训练第一权重集可包括:根据参照图4所描述的方法400执行推断卷积运算,其中弹性瓶颈块中的每个卷积层的循环数目被设置为1。第一权重集随后可基于训练算法(诸如后向传播)和损失函数来进行更新。
[0126]
方法500随后行进至步骤504:训练供该弹性瓶颈块在扩展模式中操作的第二权重集,其中在该扩展模式中,弹性瓶颈块的一个或多个卷积层被配置成循环不止一次。在一些方面,模式控制器(诸如图1的模式控制器108)可设置扩展模式中的弹性瓶颈块。
[0127]
在一些方面,训练第二权重集可包括:根据参照图4所描述的方法400执行推断卷积运算,其中弹性瓶颈块的至少一个卷积层的循环数目大于1。第二权重集随后可基于训练算法(诸如后向传播)和损失函数来进行更新。
[0128]
方法500随后行进至步骤506:将该第一权重集和该第二权重集存储在该弹性瓶颈块可访问的存储器中。例如,第一权重集和第二权重集可被存储在权重存储器(诸如图1中的104)中。
[0129]
方法500随后可任选地行进至步骤508:按表达性对该第二权重集进行排名。在一些情形中,表达性可由每个权重对整体模型输出的影响来确定。在其他情形中,表达性可由权重的绝对值来确定。其他方法是可能的。
[0130]
方法500随后可任选地行进至步骤510:将权重排名存储在该弹性瓶颈块可访问的存储器(诸如图1中的权重存储器104)中。在一些情形中,权重排名按权重值被存储为权重的有序列表。权重排名之后可在基于条件使用权重子集时由弹性瓶颈块访问。
[0131]
注意,在图5的示例中,两个权重集被用作训练步骤502和504中的示例。然而,可训练任何数目的权重集并且这些权重集可与不同的上下文、用例或条件相关联,诸如上述那些示例。训练多个权重集允许具有模型执行的多个步骤,诸如用以扩展或收缩模型中的弹性瓶颈块的多个步骤,如上所述。
[0132]
示例处理系统
[0133]
图6描绘了用于执行本文所描述的各个方面(诸如参照图4和5所描述的方法)的示例处理系统600。
[0134]
处理系统600包括中央处理单元(cpu)602,其在一些示例中可以是多核cpu。在cpu 602处执行的指令可例如从与cpu 602相关联的程序存储器加载,或者可从存储器624加载。
[0135]
处理系统600还包括附加处理组件,诸如图形处理单元(gpu)604、数字信号处理器(dsp)606、神经处理单元(npu)608、多媒体处理单元610、以及无线连通性组件612。值得注意的是,这些仅是一些示例,并且其他示例是可能的。
[0136]
npu(诸如608)一般是专用电路,其被配置成用于实现用于执行机器学习操作(诸
如用于处理人工神经网络(ann)、深度神经网络(dnn)、随机森林(rf)等的操作)的所有必要控制和算术逻辑。npu有时可替换地被称为神经信号处理器(nsp)、张量处理单元(tpu)、神经网络处理器(nnp)、智能处理单元(ipu)、视觉处理单元(vpu)、或图形处理单元。
[0137]
npu(诸如608)被配置成加速常见机器学习任务(诸如图像分类、机器翻译、对象检测、以及各种其他任务)的执行。在一些示例中,多个npu可在单个芯片(诸如片上系统(soc))上实例化,而在其他示例中,多个npu可以是专用神经网络加速器的一部分。
[0138]
npu可被优化用于训练或推断,或者在一些情形中被配置成平衡两者之间的性能。对于能够执行训练和推断两者的npu,这两个任务一般仍可独立地执行。
[0139]
被配置成加速训练的npu一般被配置成加速新模型的优化,这是涉及输入现有数据集(通常是被标记的或含标签的)、在数据集上进行迭代、并且随后调整模型参数(诸如权重和偏置)以便提高模型性能的高度计算密集的操作。一般而言,基于错误预测进行优化涉及往回传递通过模型的各层并确定梯度以减少预测误差。
[0140]
被设计成加速推断的npu一般被配置成在完整模型上操作。此类npu由此可被配置成:输入新的数据片段并通过已经训练的模型对其快速处理以生成模型输出(例如,推断)。
[0141]
在一种实现中,npu 608可被集成为cpu 602、gpu 604和/或dsp 606中的一者或多者的一部分。
[0142]
在一些示例中,无线连通性组件612可包括例如用于第三代(3g)连通性、第四代(4g)连通性(例如,4g lte)、第五代连通性(例如,5g或nr)、wi-fi连通性、蓝牙连通性、以及其他无线数据传输标准的子组件。无线连通性处理组件612进一步连接到一个或多个天线614。
[0143]
处理系统600还可包括与任何方式的传感器相关联的一个或多个传感器处理单元616、与任何方式的图像传感器相关联的一个或多个图像信号处理器(isp)618、和/或导航处理器620,该导航处理器620可包括基于卫星的定位系统组件(例如,gps或glonass)以及惯性定位系统组件。
[0144]
处理系统600还可包括一个或多个输入和/或输出设备622,诸如屏幕、触敏表面(包括触敏显示器)、物理按钮、扬声器、话筒等等。
[0145]
在一些示例中,处理系统600的一个或多个处理器可基于arm或risc-v指令集。
[0146]
处理系统600还包括存储器624,其代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器(dram)、基于闪存的静态存储器等等。在该示例中,存储器624包括各种计算机可执行组件,其可由处理系统600的一个或多个前述处理器执行。
[0147]
具体而言,在该示例中,存储器624包括确定组件624a、层处理组件624b、权重检索组件624c、非线性运算组件624d、权重排名组件624e、模型配置组件624f、模型参数624g、模式控制组件624h、训练组件624i、以及信道选择组件624j。所描绘的组件以及其他未描绘的组件可被配置成执行本文所描述的方法的各个方面。
[0148]
一般而言,处理系统600和/或其组件可被配置成执行本文所描述的方法。然而,在一些方面,诸如在处理系统主要意在训练(例如,与图5一致)的情况下,图6中所描绘的某些示例组件可被省略。例如,被配置用于训练的处理系统的替换方案可包括各种处理单元,诸如cpu 602、gpu 604、dsp 606、npu 608,但省略其他方面,诸如无线连通性612、传感器616、isp 618、多媒体610、以及导航620。
[0149]
示例条款
[0150]
在以下经编号条款中描述了各实现示例。
[0151]
条款1:一种方法,包括:确定弹性瓶颈块的卷积层的循环数目;对于该数目个循环中的每个循环:加载因循环而异的卷积权重集;使用该因循环而异的卷积权重集来执行卷积运算;以及将因循环而异的卷积结果存储在本地存储器中;以及基于对与该数目个循环中的每个循环相关联的因循环而异的卷积结果的求和来确定该卷积层的输出。
[0152]
条款2:如条款1的方法,进一步包括:对于该数目个循环中的每个循环,将该因循环而异的卷积结果累加至存储在该本地存储器中的当前卷积结果值。
[0153]
条款3:如条款1-2中任一者的方法,进一步包括:确定用于该弹性瓶颈块的该卷积层的中间层模式;以及基于该中间层模式来配置循环参数,其中该循环参数配置该循环数目。
[0154]
条款4:如条款1-3中任一者的方法,进一步包括:对该卷积层的输出执行非线性运算以生成中间激活数据;以及将该中间激活数据作为输入提供给该弹性瓶颈块中的第二卷积层。
[0155]
条款5:如条款1-4中任一者的方法,其中,该循环数目不改变该弹性瓶颈块的输入大小或输出大小。
[0156]
条款6:如条款1-5中任一者的方法,进一步包括:加载瓶颈块配置数据;以及基于该瓶颈块配置数据来配置该弹性瓶颈块的多个卷积层,其中:该多个卷积层包括该卷积层,该瓶颈块配置数据为该多个卷积层中的每个相应层配置循环参数,并且该瓶颈块配置数据为该多个卷积层中的每个卷积层配置输入大小和输出大小。
[0157]
条款7:如条款1-6中任一者的方法,进一步包括:基于对与该数目个循环中的每个循环相关联的因循环而异的卷积结果的求和以及来自该卷积层的输入的跳跃连接来确定该卷积层的输出。
[0158]
条款8:如条款1-7中任一者的方法,其中,该卷积层是该弹性瓶颈块中的多个卷积层之一。
[0159]
条款9:如条款8的方法,其中,该卷积层包括逐点卷积层。
[0160]
条款10:如条款8的方法,其中,该卷积层包括深度卷积层。
[0161]
条款11:如条款1-10中任一者的方法,其中,该循环数目基于可用于该卷积层的输入数据源的数目。
[0162]
条款12:如条款1-11中任一者的方法,进一步包括:从输入数据通道集中选择输入数据通道子集,其中该循环数目基于所选输入数据通道子集中输入数据通道的数目。
[0163]
条款13:一种方法,包括:训练供弹性瓶颈块在基本模式中操作的第一权重集,其中:在该基本模式中,该弹性瓶颈块的每个卷积层被配置成循环一次;以及训练供该弹性瓶颈块在扩展模式中操作的第二权重集,其中:在该扩展模式中,该弹性瓶颈块的一个或多个卷积层被配置成循环不止一次。
[0164]
条款14:如条款13的方法,进一步包括:将该第一权重集和该第二权重集存储在该弹性瓶颈块能访问的存储器中。
[0165]
条款15:如条款14的方法,进一步包括:基于表达性度量来对该第二权重集进行排名。
[0166]
条款16:如条款15的方法,其中,该表达性度量包括权重的绝对值。
[0167]
条款17:如条款15的方法,进一步包括:将与该第二权重集相关联的权重排名存储在该存储器中。
[0168]
条款18:一种处理系统,包括:包括计算机可执行指令的存储器;一个或多个处理器,该一个或多个处理器被配置成执行这些计算机可执行指令并使该处理系统执行根据条款1-17中任一者的方法。
[0169]
条款19:一种处理系统,包括用于执行根据条款1-17中任一者的方法的装置。
[0170]
条款20:一种包括计算机可执行指令的非瞬态计算机可读介质,这些计算机可执行指令在由处理系统的一个或多个处理器执行时使该处理系统执行根据条款1-17中任一者的方法。
[0171]
条款21:一种实施在计算机可读存储介质上的计算机程序产品,包括用于执行根据条款1-17中任一者的方法的代码。
[0172]
附加考虑
[0173]
提供先前描述是为了使本领域任何技术人员均能够实践本文中所描述的各个方面。本文中所讨论的示例并非是对权利要求中阐述的范围、适用性或者方面的限定。对这些方面的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他方面。例如,可以对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可以按与所描述的次序不同的次序来执行所描述的方法,并且可以添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
[0174]
如本文所使用的,术语“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
[0175]
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“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的任何其他排序)。
[0176]
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及诸如此类。而且,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”可包括解析、选择、选取、建立及诸如此类。
[0177]
本文中所公开的各方法包括用于实现方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。此外,上述方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(asic)、或处
理器。一般地,在存在附图中解说的操作的场合,这些操作可具有带相似编号的相应配对装置加功能组件。
[0178]
以下权利要求并非旨在被限定于本文中示出的各方面,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,对单数元素的引用不旨在意指“有且只有一个”(除非专门如此声明),而是“一个或多个”。除非特别另外声明,否则术语“一些/某个”指的是“一个或多个”。权利要求的任何要素都不应当在35u.s.c.
§
112(f)的规定下来解释,除非该要素是使用短语“用于
……
的装置”来明确叙述的或者在方法权利要求情形中该要素是使用短语“用于
……
的步骤”来叙述的。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不旨在捐献于公众,无论此类公开内容是否明确记载在权利要求书中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1