CN117273101A - 用于均衡权重稀疏卷积处理的方法及系统 - Google Patents
用于均衡权重稀疏卷积处理的方法及系统 Download PDFInfo
- Publication number
- CN117273101A CN117273101A CN202311292487.0A CN202311292487A CN117273101A CN 117273101 A CN117273101 A CN 117273101A CN 202311292487 A CN202311292487 A CN 202311292487A CN 117273101 A CN117273101 A CN 117273101A
- Authority
- CN
- China
- Prior art keywords
- sub
- filter
- filters
- tensor
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 109
- 238000012545 processing Methods 0.000 title claims abstract description 69
- 238000003860 storage Methods 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 50
- 238000013528 artificial neural network Methods 0.000 claims description 24
- 238000000638 solvent extraction Methods 0.000 claims description 21
- 238000013138 pruning Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 47
- 239000000872 buffer Substances 0.000 description 28
- 230000004913 activation Effects 0.000 description 20
- 238000001994 activation Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 20
- 239000004698 Polyethylene Substances 0.000 description 12
- -1 polyethylene Polymers 0.000 description 11
- 229920000573 polyethylene Polymers 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000011176 pooling Methods 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 210000004027 cell Anatomy 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 206010028980 Neoplasm Diseases 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 201000011510 cancer Diseases 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Abstract
用于均衡权重稀疏卷积处理的方法、系统、及装置,包含编码于计算机存储介质上的计算机程序。例示性方法包括:获得输入张量及复数个过滤器;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器;将复数个子张量及子过滤器分别指派给可用处理器;针对可用处理器中的每个可用处理器,迭代每个索引‑值对且基于索引‑值对来识别所指派的子张量中的对应输入值,以执行乘法及累加(MAC)运算从而产生部分和;通过在复数个处理器中间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加复数个部分和以获得输出张量。
Description
本申请是申请日为2021年6月30日、申请号为202180028639.9、发明名称为“用于均衡权重稀疏卷积处理的方法及系统”的发明专利申请的分案申请。
技术领域
本公开总地涉及人工智能,更具体地涉及均衡权重稀疏卷积处理。
背景技术
当前,神经网络(NN)是诸多现代人工智能(AI)应用(诸如,图像及视频辨识、推荐系统、分类、医疗图像分析、及自然语言处理)的基础。NN被用在从无人驾驶汽车及检测癌症到玩复杂游戏的各种使用场景中。典型NN可包括其中执行昂贵(在运算及能量方面)的卷积运算的一系列卷积层。
近年来,已开发出各种技术以通过将稀疏性引入NN中的卷积处理(诸如,修剪过滤器以减少非零权重的数目)来提高NN的计算效率。然而,既有的硬件架构依赖于通用计算引擎(例如,GPU),但是没有针对涉及具有稀疏权重(例如,有限数目个非零权重)的过滤器的卷积对通用计算引擎进行优化。这些架构无法将稀疏过滤器高效存储于存储器中或完全利用稀疏性来大规模地达到更高水平的并行性。因此,期望构建用于高效稀疏卷积的新颖系统架构。
发明内容
本说明书的各种实施例可包含用于均衡权重稀疏卷积处理及并行化的系统、方法、及非暂态计算机可读介质。
根据一方面,提供了用于均衡权重稀疏卷积处理及并行化的方法。该方法包括:获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重;将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(MAC)运算从而产生部分和;通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。
在一些实施例中,复数个子张量中的每个子张量包括与输入张量相同的通道数目。
在一些实施例中,该方法进一步包括:修剪复数个过滤器中的每个过滤器,使得该过滤器的每预定数目个通道包括相同数目个非零值。
在一些实施例中,每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。
在一些实施例中,基于索引-值对来识别所指派的子张量中的对应输入值以执行MAC运算从而产生部分和包括:基于索引-值对中的通道维度索引及宽度维度索引来识别所指派的子张量中的输入值;基于所识别的输入值及索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加点积与对应部分和以获得新部分和。
在一些实施例中,复数个过滤器中的每个过滤器包括通道维度、高度维度、及宽度维度,且将复数个过滤器中的每个过滤器分割成一个或多个子过滤器包括:将通道维度分成复数个通道群组;以及根据复数个通道群组来将过滤器分割成复数个子滤器,其中每个子过滤器对应于复数个通道群组之一。
在一些实施例中,根据通道群组来将过滤器分割成复数个子过滤器包括:根据复数个通道群组来将过滤器分割成复数个组块;以及沿高度维度分割复数个组块中的每个组块以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与过滤器共享宽度维度。
在一些实施例中,将复数个子张量中来自输入张量的相同水平面的子集分别指派给可用处理器的子集,且将复数个子过滤器指派给可用处理器包括:识别复数个子过滤器中来自相同过滤器但对应于不同通道群组的子集;以及将复数个子过滤器的该子集分别指派给可用处理器的该子集。
在一些实施例中,在复数个处理器之间轮换复数个子过滤器包括:通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将复数个子过滤器重新指派给可用处理器。
在一些实施例中,将通过执行MAC运算产生的部分和存储于能够由相邻处理器存取的处理器的累加缓冲器中。
在一些实施例中,累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于当前卷积层不是最后卷积层,将激活子张量存储于处理器中用于神经网络的下一卷积层;以及响应于当前卷积层是最后卷积层,聚集来自可用处理器的复数个激活子张量以获得输出张量。
根据另一方面,提供了用于均衡权重稀疏卷积处理及并行化的系统。该系统可包括一个或多个处理器及一个或多个非暂态计算机可读存储器,该一个或多个非暂态计算机可读存储器耦合至一个或多个处理器且配置有能够由一个或多个处理器执行以促使该系统执行包括以下各项的操作的指令:获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重;将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(MAC)运算从而产生部分和;通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。
根据又一方面,提供了用于均衡权重稀疏卷积处理及并行化的非暂态计算机可读存储介质。该介质可配置有可由一个或多个处理器执行以促使该一个或多个处理器执行包括以下各项的操作的指令:获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道;根据可用处理器的数目来将输入张量分割成复数个子张量;将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重;将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示;针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(MAC)运算从而产生部分和;通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器;以及累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。
在参考附图(所有附图构成本说明书的一部分,其中相同参考标号标示各图中的对应部分)考虑以下描述及随附权利要求后,本文中所揭示的系统、方法、及非暂态计算机可读介质的这些及其他特征以及相关结构组件及部分组合的操作方法及功能和制造的经济性将变得显而易见。然而,应明确理解,图式仅用于说明及描述的目的且不用于界定本发明的限制。
附图说明
图1绘示根据各种实施例的例示性卷积神经网络(CNN)。
图2绘示根据各种实施例的例示性卷积处理。
图3绘示根据各种实施例的用于分割输入张量及过滤器的例示性方法。
图4绘示根据各种实施例的用于存储子过滤器的非零权重的例示性存储器布局。
图5绘示根据各种实施例的用于均衡权重卷积处理的例示性系统图。
图6绘示根据各种实施例的用于均衡权重卷积处理的例示性系统架构。
图7绘示根据各种实施例的用于均衡权重卷积处理的处理实体的例示性图式。
图8A绘示根据各种实施例的用于并行均衡权重卷积处理的例示性流程图。
图8B绘示根据各种实施例的用于并行均衡权重卷积处理的另一例示性流程图。
图9绘示根据各种实施例的用于均衡权重卷积处理的示例方法。
图10绘示其中可实施本文中所描述的任何实施例的示例计算机系统。
具体实施方式
本文中所描述的实施例提供用于神经网络中的均衡权重稀疏卷积过程的方法、系统、装置。卷积过程可指用于从来自先前层的输入数据(诸如,从图像或音频波导出的特征图或从神经网络中的先前层输出的激活)提取特征的基本但计算昂贵的运算。卷积过程的输入数据可称为输入张量,且卷积过程的输出可称为输出张量。输入张量可包括多个通道的特征图。例如,RGB图像可表示为具有三个通道(红色通道、绿色通道、及蓝色通道)的输入张量,其中每个通道包括一特征图(例如,具有与原始RGB图像相同的大小但仅由红色、绿色、或蓝色之一制成的灰阶图像)。为了从输入张量提取特征,可以卷积(例如,滑动或移动)方式将一个或多个特征提取器(也称为过滤器)应用于输入张量。可在每个卷积步骤期间执行特征检测器(过滤器)与输入张量之间的乘法及累加(MAC)运算。随后可组装从卷积步骤产生的输出以形成卷积过程的输出张量。输出张量可成为神经网络的下一层的输入张量。在一些情况中,卷积层中可涉及多个输入张量。
在卷积过程期间,可通过引入大量零来修剪或稀疏化过滤器,以降低计算成本且提高推断速度。例如,可将过滤器中的20%以上或50%以上的值设定为零。本说明书中的一些实施例通过将稀疏化的过滤器高效存储于存储器高效布局中且并行化复数个处理实体(PE)(例如,处理器)上的卷积处理来利用过滤器稀疏性。
在一些实施例中,可首先根据可用于参与卷积处理的PE的数目来将输入张量分割成复数个子张量。每个子张量可被指派给复数个PE之一并贯穿卷积过程的多次迭代(对应于NN中的多个卷积层)都停留在该PE内而不替换出该PE的局部存储器/缓冲器。在卷积过程的每次迭代之后,可更新作为输入指派给PE的子张量且使其演进成输出,该输出可用作卷积过程的下一次迭代的输入。在一些实施例中,可出于存储器管理的目的而将经更新的子张量暂时替换出PE然后替换回PE用于下一次迭代。
在一些实施例中,可将每个稀疏过滤器分割成可存储于存储器高效布局中的复数个子过滤器。例如,在经过修剪及分割后,可按照每个子滤器包括相同数目个非零权重的方式来分割每个稀疏过滤器。因为非零权重均匀分布至复数个子过滤器中,所以使用这些子过滤器的卷积处理可称为均衡权重稀疏卷积。在一些实施例中,每个子过滤器内的非零权重可存储为索引-值对,这些索引-值对随后可被组合且存储为存储器内的固定数目个位或字节用于表示子过滤器。子过滤器的索引-值对表示可显著减小神经网络的存储器占用面积且使该解决方案适合于具有有限存储器资源的设备。例如,本文中所揭示的实施例可应用于边缘计算系统中的边缘设备。在一些实施例中,可将子过滤器指派给分别具有所指派的子张量以执行局部卷积运算的复数个PE。指派保证指派给不同PE的子张量及子过滤器对彼此独立,使得复数个PE可并行执行局部运算以提高性能。
上述分割及并行处理方案也是高度可扩缩的。在一些实施例中,每个回合的并行处理(也称为迭代)可产生复数个部分和,且复数个PE可执行多个回合的并行处理以累加在每个回合中产生的部分和且将累加结果组装为输出张量。在一些实施例中,可(在每个PE内)直接累加由每个PE跨多个回合产生的部分和,以在无需与其他PE交换数据的情况下产生输出张量的一部分。
在一些实施例中,子过滤器的指派可采用权重轮换机制,该机制在每个回合的并行处理之后在PE之间轮换子过滤器指派。这里,“权重”是指存储于每个子过滤器中的非零值。由此机制提供的益处是至少三重的:避免将同一子过滤器同时存储于多个PE中(例如,避免多次复制相同数据);并行化且减少从较高阶存储器(通常容量较大但速度较慢)的昂贵存储器读取的次数以从所有PE共享的全局缓冲器获得权重;以及允许利用相邻PE间的较快直接连接通道来执行子过滤器在每两个回合的并行处理之间的轮换。
在以下描述中,将参考图式来描述本发明的具体非限制性实施例。本文中所揭示的任何实施例的特定特征及方面可与本文中所揭示的任何其他实施例的特定特征及方面一起使用和/或组合。还应了解,这些实施例是通过举例方式给出的且仅说明本发明范围内的少数实施例。本发明所涉及领域的技术人员将明白的各种改变及修改被视为落在由随附权利要求进一步界定的本发明的精神、范围、及考虑内。
图1绘示根据各种实施例的例示性卷积神经网络(CNN)。CNN广泛用于包含图像理解、语音辨识、游戏设置、机器人在内的各种应用中且可采用包含其中进行卷积运算的卷积层在内的层的深层次结构。应注意,CNN仅用于说明目的,且本文中所揭示的实施例可应用于涉及卷积运算的其他神经网络。
图1中所绘示的示例神经网络100包括复数个层,诸如,第一卷积层120及第一ReLU(修正线性单元)层、第一池化层130、第二卷积层140及第二ReLU层、第二池化层150、平坦化层160、及完全连接(FC)层170。此示例神经网络100可被训练为对给定图像中的字母表与复数个已知字母表类别进行匹配。如图1中所展示,具有字母的图像110被馈送至神经网络100且通过复数个层进行变换。最后层(FC层170)最终产生表示输入图像110中的字母与每个已知字母表类别之间的类似度的复数个分数。
在一些实施例中,输入图像110可首先变换成输入张量。作为示例,如果输入图像110含有32*32个像素且每个像素具有三个色彩通道(红、绿、蓝),则其对应的输入张量可具有32*32*3的大小,其中高度为32、宽度为32、且深度(例如,通道的数目)为3。为易于描述,三个维度大小可称为HWC格式,其中H指输入张量的高度(例如,先前图像示例中的32),W指输入张量的宽度(例如,先前图像示例中的32),且C指输入张量中的通道的数目(例如,先前图像示例中的3)。在一些情况中,若存在用于卷积层的多个输入张量(例如,当存在输入至卷积层的多个图像或存在从先前层接收的多个输入激活张量时),每个输入张量可按照NHWC格式表示,其中N是指输入张量批次内的输入张量的索引。在以下描述中,除非另有明确说明,否则可为了简单而省略N(例如,假定仅存在一个输入张量)。扩展实施例以涵盖其中N>1的情况对于本领域技术人员可显而易见。
在一些实施例中,CNN可包含多个卷积层(例如,图1中的第一卷积层120及第二卷积层140)。卷积层在不丧失对于得到良好预测/分类而言至关重要的特征的情况下将输入张量(例如,原始输入张量或来自先前层的输入张量)简化成较易处理的格式。卷积层中的卷积处理中可涉及一个或多个特征检测器,例如,图像处理中的边缘检测器、曲线检测器。这些特征检测器可称为过滤器。每个过滤器可具有与输入张量相同数目个通道。为易于描述,本说明书使用术语“共享复数个通道”来表达每个过滤器及输入张量具有相同数目个通道。例如,输入张量是32*32*3矩阵,且示例过滤器可为3*3*3矩阵。卷积处理的详细解释可参考图2的描述。
CNN中的卷积层之后可跟随非线性激活函数,以将非线性引入至CNN中。例示性非线性激活函数包含S形(sigmoid)函数、双曲线正切函数、及修正线性单元(ReLU)。如图1中所展示,ReLU函数(也可称为ReLU层)跟在卷积层120及140中的每个卷积层之后。ReLU函数可应用元素激活函数来滤除由卷积层120或140产生的一些输出(激活)。例如,可采用max(0,x)函数来滤除卷积输出中的所有负激活且仅将正激活馈送至下一层。ReLU函数可不改变输出激活的大小但限制活动神经元的数目,因为将负激活全部清零以提高后续层的计算效率。
CNN也可包含一个或多个池化层,以提供降低输入张量的维度的各种计算。在图1中,神经网络100的第一池化层130及第二池化层150可各沿空间维度(高度及宽度)对输入张量执行下采样操作,但通常不改变深度维度(例如,通道的数目)。
神经网络中的完全连接(FC)层可学习由来自先前层((例如,图1中的池化层150或卷积层)的输出表示的高阶特征的非线性组合并相应地计算类别分数。参考图1,可首先将来自池化层150的输出平坦化成向量(例如,在平坦化层160中),FC层170可从该向量学习空间中的固有非学习函数以计算复数个类别的最终分数。每个分数可表示输入图像中的字母表与对应类别之间的量化类似度。
图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分别具有三个通道中的三个核)。
在一些情况中,卷积处理可涉及步幅及填充。例如,当步幅是1时,过滤器每次卷积(例如,移动、滑动)一个像素;且当步幅是2时,过滤器在其周围滑动时每次卷积两个像素。较大步幅产生空间较小的输出张量(输出张量中的H*W较小)。作用另一示例,当过滤器的空间大小(高度*宽度)大于1*1(例如,3*3或5*5)时,输入张量可围绕其边界填充零以应用过滤器且控制输出张量的空间大小,以(例如)保持输入张量的空间大小,使得输入及输出高度及宽度相同。在图2中,假定不对输入张量222执行填充且步幅是1。
在图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仅具有一个通道。
相比而言,卷积处理260涉及两个过滤器264及265。通过使过滤器264卷积穿过输入张量262,可判定输出张量268在第一通道中的值(例如,通道1中的2D输出特征图)。通过使过滤器265卷积穿过输入张量262,可判定输出张量268在第二通道中的值(例如,通道2中的2D输出特征图)。因此,所得到的输出张量268包括两个通道的2D输出特征图。
应注意,可并行化卷积处理期间的一些运算。例如,对一个过滤器执行的MAC运算独立于对另一过滤器执行的MAC运算,因为不同过滤器产生不同输出通道的2D输出特征图。作为另一示例,输入张量中的深度方向切片彼此独立,因为它们产生每个2D输出特征图上的不同位置的值。若可在复数个处理实体(例如,处理器、核心、或线程)间并行化所有这些运算,则可达成理论上的理想并行性。然而,因为真实世界应用可具有大量过滤器及巨量输入张量,所以追求理论上的理想并行性需要硬件具有难以企及的计算能力(例如,具有巨量处理实体及存储器交换机构)。下文中所揭示的实施例提供通过完全利用给定硬件的并行处理能力来达成理想并行性的方法(及对应系统、存储介质),其是更可扩缩及实际的方法。
图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表示。
在一些实施例中,可根据可用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处理。
在一些实施例中,可对过滤器342进行修剪或稀疏化,以限制其内的非零权重的数目。稀疏化的过滤器可在不显著丧失从输入张量提取特征的准确度的情况下极大提高计算效率。在一些实施例中,可以均衡方式修剪过滤器342,使得每预定数目个通道包括固定数目个非零权重。此均衡权重修剪可促进可扩缩并行处理的管线设计。用于达成此目标的例示性方式是将过滤器的通道维度分成复数个通道群组,且修剪每个通道群组内的非零权重的数目。例如,假定过滤器是张量或3(R)*3(S)*32(C),则可将32个通道分成四个通道群组,其中每个通道群组包含8个连续通道(例如,通道0至7、通道8至15)。修剪过程确保每个通道群组中的非零权重的数目相同。
在一些实施例中,在对过滤器进行修剪或稀疏化之后,可通过以下过程来分割每个过滤器:针对每个过滤器,将其通道维度分成复数个通道群组;以及根据复数个通道群组来将过滤器分割成复数个子过滤器,其中每个子过滤器对应于复数个通道群组之一。在一些实施例中,可首先根据复数个通道群组来将过滤器分割成复数个组块,然后沿其高度维度分割过滤器以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与原始过滤器共享宽度维度。
例如,可将过滤器分割成对应于复数个通道群组的复数个组块;且可沿高度维度进一步分割复数个组块中的每个组块以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与过滤器共享宽度维度。仍采用上述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)张量,其可在以下描述中表示为子张量。
参考图3中的例示性过滤器342,假设过滤器342具有沿其高度维度的复数个高度单元(R>1)、沿其宽度维度的复数个宽度单元(S>1)、及六个通道。在分割期间,可将六个通道分成三个通道群组324。接着,可将每个通道群组324分割成复数个1(H)*S*C子过滤器345(沿高度维度具有一个高度单元)。修剪过程确保每个子过滤器包括相同数目个非零权重,即使每个子过滤器内的非零权重的位置可不同。
图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)。
在一些实施例中,子过滤器的非零权重可表示为索引-值对。每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。为了说明,图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存储器布局来表示子过滤器可减小过滤器的存储器占用面积且简化并行卷积处理的设计。
在一些实施例中,可扩展位阵列440以适应对过滤器420执行的不同分割方式。例如,若通过分割过滤器所产生的子过滤器430是2(R)*3(S)*8(C)张量(例如,子过滤器430包括沿R维度的两个而非一个平面),则除C维度索引、S维度索引、及非零权重外,子过滤器430的索引-值对表示还可进一步包括R维度索引。
图5绘示根据各种实施例的用于均衡权重卷积处理的例示性系统图。图5中所展示的架构包括被设计为在神经网络被加载且运行时执行推断的计算机系统。在一些实施例中,此计算机系统被实施为硬件加速器500。硬件加速器500中的一些组件以特定方式协作以通过促进复数个处理实体上的并行卷积计算来提高神经网络的吞吐量及能量效率。加速器500仅是说明性的,且可包括更多、更少、或替代组件。硬件加速器500可被设计为可重配置的设备,诸如,现场可编程门阵列(FPGA)或专用集成电路(ASIC)。
如图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,其中每个PE 580可处置单位数量的卷积计算。
图6绘示根据各种实施例的用于均衡权重卷积处理的例示性系统架构600。系统架构600是图5中所展示的硬件加速器500的例示性实施方案。如图中所展示,系统架构600可包含芯片上网络总线接口612、多体权重缓冲器622、复数个PE(PE 0至PE 255)、O2I矩阵690、直接存储器访问(DMA)接口(其包含输入DMA接口613及输出DMA接口692)、及连接上述组件的复数条导线。系统架构600仅是说明性的,且取决于实施方案,系统架构600可包括更多、更少、或替代组件。为简单起见,图6中未展示架构600中的一些布线。
图6中的例示性系统架构600包括256个PE,从逻辑角度看,这些PE被布置为PE的32*8矩阵。这些PE中的每个PE可包含各种内部缓冲器,诸如,用于存储一个或多个输入子张量的iBuffer、用于存储一个或多个子过滤器的wBuffer、用于执行MAC运算的各种门(例如,至少乘法器及累加器)、用于存储部分结果的累加缓冲器、其他适合组件、或它们的任何组合。在一些实施例中,控制器(诸如,图5中的调度器570)可调度由每个PE执行的任务。每个PE可产生卷积过程的部分结果,部分结果可聚集形成输出张量。
在一些实施例中,图6中的芯片上网络总线接口612可接收执行卷积过程所需的输入张量及一个或多个过滤器。这些所接收的输入张量及过滤器可通过输入DMA接口613被发送至架构600中的组件。输入张量及过滤器可在到达芯片上网络总线接口612之前已经被分割。在其他实施例中,这些输入张量及过滤器在离开芯片上网络总线接口612之后但在被分布至复数个PE中之前被分割。在一些实施例中,芯片上网络总线接口612可将接收到的过滤器转发至多体权重缓冲器622。多体权重缓冲器622是过滤器中的非零权重被存储且分布至PE的位置。在一些实施例中,多体权重缓冲器622接收表示为位阵列的复数个经分割子过滤器且将这些位阵列分布至PE。
在输入张量被分割成复数个子张量之后,芯片上网络总线接口612可通过布线630来将复数个子张量分布(例如,通过广播来指派)至PE。在一些实施例中,每个PE可接收一个或多个子张量,其中每个子张量包括输入张量的所有通道。例如,针对具有32个通道的输入张量,每个PE可接收具有沿其高度维度的一个高度单元、沿其宽度维度的一个宽度单元、及沿其通道维度的输入张量的所有32个通道的(H)*1(W)*32(C)子张量(例如,图3中的输入张量322的子张量323)。依此方式,每个PE可在不在每个卷积过程之后替换出或返回部分结果的情况下在多个卷积过程(对应于NN中的多个卷积层)中持续使用并更新所接收的一个或多个子张量。
在一些实施例中,多体权重缓冲器622可通过布线640来将复数个子过滤器分布至复数个PE,供每个PE执行局部MAC运算。每个PE可具有用于存储所指派的子过滤器的局部先进先出(FIFO)权重缓冲器。若每个PE中的FIFO权重缓冲器不足够大,则每个PE可随着较旧的子过滤器被处理而提取(或多体权重缓冲器622可分布)新的子过滤器。
在一些实施例中,每个PE可具有与其在同一列的相邻PE的布线660(例如,双向布线),以共享存储于其缓冲器中的特定数据和/或从其相邻PE提取特定数据。这里,“特定数据”可指子张量的一部分。当卷积过程将步幅配置为大于1时,相邻PE之间需要数据共享。
在一些实施例中,同一行中的PE可与布线650连接,以轮换由它们中的各者获得的部分和。图6中的布线650的方向(PE0至PE32至PE64…至PE224及返回至PE0)是说明性的且可取决于实施方案而不同。例如,在图6中,在PE 224基于所指派的子张量及子过滤器完成其局部MAC运算且获得一个或多个中间结果之后,需要将这些中间结果与由PE190(图6中未展示)获得的部分和累加。其他行中的PE也可与类似于布线650的布线连接以轮换局部中间结果。
在一些实施例中,由每个PE获得的MAC运算结果可通过布线670A被聚集且通过去往芯片上网络总线接口612的输出DMA接口692被返回至高阶存储器/缓冲器。例如,若当前卷积过程对应于NN中的最后卷积层,则MAC运算结果可被聚集至输出张量中以通过DMA接口被返回。在一些实施例中,MAC运算结果可通过布线670B被聚集且在O2I矩阵682中重新组织以产生输出张量。在一些实施例中,O2I矩阵682可针对每行PE输出累加数据。这些累加数据最终可形成输出张量。图6中的布线670A及670B仅是说明性的且是为了易于参考。在一些实施例中,复数个PE中的每个PE可具有用于输出其局部MAC运算结果的670A布线和/或670B布线。
图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可包括更多、更少、或替代组件或具有不同管线。
如上文所描述,PE 700可基于一个或多个输入子张量及来自一个或多个子过滤器的复数个非零权重来执行局部卷积处理。PE 700可通过激活输入布线712来从高阶存储器(诸如,图5中的全局缓冲器550)接收输入子张量且将它们存储于其iBuf 730中。在一些实施例中,iBuf 730可从MUX 720接收索引或一组索引用于识别期望的输入值或输入子张量。基于控制器或调度器(诸如,图5中的调度器570),MUX 720可从iBuf 730的复数个输入选项中选择一个输入用于识别期望的输入值或输入子张量。例如,MUX 720的复数个输入选项可包含由相邻PE(例如,类似于图6中的PE矩阵的矩阵中的PE 700下方的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。
在一些实施例中,指派给PE 700的非零权重710为索引-值对的形式。索引-值对格式的详细描述可参考图4的描述。例如,每个非零权重710可表示为包括通道维度索引(表示为C维度索引)、宽度维度索引(表示为S维度索引)、及非零权重的值的复数个位(例如,16个位或32个位)。非零权重的C维度索引及S维度索引可用于识别来自iBuf 730的对应输入值用于参与MAC运算。例如,非零权重710位于通道C中且位于位置S处,其对应于输入子张量中的通道C及位置S处的输入值。如图7中所展示,非零权重710的两个索引可通过布线716被馈送至MUX 720中。
为了执行MAC运算,从iBuf 730撷取的输入值及非零权重710的值可被馈送至乘法器740中。结果(例如,非零权重及对应输入值的乘积)可被馈送至累加器750中。累加器750对乘积与先前计算的部分和累加以形成新部分和。例如,先前计算的部分和及乘积可来自相同子张量但不同通道。如图中所展示,先前计算的部分和可由MUX 745从以下两个选项选择:从相邻PE的ABuf轮换的部分和744(例如,通过图6中的轮换布线650)及选自其局部ABuf760的部分和746。在一些实施例中,MUX 745可在局部MAC运算完成之前首先保持从其局部ABuf 760选择部分和746,然后选择从相邻PE轮换的部分和744。在此,局部MAC运算是指基于指派给PE 700的非零权重710的MAC运算。
在一些实施例中,由累加器750产生的累加结果可存储于ABuf760中(例如,通过替换较旧版本的部分和)。在一些实施例中,累加结果可通过用于激活的ReLU单元770及用于减少结果中的位的数目的量化单元780,使得其可通过布线782被存储于iBuf 730中。在一些实施例中,ReLu单元770及量化单元780可为选用的。
图8A绘示根据各种实施例的用于并行均衡权重卷积处理的例示性流程图。输入张量/过滤器的上述分割及过滤器的均衡权重表示允许并行卷积处理。在一些实施例中,复数个PE托管复数个输入子张量,且基于局部存储的(一个或多个)子张量及(一个或多个)指派的子过滤器来执行局部MAC运算。因为一个PE的MAC运算不取决于另一PE的结果,所以复数个PE之间不存在依赖性,因此,卷积过程自然地变成并行。然而,将子过滤器随机指派给复数个PE无法产生最佳的并行处理效率。
如上文所提及,可通过以下过程来分割过滤器:针对每个过滤器,将其通道维度分成复数个通道群组;以及根据复数个通道群组来将过滤器分割成复数个子过滤器,其中每个子过滤器对应于复数个通道群组之一。在一些实施例中,可首先根据复数个通道群组来将过滤器分割成复数个组块,然后沿其高度维度分割过滤器以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与原始过滤器共享宽度维度。在将子张量及子过滤器指派给复数个PE的过程期间,将复数个输入子张量中来自输入张量的相同水平面的子集分别指派给PE的子集(例如,图6中的一行PE),且可通过以下操作来将复数个子过滤器指派给该PE子集:识别复数个子过滤器中来自相同过滤器但对应于不同通道群组的子集;以及将复数个子过滤器的该子集分别指派给该PE子集。
如图8A中所展示,示例输入张量802具有1*3*6的大小,其中高度为1,宽度为3,且通道的数目为6。可沿宽度维度将输入张量802分割成三个组块1、2、3,其中第一组块由图8A中的输入张量802的阴影区域表示。可沿通道维度将每个组块进一步分成三个区段,其中每个区段具有1*1*2的大小。即,将每个组块中的六个通道分成三个通道群组。每个区段可表示为Ix,y,其中x指输入张量中的2D输入特征图上的位置,且y指通道群组索引。在以下描述中,1*1*2区段被视为子张量。
在真实世界应用中,每个卷积过程中可涉及复数个过滤器。为易于参考及描述,图8A中仅展示一个过滤器804(大小为1*1*6)以展现如何将子过滤器分布至PE。假定将过滤器804的通道类似地分成三个通道群组,即,三个1*1*2子过滤器。每个子过滤器表示为Wy,k,其中y是指子过滤器所在的通道群组,且k是指子过滤器所属的过滤器804的识别符。例如,W1,k是指在通道群组1中且属于过滤器k(在此,过滤器804)的子过滤器。
在分割输入张量802及过滤器804之后,将子张量及子过滤器指派给复数个PE用于多个回合的并行处理。图8A绘示将子张量及子过滤器指派给复数个PE的两种方法:朴素方法820;及权重轮换方法810。在两种方法中,三个PE被用于多个回合的并行处理。
在朴素方法820中,在第一回合的并行处理(t=1)期间,PE1、PE2及PE3分别处置来自第一通道群组的子张量且分别被指派以I1,1*W1,k、I2,1*W1,k及I3,1*W1,k。即,相同的子过滤器W1,k由PE1、PE2及PE3用以产生乘法结果。在此,“*”是指乘法运算。在第二回合的并行处理(t=2)期间,PE1、PE2及PE3分别处置来自第二通道群组的子张量且分别被指派以I1,2*W2,k、I2,2*W2,k及I3,2*W2,k。即,相同的子过滤器W2,k由PE1、PE2及PE3用以产生乘法结果。类似地,在第三回合的并行处理(t=3)期间,PE1、PE2及PE3分别处置来自第三通道群组的子张量且分别被指派以I1,3*W3,k、I2,3*W3,k及I3,3*W3,k。即,相同的子过滤器W3,k由PE1、PE2及PE3用以产生乘法结果。在三个回合的并行处理之后,可累加由PE1产生的乘法结果以产生输入张量802的第一(左)1*1*6张量与1*1*6过滤器804的部分和A1,k(用于下一NN层的激活)。类似地,可累加由PE2产生的MAC结果以产生输入张量802的第二(中间)1*1*6张量与1*1*6过滤器804的部分和A2,k,且可累加由PE3产生的MAC结果以产生输入张量802的第三(右)1*1*6张量与1*1*6过滤器804的部分和A3,k。随后,可将这些部分和组装为输出张量830。
在一些实施例中,图8A中的权重轮换方法810可包括通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将复数个子过滤器重新指派给可用处理器。如图8A中所展示,在使用权重轮换方法810的第一回合的并行处理(t=1)期间,PE1、PE2及PE3分别处置来自所有三个通道群组的三个子张量且被分别指派以I1,1*W1,k、I2,2*W2,k及I3,3*W3,k。在第二回合的并行处理(t=2)期间,轮换指派给PE1、PE2及PE3的权重(图8A中的左轮换)。如图8A中所展示,当t=2时,PE1、PE2及PE3分别被指派以I1,2*W2,k、I2,3*W3,k及I3,1*W1,k。类似地,当t=3时,PE1、PE2及PE3分别被指派以I1,3*W3,k、I2,1*W1,k及I3,2*W2,k。即,一个子过滤器在第一回合期间被指派给PEx,且在第二回合期间被轮换至PEx-1,且在第三回合期间被进一步轮换至PEx-2。在三个回合的并行处理之后,可累加由PE1、PE2及PE3中的各者产生的乘法结果以产生部分和。随后,可将这些部分和组装为输出张量830。
在朴素方法820及权重轮换方法810的比较中,朴素方法820可能需要在每个回合的并行处理期间针对三个PE复制相同子过滤器三次,且在每个回合之后,三个PE可能需要从较高阶存储器(例如,图5中的芯片外DDR存储器520或图6中的I-cache 610)提取下一权重。因为顺序处理三个回合,所以顺序从较高阶存储器提取这些权重。从较高阶存储器存取数据通常是昂贵且缓慢的。相比而言,权重轮换方法810可在第一回合的并行处理期间提取所有三个权重。此存储器提取步骤可并行执行(例如,每个PE读取其指派的权重)。针对后续回合,权重在PE之间轮换而非从更高阶存储器提取。因为权重在PE之间的轮换发生于较低阶存储器系统中,所以其可产生较快的速度及较少的能量成本。在一些实施例中,相邻PE可通过直接通道连接来交换高速缓存的数据,这可进一步促进权重轮换。
图8B绘示根据各种实施例的并行均衡权重卷积处理的另一例示性流程图。图8B中的流程图是图8A中的权重轮换方法的通用版本。在此示例中执行的MAC运算涉及一批次的输入张量(其包括N个输入张量)及一群组的过滤器。将每个输入张量的通道分割成复数个通道群组,通道群组表示为Gc(通道群组或通道群组的数目),其中每个Gc包括Cg(每群组的通道)个通道;且将输入张量的2D输入特征图分割成Gh*Gw(高度群组*宽度群组)个分段;类似地根据复数个通道群组Gc来分割过滤器的通道。
使用上述表示,由对N个输入张量及过滤器的MAC运算产生的总和的总数是B=N*Gh*Gw。正式言之,总和可由以下公式表示:
其中m是指Gc(通道群组的数目),i是指B个总和中的第i总和,j是指m个通道群组中的第j通道群组,k是指过滤器的识别符,I是指由i及j识别的子张量,w是指由j及k识别的子过滤器,A是指由i及k索引的总和(例如,将放置于输出张量的通道k中的2D特征图中的位置i处的激活)。
在一些实施例中,并行卷积处理可开始于将B个总和分成复数个群组,其中每个群组包括(产生)m个总和。为了产生m个总和,可执行m个回合的并行处理。在每个回合的并行处理期间,使用m个PE来根据m个子张量及m个子过滤器到m个PE的指派来并行计算m个部分和。在两个连续回合的并行处理期间,可使m个子过滤器在PE之间轮换。
图8B中的图式绘示用于复数个总和群组之一的并行处理的多个(m个)回合。在第一回合(t=1)期间,将来自一个通道群组的一个子张量及一个子过滤器指派给m个PE中的每个PE,但不同PE处置不同通道群组(即,没有两个PE处置相同通道群组)。如图中所展示,当t=1时,PE1处置第一通道群组(I1,1及W1,k来自通道群组1),且PE2处置第二通道群组(I2,2及W2,k来自通道群组2)。此外,不同PE处置来自输入张量的2D特征图的不同位置的子张量(即,没有两个PE处置来自2D特征图上的相同位置的子张量)。如图中所展示,当t=1时,PE1处置2D特征图上的位置1处的I1,1,且PE2处置2D特征图上的位置2处的I2,2。
在第二回合(t=2)期间,在m个PE之间轮换子过滤器的指派。例如,使W2,k从PE2(在第一回合期间)轮换至PE1(在第二回合期间)。正式言之,使在第i回合期间指派给PEi的Wi,k在第i+1回合期间轮换至PEi-1。针对后续回合(t=3、…、m),使权重沿相同方向轮换。应注意,使指派给第一PE的子过滤器轮换至最后PE。
在每个回合的并行处理之后,每个PE可通过对所指派的子张量及子过滤器执行MAC运算来产生部分和。在m个回合的并行处理期间,可对由每个PE产生的m个部分和累加以在完成m个回合之后最终产生点积(即,待组装成输出张量的总和)。如图8B中所展示,可在PE1累加其在每个回合的并行处理产生的部分和之后收集总和A1,k。
图9绘示根据各种实施例的用于均衡权重卷积处理的示例方法。方法900可由用于优化资源分配的设备、装置、或系统执行。方法900可由图1至图8绘示的环境或系统中的一个或多个模块/组件(诸如,图5中的硬件加速器500及处理实体(PE)580)执行。下文呈现的方法900的操作是说明性的。取决于实施方案,方法900可包含按各种顺序或并行执行的额外、更少、或替代步骤。
区块910包含获得输入张量及复数个过滤器,其中输入张量及复数个过滤器具有相同数目个通道。
区块920包含根据可用处理器的数目来将输入张量分割成复数个子张量。在一些实施例中,复数个子张量中的每个子张量包括与输入张量相同的通道数目。
区块930包含将复数个过滤器中的每个过滤器分割成一个或多个子过滤器以获得复数个子过滤器,其中复数个子过滤器均包括相同数目个非零权重。在一些实施例中,复数个过滤器中的每个过滤器包括通道维度、高度维度、及宽度维度,且将复数个过滤器中的每个过滤器分割成一个或多个子滤器包括:将通道维度分成复数个通道群组;以及根据复数个通道群组来将过滤器分割成复数个子过滤器,其中每个子过滤器对应于复数个通道群组之一。在一些实施例中,根据通道群组来将过滤器分割成复数个子过滤器包括:根据复数个通道群组来将过滤器分割成复数个组块;以及沿高度维度分割复数个组块中的每个组块以获得复数个子过滤器,其中复数个子过滤器中的每个子过滤器与过滤器共享宽度维度。
区块940包含将复数个子张量及复数个子过滤器分别指派给可用处理器,其中复数个子过滤器中的每个子过滤器由将该子过滤器的非零权重存储为索引-值对的紧凑存储器布局表示。在一些实施例中,每个索引-值对包括通道维度索引、宽度维度索引、及对应非零权重。在一些实施例中,将复数个子张量中来自输入张量的相同水平面的子集分别指派给可用处理器的子集,且将复数个子过滤器指派给可用处理器包括:识别复数个子过滤器中来自相同过滤器但对应于不同通道群组的子集;以及将复数个子过滤器的该子集分别指派给可用处理器的该子集。
区块950包含:针对可用处理器中的每个可用处理器,迭代所指派的复数个子过滤器的紧凑存储器布局中的每个索引-值对且基于该索引-值对来识别所指派的子张量中的对应输入值以执行乘法及累加(MAC)运算从而产生部分和。在一些实施例中,基于索引-值对来识别所指派的子张量中的对应输入值以执行MAC运算从而产生部分和包括:基于索引-值对中的通道维度索引及宽度维度索引来识别所指派的子张量中的输入值;基于所识别的输入值及索引-值对中的对应非零权重来执行乘法运算以获得点积;以及累加点积与对应部分和以获得新部分和。在一些实施例中,将通过执行MAC运算所产生的部分和存储于能够由相邻处理器存取的处理器的累加缓冲器中。
区块960包含通过在复数个处理器之间轮换复数个子过滤器来将复数个子过滤器重新指派给可用处理器。在一些实施例中,在复数个处理器之间轮换复数个子过滤器包括:通过使指派给第i处理器的子过滤器轮换至第(i+1)处理器来将复数个子过滤器重新指派给可用处理器。
区块970包含累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量。在一些实施例中,累加由复数个处理器中的每个处理器产生的复数个部分和以获得输出张量包括:在神经网络的当前卷积层期间,累加由复数个处理器中的每个处理器产生的复数个部分和以获得激活子张量;响应于当前卷积层不是最后卷积层,将激活子张量存储于处理器中用于神经网络的下一卷积层;以及响应于当前卷积层是最后卷积层,聚集来自可用处理器的复数个激活子张量以获得输出张量。
在一些实施例中,方法900可进一步包括:修剪复数个过滤器中的每个过滤器,使得过滤器的每预定数目个通道包括相同数目个非零值。
图10绘示其中可实施本文中所描述的任何实施例的示例计算设备。计算设备可用于实施图1至图9中所展示的系统及方法的一个或多个组件。计算设备1000可包括总线1002或用于传送信息的其他通信机构及与总线1002耦合用于处理信息的一个或多个硬件处理器1004。(一个或多个)硬件处理器1004可为(例如)一个或多个通用微处理器。
计算设备1000还可包含耦合至总线1002用于存储信息及由(一个或多个)处理器1004执行的指令的主存储器1007,诸如,随机存取存储器(RAM)、高速缓存、和/或其他动态存储设备。主存储器1007还可用于在由(一个或多个)处理器1004执行的指令的执行期间存储暂时变量或其他中间信息。这些指令在存储于(一个或多个)处理器1004可存取的存储介质中时可使得计算设备1000变成被定制为执行指令中所指定的操作的专用机器。主存储器1007可包含非易失性介质及/或易失性介质。非易失性介质可包含(例如)光盘或磁盘。易失性介质可包含动态存储器。常见形式的介质可包含(例如)软盘、挠性判、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、DRAM、PROM及EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒、或它们的联网版本。
计算设备1000可使用定制化的硬布线逻辑、一个或多个ASIC或FPGA、固件、和/或程序逻辑(它们与计算设备组合可促使计算设备1000成为或将计算设备1000编程为专用机器)来实施本文中所描述的技术。根据一个实施例,本文技术由计算设备1000响应于(一个或多个)处理器1004执行主存储器1007中所含的一个或多个指令的一个或多个序列而执行。这些指令可从另一存储介质(诸如,存储设备1009)读取至主存储器1007中。执行主存储器1007中所含的指令序列可促使(一个或多个)处理器1004执行本文中所描述的过程步骤。例如,本文中所揭示的过程/方法可由存储于主存储器1007中的计算机程序指令实施。当这些指令由(一个或多个)处理器1004执行时,它们可执行对应图中所展示及上文所描述的步骤。在替代实施例中,硬布线电路系统可代替或结合软件指令使用。
计算设备1000还包含耦合至总线1002的通信接口1010。通信接口1010可提供到连接至一个或多个网络的一个或多个网络链路的双向数据通信耦合。作为另一示例,通信接口1010可为局域网(LAN)卡,其提供到兼容LAN(或与WAN通信的WAN组件)的数据通信连接。也可实施无线链路。
某些操作的执行可在处理器之间分布而不仅驻留于单一机器内,也可跨数个机器部署。在一些示例实施例中,处理器或处理器实施的引擎可位于单一地理位置中(例如,在家庭环境、办公环境、或服务器场内)。在其他示例实施例中,处理器或处理器实施的引擎可跨数个地理位置分布。
上述章节中所描述的过程、方法、及算法中的各者可完全或部分自动体现于由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中。过程及算法可部分或完全实施于专用电路系统中。
当本文中所揭示的功能以软件功能单元的形式实施且作独立产品售卖或使用时,它们可存储于处理器可执行的非易失性计算机可读存储介质中。本文中所揭示的特定技术解决方案(全部或部分)或对当前技术做出贡献的方面可以软件产品的形式体现。软件产品可存储于存储介质中,包括促使计算设备(其可为个人计算机、服务器、网络设备等)执行本申请的实施例的方法的所有或一些步骤的数个指令。存储介质可包括闪存驱动器、便携式硬盘驱动器、ROM、RAM、磁盘、光盘、可操作以存储程序代码的其他介质、或它们的任何组合。
特定实施例进一步提供包括处理器及存储指令的非暂态计算机可读存储介质的系统,所述指令可由处理器执行以促使系统执行对应于上文所揭示的实施例的任何方法中的步骤的操作。特定实施例进一步提供配置有指令的非暂态计算机可读存储介质,所述指令可由一个或多个处理器执行以促使该一个或多个处理器执行对应于上文所揭示的实施例的任何方法中的步骤的操作。
本文中所揭示的实施例可通过与客户端交互的云平台、服务器、或服务器群组(下文中统称为“服务系统”)来实施。客户端可为终端设备或用户在平台注册的客户端,其中终端设备可为移动终端、个人计算机(PC)、及可安装有平台应用程序的任何设备。
上文所描述的各种特征及过程可彼此独立使用或可按各种方式组合。所有可能的组合及子组合意欲落在本公开的范围内。另外,在一些实施方案中可省略某些方法或过程区块。本文中所描述的方法及过程也不受限于任何特定顺序,且与其相关的区块或状态可按其他适当顺序执行。例如,所描述的区块或状态可按除所具体揭示的顺序之外的顺序执行,或多个区块或状态可组合于单一区块或状态中。示例区块或状态可连续、并行、或按某一其他方式执行。区块或状态可被添加到所揭示的示例实施例或从所揭示的示例实施例移除。本文中所描述的例示性系统及组件可不同于本文中所描述地配置。例如,元件可被添加至所揭示的示例实施例、从所揭示的示例实施例移除、或相较于所揭示的示例实例重新配置。
本文中所描述的例示性方法的各种操作可至少部分由算法执行。算法可包括在存储于存储器(例如,上述非暂态计算机可读存储介质)中的程序代码或指令中。此算法可包括机器学习算法。在一些实施例中,机器学习算法可不明确将计算机编程为执行功能但可从训练数据学习以产生执行功能的预测模型。
本文中所描述的例示性方法的各种操作可至少部分由被暂时性配置(例如,由软件)或永久性配置为执行相关操作的一个或多个处理器执行。不管被暂时还是永久性配置,这些处理器可构成操作以执行本文中所描述的一个或多个操作或功能的处理器实施的引擎。
类似地,本文中所描述的方法可至少部分是处理器实施的,其中一个或多个特定处理器是硬件的示例。例如,方法的至少一些操作可由一个或多个处理器或处理器实施的引擎执行。此外,一个或多个处理器也可操作以支持相关操作在“云计算”环境中的执行或作为“软件即服务”(SaaS)执行。例如,至少一些操作可由计算机群组(作为包含处理器的机器的示例)执行,其中这些操作可经由网络(例如,因特网)并经由一个或多个适当接口(例如,应用程序接口(API))来存取。
某些操作的执行可在处理器之间分布而不仅驻留于单一机器内,而跨数个机器部署。在一些示例实施例中,处理器或处理器实施的引擎可位于单一地理位置中(例如,在家庭环境、办公环境、或服务器场内)。在其他示例实施例中,处理器或处理器实施的引擎可跨数个地理位置分布。
在整个本说明书中,复数例项可实施描述为单一例项的组件、操作、或结构。尽管一种或多种方法的个别操作被绘示及描述为单独操作,但一个或多个个别操作可同时执行,且无需依所绘示的顺序执行操作。在示例配置中呈现为单独组件的结构及功能可实施为组合结构或组件。类似地,呈现为单一组件的结构及功能可实施为单独组件。这些及其他变动、修改、添加、及改良落在本主题的范围中。
如本文中所使用,除非上下文另有明确指示或另有指示,否则“或”是包含性而非排他性的。因此,在本文中,除非上下文另有明确指示或另有指示,否则“A、B、或C”意味着“A、B、C、A及B、A及C、B及C、或A、B及C”。此外,除非上下文另有明确指示或另有指示,否则“及”是结合及分别的。因此,在本文中,除非上下文另有明确指示或另有指示,否则“A及B”意味着“A及B,结合地或分别地”。可提供本文中所描述的资源、操作、或结构的复数个例项作为单一例项。另外,各种资源、操作、引擎、及数据存储区之间的边界是略微任意的,且在具体说明性配置的上下文中绘示特定操作。其他功能分配是可预见的且可落于本公开的各种实施例的范围内。一般而言,在示例配置中呈现为单独资源的结构及功能可实施为组合结构或资源。类似地,呈现为单一资源的结构及功能可实施为不同资源。这些及其他变动、修改、添加、及改良落在由随附权利要求表示的本公开的实施例的范围内。因此,本说明书及图式应被视为说明性而非限制性的。
术语“包含”或“包括”用于指示存在随后宣告的特征,而不排除添加其他特征。除非另有具体说明或在所使用的上下文中依其他方式理解,否则诸如“可”、“可以”、“能够”、“可能”的条件语言一般意欲传达某些实施例包含而其他实施例不包含某些特征、组件、及/或步骤。因此,这些条件语言一般绝不意欲隐含地表示一个或多个实施例需要特征、组件、及/或步骤或一个或多个实施例必须包含用于在具有或不具有用户输入或提示的情况下决定这些特征、元件、及/或步骤是否包含于或执行于任何特定实施例中的逻辑。
尽管已参考具体示例实施例描述本主题的概观,但可在不背离本公开的实施例的较广范围的情况下对这些实施例作出各种修改及改变。若事实上揭示一个以上实施例,则本主题的这些实施例在本文中可分别或统一称为术语“发明”,此仅为方便起见而非意欲将本申请的范围自动限制于任何单一揭示的内容或概念。
本文中所绘示的实施例被足够详细地描述以使本领域技术人员能够实践所揭示的教导。其他实施例可被使用且从其导出,使得可在不背离本公开的范围的情况下作出结构及逻辑替代及改变。因此,“实施方式”不意在限制,且各种实施例的范围仅由随附权利要求及这些权利要求授权的等同物的全范围界定。
Claims (17)
1.一种计算机实施的方法,包括:
在神经网络中的一层获得输入张量及复数个过滤器;
将所述输入张量分割成复数个子张量;
针对所述复数个过滤器中的每个过滤器,修剪所述过滤器,其中所述修剪包括:将所述过滤器的通道维度划分成复数个通道群组,每个通道群组包括所述过滤器的相同数目的两个或更多个连续通道,并且修剪所述过滤器使得:(1)所述过滤器中的每个通道群组包括相同数目的一个或多个非零权重,并且(2)所述过滤器中的所有非零权重平均分布在所述过滤器中的所述复数个通道群组中,其中所述修剪包括将一个或多个非零权重设置为零;
将每个过滤器的复数个通道群组中的每个通道群组中的非零权重存储为索引-值对;
根据复数个经修剪的通道群组来将所述复数个过滤器中的每个过滤器分割成复数个子过滤器,其中所述复数个子过滤器中的每个子过滤器包括相同数目个非零权重,并且相应的索引-值对占用相同数目个位;以及
将所述复数个子张量及所述复数个子过滤器指派给复数个处理器用于并行卷积处理。
2.如权利要求1所述的方法,其中,所述方法进一步包括通过以下处理执行所述并行卷积处理:
通过所述复数个处理器中的每个处理器,迭代指派给所述处理器的子过滤器的每个非零权重;以及
通过所述处理器,识别指派给所述处理器的子张量中的相应输入值以执行乘法及累加(MAC)运算。
3.如权利要求1所述的方法,其中,所述方法进一步包括通过以下处理执行所述并行卷积处理:
针对存储为索引-值对的每个非零权重,在由表示每个非零权重的索引-值对的通道维度索引和宽度维度索引识别的位置处识别所指派的子张量中的相应输入值。
4.如权利要求1所述的方法,进一步包括:
在所述复数个处理器之间轮换所述复数个子过滤器。
5.如权利要求1所述的方法,其中,根据复数个经修剪的通道群组来将所述复数个过滤器中的每个过滤器分割成复数个子过滤器包括:
根据所述复数个经修剪的通道群组来将所述过滤器分割成复数个组块;以及
将所述复数个组块中的每个组块分割成复数个水平面。
6.如权利要求5所述的方法,进一步包括:
修剪所述复数个水平面,使得所述复数个水平面中的每个水平面包括相同数目个非零权重。
7.如权利要求1所述的方法,其中,在所述并行卷积处理之后,所述复数个处理器生成复数个部分和,并且所述方法进一步包括:
累加所述复数个部分和以获得输出张量;以及
馈送所述输出张量作为所述神经网络的下一层的输入张量。
8.一种系统,包括:
复数个处理器;以及
一个或多个非暂态计算机可读存储器,耦合到所述复数个处理器并且被配置以能够由所述复数个处理器执行以促使所述系统执行包括以下各项的操作的指令:
在神经网络中的一层获得输入张量及复数个过滤器;
将所述输入张量分割成复数个子张量;
针对所述复数个过滤器中的每个过滤器,修剪所述过滤器,其中所述修剪包括:将所述过滤器的通道维度划分成复数个通道群组,每个通道群组包括所述过滤器的相同数目的两个或更多个连续通道,并且修剪所述过滤器使得:(1)所述过滤器中的每个通道群组包括相同数目的一个或多个非零权重,并且(2)所述过滤器中的所有非零权重平均分布在所述过滤器中的所述复数个通道群组中,其中所述修剪包括将一个或多个非零权重设置为零;
将每个过滤器的复数个通道群组中的每个通道群组中的非零权重存储为索引-值对;
根据复数个经修剪的通道群组来将所述复数个过滤器中的每个过滤器分割成复数个子过滤器,其中所述复数个子过滤器中的每个子过滤器包括相同数目个非零权重,并且相应的索引-值对占用相同数目个位;以及
将所述复数个子张量及所述复数个子过滤器指派给复数个处理器用于并行卷积处理。
9.如权利要求8所述的系统,其中,所述操作进一步包括通过以下处理执行所述并行卷积处理:
通过所述复数个处理器中的每个处理器,迭代指派给所述处理器的子过滤器的每个非零权重;以及
通过所述处理器,识别指派给所述处理器的子张量中的相应输入值以执行乘法及累加(MAC)运算。
10.如权利要求8所述的系统,其中,所述操作进一步包括通过以下处理执行所述并行卷积处理:
针对存储为索引-值对的每个非零权重,在由表示每个非零权重的索引-值对的通道维度索引和宽度维度索引识别的位置处识别所指派的子张量中的相应输入值。
11.如权利要求8所述的方法,其中,根据复数个经修剪的通道群组来将所述复数个过滤器中的每个过滤器分割成复数个子过滤器包括:
根据所述复数个经修剪的通道群组来将所述过滤器分割成复数个组块;以及
将所述复数个组块中的每个组块分割成复数个水平面。
12.如权利要求11所述的系统,其中,所述操作进一步包括:
修剪所述复数个水平面,使得所述复数个水平面中的每个水平面包括相同数目个非零权重。
13.如权利要求8所述的系统,其中,在所述并行卷积处理之后,所述复数个处理器生成复数个部分和,并且所述操作进一步包括:
累加所述复数个部分和以获得输出张量;以及
馈送所述输出张量作为所述神经网络的下一层的输入张量。
14.一种非暂态计算机可读存储介质,被配置以能够由复数个处理器执行以促使所述复数个处理器执行包括以下各项的操作的指令:
在神经网络中的一层获得输入张量及复数个过滤器;
将所述输入张量分割成复数个子张量;
针对所述复数个过滤器中的每个过滤器,修剪所述过滤器,其中所述修剪包括:将所述过滤器的通道维度划分成复数个通道群组,每个通道群组包括所述过滤器的相同数目的两个或更多个连续通道,并且修剪所述过滤器使得:(1)所述过滤器中的每个通道群组包括相同数目的一个或多个非零权重,并且(2)所述过滤器中的所有非零权重平均分布在所述过滤器中的所述复数个通道群组中,其中所述修剪包括将一个或多个非零权重设置为零;
将每个过滤器的复数个通道群组中的每个通道群组中的非零权重存储为索引-值对;
根据复数个经修剪的通道群组来将所述复数个过滤器中的每个过滤器分割成复数个子过滤器,其中所述复数个子过滤器中的每个子过滤器包括相同数目个非零权重,并且相应的索引-值对占用相同数目个位;以及
将所述复数个子张量及所述复数个子过滤器指派给复数个处理器用于并行卷积处理。
15.如权利要求14所述的非暂态计算机可读存储介质,其中,所述操作进一步包括通过以下处理执行所述并行卷积处理:
通过所述复数个处理器中的每个处理器,迭代指派给所述处理器的子过滤器的每个非零权重;以及
通过所述处理器,识别指派给所述处理器的子张量中的相应输入值以执行乘法及累加(MAC)运算。
16.如权利要求14所述的非暂态计算机可读存储介质,其中,根据复数个经修剪的通道群组来将所述复数个过滤器中的每个过滤器分割成复数个子过滤器包括:
根据所述复数个经修剪的通道群组来将所述过滤器分割成复数个组块;以及
将所述复数个组块中的每个组块分割成复数个水平面。
17.如权利要求16所述的非暂态计算机可读存储介质,其中,所述操作进一步包括:
修剪所述复数个水平面,使得所述复数个水平面中的每个水平面包括相同数目个非零权重。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/917,256 US11113601B1 (en) | 2020-06-30 | 2020-06-30 | Method and system for balanced-weight sparse convolution processing |
US16/917,256 | 2020-06-30 | ||
PCT/CN2021/103746 WO2022002157A1 (en) | 2020-06-30 | 2021-06-30 | Method and system for balanced-weight sparse convolution processing |
CN202180028639.9A CN115516459B (zh) | 2020-06-30 | 2021-06-30 | 用于均衡权重稀疏卷积处理的方法及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180028639.9A Division CN115516459B (zh) | 2020-06-30 | 2021-06-30 | 用于均衡权重稀疏卷积处理的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117273101A true CN117273101A (zh) | 2023-12-22 |
Family
ID=77558859
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180028639.9A Active CN115516459B (zh) | 2020-06-30 | 2021-06-30 | 用于均衡权重稀疏卷积处理的方法及系统 |
CN202311292487.0A Pending CN117273101A (zh) | 2020-06-30 | 2021-06-30 | 用于均衡权重稀疏卷积处理的方法及系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180028639.9A Active CN115516459B (zh) | 2020-06-30 | 2021-06-30 | 用于均衡权重稀疏卷积处理的方法及系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11113601B1 (zh) |
CN (2) | CN115516459B (zh) |
TW (1) | TWI765763B (zh) |
WO (1) | WO2022002157A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11556757B1 (en) * | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
CN115204355A (zh) * | 2021-04-14 | 2022-10-18 | 蒂普爱可斯有限公司 | 能够重新使用数据的神经处理单元及其方法 |
US20230100036A1 (en) * | 2021-09-24 | 2023-03-30 | Qualcomm Incorporated | Allocation of data sub-tensors onto hardware sub-arrays |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
WO2024056219A1 (en) * | 2022-09-15 | 2024-03-21 | Nokia Technologies Oy | A method, an apparatus and a computer program product for video encoding and video decoding |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
US20180322607A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
US20190108436A1 (en) * | 2017-10-06 | 2019-04-11 | Deepcube Ltd | System and method for compact and efficient sparse neural networks |
US20190266218A1 (en) * | 2018-02-28 | 2019-08-29 | Wave Computing, Inc. | Matrix computation within a reconfigurable processor fabric |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
US20200082244A1 (en) * | 2018-09-06 | 2020-03-12 | Samsung Electronics Co., Ltd. | Computing apparatus using convolutional neural network and method of operating the same |
CN111062472A (zh) * | 2019-12-11 | 2020-04-24 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
CN111242277A (zh) * | 2019-12-27 | 2020-06-05 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3520034A1 (en) * | 2016-11-04 | 2019-08-07 | Google LLC | Convolutional neural network |
KR102499396B1 (ko) * | 2017-03-03 | 2023-02-13 | 삼성전자 주식회사 | 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법 |
US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
CN110574044A (zh) * | 2017-05-23 | 2019-12-13 | 英特尔公司 | 用于使用依赖树来增强二进制权重神经网络的方法和装置 |
US11423312B2 (en) * | 2018-05-14 | 2022-08-23 | Samsung Electronics Co., Ltd | Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints |
US10963787B2 (en) | 2018-05-31 | 2021-03-30 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
US10832139B2 (en) * | 2018-06-22 | 2020-11-10 | Moffett Technologies Co. Limited | Neural network acceleration and embedding compression systems and methods with activation sparsification |
US20200401895A1 (en) * | 2019-06-21 | 2020-12-24 | Samsung Electronics Co., Ltd. | Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods |
-
2020
- 2020-06-30 US US16/917,256 patent/US11113601B1/en active Active
-
2021
- 2021-06-30 CN CN202180028639.9A patent/CN115516459B/zh active Active
- 2021-06-30 CN CN202311292487.0A patent/CN117273101A/zh active Pending
- 2021-06-30 WO PCT/CN2021/103746 patent/WO2022002157A1/en active Application Filing
- 2021-06-30 TW TW110124147A patent/TWI765763B/zh active
- 2021-08-02 US US17/391,432 patent/US11763150B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
US20180322607A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
US20190108436A1 (en) * | 2017-10-06 | 2019-04-11 | Deepcube Ltd | System and method for compact and efficient sparse neural networks |
US20190266218A1 (en) * | 2018-02-28 | 2019-08-29 | Wave Computing, Inc. | Matrix computation within a reconfigurable processor fabric |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
US20200082244A1 (en) * | 2018-09-06 | 2020-03-12 | Samsung Electronics Co., Ltd. | Computing apparatus using convolutional neural network and method of operating the same |
CN111062472A (zh) * | 2019-12-11 | 2020-04-24 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
CN111242277A (zh) * | 2019-12-27 | 2020-06-05 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN115516459A (zh) | 2022-12-23 |
CN115516459B (zh) | 2023-11-03 |
US11113601B1 (en) | 2021-09-07 |
TW202234299A (zh) | 2022-09-01 |
US20210406686A1 (en) | 2021-12-30 |
TWI765763B (zh) | 2022-05-21 |
US11763150B2 (en) | 2023-09-19 |
WO2022002157A1 (en) | 2022-01-06 |
TW202215308A (zh) | 2022-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115516459B (zh) | 用于均衡权重稀疏卷积处理的方法及系统 | |
KR102636710B1 (ko) | 계층적 가중치 희소 컨볼루션 프로세싱을 위한 방법 및 시스템 | |
US9886377B2 (en) | Pipelined convolutional operations for processing clusters | |
US20180157969A1 (en) | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network | |
KR20190090858A (ko) | 데이터 관리를 위한 시스템들 및 방법들 | |
US11836971B2 (en) | Method and device with convolution neural network processing | |
CN114761925A (zh) | 处理元件阵列的高效利用 | |
JP7235836B2 (ja) | クラスタ接続ニューラルネットワーク | |
CN113469354A (zh) | 受存储器限制的神经网络训练 | |
WO2022095984A1 (en) | Method and system for convolution with workload-balanced activation sparsity | |
TW202343310A (zh) | 用於稀疏神經網路的自適應張量運算核心 | |
TWI836405B (zh) | 用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 | |
CN116261736A (zh) | 用于双稀疏卷积处理和并行化的方法和系统 | |
TWI813414B (zh) | 用於最佳化神經網路訓練之電腦實施之方法、系統及非暫時性電腦可讀取儲存媒體 | |
CN116547645A (zh) | 识别用于在硬件加速器上执行的控制序列中的依赖性 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |