用于均衡权重稀疏卷积处理的方法及系统与流程



1.本公开总地涉及人工智能,更具体地涉及均衡权重稀疏卷积处理。


背景技术:



2.当前,神经网络(nn)是诸多现代人工智能(ai)应用(诸如,图像及视频辨识、推荐系统、分类、医疗图像分析、及自然语言处理)的基础。nn被用在从无人驾驶汽车及检测癌症到玩复杂游戏的各种使用场景中。典型nn可包括其中执行昂贵(在运算及能量方面)的卷积运算的一系列卷积层。
3.近年来,已开发出各种技术以通过将稀疏性引入nn中的卷积处理(诸如,修剪过滤器以减少非零权重的数目)来提高nn的计算效率。然而,既有的硬件架构依赖于通用计算引擎(例如,gpu),但是没有针对涉及具有稀疏权重(例如,有限数目个非零权重)的过滤器的卷积对通用计算引擎进行优化。这些架构无法将稀疏过滤器高效存储于存储器中或完全利用稀疏性来大规模地达到更高水平的并行性。因此,期望构建用于高效稀疏卷积的新颖系统架构。


技术实现要素:



4.本说明书的各种实施例可包含用于均衡权重稀疏卷积处理及并行化的系统、方法、及非暂态计算机可读介质。
5.根据一方面,提供了用于均衡权重稀疏卷积处理及并行化的方法。该方法包括:获得输入张量复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重;将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和;通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。
6.在一些实施例中,复数个子张量中的每个子张量包括与输入张量相同的通道数目。
7.在一些实施例中,该方法进一步包括:修剪复数个过滤器中的每个过滤器,使得该过滤器的每预定数目个通道包括相同数目个非零值。
8.在一些实施例中,每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。
9.在一些实施例中,基于索引-值对来识别所指派的子张量中的对应输入值以执行
mac运算从而产生部分和包括:基于索引-值对中的通道维度索引及宽度维度索引来识别所指派的子张量中的输入值;基于所识别的输入值及索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加点积与对应部分和以获得新部分和。
10.在一些实施例中,复数个过滤器中的每个过滤器包括通道维度、高度维度、及宽度维度,且将复数个过滤器中的每个过滤器分割成一个或多个子过滤器包括:将通道维度分成复数个通道组;以及根据复数个通道组来将过滤器分割成复数个子滤器,其中每个子过滤器对应于复数个通道组之一。
11.在一些实施例中,根据通道组来将过滤器分割成复数个子过滤器包括:根据复数个通道组来将过滤器分割成复数个组块;以及沿高度维度分割复数个组块中的每个组块以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与过滤器共享宽度维度。
12.在一些实施例中,将复数个子张量中来自输入张量的相同水平面的子集分别指派给可用处理器的子集,且将复数个子过滤器指派给可用处理器包括:识别复数个子过滤器中来自相同过滤器但对应于不同通道组的子集;以及将复数个子过滤器的该子集分别指派给可用处理器的该子集。
13.在一些实施例中,在复数个处理器之间轮换复数个子过滤器包括:通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将复数个子过滤器重新指派给可用处理器。
14.在一些实施例中,将通过执行mac运算产生的部分和存储于能够由相邻处理器存取的处理器的累加缓冲器中。
15.在一些实施例中,累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于当前卷积层不是最后卷积层,将激活子张量存储于处理器中用于神经网络的下一卷积层;以及响应于当前卷积层是最后卷积层,聚集来自可用处理器的复数个激活子张量以获得输出张量。
16.根据另一方面,提供了用于均衡权重稀疏卷积处理及并行化的系统。该系统可包括一个或多个处理器及一个或多个非暂态计算机可读存储器,该一个或多个非暂态计算机可读存储器耦合至一个或多个处理器且配置有能够由一个或多个处理器执行以促使该系统执行包括以下各项的操作的指令:获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重;将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和;通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。
17.根据又一方面,提供了用于均衡权重稀疏卷积处理及并行化的非暂态计算机可读存储介质。该介质可配置有可由一个或多个处理器执行以促使该一个或多个处理器执行包
括以下各项的操作的指令:获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重;将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和;通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。
18.在参考附图(所有附图构成本说明书的一部分,其中相同参考标号标示各图中的对应部分)考虑以下描述及随附权利要求后,本文中所揭示的系统、方法、及非暂态计算机可读介质的这些及其他特征以及相关结构组件及部分组合的操作方法及功能和制造的经济性将变得显而易见。然而,应明确理解,图式仅用于说明及描述的目的且不用于界定本发明的限制。
附图说明
19.图1绘示根据各种实施例的例示性卷积神经网络(cnn)。
20.图2绘示根据各种实施例的例示性卷积处理。
21.图3绘示根据各种实施例的用于分割输入张量及过滤器的例示性方法。
22.图4绘示根据各种实施例的用于存储子过滤器的非零权重的例示性存储器布局。
23.图5绘示根据各种实施例的用于均衡权重卷积处理的例示性系统图。
24.图6绘示根据各种实施例的用于均衡权重卷积处理的例示性系统架构。
25.图7绘示根据各种实施例的用于均衡权重卷积处理的处理实体的例示性图式。
26.图8a绘示根据各种实施例的用于并行均衡权重卷积处理的例示性流程图。
27.图8b绘示根据各种实施例的用于并行均衡权重卷积处理的另一例示性流程图。
28.图9绘示根据各种实施例的用于均衡权重卷积处理的示例方法。
29.图10绘示其中可实施本文中所描述的任何实施例的示例计算机系统。
具体实施方式
30.本文中所描述的实施例提供用于神经网络中的均衡权重稀疏卷积过程的方法、系统、装置。卷积过程可指用于从来自先前层的输入数据(诸如,从图像或音频波导出的特征图或从神经网络中的先前层输出的激活)提取特征的基本但计算昂贵的运算。卷积过程的输入数据可称为输入张量,且卷积过程的输出可称为输出张量。输入张量可包括多个通道的特征图。例如,rgb图像可表示为具有三个通道(红通道、绿通道、及蓝通道)的输入张量,其中每个通道包括一特征图(例如,具有与原始rgb图像相同的大小但仅由红、绿、或蓝之一制成的灰阶图像)。为了从输入张量提取特征,可以卷积(例如,滑动或移动)方式将一个或多个特征提取器(也称为过滤器)应用于输入张量。可在每个卷积步骤期间执行特征检测器(过滤器)与输入张量之间的乘法及累加(mac)运算。随后可组装从卷积步骤
产生的输出以形成卷积过程的输出张量。输出张量可成为神经网络的下一层的输入张量。在一些情况中,卷积层中可涉及多个输入张量。
31.在卷积过程期间,可通过引入大量零来修剪或稀疏化过滤器,以降低计算成本且提高推断速度。例如,可将过滤器中的20%以上或50%以上的值设定为零。本说明书中的一些实施例通过将稀疏化的过滤器高效存储于存储器高效布局中且并行化复数个处理实体(pe)(例如,处理器)上的卷积处理来利用过滤器稀疏性。
32.在一些实施例中,可首先根据可用于参与卷积处理的pe的数目来将输入张量分割成复数个子张量。每个子张量可被指派给复数个pe之一并贯穿卷积过程的多次迭代(对应于nn中的多个卷积层)都停留在该pe内而不替换出该pe的局部存储器/缓冲器。在卷积过程的每次迭代之后,可更新作为输入指派给pe的子张量且使其演进成输出,该输出可用作卷积过程的下一次迭代的输入。在一些实施例中,可出于存储器管理的目的而将经更新的子张量暂时替换出pe然后替换回pe用于下一次迭代。
33.在一些实施例中,可将每个稀疏过滤器分割成可存储于存储器高效布局中的复数个子过滤器。例如,在经过修剪及分割后,可按照每个子滤器包括相同数目个非零权重的方式来分割每个稀疏过滤器。因为非零权重均匀分布至复数个子过滤器中,所以使用这些子过滤器的卷积处理可称为均衡权重稀疏卷积。在一些实施例中,每个子过滤器内的非零权重可存储为索引-值对,这些索引-值对随后可被组合且存储为存储器内的固定数目个位或字节用于表示子过滤器。子过滤器的索引-值对表示可显著减小神经网络的存储器占用面积且使该解决方案适合于具有有限存储器资源的设备。例如,本文中所揭示的实施例可应用于边缘计算系统中的边缘设备。在一些实施例中,可将子过滤器指派给分别具有所指派的子张量以执行局部卷积运算的复数个pe。指派保证指派给不同pe的子张量及子过滤器对彼此独立,使得复数个pe可并行执行局部运算以提高性能。
34.上述分割及并行处理方案也是高度可扩缩的。在一些实施例中,每个回合的并行处理(也称为迭代)可产生复数个部分和,且复数个pe可执行多个回合的并行处理以累加在每个回合中产生的部分和且将累加结果组装为输出张量。在一些实施例中,可(在每个pe内)直接累加由每个pe跨多个回合产生的部分和,以在无需与其他pe交换数据的情况下产生输出张量的一部分。
35.在一些实施例中,子过滤器的指派可采用权重轮换机制,该机制在每个回合的并行处理之后在pe之间轮换子过滤器指派。这里,“权重”是指存储于每个子过滤器中的非零值。由此机制提供的益处是至少三重的:避免将同一子过滤器同时存储于多个pe中(例如,避免多次复制相同数据);并行化且减少从较高阶存储器(通常容量较大但速度较慢)的昂贵存储器读取的次数以从所有pe共享的全局缓冲器获得权重;以及允许利用相邻pe间的较快直接连接通道来执行子过滤器在每两个回合的并行处理之间的轮换。
36.在以下描述中,将参考图式来描述本发明的具体非限制性实施例。本文中所揭示的任何实施例的特定特征及方面可与本文中所揭示的任何其他实施例的特定特征及方面一起使用和/或组合。还应了解,这些实施例是通过举例方式给出的且仅说明本发明范围内的少数实施例。本发明所涉及领域的技术人员将明白的各种改变及修改被视为落在由随附权利要求进一步界定的本发明的精神、范围、及考虑内。
37.图1绘示根据各种实施例的例示性卷积神经网络(cnn)。cnn广泛用于包含图像理
解、语音辨识、游戏设置、机器人在内的各种应用中且可采用包含其中进行卷积运算的卷积层在内的层的深层次结构。应注意,cnn仅用于说明目的,且本文中所揭示的实施例可应用于涉及卷积运算的其他神经网络。
38.图1中所绘示的示例神经网络100包括复数个层,诸如,第一卷积层120及第一relu(修正线性单元)层、第一池化层130、第二卷积层140及第二relu层、第二池化层150、平坦化层160、及完全连接(fc)层170。此示例神经网络100可被训练为对给定图像中的字母表与复数个已知字母表类别进行匹配。如图1中所展示,具有字母的图像110被馈送至神经网络100且通过复数个层进行变换。最后层(fc层170)最终产生表示输入图像110中的字母与每个已知字母表类别之间的类似度的复数个分数。
39.在一些实施例中,输入图像110可首先变换成输入张量。作为示例,如果输入图像110含有32*32个像素且每个像素具有三个彩通道(红、绿、蓝),则其对应的输入张量可具有32*32*3的大小,其中高度为32、宽度为32、且深度(例如,通道的数目)为3。为易于描述,三个维度大小可称为hwc格式,其中h指输入张量的高度(例如,先前图像示例中的32),w指输入张量的宽度(例如,先前图像示例中的32),且c指输入张量中的通道的数目(例如,先前图像示例中的3)。在一些情况中,若存在用于卷积层的多个输入张量(例如,当存在输入至卷积层的多个图像或存在从先前层接收的多个输入激活张量时),每个输入张量可按照nhwc格式表示,其中n是指输入张量批次内的输入张量的索引。在以下描述中,除非另有明确说明,否则可为了简单而省略n(例如,假定仅存在一个输入张量)。扩展实施例以涵盖其中n》1的情况对于本领域技术人员可显而易见。
40.在一些实施例中,cnn可包含多个卷积层(例如,图1中的第一卷积层120及第二卷积层140)。卷积层在不丧失对于得到良好预测/分类而言至关重要的特征的情况下将输入张量(例如,原始输入张量或来自先前层的输入张量)简化成较易处理的格式。卷积层中的卷积处理中可涉及一个或多个特征检测器,例如,图像处理中的边缘检测器、曲线检测器。这些特征检测器可称为过滤器。每个过滤器可具有与输入张量相同数目个通道。为易于描述,本说明书使用术语“共享复数个通道”来表达每个过滤器及输入张量具有相同数目个通道。例如,输入张量是32*32*3矩阵,且示例过滤器可为3*3*3矩阵。卷积处理的详细解释可参考图2的描述。
41n中的卷积层之后可跟随非线性激活函数,以将非线性引入至cnn中。例示性非线性激活函数包含s形(sigmoid)函数、双曲线正切函数、及修正线性单元(relu)。如图1中所展示,relu函数(也可称为relu层)跟在卷积层120及140中的每个卷积层之后。relu函数可应用元素激活函数来滤除由卷积层120或140产生的一些输出(激活)。例如,可采用max(0,x)函数来滤除卷积输出中的所有负激活且仅将正激活馈送至下一层。relu函数可不改变输出激活的大小但限制活动神经元的数目,因为将负激活全部清零以提高后续层的计算效率。
42n也可包含一个或多个池化层,以提供降低输入张量的维度的各种计算。在图1中,神经网络100的第一池化层130及第二池化层150可各沿空间维度(高度及宽度)对输入张量执行下采样操作,但通常不改变深度维度(例如,通道的数目)。
43.神经网络中的完全连接(fc)层可学习由来自先前层((例如,图1中的池化层150或卷积层)的输出表示的高阶特征的非线性组合并相应地计算类别分数。参考图1,可首先将
来自池化层150的输出平坦化成向量(例如,在平坦化层160中),fc层170可从该向量学习空间中的固有非学习函数以计算复数个类别的最终分数。每个分数可表示输入图像中的字母表与对应类别之间的量化类似度。
44.图2绘示根据各种实施例的例示性卷积处理。图2中的卷积处理220涉及输入张量222、过滤器224、及输出张量225。输入张量222可由其高度(h)、宽度(w)、及通道的数目(c)表示。如图2中所展示,输入张量222可为3*3*3矩阵,其中高度为3、宽度为3、且通道的数目为3。输入张量222在每个通道中的高度及宽度(例如,3(h)*3(w))可称为2d输入特征图。元组{h,w,c}可指向通道c中的2d输入特征图的一个元素。例如,{2,1,1}可指向通道1中的2d输入特征图的元素,该元素的位置由{2,1}(例如,高度方向索引是2,且宽度方向索引是1)界定。过滤器224可由其高度(r)、宽度(s)、及通道的数目(c)表示。在图2中,过滤器224可为1*1*3矩阵。过滤器224在每个通道中的高度及宽度(例如,1(r)*1(s))可称为核(过滤器224分别具有三个通道中的三个核)。
45.在一些情况中,卷积处理可涉及步幅及填充。例如,当步幅是1时,过滤器每次卷积(例如,移动、滑动)一个像素;且当步幅是2时,过滤器在其周围滑动时每次卷积两个像素。较大步幅产生空间较小的输出张量(输出张量中的h*w较小)。作用另一示例,当过滤器的空间大小(高度*宽度)大于1*1(例如,3*3或5*5)时,输入张量可围绕其边界填充零以应用过滤器且控制输出张量的空间大小,以(例如)保持输入张量的空间大小,使得输入及输出高度及宽度相同。在图2中,假定不对输入张量222执行填充且步幅是1。
46.在图2中所展示的卷积处理220期间,对过滤器224及输入张量的每个深度方向切片(诸如,第一深度方向切片223)执行mac运算以产生点积(诸如,点积228)。例如,输入张量222的第一深度方向切片223是输入张量222的左上方的1*1*3张量(三个灰立方体)。第一深度方向切片223及过滤器224两者都具有1*1*3的大小。在mac运算之后,可将所产生的点积228组装为输出张量225的一部分。因而,可在过滤器224卷积(例如,移动)穿过输入张量222中的所有深度方向切片(图2中的9个切片)之后判定输出张量225。输出张量225中的通道的数目等于已在卷积期间应用的过滤器的数目。因为卷积处理220仅使用一个过滤器224,所以对应的输出张量225仅具有一个通道。
47.相比而言,卷积处理260涉及两个过滤器264及265。通过使过滤器264卷积穿过输入张量262,可判定输出张量268在第一通道中的值(例如,通道1中的2d输出特征图)。通过使过滤器265卷积穿过输入张量262,可判定输出张量268在第二通道中的值(例如,通道2中的2d输出特征图)。因此,所得到的输出张量268包括两个通道的2d输出特征图。
48.应注意,可并行化卷积处理期间的一些运算。例如,对一个过滤器执行的mac运算独立于对另一过滤器执行的mac运算,因为不同过滤器产生不同输出通道的2d输出特征图。作为另一示例,输入张量中的深度方向切片彼此独立,因为它们产生每个2d输出特征图上的不同位置的值。若可在复数个处理实体(例如,处理器、核心、或线程)间并行化所有这些运算,则可达成理论上的理想并行性。然而,因为真实世界应用可具有大量过滤器及巨量输入张量,所以追求理论上的理想并行性需要硬件具有难以企及的计算能力(例如,具有巨量处理实体及存储器交换机构)。下文中所揭示的实施例提供通过完全利用给定硬件的并行处理能力来达成理想并行性的方法(及对应系统、存储介质),其是更可扩缩及实际的方法。
49.图3绘示根据各种实施例的用于分割输入张量及过滤器的例示性方法。在每个卷
积过程期间,每个输入张量322及每个过滤器342共享复数个通道(即,具有相同数目个通道)。在不丧失一般性的情况下,每个输入张量可表示为具有高度维度(h)、宽度维度(w)、及通道维度(c)的三维张量;每个过滤器可类似地表示为具有高度维度(r)、宽度维度(s)、及通道维度(c)的三维张量。每个维度可包含复数个对应的维度单元。例如,图3中的输入张量322可表示为3(h)*3(w)*6(c),其中h维度包含3个高度单元,w维度包含3个宽度单元,且c维度包含6个通道。在一些实施例中,卷积过程中可涉及多个输入张量,且可使用额外的维度n(例如,表示输入张量识别符)来扩展多个输入张量中的各者的h*w*c表示。
50.在一些实施例中,可根据可用pe的数目来将输入张量322分割成复数个子张量。例如,分割可保证复数个子张量可均等地分布于可用pe之间,使得pe上的工作负载均匀分布。在一些实施例中,每个子过滤器的大小可为高度单元*宽度单元*过滤器中的通道的数目。例如,可将图3中的输入张量322分割成复数个子张量323。如图中所展示,例示性子张量323具有沿高度维度的单一高度单元、沿宽度维度的单一宽度单元、及具有输入张量322的所有通道的通道维度。因此,子张量323可由1(h)*1(w)*6(c)表示。在一些实施例中,子张量(诸如,323)可由一个pe每次提取一部分,而非一次提取整个子张量323。在一些实施例中,可将子张量323进一步分割成复数个子张量。例如,可将323的六个通道分割成三个通道组,其中每个通道组分别包括两个通道,且每个子张量可相应地由1(h)*1(w)*2(c)表示。在一些实施例中,图3的阴影区域中的三个子张量可由一个pe或三个不同pe处理。
51.在一些实施例中,可对过滤器342进行修剪或稀疏化,以限制其内的非零权重的数目。稀疏化的过滤器可在不显著丧失从输入张量提取特征的准确度的情况下极大提高计算效率。在一些实施例中,可以均衡方式修剪过滤器342,使得每预定数目个通道包括固定数目个非零权重。此均衡权重修剪可促进可扩缩并行处理的管线设计。用于达成此目标的例示性方式是将过滤器的通道维度分成复数个通道组,且修剪每个通道组内的非零权重的数目。例如,假定过滤器是张量或3(r)*3(s)*32(c),则可将32个通道分成四个通道组,其中每个通道组包含8个连续通道(例如,通道0至7、通道8至15)。修剪过程确保每个通道组中的非零权重的数目相同。
52.在一些实施例中,在对过滤器进行修剪或稀疏化之后,可通过以下过程来分割每个过滤器:针对每个过滤器,将其通道维度分成复数个通道组;以及根据复数个通道组来将过滤器分割成复数个子过滤器,其中每个子过滤器对应于复数个通道组之一。在一些实施例中,可首先根据复数个通道组来将过滤器分割成复数个组块,然后沿其高度维度分割过滤器以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与原始过滤器共享宽度维度。
53.例如,可将过滤器分割成对应于复数个通道组的复数个组块;且可沿高度维度进一步分割复数个组块中的每个组块以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与过滤器共享宽度维度。仍采用上述3(r)*3(s)*32(c)过滤器作为示例,可首先将过滤器分割成对应于四个通道组(例如,通道0至7、通道8至15)的四个组块,其中每个组块是3(r)*3(s)*8(c)张量。接着,可沿其高度维度(r维度)将四个3(r)*3(s)*8(c)张量中的每个张量分割成三个水平面,其中每个平面是1(r)*3(s)*8(c)张量。依此方式,将3(r)*3(s)*32(c)张量分割成12个1(r)*3(s)*8(c)张量,其可在以下描述中表示为子张量。
54.参考图3中的例示性过滤器342,假设过滤器342具有沿其高度维度的复数个高度
单元(r》1)、沿其宽度维度的复数个宽度单元(s》1)、及六个通道。在分割期间,可将六个通道分成三个通道组324。接着,可将每个通道组324分割成复数个1(h)*s*c子过滤器345(沿高度维度具有一个高度单元)。修剪过程确保每个子过滤器包括相同数目个非零权重,即使每个子过滤器内的非零权重的位置可不同。
55.图4绘示根据各种实施例的用于存储子过滤器的非零权重的例示性存储器布局。假设图4中的例示性过滤器420为r*3(s)*32(c)张量,其中r维度可包括数个高度单元(实际上,r通常等于s)。在图3中所描述的分割之后,可将过滤器420中的32个通道分成四个通道组(表示为gc=4),其中每组具有八个通道(表示为cg=8)。可将每个通道组进一步分割成水平面以获得1(r)*3(s)*8(c)子过滤器。图4中的例示性子过滤器430可在逻辑上展示为3*8表,其中3对应于子过滤器430的s维度,且8对应于子过滤器430的c维度。如图中所展示,例示性子过滤器430包括六个非零权重(w0至w5)。
56.在一些实施例中,子过滤器的非零权重可表示为索引-值对。每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。为了说明,图4展示了具有6个非零权重(表示为w0至w5)的大小为1(r)*3(s)*8(cg)的子过滤器430的表视图。例如,子过滤器430的第一非零权重w0位于通道2中(假定通道识别符从表的具有索引0的底部开始)且位于沿宽度维度(例如,s维度)的位置0处。因此,w0可表示为(索引=2,s=0,值)对,其中索引=2指示当前非零权重在通道2中,s=0指示当前非零权重在沿宽度维度的位置0处,且值是非零权重。依此方式,子过滤器430中的其他非零权重也可表示为对应的索引-值对。取决于实施方案,每个索引-值对可由数个位(诸如,8个、16个、或32个位)表示。接着,可将这些索引-值对聚集为一系列位或位阵列440用于表示子过滤器430。位阵列440的大小可为(每子过滤器的非零权重的数目)*(每索引-值对的位的数目0))个位。使用位阵列440存储器布局来表示子过滤器可减小过滤器的存储器占用面积且简化并行卷积处理的设计。
57.在一些实施例中,可扩展位阵列440以适应对过滤器420执行的不同分割方式。例如,若通过分割过滤器所产生的子过滤器430是2(r)*3(s)*8(c)张量(例如,子过滤器430包括沿r维度的两个而非一个平面),则除c维度索引、s维度索引、及非零权重外,子过滤器430的索引-值对表示还可进一步包括r维度索引。
58.图5绘示根据各种实施例的用于均衡权重卷积处理的例示性系统图。图5中所展示的架构包括被设计为在神经网络被加载且运行时执行推断的计算机系统。在一些实施例中,此计算机系统被实施为硬件加速器500。硬件加速器500中的一些组件以特定方式协作以通过促进复数个处理实体上的并行卷积计算来提高神经网络的吞吐量及能量效率。加速器500仅是说明性的,且可包括更多、更少、或替代组件。硬件加速器500可被设计为可重配置的设备,诸如,现场可编程门阵列(fpga)或专用集成电路(asic)。
59.如图5中所展示,硬件加速器500可包括调度器570,其用于控制加速器500内的工作流程及与芯片外组件(诸如,主机cpu 510及双倍数据速率(ddr)存储器520)的交互。例如,加速器500可通过外围组件互连快速(pcie)物理层(phy)控制器512来与主机cpu 510交互且通过ddr接口530来与芯片外ddr存储器520交互。加速器500可通过直接存储器访问(dma)控制器540(其经由ddr接口530来与芯片外ddr存储器520通信)来从芯片外ddr存储器520提取数据。所提取的数据可存储于芯片上缓冲器(称为全局缓冲器550)中以准备用于并行卷积计算。可将全局缓冲器550在逻辑上分成多个区段,诸如,输入缓冲器552、权重缓冲
器554、及输出缓冲器556。输入缓冲器552可存储与输入张量相关联的数据,权重缓冲器554可存储与过滤器相关联的数据,且输出缓冲器556可存储与卷积计算的结果(例如,输出张量)相关联的数据。全局缓冲器550可与稀疏处理单元(spu)562的阵列560交换数据以执行卷积计算。spu名称中的“稀疏”指示spu阵列560被专门设计为高效执行涉及稀疏性(例如,稀疏输入张量和/或稀疏过滤器)的卷积计算。每个spu 562可包括复数个处理实体(pe)580,其中每个pe580可处置单位数量的卷积计算。
60.图6绘示根据各种实施例的用于均衡权重卷积处理的例示性系统架构600。系统架构600是图5中所展示的硬件加速器500的例示性实施方案。如图中所展示,系统架构600可包含芯片上网络总线接口612、多体权重缓冲器622、复数个pe(pe 0至pe 255)、o2i矩阵690、直接存储器访问(dma)接口(其包含输入dma接口613及输出dma接口692)、及连接上述组件的复数条导线。系统架构600仅是说明性的,且取决于实施方案,系统架构600可包括更多、更少、或替代组件。为简单起见,图6中未展示架构600中的一些布线。
61.图6中的例示性系统架构600包括256个pe,从逻辑角度看,这些pe被布置为pe的32*8矩阵。这些pe中的每个pe可包含各种内部缓冲器,诸如,用于存储一个或多个输入子张量的ibuffer、用于存储一个或多个子过滤器的wbuffer、用于执行mac运算的各种门(例如,至少乘法器及累加器)、用于存储部分结果的累加缓冲器、其他适合组件、或它们的任何组合。在一些实施例中,控制器(诸如,图5中的调度器570)可调度由每个pe执行的任务。每个pe可产生卷积过程的部分结果,部分结果可聚集形成输出张量。
62.在一些实施例中,图6中的芯片上网络总线接口612可接收执行卷积过程所需的输入张量及一个或多个过滤器。这些所接收的输入张量及过滤器可通过输入dma接口613被发送至架构600中的组件。输入张量及过滤器可在到达芯片上网络总线接口612之前已经被分割。在其他实施例中,这些输入张量及过滤器在离开芯片上网络总线接口612之后但在被分布至复数个pe中之前被分割。在一些实施例中,芯片上网络总线接口612可将接收到的过滤器转发至多体权重缓冲器622。多体权重缓冲器622是过滤器中的非零权重被存储且分布至pe的位置。在一些实施例中,多体权重缓冲器622接收表示为位阵列的复数个经分割子过滤器且将这些位阵列分布至pe。
63.在输入张量被分割成复数个子张量之后,芯片上网络总线接口612可通过布线630来将复数个子张量分布(例如,通过广播来指派)至pe。在一些实施例中,每个pe可接收一个或多个子张量,其中每个子张量包括输入张量的所有通道。例如,针对具有32个通道的输入张量,每个pe可接收具有沿其高度维度的一个高度单元、沿其宽度维度的一个宽度单元、及沿其通道维度的输入张量的所有32个通道的(h)*1(w)*32(c)子张量(例如,图3中的输入张量322的子张量323)。依此方式,每个pe可在不在每个卷积过程之后替换出或返回部分结果的情况下在多个卷积过程(对应于nn中的多个卷积层)中持续使用并更新所接收的一个或多个子张量。
64.在一些实施例中,多体权重缓冲器622可通过布线640来将复数个子过滤器分布至复数个pe,供每个pe执行局部mac运算。每个pe可具有用于存储所指派的子过滤器的局部先进先出(fifo)权重缓冲器。若每个pe中的fifo权重缓冲器不足够大,则每个pe可随着较旧的子过滤器被处理而提取(或多体权重缓冲器622可分布)新的子过滤器。
65.在一些实施例中,每个pe可具有与其在同一列的相邻pe的布线660(例如,双向布
线),以共享存储于其缓冲器中的特定数据和/或从其相邻pe提取特定数据。这里,“特定数据”可指子张量的一部分。当卷积过程将步幅配置为大于1时,相邻pe之间需要数据共享。
66.在一些实施例中,同一行中的pe可与布线650连接,以轮换由它们中的各者获得的部分和。图6中的布线650的方向(pe0至pe32至pe64

至pe224及返回至pe0)是说明性的且可取决于实施方案而不同。例如,在图6中,在pe 224基于所指派的子张量及子过滤器完成其局部mac运算且获得一个或多个中间结果之后,需要将这些中间结果与由pe190(图6中未展示)获得的部分和累加。其他行中的pe也可与类似于布线650的布线连接以轮换局部中间结果。
67.在一些实施例中,由每个pe获得的mac运算结果可通过布线670a被聚集且通过去往芯片上网络总线接口612的输出dma接口692被返回至高阶存储器/缓冲器。例如,若当前卷积过程对应于nn中的最后卷积层,则mac运算结果可被聚集至输出张量中以通过dma接口被返回。在一些实施例中,mac运算结果可通过布线670b被聚集且在o2i矩阵682中重新组织以产生输出张量。在一些实施例中,o2i矩阵682可针对每行pe输出累加数据。这些累加数据最终可形成输出张量。图6中的布线670a及670b仅是说明性的且是为了易于参考。在一些实施例中,复数个pe中的每个pe可具有用于输出其局部mac运算结果的670a布线和/或670b布线。
68.图7绘示根据各种实施例的用于均衡权重卷积处理的处理实体(pe)700的例示性图式。图7中的例示性pe 700可指代图5中的任何一个pe 580或图6中的任何一个pe。pe 700可包括用于存储一个或多个输入子张量的ibuffer 730(表示为ibuf)、用于执行乘法运算的乘法门740(表示为“x”)、用于执行累加运算的加法门750(表示为“+”)、用于存储中间结果(例如,mac运算的部分和)的累加缓冲器760(表示为“abuf”)、作为非线性激活函数的relu单元770、用于减少或调整表示中间结果的位的数目的量化单元780、及用于选择一些上述组件的适当输入的各种多路转换门(表示为“mux”,诸如720及745)。图7中的组件及连接组件的管线仅是说明性的。取决于实施方案,pe可包括更多、更少、或替代组件或具有不同管线。
69.如上文所描述,pe 700可基于一个或多个输入子张量及来自一个或多个子过滤器的复数个非零权重来执行局部卷积处理。pe 700可通过激活输入布线712来从高阶存储器(诸如,图5中的全局缓冲器550)接收输入子张量且将它们存储于其ibuf 730中。在一些实施例中,ibuf 730可从mux 720接收索引或一组索引用于识别期望的输入值或输入子张量。基于控制器或调度器(诸如,图5中的调度器570),mux 720可从ibuf 730的复数个输入选项中选择一个输入用于识别期望的输入值或输入子张量。例如,mux 720的复数个输入选项可包含由相邻pe(例如,类似于图6中的pe矩阵的矩阵中的pe700下方的pe)请求的底部索引712、由另一相邻pe(例如,类似于图6中的pe矩阵的矩阵中的pe 700上方的pe)请求的顶部索引714、或非零权重710的索引(例如,该索引包括通道维度索引及宽度维度索引)。当相邻pe需要pe 700中的(一个或多个)输入值来执行其局部mac运算时(例如,当卷积处理的步幅大于1时),需要底部索引712及顶部索引714请求。在一些实施例中,底部索引712及顶部索引714可用于从ibuf 730撷取输入值或输入子张量。所撷取的数据可分别通过顶部激活响应布线732被返回至pe 700上方的pe和/或通过底部激活响应布线734被返回至pe 700下方的pe。布线732及734可指图6中的双向布线660。
70.在一些实施例中,指派给pe 700的非零权重710为索引-值对的形式。索引-值对格式的详细描述可参考图4的描述。例如,每个非零权重710可表示为包括通道维度索引(表示为c维度索引)、宽度维度索引(表示为s维度索引)、及非零权重的值的复数个位(例如,16个位或32个位)。非零权重的c维度索引及s维度索引可用于识别来自ibuf 730的对应输入值用于参与mac运算。例如,非零权重710位于通道c中且位于位置s处,其对应于输入子张量中的通道c及位置s处的输入值。如图7中所展示,非零权重710的两个索引可通过布线716被馈送至mux 720中。
71.为了执行mac运算,从ibuf 730撷取的输入值及非零权重710的值可被馈送至乘法器740中。结果(例如,非零权重及对应输入值的乘积)可被馈送至累加器750中。累加器750对乘积与先前计算的部分和累加以形成新部分和。例如,先前计算的部分和及乘积可来自相同子张量但不同通道。如图中所展示,先前计算的部分和可由mux 745从以下两个选项选择:从相邻pe的abuf轮换的部分和744(例如,通过图6中的轮换布线650)及选自其局部abuf 760的部分和746。在一些实施例中,mux 745可在局部mac运算完成之前首先保持从其局部abuf 760选择部分和746,然后选择从相邻pe轮换的部分和744。在此,局部mac运算是指基于指派给pe 700的非零权重710的mac运算。
72.在一些实施例中,由累加器750产生的累加结果可存储于abuf760中(例如,通过替换较旧版本的部分和)。在一些实施例中,累加结果可通过用于激活的relu单元770及用于减少结果中的位的数目的量化单元780,使得其可通过布线782被存储于ibuf 730中。在一些实施例中,relu单元770及量化单元780可为选用的。
73.图8a绘示根据各种实施例的用于并行均衡权重卷积处理的例示性流程图。输入张量/过滤器的上述分割及过滤器的均衡权重表示允许并行卷积处理。在一些实施例中,复数个pe托管复数个输入子张量,且基于局部存储的(一个或多个)子张量及(一个或多个)指派的子过滤器来执行局部mac运算。因为一个pe的mac运算不取决于另一pe的结果,所以复数个pe之间不存在依赖性,因此,卷积过程自然地变成并行。然而,将子过滤器随机指派给复数个pe无法产生最佳的并行处理效率。
74.如上文所提及,可通过以下过程来分割过滤器:针对每个过滤器,将其通道维度分成复数个通道组;以及根据复数个通道组来将过滤器分割成复数个子过滤器,其中每个子过滤器对应于复数个通道组之一。在一些实施例中,可首先根据复数个通道组来将过滤器分割成复数个组块,然后沿其高度维度分割过滤器以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与原始过滤器共享宽度维度。在将子张量及子过滤器指派给复数个pe的过程期间,将复数个输入子张量中来自输入张量的相同水平面的子集分别指派给pe的子集(例如,图6中的一行pe),且可通过以下操作来将复数个子过滤器指派给该pe子集:识别复数个子过滤器中来自相同过滤器但对应于不同通道组的子集;以及将复数个子过滤器的该子集分别指派给该pe子集。
75.如图8a中所展示,示例输入张量802具有1*3*6的大小,其中高度为1,宽度为3,且通道的数目为6。可沿宽度维度将输入张量802分割成三个组块1、2、3,其中第一组块由图8a中的输入张量802的阴影区域表示。可沿通道维度将每个组块进一步分成三个区段,其中每个区段具有1*1*2的大小。即,将每个组块中的六个通道分成三个通道组。每个区段可表示为i
x,y
,其中x指输入张量中的2d输入特征图上的位置,且y指通道组索引。在以下描述
中,1*1*2区段被视为子张量。
76.在真实世界应用中,每个卷积过程中可涉及复数个过滤器。为易于参考及描述,图8a中仅展示一个过滤器804(大小为1*1*6)以展现如何将子过滤器分布至pe。假定将过滤器804的通道类似地分成三个通道组,即,三个1*1*2子过滤器。每个子过滤器表示为w
y,k
,其中y是指子过滤器所在的通道组,且k是指子过滤器所属的过滤器804的识别符。例如,w
1,k
是指在通道组1中且属于过滤器k(在此,过滤器804)的子过滤器。
77.在分割输入张量802及过滤器804之后,将子张量及子过滤器指派给复数个pe用于多个回合的并行处理。图8a绘示将子张量及子过滤器指派给复数个pe的两种方法:朴素方法820;及权重轮换方法810。在两种方法中,三个pe被用于多个回合的并行处理。
78.在朴素方法820中,在第一回合的并行处理(t=1)期间,pe1、pe2及pe3分别处置来自第一通道组的子张量且分别被指派以i
1,1
*w
1,k
、i
2,1
*w
1,k
及i
3,1
*w
1,k
。即,相同的子过滤器w
1,k
由pe1、pe2及pe3用以产生乘法结果。在此,“*”是指乘法运算。在第二回合的并行处理(t=2)期间,pe1、pe2及pe3分别处置来自第二通道组的子张量且分别被指派以i
1,2
*w
2,k
、i
2,2
*w
2,k
及i
3,2
*w
2,k
。即,相同的子过滤器w
2,k
由pe1、pe2及pe3用以产生乘法结果。类似地,在第三回合的并行处理(t=3)期间,pe1、pe2及pe3分别处置来自第三通道组的子张量且分别被指派以i
1,3
*w
3,k
、i
2,3
*w
3,k
及i
3,3
*w
3,k
。即,相同的子过滤器w
3,k
由pe1、pe2及pe3用以产生乘法结果。在三个回合的并行处理之后,可累加由pe1产生的乘法结果以产生输入张量802的第一(左)1*1*6张量与1*1*6过滤器804的部分和a
1,k
(用于下一nn层的激活)。类似地,可累加由pe2产生的mac结果以产生输入张量802的第二(中间)1*1*6张量与1*1*6过滤器804的部分和a
2,k
,且可累加由pe3产生的mac结果以产生输入张量802的第三(右)1*1*6张量与1*1*6过滤器804的部分和a
3,k
。随后,可将这些部分和组装为输出张量830。
79.在一些实施例中,图8a中的权重轮换方法810可包括通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将复数个子过滤器重新指派给可用处理器。如图8a中所展示,在使用权重轮换方法810的第一回合的并行处理(t=1)期间,pe1、pe2及pe3分别处置来自所有三个通道组的三个子张量且被分别指派以i
1,1
*w
1,k
、i
2,2
*w
2,k
及i
3,3
*w
3,k
。在第二回合的并行处理(t=2)期间,轮换指派给pe1、pe2及pe3的权重(图8a中的左轮换)。如图8a中所展示,当t=2时,pe1、pe2及pe3分别被指派以i
1,2
*w
2,k
、i
2,3
*w
3,k
及i
3,1
*w
1,k
。类似地,当t=3时,pe1、pe2及pe3分别被指派以i
1,3
*w
3,k
、i
2,1
*w
1,k
及i
3,2
*w
2,k
。即,一个子过滤器在第一回合期间被指派给pe
x
,且在第二回合期间被轮换至pe
x-1
,且在第三回合期间被进一步轮换至pe
x-2
。在三个回合的并行处理之后,可累加由pe1、pe2及pe3中的各者产生的乘法结果以产生部分和。随后,可将这些部分和组装为输出张量830。
80.在朴素方法820及权重轮换方法810的比较中,朴素方法820可能需要在每个回合的并行处理期间针对三个pe复制相同子过滤器三次,且在每个回合之后,三个pe可能需要从较高阶存储器(例如,图5中的芯片外ddr存储器520或图6中的i-cache 610)提取下一权重。因为顺序处理三个回合,所以顺序从较高阶存储器提取这些权重。从较高阶存储器存取数据通常是昂贵且缓慢的。相比而言,权重轮换方法810可在第一回合的并行处理期间提取所有三个权重。此存储器提取步骤可并行执行(例如,每个pe读取其指派的权重)。针对后续回合,权重在pe之间轮换而非从更高阶存储器提取。因为权重在pe之间的轮换发生于较低阶存储器系统中,所以其可产生较快的速度及较少的能量成本。在一些实施例中,相邻pe可
通过直接通道连接来交换高速缓存的数据,这可进一步促进权重轮换。
81.图8b绘示根据各种实施例的并行均衡权重卷积处理的另一例示性流程图。图8b中的流程图是图8a中的权重轮换方法的通用版本。在此示例中执行的mac运算涉及一批次的输入张量(其包括n个输入张量)及一组的过滤器。将每个输入张量的通道分割成复数个通道组,通道组表示为gc(通道组或通道组的数目),其中每个gc包括cg(每组的通道)个通道;且将输入张量的2d输入特征图分割成gh*gw(高度组*宽度组)个分段;类似地根据复数个通道组gc来分割过滤器的通道。
82.使用上述表示,由对n个输入张量及过滤器的mac运算产生的总和的总数是b=n*gh*gw。正式言之,总和可由以下公式表示:
[0083][0084]
其中m是指gc(通道组的数目),i是指b个总和中的第i总和,j是指m个通道组中的第j通道组,k是指过滤器的识别符,i是指由i及j识别的子张量,w是指由j及k识别的子过滤器,a是指由i及k索引的总和(例如,将放置于输出张量的通道k中的2d特征图中的位置i处的激活)。
[0085]
在一些实施例中,并行卷积处理可开始于将b个总和分成复数个组,其中每个组包括(产生)m个总和。为了产生m个总和,可执行m个回合的并行处理。在每个回合的并行处理期间,使用m个pe来根据m个子张量及m个子过滤器到m个pe的指派来并行计算m个部分和。在两个连续回合的并行处理期间,可使m个子过滤器在pe之间轮换。
[0086]
图8b中的图式绘示用于复数个总和组之一的并行处理的多个(m个)回合。在第一回合(t=1)期间,将来自一个通道组的一个子张量及一个子过滤器指派给m个pe中的每个pe,但不同pe处置不同通道组(即,没有两个pe处置相同通道组)。如图中所展示,当t=1时,pe1处置第一通道组(i
1,1
及w
1,k
来自通道组1),且pe2处置第二通道组(i
2,2
及w
2,k
来自通道组2)。此外,不同pe处置来自输入张量的2d特征图的不同位置的子张量(即,没有两个pe处置来自2d特征图上的相同位置的子张量)。如图中所展示,当t=1时,pe1处置2d特征图上的位置1处的i
1,1
,且pe2处置2d特征图上的位置2处的i
2,2

[0087]
在第二回合(t=2)期间,在m个pe之间轮换子过滤器的指派。例如,使w
2,k
从pe2(在第一回合期间)轮换至pe1(在第二回合期间)。正式言之,使在第i回合期间指派给pei的w
i,k
在第i+1回合期间轮换至pei-1。针对后续回合(t=3、

、m),使权重沿相同方向轮换。应注意,使指派给第一pe的子过滤器轮换至最后pe。
[0088]
在每个回合的并行处理之后,每个pe可通过对所指派的子张量及子过滤器执行mac运算来产生部分和。在m个回合的并行处理期间,可对由每个pe产生的m个部分和累加以在完成m个回合之后最终产生点积(即,待组装成输出张量的总和)。如图8b中所展示,可在pe1累加其在每个回合的并行处理产生的部分和之后收集总和a
1,k

[0089]
图9绘示根据各种实施例的用于均衡权重卷积处理的示例方法。方法900可由用于优化资源分配的设备、装置、或系统执行。方法900可由图1至图8绘示的环境或系统中的一个或多个模块/组件(诸如,图5中的硬件加速器500及图6a中的处理实体(pe)580)执行。下文呈现的方法900的操作是说明性的。取决于实施方案,方法900可包含按各种顺序或并行
执行的额外、更少、或替代步骤。
[0090]
区块910包含获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道。
[0091]
区块920包含根据可用处理器的数目来将输入张量分割成复数个子张量。在一些实施例中,复数个子张量中的每个子张量包括与输入张量相同的通道数目。
[0092]
区块930包含将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重。在一些实施例中,复数个过滤器中的每个过滤器包括通道维度、高度维度、及宽度维度,且将复数个过滤器中的每个过滤器分割成一个或多个子滤器包括:将通道维度分成复数个通道组;以及根据复数个通道组来将过滤器分割成复数个子过滤器,其中每个子过滤器对应于复数个通道组之一。在一些实施例中,根据通道组来将过滤器分割成复数个子过滤器包括:根据复数个通道组来将过滤器分割成复数个组块;以及沿高度维度分割复数个组块中的每个组块以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与过滤器共享宽度维度。
[0093]
区块940包含将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示。在一些实施例中,每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。在一些实施例中,将复数个子张量中来自输入张量的相同水平面的子集分别指派给可用处理器的子集,且将复数个子过滤器指派给可用处理器包括:识别复数个子过滤器中来自相同过滤器但对应于不同通道组的子集;以及将复数个子过滤器的该子集分别指派给可用处理器的该子集。
[0094]
区块950包含:针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和。在一些实施例中,基于索引-值对来识别所指派的子张量中的对应输入值以执行mac运算从而产生部分和包括:基于索引-值对中的通道维度索引及宽度维度索引来识别所指派的子张量中的输入值;基于所识别的输入值及索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加点积与对应部分和以获得新部分和。在一些实施例中,将通过执行mac运算所产生的部分和存储于能够由相邻处理器存取的处理器的累加缓冲器中。
[0095]
区块960包含通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器。在一些实施例中,在复数个处理器之间轮换复数个子过滤器包括:通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将复数个子过滤器重新指派给可用处理器。
[0096]
区块970包含累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。在一些实施例中,累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于当前卷积层不是最后卷积层,将激活子张量存储于处理器中用于神经网络的下一卷积层;以及响应于当前卷积层是最后卷积层,聚集来自可用处理器的复数个激活子张量以获得输出张量。
[0097]
在一些实施例中,方法900可进一步包括:修剪复数个过滤器中的每个过滤器,使
得过滤器的每预定数目个通道包括相同数目个非零值。
[0098]
图10绘示其中可实施本文中所描述的任何实施例的示例计算设备。计算设备可用于实施图1至图9中所展示的系统及方法的一个或多个组件。计算设备1000可包括总线1002或用于传送信息的其他通信机构及与总线1002耦合用于处理信息的一个或多个硬件处理器1004。(一个或多个)硬件处理器1004可为(例如)一个或多个通用微处理器。
[0099]
计算设备1000还可包含耦合至总线1002用于存储信息及由(一个或多个)处理器1004执行的指令的主存储器1007,诸如,随机存取存储器(ram)、高速缓存、和/或其他动态存储设备。主存储器1007还可用于在由(一个或多个)处理器1004执行的指令的执行期间存储暂时变量或其他中间信息。这些指令在存储于(一个或多个)处理器1004可存取的存储介质中时可使得计算设备1000变成被定制为执行指令中所指定的操作的专用机器。主存储器1007可包含非易失性介质及/或易失性介质。非易失性介质可包含(例如)光盘或磁盘。易失性介质可包含动态存储器。常见形式的介质可包含(例如)软盘、挠性判、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、cd-rom、任何其他光学数据存储介质、具有孔图案的任何物理介质、ram、dram、prom及eprom、flash-eprom、nvram、任何其他存储器芯片或盒、或它们的联网版本。
[0100]
计算设备1000可使用定制化的硬布线逻辑、一个或多个asic或fpga、固件、和/或程序逻辑(它们与计算设备组合可促使计算设备1000成为或将计算设备1000编程为专用机器)来实施本文中所描述的技术。根据一个实施例,本文技术由计算设备1000响应于(一个或多个)处理器1004执行主存储器1007中所含的一个或多个指令的一个或多个序列而执行。这些指令可从另一存储介质(诸如,存储设备1009)读取至主存储器1007中。执行主存储器1007中所含的指令序列可促使(一个或多个)处理器1004执行本文中所描述的过程步骤。例如,本文中所揭示的过程/方法可由存储于主存储器1007中的计算机程序指令实施。当这些指令由(一个或多个)处理器1004执行时,它们可执行对应图中所展示及上文所描述的步骤。在替代实施例中,硬布线电路系统可代替或结合软件指令使用。
[0101]
计算设备1000还包含耦合至总线1002的通信接口1010。通信接口1010可提供到连接至一个或多个网络的一个或多个网络链路的双向数据通信耦合。作为另一示例,通信接口1010可为局域网(lan)卡,其提供到兼容lan(或与wan通信的wan组件)的数据通信连接。也可实施无线链路。
[0102]
某些操作的执行可在处理器之间分布而不仅驻留于单一机器内,也可跨数个机器部署。在一些示例实施例中,处理器或处理器实施的引擎可位于单一地理位置中(例如,在家庭环境、办公环境、或服务器场内)。在其他示例实施例中,处理器或处理器实施的引擎可跨数个地理位置分布。
[0103]
上述章节中所描述的过程、方法、及算法中的各者可完全或部分自动体现于由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中。过程及算法可部分或完全实施于专用电路系统中。
[0104]
当本文中所揭示的功能以软件功能单元的形式实施且作独立产品售卖或使用时,它们可存储于处理器可执行的非易失性计算机可读存储介质中。本文中所揭示的特定技术解决方案(全部或部分)或对当前技术做出贡献的方面可以软件产品的形式体现。软件产品可存储于存储介质中,包括促使计算设备(其可为个人计算机、服务器、网络设备等)执行本
申请的实施例的方法的所有或一些步骤的数个指令。存储介质可包括闪存驱动器、便携式硬盘驱动器、rom、ram、磁盘、光盘、可操作以存储程序代码的其他介质、或它们的任何组合。
[0105]
特定实施例进一步提供包括处理器及存储指令的非暂态计算机可读存储介质的系统,所述指令可由处理器执行以促使系统执行对应于上文所揭示的实施例的任何方法中的步骤的操作。特定实施例进一步提供配置有指令的非暂态计算机可读存储介质,所述指令可由一个或多个处理器执行以促使该一个或多个处理器执行对应于上文所揭示的实施例的任何方法中的步骤的操作。
[0106]
本文中所揭示的实施例可通过与客户端交互的云平台、服务器、或服务器组(下文中统称为“服务系统”)来实施。客户端可为终端设备或用户在平台注册的客户端,其中终端设备可为移动终端、个人计算机(pc)、及可安装有平台应用程序的任何设备。
[0107]
上文所描述的各种特征及过程可彼此独立使用或可按各种方式组合。所有可能的组合及子组合意欲落在本公开的范围内。另外,在一些实施方案中可省略某些方法或过程区块。本文中所描述的方法及过程也不受限于任何特定顺序,且与其相关的区块或状态可按其他适当顺序执行。例如,所描述的区块或状态可按除所具体揭示的顺序之外的顺序执行,或多个区块或状态可组合于单一区块或状态中。示例区块或状态可连续、并行、或按某一其他方式执行。区块或状态可被添加到所揭示的示例实施例或从所揭示的示例实施例移除。本文中所描述的例示性系统及组件可不同于本文中所描述地配置。例如,元件可被添加至所揭示的示例实施例、从所揭示的示例实施例移除、或相较于所揭示的示例实例重新配置。
[0108]
本文中所描述的例示性方法的各种操作可至少部分由算法执行。算法可包括在存储于存储器(例如,上述非暂态计算机可读存储介质)中的程序代码或指令中。此算法可包括机器学习算法。在一些实施例中,机器学习算法可不明确将计算机编程为执行功能但可从训练数据学习以产生执行功能的预测模型。
[0109]
本文中所描述的例示性方法的各种操作可至少部分由被暂时性配置(例如,由软件)或永久性配置为执行相关操作的一个或多个处理器执行。不管被暂时还是永久性配置,这些处理器可构成操作以执行本文中所描述的一个或多个操作或功能的处理器实施的引擎。
[0110]
类似地,本文中所描述的方法可至少部分是处理器实施的,其中一个或多个特定处理器是硬件的示例。例如,方法的至少一些操作可由一个或多个处理器或处理器实施的引擎执行。此外,一个或多个处理器也可操作以支持相关操作在“云计算”环境中的执行或作为“软件即服务”(saas)执行。例如,至少一些操作可由计算机组(作为包含处理器的机器的示例)执行,其中这些操作可经由网络(例如,因特网)并经由一个或多个适当接口(例如,应用程序接口(api))来存取。
[0111]
某些操作的执行可在处理器之间分布而不仅驻留于单一机器内,而跨数个机器部署。在一些示例实施例中,处理器或处理器实施的引擎可位于单一地理位置中(例如,在家庭环境、办公环境、或服务器场内)。在其他示例实施例中,处理器或处理器实施的引擎可跨数个地理位置分布。
[0112]
在整个本说明书中,复数例项可实施描述为单一例项的组件、操作、或结构。尽管一种或多种方法的个别操作被绘示及描述为单独操作,但一个或多个个别操作可同时执
行,且无需依所绘示的顺序执行操作。在示例配置中呈现为单独组件的结构及功能可实施为组合结构或组件。类似地,呈现为单一组件的结构及功能可实施为单独组件。这些及其他变动、修改、添加、及改良落在本主题的范围中。
[0113]
如本文中所使用,除非上下文另有明确指示或另有指示,否则“或”是包含性而非排他性的。因此,在本文中,除非上下文另有明确指示或另有指示,否则“a、b、或c”意味着“a、b、c、a及b、a及c、b及c、或a、b及c”。此外,除非上下文另有明确指示或另有指示,否则“及”是结合及分别的。因此,在本文中,除非上下文另有明确指示或另有指示,否则“a及b”意味着“a及b,结合地或分别地”。可提供本文中所描述的资源、操作、或结构的复数个例项作为单一例项。另外,各种资源、操作、引擎、及数据存储区之间的边界是略微任意的,且在具体说明性配置的上下文中绘示特定操作。其他功能分配是可预见的且可落于本公开的各种实施例的范围内。一般而言,在示例配置中呈现为单独资源的结构及功能可实施为组合结构或资源。类似地,呈现为单一资源的结构及功能可实施为不同资源。这些及其他变动、修改、添加、及改良落在由随附权利要求表示的本公开的实施例的范围内。因此,本说明书及图式应被视为说明性而非限制性的。
[0114]
术语“包含”或“包括”用于指示存在随后宣告的特征,而不排除添加其他特征。除非另有具体说明或在所使用的上下文中依其他方式理解,否则诸如“可”、“可以”、“能够”、“可能”的条件语言一般意欲传达某些实施例包含而其他实施例不包含某些特征、组件、及/或步骤。因此,这些条件语言一般绝不意欲隐含地表示一个或多个实施例需要特征、组件、及/或步骤或一个或多个实施例必须包含用于在具有或不具有用户输入或提示的情况下决定这些特征、元件、及/或步骤是否包含于或执行于任何特定实施例中的逻辑。
[0115]
尽管已参考具体示例实施例描述本主题的概观,但可在不背离本公开的实施例的较广范围的情况下对这些实施例作出各种修改及改变。若事实上揭示一个以上实施例,则本主题的这些实施例在本文中可分别或统一称为术语“发明”,此仅为方便起见而非意欲将本技术的范围自动限制于任何单一揭示的内容或概念。
[0116]
本文中所绘示的实施例被足够详细地描述以使本领域技术人员能够实践所揭示的教导。其他实施例可被使用且从其导出,使得可在不背离本公开的范围的情况下作出结构及逻辑替代及改变。因此,“实施方式”不意在限制,且各种实施例的范围仅由随附权利要求及这些权利要求授权的等同物的全范围界定。

技术特征:


1.一种计算机实施的方法,包括:获得输入张量及复数个过滤器,其中所述输入张量及所述复数个过滤器具有相同数目个通道;根据可用处理器的数目来将所述输入张量分割成复数个子张量;将所述复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中所述复数个子过滤器均包括相同数目个非零权重;将所述复数个子张量及所述复数个子过滤器分别指派给所述可用处理器,其中所述复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对所述可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和;通过在所述复数个处理器中间轮换所述复数个子过滤器来将所述复数个子过滤器重新指派给所述可用处理器;以及累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。2.如权利要求1所述的方法,其中所述复数个子张量中的每个子张量包括与所述输入张量相同的通道数目。3.如权利要求1所述的方法,进一步包括:修剪所述复数个过滤器中的每个过滤器,使得该过滤器的每预定数目个通道包括相同数目个非零值。4.如权利要求1所述的方法,其中每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。5.如权利要求4所述的方法,其中基于该索引-值对来识别所指派的子张量中的对应输入值以执行mac运算从而产生部分和包括:基于该索引-值对中的通道维度索引和宽度维度索引来识别所述所指派的子张量中的输入值;基于所识别的输入值及该索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加所述点积与对应部分和以获得新部分和。6.如权利要求1所述的方法,其中所述复数个过滤器中的每个过滤器包括通道维度、高度维度、及宽度维度,且将所述复数个过滤器中的每个过滤器分割成一个或多个子过滤器包括:将所述通道维度分成复数个通道组;以及根据所述复数个通道组来将所述过滤器分割成复数个子过滤器,其中每个子滤器对应于所述复数个通道组之一。7.如权利要求6所述的方法,其中根据所述通道组来将所述过滤器分割成复数个子过滤器包括:根据所述复数个通道组将所述过滤器分割成复数个组块;以及沿所述高度维度分割所述复数个组块中的每个组块以获得所述复数个子过滤器,其中
所述复数个子过滤器中的每个子过滤器与所述过滤器共享所述宽度维度。8.如权利要求6所述的方法,其中将所述复数个子张量中来自所述输入张量的相同水平面的子集分别指派给所述可用处理器的子集,且将所述复数个子过滤器指派给所述可用处理器包括:识别所述复数个子过滤器中来自相同过滤器但对应于不同通道组的子集;以及将所述复数个子过滤器的该子集分别指派给所述可用处理器的该子集。9.如权利要求1所述的方法,其中在所述复数个处理器之间轮换所述复数个子过滤器包括:通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将所述复数个子过滤器重新指派给所述可用处理器。10.如权利要求1所述的方法,其中将通过执行所述mac运算产生的部分和存储于能够由相邻处理器存取的处理器的累加缓冲器中。11.如权利要求1所述的方法,其中累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于所述当前卷积层不是最后卷积层,将所述激活子张量存储于所述处理器中用于所述神经网络的下一卷积层;以及响应于所述当前卷积层是所述最后卷积层,聚集来自所述可用处理器的复数个激活子张量以获得所述输出张量。12.一种用于均衡权重稀疏卷积处理的系统,包括一个或多个处理器及一个或多个非暂态计算机可读存储器,所述一个或多个非暂态计算机可读存储器耦合至所述一个或多个处理器且配置有可由所述一个或多个处理器执行以促使所述系统执行包括以下各项的操作的指令:获得输入张量及复数个过滤器,其中所述输入张量及所述复数个过滤器具有相同数目个通道;根据可用处理器的数目来将所述输入张量分割成复数个子张量;将所述复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中所述复数个子过滤器均包括相同数目个非零权重;将所述复数个子张量及所述复数个子过滤器分别指派给所述可用处理器,其中所述复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对所述可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和;通过在所述复数个处理器之间轮换所述复数个子过滤器来将所述复数个子过滤器重新指派给所述可用处理器;以及累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。13.如权利要求12所述的系统,其中所述复数个子张量中的每个子张量包括与所述输
入张量相同的通道数目。14.如权利要求12所述的系统,其中所述操作进一步包括:修剪所述复数个过滤器中的每个过滤器,使得该过滤器的每预定数目个通道包括相同数目个非零值。15.如权利要求12所述的系统,其中每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重,且基于该索引-值对来识别所指派的子张量中的对应输入值以执行mac运算从而产生部分和包括:基于该索引-值对中的通道维度索引和宽度维度索引来识别所述所指派的子张量中的输入值;基于所识别的输入值及该索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加所述点积与对应部分和以获得新部分和。16.如权利要求12所述的系统,其中在所述复数个处理器之间轮换所述复数个子过滤器包括:通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将所述复数个子过滤器重新指派给所述可用处理器。17.如权利要求12所述的系统,其中累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于所述当前卷积层不是最后卷积层,将所述激活子张量存储于所述处理器中用于所述神经网络的下一卷积层;以及响应于所述当前卷积层是所述最后卷积层,聚集来自所述可用处理器的复数个激活子张量以获得所述输出张量。18.一种用于均衡权重稀疏卷积处理的非暂态计算机可读存储介质,配置有可由一个或多个处理器执行以促使所述一个或多个处理器执行包括以下各项的操作的指令:获得输入张量及复数个过滤器,其中所述输入张量及所述复数个过滤器具有相同数目个通道;根据可用处理器的数目来将所述输入张量分割成复数个子张量;将所述复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中所述复数个子过滤器均包括相同数目个非零权重;将所述复数个子张量及所述复数个子过滤器分别指派给所述可用处理器,其中所述复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对所述可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(mac)运算从而产生部分和;通过在所述复数个处理器之间轮换所述复数个子过滤器来将所述复数个子过滤器重
新指派给所述可用处理器;以及累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。19.如权利要求18所述的存储介质,其中每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重,且基于该索引-值对来识别所指派的子张量中的对应输入值以执行mac运算从而产生部分和包括:基于该索引-值对中的通道维度索引和宽度维度索引来识别所述所指派的子张量中的输入值;基于所识别的输入值及该索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加所述点积与对应部分和以获得新部分和。20.如权利要求18所述的存储介质,其中累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由所述复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于所述当前卷积层不是最后卷积层,将所述激活子张量存储于所述处理器中用于所述神经网络的下一卷积层;以及响应于所述当前卷积层是所述最后卷积层,聚集来自所述可用处理器的复数个激活子张量以获得所述输出张量。

技术总结


用于均衡权重稀疏卷积处理的方法、系统、及装置,包含编码于计算机存储介质上的计算机程序。例示性方法包括:获得输入张量及复数个过滤器;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器;将复数个子张量及子过滤器分别指派给可用处理器;针对可用处理器中的每个可用处理器,迭代每个索引-值对且基于索引-值对来识别所指派的子张量中的对应输入值,以执行乘法及累加(MAC)运算从而产生部分和;通过在复数个处理器中间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加复数个部分和以获得输出张量。个部分和以获得输出张量。个部分和以获得输出张量。


技术研发人员:

肖志斌 严恩勖 王维 芦勇

受保护的技术使用者:

墨子国际有限公司

技术研发日:

2021.06.30

技术公布日:

2022/12/23

本文发布于:2024-09-23 19:25:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/47954.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:张量   复数   过滤器   卷积
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议