卷积神经网络模型的压缩方法及装置
文献发布时间:2023-06-19 11:29:13
技术领域
本公开涉及计算机技术领域,特别涉及一种卷积神经网络模型的压缩方法、数据处理方法、压缩装置、数据处理装置、卷积神经网络加速装置、电子设备及计算机可读介质。
背景技术
卷积神经网络(CNN)在生产生活中有巨大的应用潜力,但其过参数化导致其计算量过大。因此,如何有效减少CNN的计算量成为目前亟待解决的技术问题。
发明内容
本公开提供一种卷积神经网络模型的压缩方法、数据处理方法、压缩装置、数据处理装置、卷积神经网络加速装置、电子设备及计算机可读介质。
根据本公开实施例的第一方面,本公开实施例提供了一种卷积神经网络模型的压缩方法,所述卷积神经网络模型包括至少一个卷积层,所述卷积层包括多个卷积核,每个所述卷积核包括多个与输入通道对应的切片,多个所述卷积核被划分为多个卷积核单元,每个所述卷积核单元包括相邻的至少两个所述卷积核;针对每个所述卷积核单元,该卷积核单元沿卷积核的输入通道的延伸方向被划分为多个切片单元,每个切片单元包括至少两个切片组,该切片单元的所述切片组与对应的该卷积核单元的卷积核一一对应,所述切片组包括对应的卷积核的至少一个切片;
所述压缩方法包括:获取每个所述切片单元对应的目标掩码信息;利用所述目标掩码信息对对应切片单元的每个所述切片组进行稀疏化处理,以得到压缩后的所述卷积神经网络模型。
在一些实施例中,在得到压缩后的所述卷积神经网络模型之后,所述压缩方法还包括:将压缩后的卷积神经网络模型中所有未被稀疏掉的权重存储至预设的权重缓存器中。
在一些实施例中,对于包含未被稀疏掉的权重的切片组,该切片组的所有未被稀疏掉的权重包括至少一个权重组,该权重组包含沿输入通道的延伸方向依次设置的映射位置相同的至少一个权重,该至少一个权重中每个权重对应该切片组中的一个切片;所述权重缓存器包括多个存储单元,每个存储单元对应存储一压缩后的卷积核单元,所述存储单元包括阵列排布的多个内存区,每一列内存区对应存储所在存储单元对应的卷积核单元的一个卷积核;在每一列内存区中,对应的卷积核的沿输入通道的延伸方向依次设置的各切片组,沿列方向依次存储于该列内存区中;在每一列内存区中,针对对应的卷积核的每个切片组,该切片组的各权重组沿列方向依次存储于该列内存区的各内存区中,且该列内存区的每一内存区对应存储该切片组的一个权重组;位于同一行内存区的各权重组,在各自对应的切片组上的相对位置对应相同;在每个内存区中,对应的权重组中沿输入通道的延伸方向依次设置的各权重,以存储地址依次递增的方式连续存储于该内存区;且沿行方向上依次设置的各内存区的存储地址依次递增,沿列方向上依次设置的各内存区的存储地址依次递增。
在一些实施例中,存在至少两个所述切片单元所对应的所述目标掩码信息不同。
在一些实施例中,所述获取每个所述切片单元对应的目标掩码信息,包括:针对每个所述切片单元,随机初始化设置一对应的掩码信息;利用该切片单元对应的当前掩码信息对对应的该切片单元中的每个切片组进行稀疏化处理;在所有切片单元均进行稀疏化处理之后,得到当前掩码信息组和当前的卷积神经网络模型,当前掩码信息组包含各所述切片单元对应的当前掩码信息;利用训练数据训练当前的卷积神经网络模型,并更新每个所述切片单元对应的掩码信息;根据预设的目标函数判断当前的卷积神经网络模型是否收敛至最优解,所述目标函数中包含当前掩码信息组对应的正则项;在判断出当前的卷积神经网络模型未收敛至最优解的情况下,将更新后的掩码信息作为当前掩码信息,执行所述利用该切片单元对应的当前掩码信息对对应的该切片单元中的每个切片组进行稀疏化处理的步骤;在判断出当前的卷积神经网络模型已收敛至最优解的情况下,将当前掩码信息作为目标掩码信息,获得最终的掩码信息组,最终的掩码信息组包括各所述切片单元对应的目标掩码信息。
在一些实施例中,每个所述切片组中的每个切片对应一权重矩阵,所述权重矩阵由多个权重构成,所述掩码信息为由0和/或1构成的掩码矩阵,所述掩码矩阵中的每一个元素与所述权重矩阵中的每一个权重一一对应设置。
在一些实施例中,所述利用该切片单元对应的当前掩码信息对对应的该切片单元中的每个切片组进行稀疏化处理,包括:针对该切片单元中的每个切片组中的每个切片,将该切片单元对应的当前掩码信息中的每一个元素,与该切片的权重矩阵中对应的权重进行相乘处理,其中与当前掩码信息中的0相乘的权重被停用,与当前掩码信息中的1相乘的权重被保留。
在一些实施例中,所述目标掩码信息为由0和/或1构成的掩码矩阵,所述掩码矩阵中的每一个元素与对应的切片单元的每个切片的权重矩阵中的每一个权重一一对应设置;所述利用所述目标掩码信息对对应切片单元的每个所述切片组进行稀疏化处理,包括:针对每个切片单元中的每个切片组中的每个切片,将该切片单元对应的目标掩码信息中的每一个元素,与该切片的权重矩阵中对应的权重进行相乘处理,其中与目标掩码信息中的0相乘的权重被停用,与目标掩码信息中的1相乘的权重被保留。
根据本公开实施例的第二方面,本公开实施例提供了一种数据处理方法,该方法基于利用上述的压缩方法压缩得到的卷积神经网络模型,该数据处理方法包括:获取输入特征图;利用压缩后的所述卷积神经网络模型对所述输入特征图进行处理,得到输出特征图。
在一些实施例中,所述利用压缩后的所述卷积神经网络模型对所述输入特征图进行处理,得到输出特征图,包括:针对压缩后的所述卷积神经网络模型中的每个卷积核单元,利用该卷积核单元中的各卷积核并行对所述输入特征图进行处理,得到该卷积核单元中各卷积核对应的输出特征子图;根据压缩后的所述卷积神经网络模型中的每个卷积核对应的输出特征子图,生成所述输出特征图。
在一些实施例中,所述利用该卷积核单元中的各卷积核并行对所述输入特征图进行处理,得到该卷积核单元中各卷积核对应的输出特征子图,包括:针对所述输入特征图中的当前卷积窗口,依次利用该卷积核单元的各切片单元对当前卷积窗口进行卷积处理,得到各切片单元中各切片组分别对应的卷积处理结果;将该卷积核单元的每个卷积核的各切片组对应的各卷积处理结果进行累加,得到该卷积核单元的每个卷积核对应处理当前卷积窗口的输出特征值;将所述输入特征图中的下一个卷积窗口作为当前卷积窗口,并执行所述针对所述输入特征图中的当前卷积窗口,依次利用该卷积核单元的各切片单元对当前卷积窗口进行处理的步骤;根据该卷积核单元的每个卷积核针对所有卷积窗口的输出特征值,生成该卷积核单元的每个卷积核对应的输出特征子图。
在一些实施例中,针对每个切片单元中的每个切片组,该切片组中所有未被稀疏掉的权重包括至少一个权重组,该权重组包含沿输入通道的延伸方向依次设置的映射位置相同的至少一个权重,该至少一个权重中每个权重对应该切片组中的一个切片;针对输入特征图中的每个卷积窗口,该卷积窗口的尺寸与卷积核的尺寸相同,该卷积窗口包括多个输入通道的输入特征值,该多个输入通道的输入特征值包括至少一个输入特征组,该输入特征组包括沿输入通道的延伸方向依次设置的映射位置相同的至少一个输入特征值,该至少一个输入特征值中每个输入特征值对应一个输入通道,该卷积窗口的输入特征组与所述切片组的权重组按照映射位置一一对应设置;
所述针对所述输入特征图中的当前卷积窗口,依次利用该卷积核单元的各切片单元对当前卷积窗口进行卷积处理,包括:获取当前切片单元的各切片组的当前权重组,各切片组的当前权重组在当前卷积窗口上的映射位置相同;获取所述输入特征图的当前卷积窗口中与所述当前权重组对应的当前输入特征组;将当前切片单元的各切片组的当前权重组分别与所述当前输入特征组进行乘积累加,得到当前切片单元的各切片组的当前权重组对应的乘积累加结果;获取当前切片单元的各切片组的下一个权重组以作为当前权重组,并获取当前卷积窗口中与该下一个权重组对应的输入特征组以作为当前输入特征组,执行上述将当前切片单元的各切片组的当前权重组分别与所述当前输入特征组进行乘积累加,得到当前切片单元的各切片组的当前权重组对应的乘积累加结果的步骤;将当前切片单元中每个切片组的各权重组对应的乘积累加结果依次进行累加,得到当前切片单元中每个切片组分别对应的卷积处理结果。
根据本公开实施例的第三方面,本公开实施例提供了一种卷积神经网络模型的压缩装置,所述卷积神经网络模型包括至少一个卷积层,所述卷积层包括多个卷积核,每个所述卷积核包括多个与输入通道对应的切片,多个所述卷积核被划分为多个卷积核单元,每个所述卷积核单元包括相邻的至少两个所述卷积核;针对每个所述卷积核单元,该卷积核单元沿卷积核的输入通道的延伸方向被划分为多个切片单元,每个切片单元包括至少两个切片组,该切片单元的所述切片组与对应的该卷积核单元的卷积核一一对应,所述切片组包括对应的卷积核的至少一个切片;所述压缩装置包括:获取模块,被配置为获取每个所述切片单元对应的目标掩码信息;稀疏化模块,被配置为利用所述目标掩码信息对对应切片单元的每个所述切片组进行稀疏化处理,以得到压缩后的所述卷积神经网络模型。
在一些实施例中,所述压缩装置还包括存储模块;所述存储模块,被配置为将压缩后的所述卷积神经网络模型中所有未被稀疏掉的权重存储至预设的权重缓存器中。
根据本公开实施例的第四方面,本公开实施例提供了一种数据处理装置,该数据处理装置包括:输入模块,被配置为获取输入特征图;处理模块,被配置为利用压缩后的所述卷积神经网络模型对所述输入特征图进行处理,得到输出特征图,其中该压缩后的卷积神经网络模型为利用上述的压缩方法压缩得到的卷积神经网络模型。
根据本公开实施例的第五方面,本公开实施例提供了一种卷积神经网络加速装置,该加速装置包括权重缓存器、读取单元、输入缓存器、卷积处理单元和输出缓存器;其中,所述权重缓存器,被配置为缓存压缩后的卷积神经网络模型中所有未被稀疏掉的权重;所述输入缓存器,被配置为接收并缓存输入特征图;所述读取单元,被配置为针对当前卷积核单元的每个切片单元,从所述权重缓存器中获取该切片单元的每个切片组对应的未被稀疏掉的权重,并从输入缓存器中获取输入特征图的当前卷积窗口中与该切片单元的切片组对应的输入通道的输入特征值;所述卷积处理单元,被配置为:针对当前卷积核单元的每个切片单元,将该切片单元的每个切片组对应的未被稀疏掉的权重,与输入特征图的当前卷积窗口中与该切片组对应的输入通道的输入特征值进行卷积处理,得到该切片单元的每个切片组对应处理的该当前卷积窗口的卷积处理结果;针对当前卷积核单元的每个卷积核,将该卷积核的各切片组所对应的卷积处理结果进行累加,得到该卷积核所对应处理的当前卷积窗口的输出特征值;所述输出缓存器,被配置为将当前卷积核单元中的每个卷积核所对应处理的当前卷积窗口的输出特征值进行存储。
在一些实施例中,对于包含未被稀疏掉的权重的切片组,该切片组的所有未被稀疏掉的权重包括至少一个权重组,该权重组包含沿输入通道的延伸方向依次设置的映射位置相同的至少一个权重,该至少一个权重中每个权重对应该切片组中的一个切片;所述权重缓存器包括多个存储单元,每个存储单元对应存储一压缩后的卷积核单元,所述存储单元包括阵列排布的多个内存区,每一列内存区对应存储所在存储单元对应的卷积核单元的一个卷积核;在每一列内存区中,对应的卷积核的沿输入通道的延伸方向依次设置的各切片组,沿列方向依次存储于该列内存区中;在每一列内存区中,针对对应的卷积核的每个切片组,该切片组的各权重组沿列方向依次存储于该列内存区的各内存区中,且该列内存区的每一内存区对应存储该切片组的一个权重组;位于同一行内存区的各权重组,在各自对应的切片组上的相对位置对应相同;在每个内存区中,对应的权重组中沿输入通道的延伸方向依次设置的各权重,以存储地址依次递增的方式连续存储于该内存区;且沿行方向上依次设置的各内存区的存储地址依次递增,沿列方向上依次设置的各内存区的存储地址依次递增。
在一些实施例中,针对输入特征图中的每个卷积窗口,该卷积窗口的尺寸与卷积核的尺寸相同,该卷积窗口包括多个输入通道的输入特征值,该多个输入通道的输入特征值包括至少一个输入特征组,该输入特征组包括沿输入通道的延伸方向依次设置的映射位置相同的至少一个输入特征值,该至少一个输入特征值中每个输入特征值对应一个输入通道,该卷积窗口的输入特征组与所述切片组的权重组按照映射位置一一对应设置;所述加速装置还包括地址生成单元,所述地址生成被配置为:针对每个存储单元的每一行内存区,采用地址递增的方式配置该行内存区中各权重组的读取地址;通过地址查找表配置与各行内存区的权重组对应的各输入特征组在输入缓存器对应的窗口缓冲区中的读取地址;其中,所述地址查找表包括所述权重缓存器中各行内存区的权重组所对应的输入特征组在预设的所述窗口缓冲区中的读取地址。
在一些实施例中,所述读取单元具体被配置为:针对当前卷积核单元的每个切片单元,根据所述地址生成单元提供的该切片单元对应的每一行内存区的权重组的读取地址,从所述权重缓存器中与该切片单元对应的存储单元中,依次获取每一行内存区对应存储的权重组,并依次发送至所述卷积处理单元;根据所述地址生成单元通过地址查找表提供的与各行内存区对应的输入特征组的读取地址,从输入缓存器对应的窗口缓冲区中依次读取当前卷积窗口中与各行权重组对应的各输入特征组,并依次发送至所述卷积处理单元。
在一些实施例中,所述卷积处理单元具体被配置为:将当前接收到的当前行内存区的各权重组与当前卷积窗口中与该行权重组对应的输入特征组进行乘积累加,得到当前行内存区的各权重组对应的乘积累加结果;针对当前切片单元的每个切片组,将该切片组的各权重组对应的乘积累加结果依次进行累加,得到该切片组对应的卷积处理结果。
根据本公开实施例提供的第六方面,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行以下方法中的至少一者:上述的压缩方法以及上述的数据处理方法。
根据本公开实施例提供的第七方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现以下方法中的至少一者:上述的压缩方法以及上述的数据处理方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例提供的一种卷积神经网络模型的压缩方法的流程图;
图2为一种压缩前的卷积层的卷积核的网络结构示意图;
图3为一种压缩后的卷积层的卷积核的网络结构示意图;
图4为图1中步骤S11的一种具体实施方式的流程图;
图5为切片的形状示意图;
图6为权重缓存器中每一存储单元的存储结构示意图;
图7为本公开实施例提供的一种压缩装置的组成框图;
图8为本公开实施例提供的一种数据处理方法的流程图;
图9为图8中步骤S22的一种具体实施方式的流程图;
图10为图8中步骤S22的一种应用场景示意图;
图11为图9中步骤S221的一种具体实施方式的流程图;
图12为输入特征图的卷积窗口的示意图;
图13为图11中步骤S2211的一种具体实现方式的流程图;
图14为本公开实施例提供的一种数据处理装置的组成框图;
图15为本公开实施例提供的一种卷积神经网络加速装置的组成框图;
图16为图15中的加速装置的一种应用场景示意图;
图17为本公开实施例提供的一种电子设备的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
目前,为有效减少卷积神经网络的计算量,研究者们提出各种卷积神经网络的稀疏化方法,以削减卷积神经网络的参数和计算量,目前的卷积神经网络的稀疏化方法通常有结构化稀疏和非结构化稀疏两种方式。其中,结构化稀疏方式仅对于并发度低、存储量小的设备有实践意义,因为无法充分利用并发度越来越高的计算设备,已不具备应用优势,且结构化稀疏方式通常采用通道剪枝和块剪枝,但其剪裁潜力有限,要达到较大的参数量和计算量削减,CNN的性能将会受到较大影响;而非结构化稀疏方式通常采用细粒度剪枝,剪裁潜力较大,即使能够达到较大的计算量或参数量的削减,CNN的性能也会受到较小的影响。
为此,本公开实施例提出一种卷积神经网络模型的压缩方法,旨在能够充分削减卷积神经网络模型的计算量和参数量而不影响卷积神经网络模型(CNN)的性能,且不损失模型的精度。
图1为本公开实施例提供的一种卷积神经网络模型的压缩方法的流程图。
参照图1,本公开实施例提供了一种卷积神经网络模型的压缩方法,其中,该卷积神经网络模型包括至少一个卷积层,每个卷积层包括多个卷积核,每个卷积核包括多个与输入通道对应的切片,该多个卷积核被划分为多个卷积核单元,每个卷积核单元包括相邻的至少两个卷积核;针对每个卷积核单元,该卷积核单元沿卷积核的输入通道的延伸方向被划分为多个切片单元,每个切片单元包括至少两个切片组,该切片单元的切片组与对应的该卷积核单元的卷积核一一对应,切片组包括对应的卷积核的至少一个切片。该压缩方法包括:
步骤S11、获取每个切片单元对应的目标掩码信息。
其中,在每个切片单元中,对应不同卷积核的不同切片组所对应的目标掩码信息相同。
步骤S12、利用目标掩码信息对对应切片单元的每个切片组进行稀疏化处理,以得到压缩后的卷积神经网络模型。
在对所有切片单元的每个切片组进行稀疏化处理后,得到压缩后的卷积神经网络模型。
具体地,针对每个切片单元中不同的切片组,采用相同的目标掩码信息对对应的该切片单元中不同的切片组中的切片进行稀疏化处理,即对该切片单元中的每个切片组的每个切片进行相同的稀疏化操作,以使该切片单元中经稀疏化后的切片的形状相同,从而在实现卷积神经网络模型的细粒度稀疏化的同时,又约束了该细粒度稀疏化的拓扑结构具有规律性,即结构化稀疏。
本公开实施例提供的卷积神经网络模型的压缩方法,该压缩方法可以实现对卷积神经网络模型的细粒度的裁剪(稀疏化),从而充分削减卷积神经网络模型的计算量和参数量而不影响卷积神经网络模型(CNN)的性能,且不损失模型的精度,同时又能保证这种裁剪是结构化的,从而能够充分利用承载经该稀疏化后的卷积神经网络模型的计算设备(如芯片)的并行计算能力。
图2为一种压缩前的卷积层的卷积核的网络结构示意图,图3为一种压缩后的卷积层的卷积核的网络结构示意图,参见图2和图3,作为示例,一卷积层包括多个卷积核C,每个卷积核C包括六个与输入通道对应的切片A,多个卷积核C被划分为多个卷积核单元D,每个卷积核单元D包括相邻的两个卷积核C;针对每个卷积核单元D,该卷积核单元D沿卷积核C的输入通道的延伸方向II’被划分为多个切片单元,每个切片单元包括两个切片组B,该切片单元的切片组B与对应的该卷积核单元D的卷积核C一一对应,切片组B包括对应的卷积核C的三个切片A。
在本公开实施例中,每个卷积核C的每个切片A是一由多个权重构成的权重矩阵,为便于描述,图2和图3中采用小的矩形体表示切片A的一个权重。如图2所示,在被稀疏化处理前,每个切片A由9个小的矩形体构成,即每个切片A对应的权重矩阵均包含9个权重,如图3所示,在被稀疏化处理后,每个切片A中的部分小的矩形体被移除,即每个切片A中的部分权重被稀疏化。换言之,对切片A进行稀疏化处理,即对切片A对应的权重矩阵进行稀疏化处理,相当于对切片A的形状进行裁剪,而裁剪的最小单元为切片A的一个小的矩形体。
在本公开实施例中,目标掩码信息为由0和1构成的掩码矩阵,该掩码矩阵中的每一个元素与对应的切片单元中的每个切片A所对应的权重矩阵中的每一个权重一一对应设置。即,权重矩阵中位于第一行第一列的权重与掩码矩阵中位于第一行第一列的元素对应,权重矩阵中位于第一行第二列的权重与掩码矩阵中位于第一行第二列的元素对应,权重矩阵中位于第一行第三列的权重与掩码矩阵中位于第一行第三列的元素对应,依此类推。
在步骤S12中,具体地,针对每个切片单元中的每个切片组B中的每个切片A,将该切片单元对应的目标掩码信息中的每一个元素,与该切片A的权重矩阵中对应的权重进行相乘处理,其中与目标掩码信息中的0元素相乘的权重被停用,与目标掩码信息中的1元素相乘的权重被保留,从而实现对每个切片单元中的每个切片组B中的每个切片A的稀疏化处理。换言之,将目标掩码信息的掩码矩阵映射至对应的切片单元的每个切片A,该切片A的对应目标掩码信息中的0的小的矩形体(权重)将被裁剪,而对应目标掩码信息中的1的小的矩形体(权重)被保留。
如图2和图3所示,针对每个卷积核单元D,根据上述压缩方法,该卷积核单元D的每个切片单元中,不同切片组B采用相同的目标掩码信息进行相同的稀疏化处理,使得该卷积核单元D中不同卷积核C被构造为相同的形状,也即对该卷积核单元D中不同卷积核C进行了相同的稀疏化操作。
在一些实施例中,存在至少两个切片单元所对应的目标掩码信息不同。在一些实施例中,不同切片单元对应不同的目标掩码信息。作为示例,如图3所示,针对每个卷积核单元D,在该卷积核单元D中,不同切片单元对应不同的目标掩码信息,在该卷积核单元D的每个卷积核C中,该卷积核C的不同切片组B,由于对应不同切片单元,即对应不同的目标掩码信息,因此被构造为不同的形状,即该卷积核C的不同切片组B进行了不同的稀疏化操作。
而在不同的卷积核单元D之间,不同切片单元对应不同的目标掩码信息,因此被构造为不同的形状,相应的,如图3所示,不同的卷积核单元D的卷积核C在稀疏化后的形状不同。
图4为图1中步骤S11的一种具体实施方式的流程图,在一些实施例中,在步骤S11中,可以采用以下方式获得卷积层的每个卷积核单元的每个切片单元所对应的目标掩码信息。具体地,如图4所示,步骤S11包括:
步骤S111、针对每个切片单元,随机初始化设置一对应的掩码信息。
具体地,预先根据切片形状和尺寸,确定切片被稀疏化后所有可能被构造成的形状。图5为切片的形状示意图,图5示例性示出了一种尺寸为3*3的切片被稀疏化后所有可能被构造成的形状,其中未被填充图案的矩形框表示被稀疏掉即停用的权重,而被填充有图案的矩形框表示未被稀疏掉即保留的权重,可以理解的是,图2所示的卷积核是由图5中右上角所示的形状的切片构成。
根据切片的所有可能的形状,预先构造出与各切片形状下的切片相匹配的掩码片,掩码片的形状与相匹配的切片的形状、尺寸相同,掩码片的所有可能的形状可参见图5所示的各种形状,其中未被填充有图案的矩形框表示0元素,而被填充有图案的矩形框表示1元素,也即掩码片中与对应的切片中被稀疏掉的权重对应的单元表示0元素,与对应的切片中未被稀疏掉的权重对应的单元表示1元素。在步骤S111中,掩码信息包括任一形状的掩码片,其可以理解为是由0和/或1元素构成的掩码矩阵,其中,0元素采用未被填充有图案的矩形框表示,1元素采用被填充有图案的矩形框表示。
在步骤S111中,针对每个切片单元,从预先构造的所有掩码信息中随机选择一掩码信息作为该切片单元中各切片对应的当前掩码信息,该掩码信息对应的掩码矩阵中的每一个元素与该切片单元的切片对应的权重矩阵中的每一个权重一一对应设置。即,权重矩阵中位于第一行第一列的权重与掩码矩阵中位于第一行第一列的元素对应,权重矩阵中位于第一行第二列的权重与掩码矩阵中位于第一行第二列的元素对应,权重矩阵中位于第一行第三列的权重与掩码矩阵中位于第一行第三列的元素对应,依此类推。
步骤S112、利用该切片单元对应的当前掩码信息对对应的该切片单元中的每个切片组进行稀疏化处理。
具体地,针对该切片单元中的每个切片组中的每个切片,将该切片单元对应的当前掩码信息中的每一个元素,与该切片的权重矩阵中对应的权重进行相乘处理,其中与当前掩码信息中的0相乘的权重被停用,与当前掩码信息中的1相乘的权重被保留,从而将该切片的形状构造为与当前掩码信息的掩码片所对应的形状,其中,每个切片组中各切片被构造为相同的切片形状。
步骤S113、在所有切片单元均进行稀疏化处理之后,得到各卷积层的当前掩码信息组和当前的卷积神经网络模型,当前掩码信息组包含对应的卷积层的各切片单元所对应的当前掩码信息。
步骤S114、利用训练数据训练当前的卷积神经网络模型,并更新每个切片单元对应的掩码信息。
其中,训练数据可以包括预先获取的用于模型训练的多个输入特征图。
在步骤S114中,更新每个切片单元对应的掩码信息,包括:针对每个切片单元,从预先构造的所有掩码信息中随机选择一掩码信息作为该切片单元中各切片对应的当前掩码信息,其中更新掩码信息后,至少部分切片单元对应的掩码信息与训练前该至少部分切片单元所对应选择的掩码信息不同。
步骤S115、根据预设的目标函数判断当前的卷积神经网络模型是否收敛至最优解,目标函数中包含当前掩码信息组对应的正则项。
在一些实施例中,目标函数采用交叉熵损失函数:
s.t.c
其中,l
根据上述目标函数,通过不断地迭代优化模型,使得模型的正则化损失和任务损失最小化,从而使得模型收敛至一个计算量较小的状态,得到模型的最优解。
步骤S116、在判断出当前的卷积神经网络模型未收敛至最优解的情况下,将更新后的掩码信息作为当前掩码信息,并跳转至步骤S112。
步骤S117、在判断出当前的卷积神经网络模型已收敛至最优解的情况下,将当前掩码信息作为目标掩码信息,获得各卷积层对应的最终的掩码信息组,最终的掩码信息组包括对应的卷积层的各切片单元对应的目标掩码信息。
在步骤S116和步骤S117中,在判断出当前的卷积神经网络模型未收敛至最优解的情况下,将更新后的掩码信息作为当前掩码信息,对模型进行稀疏化处理,而后继续训练稀疏化后的模型,依次迭代模型,以使得模型收敛至最优解,在模型收敛至最优解时,将最终使得模型收敛至最优解的各切片单元的掩码信息作为各切片单元最终的目标掩码信息。而后,执行步骤S12。
通过上述压缩方法压缩卷积神经网络模型,可以实现对卷积神经网络模型的细粒度的裁剪(稀疏化),从而充分削减卷积神经网络模型的计算量和参数量而不影响卷积神经网络模型(CNN)的性能,同时又能保证这种裁剪是结构化的,从而能够充分利用承载经该稀疏化后的卷积神经网络模型的计算设备(如芯片)的并行计算能力。
以图2所示的卷积神经网络模型为例,图2示出了标准(STD)卷积层的网络结构,结合图5,该标准卷积层的每个切片的形状均为图5中右上角的切片形状,每个切片的尺寸为3*3,对应的权重的数量为9,标准卷积层的计算量为:
C
=h
其中,C
图3示例性示出了利用上述压缩方法对图2所示的标准卷积层进行压缩后的网络结构,压缩后的卷积层的计算量为:
其中,C
由此可知,压缩前后的卷积层的计算量变化为:△C=C
根据压缩前后的卷积层的计算量变化,可知,在压缩前后,卷积层的计算量明显减少。
在一些实施例中,在利用上述压缩方法获得压缩后的卷积神经网络模型后,为实现对压缩后的卷积神经网络模型的权重的存储,在得到压缩后的卷积神经网络模型,即步骤S12之后,该压缩方法还包括:将压缩后的卷积神经网络模型中所有未被稀疏掉的权重存储至预设的权重缓存器中。
具体地,在压缩后的卷积神经网络模型中,如图3所示,对于包含未被稀疏掉的权重的切片组B,该切片组B的所有未被稀疏掉的权重包括至少一个权重组,该权重组包含沿输入通道的延伸方向(深度方向)II’依次设置的映射位置相同的至少一个权重,该至少一个权重中每个权重对应该切片组B中的一个切片A。
可以理解的是,沿输入通道的延伸方向II’依次设置的映射位置相同的至少一个权重中,“映射位置相同”是指在每次进行卷积运算时,该至少一个权重均映射对应输入特征图上的同一个位置进行乘积累加。具体而言,该切片组B中的每个切片A对应一权重矩阵,在该切片组B的各切片A中,各切片A上对应位于第一行第一列的权重组成一权重组,对应位于第一行第二列的权重组成一权重组,对应位于第一行第三列的权重组成一权重组,依此类推,位于相同行次和相同列次的权重作为一权重组。
上述权重缓存器包括多个存储单元,图6为权重缓存器中每一存储单元的存储结构示意图,如图6所示,每个存储单元对应存储一压缩后的卷积核单元,存储单元包括阵列排布的多个内存区,每一列内存区对应存储所在存储单元对应的卷积核单元的一个卷积核。在每一列内存区中,对应的卷积核的沿输入通道的延伸方向II’依次设置的各切片组,沿列方向y依次存储于该列内存区中;在每一列内存区中,针对对应的卷积核的每个切片组,该切片组的各权重组沿列方向y依次存储于该列内存区的各内存区中,且该列内存区的每一内存区对应存储该切片组的一个权重组。对于压缩后的卷积核单元中每一切片单元,该切片单元中对应各卷积核的各切片组沿行方向x上依次存储于对应的存储单元中。
作为示例,如图6所示,卷积核单元包括卷积核1、卷积核2、…、卷积核n,其被划分为切片单元1和切片单元2,每一卷积核对应存储于一列内存区,以卷积核1为例,卷积核1包括切片组11和切片组12,切片组11包括权重组a1、权重组e1和权重组i1,切片组12包括权重组k1、权重组j1和权重组g1,在该卷积核1对应的一列内存区中,权重组a1、权重组e1、权重组i1、权重组k1、权重组j1和权重组g1依次存储于该列内存区的各内存区中,且分别对应存储于一个内存区。以切片单元1为例,切片单元1包括卷积核1的切片组11、卷积核2的切片组21、…、卷积核n的切片组n1,切片单元1中对应各卷积核的各切片组(切片组11、切片组21、…、切片组n1)沿行方向x上依次存储。
如图6所示,沿行方向x上,位于同一行内存区的各权重组,在各自对应的切片组上的相对位置对应相同,即每一行内存区对应存储在各自对应的切片组的位置对应相同的各权重组。作为示例,如图6所示,切片组11的权重组a1、切片组21的权重组a2、....、切片组n1的权重组an对应存储于同一行内存区中,其中权重组a1在切片组11上的相对位置、权重组a2在切片组21上的相对位置、…、权重组an在切片组n1上的相对位置对应相同。该相对位置是指该权重组在该切片组上的位置,相对位置对应相同是指在各自对应的切片组上,位于相同行次且位于相同列次的权重组。例如,权重组a1位于切片组11的第一行第一列,权重组a2位于切片组21的第一行第一列,权重组an位于切片组n1的第一行第一列,则权重组a1、权重组a2、…、权重组an的位置对应相同。
如图6所示,在每个内存区中,对应的权重组中沿输入通道的延伸方向II’依次设置的各权重,以存储地址依次递增的方式连续存储于该内存区;且沿行方向x上依次设置的各内存区的存储地址依次递增,沿列方向y上依次设置的各内存区的存储地址依次递增。
需要说明的是,图6仅示例性示出了卷积核单元包括2个切片单元的,每个切片组包括3个权重组的情形,本公开实施例包括但不仅限于此种情形。
通过上述权重存储方式对上述压缩后的卷积神经网络模型的权重进行存储,将卷积神经网络模型中未被稀疏掉的权重进行密集的连续的存储,并以地址递增的方式存储,能够有效减少卷积神经网络模型的权重的存储量,相较于标准卷积神经网络模型,压缩后的卷积神经网络模型的内存消耗有效减少,因此可以节省带宽和运行时的计算量,且有效提升各切片单元的权重的存取速度,继而提升卷积神经网络模型的计算效率。
相应的,本公开实施例提供一种卷积神经网络模型的压缩装置,该卷积神经网络模型包括至少一个卷积层,卷积层包括多个卷积核,每个卷积核包括多个与输入通道对应的切片,多个卷积核被划分为多个卷积核单元,每个卷积核单元包括相邻的至少两个卷积核;针对每个卷积核单元,该卷积核单元沿卷积核的输入通道的延伸方向被划分为多个切片单元,每个切片单元包括至少两个切片组,该切片单元的切片组与对应的该卷积核单元的卷积核一一对应,切片组包括对应的卷积核的至少一个切片;该压缩装置可以用于实现上述的压缩方法,图7为本公开实施例提供的一种压缩装置的组成框图,如图7所示,该压缩装置包括:获取模块301和稀疏化模块302。
其中,获取模块301被配置为获取每个切片单元对应的目标掩码信息。稀疏化模块302被配置为利用目标掩码信息对对应切片单元的每个切片组进行稀疏化处理,以得到压缩后的卷积神经网络模型。
在一些实施例中,压缩装置还包括存储模块(图中未示出);存储模块被配置为将压缩后的卷积神经网络模型中所有未被稀疏掉的权重存储至预设的权重缓存器中。
具体地,关于预设的权重缓存器的存储结构的描述以及压缩后的卷积神经网络模型中所有未被稀疏掉的权重在该权重缓存器中的存储方式的描述,可参见上述压缩方法中相关的描述,此处不再赘述。
具体地,该压缩装置用于实现上述的压缩方法,关于该压缩装置的各模块的具体描述可参见上述压缩方法中的描述,此处不再赘述。
图8为本公开实施例提供的一种数据处理方法的流程图。
参照图8,本公开实施例还提供一种数据处理方法,该方法基于利用上述的压缩方法压缩得到的卷积神经网络模型实现,该数据处理方法包括:
步骤S21、获取输入特征图。
其中,输入特征图可以是输入的图像数据的特征图。
步骤S22、利用压缩后的卷积神经网络模型对输入特征图进行处理,得到输出特征图。
图9为图8中步骤S22的一种具体实施方式的流程图,图10为图8中步骤S22的一种应用场景示意图,在一些实施例中,如图9和图10所示,步骤S22可以进一步包括步骤S221和步骤S222。
步骤S221、针对压缩后的卷积神经网络模型中的每个卷积核单元,利用该卷积核单元中的各卷积核并行对输入特征图进行处理,得到该卷积核单元中各卷积核对应的输出特征子图。
步骤S222、根据压缩后的卷积神经网络模型中的每个卷积核对应的输出特征子图,生成输出特征图。
其中,输出特征图包括各卷积核对应的输出特征子图。
图11为图9中步骤S221的一种具体实施方式的流程图,如图10和图11所示,步骤S221可以进一步包括以下步骤:步骤S2211~步骤S2214。
步骤S2211、针对输入特征图中的当前卷积窗口,依次利用该卷积核单元的各切片单元对当前卷积窗口进行卷积处理,得到各切片单元中各切片组分别对应的卷积处理结果。
其中,针对输入特征图中的每个卷积窗口,该卷积窗口的尺寸与卷积核的尺寸相同,该卷积窗口包括多个输入通道的输入特征值,每个输入通道与卷积核的每个切片一一对应设置。
图12为输入特征图的卷积窗口的示意图,如图10至图12所示,作为示例,输入特征图的尺寸为h
在一些实施例中,针对每个切片单元中的每个切片组,该切片组中所有未被稀疏掉的权重包括至少一个权重组,该权重组包含沿输入通道的延伸方向II’依次设置的映射位置相同的至少一个权重,例如均对应位于所在切片的第一行第一列的至少一个权重,该至少一个权重中每个权重对应该切片组中的一个切片。针对输入特征图中的每个卷积窗口,该卷积窗口包括多个输入通道的输入特征值,该多个输入通道的输入特征值包括至少一个输入特征组,该输入特征组包括沿输入通道的延伸方向依次设置的映射位置相同的至少一个输入特征值,例如均对应位于所在卷积窗口的第一行第一列的至少一个输入特征值,该至少一个输入特征值中每个输入特征值对应一个输入通道,该卷积窗口的输入特征组与切片组的权重组按照映射位置一一对应设置。例如该卷积窗口中对应位于第一行第一列的输入特征组与每一切片组中对应位于第一行第一列的权重组对应设置,该卷积窗口中对应位于第一行第二列的输入特征组与每一切片组中对应位于第一行第二列的权重组对应设置,该卷积窗口中对应位于第一行第三列的输入特征组与每一切片组中对应位于第一行第三列的权重组对应设置,依此类推。
图13为图11中步骤S2211的一种具体实现方式的流程图,如图13所示,在一些实施例中,步骤S2211可以进一步包括步骤11a~步骤11e。
步骤11a、获取当前切片单元的各切片组的当前权重组,各切片组的当前权重组在当前卷积窗口上的映射位置相同。
各切片组的当前权重组在当前卷积窗口上的映射位置是指依次将各切片组按照对应的输入通道映射至当前卷积窗口上时,各切片组的当前权重组所映射的位置相同,也即各切片组的当前权重组,在各自对应的切片组上的位置对应相同。例如,在被压缩后即稀疏化后的当前切片单元中,每个切片组均仅剩余对应位于第一行第一列的权重组、对应位于第二行第二列的权重组,对应位于第三行第三列的权重组,则首先获取当前切片单元的各切片组的对应位于第一行第一列的权重组作为各切片组的当前权重组。
步骤11b、获取输入特征图的当前卷积窗口中与当前权重组对应的当前输入特征组。
例如,当前权重组对应位于切片组的第一行第一列,则在步骤11b中,获取当前卷积窗口中对应位于第一行第一列的输入特征组作为当前输入特征组。
步骤11c、将当前切片单元的各切片组的当前权重组分别与当前输入特征组进行乘积累加,得到当前切片单元的各切片组的当前权重组对应的乘积累加结果。
在步骤11c中,并行将各切片组的当前权重组分别与当前输入特征组进行乘积累加。具体地,如前所述,权重组包括沿输入通道的延伸方向依次设置的至少一个权重,对应的输入特征组包括沿输入通道的延伸方向依次设置的至少一个输入特征值,将当前权重组与当前输入特征组进行乘积累加包括:将当前权重组中的各权重与当前输入特征组中的各输入特征值进行乘积累加运算,即将当前权重组中的每一个权重与当前输入特征组中的每一个输入特征值按照所属输入通道一一对应进行相乘处理后,进行累加处理,从而得到该当前权重组对应的乘积累加结果。
作为示例,当前切片单元包括切片组1和切片组2,切片组1包括权重组a1、权重组e1和权重组i1,切片组2包括权重组a2、权重组e2和权重组i2,其中切片组1的当前权重组为权重组a1,切片组2的当前权重组为权重组a2,其中,权重组a1包括沿输入通道的延伸方向依次设置的权重a11、a12、a13,权重组a2包括沿输入通道的延伸方向依次设置的权重a21、a22、a23,在输入特征图的当前卷积窗口中与当前权重组对应的当前输入特征组包括沿输入通道的延伸方向依次设置的输入特征值α1、α2、α3,则在步骤11c中,将权重组a1的权重a11、a12、a13与当前输入特征组的输入特征值α1、α2、α3进行乘积累加运算,同时将权重组a2的权重a21、a22、a23与当前输入特征组的输入特征值α1、α2、α3进行乘积累加运算,得到权重组a1对应的乘积累加结果和权重组a2对应的乘积累加结果,其中权重组a1对应的乘积累加结果为a11*α1+a12*α2+a13*α3,权重组a2对应的乘积累加结果为a21*α1+a22*α2+a23*α3,依此类推。
步骤11d、获取当前切片单元的各切片组的下一个权重组以作为当前权重组,并获取当前卷积窗口中与该下一个权重组对应的输入特征组以作为当前输入特征组,并跳转至步骤11c。
作为示例,当前切片单元包括切片组1和切片组2,切片组1包括权重组a1、权重组e1和权重组i1,切片组2包括权重组a2、权重组e2和权重组i2,在步骤11c中切片组1的权重组a1作为当前权重组,切片组2的权重组a2作为当前权重组,则在步骤11d中,将切片组1的权重组e1作为当前权重组,将切片组2的权重组e2作为当前权重组,跳转至步骤11c,与计算出切片组1的权重组e1对应的乘积累加结果以及切片组2的权重组e2对应的乘积累加结果,依此类推,直至计算出切片组1的所有权重组对应的乘积累加结果,以及切片组2的所有权重组对应的乘积累加结果。
步骤11e、将当前切片单元中每个切片组的各权重组对应的乘积累加结果依次进行累加,得到当前切片单元中每个切片组分别对应的卷积处理结果。
作为示例,当前切片单元包括切片组1和切片组2,切片组1包括权重组a1、权重组e1和权重组i1,切片组2包括权重组a2、权重组e2和权重组i2,在按照上述步骤11c和步骤11d计算出各切片组的各权重组对应的乘积累加结果后,将切片组1的权重组a1对应的乘积累加结果、权重组e1对应的乘积累加结果、权重组i1对应的乘积累加结果依次进行累加处理,得到切片组1对应当前卷积窗口的卷积处理结果,将切片组2的权重组a2对应的乘积累加结果、权重组e2对应的乘积累加结果、权重组i2对应的乘积累加结果依次进行累加处理,得到切片组2对应当前卷积窗口的卷积处理结果。
而后,将该卷积核单元的下一个切片单元作为当前切片单元,进行上述步骤11a~步骤11e,以得到下一个切片单元中各切片组对应当前卷积窗口的卷积处理结果,依此类推。
步骤S2212、将该卷积核单元的每个卷积核的各切片组对应的各卷积处理结果进行累加,得到该卷积核单元的每个卷积核对应处理当前卷积窗口的输出特征值。
作为示例,该卷积核单元包括卷积核1和卷积核2,卷积核1包括切片组11和切片组12,卷积核2包括切片组21和切片组22,切片组11和切片组21组成该卷积核单元的切片单元1,切片组12和切片组22组成该卷积核单元的切片单元2,通过上述步骤S2211,计算得到切片组11对应当前卷积窗口的卷积处理结果、切片组21对应当前卷积窗口的卷积处理结果、切片组12对应当前卷积窗口的卷积处理结果、切片组22对应当前卷积窗口的卷积处理结果,则在步骤S2212中,将切片组11对应当前卷积窗口的卷积处理结果和切片组12对应当前卷积窗口的卷积处理结果进行累加,得到卷积核1对应处理当前卷积窗口的输出特征值,并将切片组21对应当前卷积窗口的卷积处理结果和切片组22对应当前卷积窗口的卷积处理结果进行累加,得到卷积核2对应处理当前卷积窗口的输出特征值。
步骤S2213、将输入特征图中的下一个卷积窗口作为当前卷积窗口,并跳转至步骤S2211。
具体地,按照预设卷积步长,获取输入特征图中的下一个卷积窗口,以作为当前卷积窗口。如图12所示,作为示例,将当前卷积窗口沿输入特征图的横向方向滑动一个卷积步长,从而确定输入特征图中的下一个卷积窗口,将该下一个卷积窗口作为当前卷积步长,跳转执行步骤S2211。
待遍历输入特征图中所有的卷积窗口后,得到该卷积核单元的每个卷积核分别对应所有卷积窗口的输出特征值,即而后,执行步骤S2214。
步骤S2214、根据该卷积核单元的每个卷积核针对所有卷积窗口的输出特征值,生成该卷积核单元的每个卷积核对应的输出特征子图。
其中,对于该卷积核单元的每个卷积核而言,该卷积核对应的输出特征子图包括该卷积核所对应处理的各卷积窗口的输出特征值。
以图10和图12所示的输入特征图和卷积核为例,输入特征图的尺寸为h
根据本公开实施例所提供的数据处理方法,该数据处理方法基于采用上述压缩方法压缩得到的卷积神经网络模型实现,能够有效减少卷积神经网络模型的计算量,并提升数据处理的效率。
相应的,本公开实施例提供一种数据处理装置,该数据处理装置用于实现上述的数据处理方法,图14为本公开实施例提供的一种数据处理装置的组成框图,如图14所示,该数据处理装置包括:输入模块401和处理模块402。
其中,输入模块401被配置为获取输入特征图;处理模块402被配置为利用压缩后的卷积神经网络模型对输入特征图进行处理,得到输出特征图。其中,该压缩后的卷积神经网络模型为利用上述压缩方法压缩得到的卷积神经网络模型。
具体地,该数据处理装置用于实现上述数据处理方法,关于该数据处理装置的各模块的具有描述可参见上述数据处理方法中的描述,此处不再赘述。
图15为本公开实施例提供的一种卷积神经网络加速装置的组成框图。
参照图15,本公开实施例提供了一种卷积神经网络加速装置,该核卷积神经网络加速装置包括:权重缓存器51、读取单元52、输入缓存器53、卷积处理单元54和输出缓存器55。
其中,权重缓存器51被配置为缓存压缩后的卷积神经网络模型中所有未被稀疏掉的权重,压缩后的卷积神经网络模型为利用上述压缩方法压缩得到的卷积神经网络模型。
输入缓存器53被配置为接收并缓存输入特征图。
读取单元52被配置为针对当前卷积核单元的每个切片单元,从权重缓存器51中获取该切片单元的每个切片组对应的未被稀疏掉的权重,并从输入缓存器53中获取输入特征图的当前卷积窗口中与该切片单元的切片组对应的输入通道的输入特征值。
卷积处理单元54被配置为:针对当前卷积核单元的每个切片单元,将该切片单元的每个切片组对应的未被稀疏掉的权重,与输入特征图的当前卷积窗口中与该切片组对应的输入通道的输入特征值进行卷积处理,得到该切片单元的每个切片组对应处理的该当前卷积窗口的卷积处理结果;针对当前卷积核单元的每个卷积核,将该卷积核的各切片组所对应的卷积处理结果进行累加,得到该卷积核所对应处理的当前卷积窗口的输出特征值。
输出缓存器55被配置为将当前卷积核单元中的每个卷积核所对应处理的当前卷积窗口的输出特征值进行存储。
在一些实施例中,在压缩后的卷积神经网络模型中,对于包含未被稀疏掉的权重的切片组,该切片组的所有未被稀疏掉的权重包括至少一个权重组,该权重组包含沿输入通道的延伸方向依次设置的映射位置相同的至少一个权重,该至少一个权重中每个权重对应该切片组中的一个切片。
在权重缓存器51中,权重缓存器51包括多个存储单元,每个存储单元对应存储一压缩后的卷积核单元,存储单元包括阵列排布的多个内存区,每一列内存区对应存储所在存储单元对应的卷积核单元的一个卷积核。在每一列内存区中,对应的卷积核的沿输入通道的延伸方向依次设置的各切片组,沿列方向依次存储于该列内存区中;在每一列内存区中,针对对应的卷积核的每个切片组,该切片组的各权重组沿列方向依次存储于该列内存区的各内存区中,且该列内存区的每一内存区对应存储该切片组的一个权重组;位于同一行内存区的各权重组,在各自对应的切片组上的相对位置对应相同;在每个内存区中,对应的权重组中沿输入通道的延伸方向依次设置的各权重,以存储地址依次递增的方式连续存储于该内存区;且沿行方向上依次设置的各内存区的存储地址依次递增,沿列方向上依次设置的各内存区的存储地址依次递增。
针对输入特征图中的每个卷积窗口,该卷积窗口的尺寸与卷积核的尺寸相同,该卷积窗口包括多个输入通道的输入特征值,该多个输入通道的输入特征值包括至少一个输入特征组,该输入特征组包括沿输入通道的延伸方向依次设置的映射位置相同的至少一个输入特征值,该至少一个输入特征值中每个输入特征值对应一个输入通道,该卷积窗口的输入特征组与切片组的权重组按照映射位置一一对应设置。
在一些实施例中,加速装置还包括地址生成单元(Address Generation Units,AGU)56,地址生成被配置56为:针对每个存储单元的每一行内存区,采用地址递增的方式配置该行内存区中各权重组的读取地址,其中沿列方向上依次设置的各行内存区的读取地址依次递增;通过地址查找表配置与各行内存区的权重组对应的各输入特征组在输入缓存器对应的窗口缓冲区中的读取地址,其中,地址查找表(Address Look-up Tables,ALUT)包括权重缓存器中各行内存区的权重组所对应的输入特征组在预设的窗口缓冲区中的读取地址。
在一些实施例中,读取单元52具体被配置为:针对当前卷积核单元的每个切片单元,根据地址生成单元56提供的该切片单元对应的每一行内存区的权重组的读取地址,从权重缓存器51中与该切片单元对应的存储单元中,依次获取每一行内存区对应存储的权重组,并依次发送至卷积处理单元54;根据地址生成单元56通过地址查找表提供的与各行内存区对应的输入特征组的读取地址,从输入缓存器53对应的窗口缓冲区中依次读取当前卷积窗口中与各行权重组对应的各输入特征组,并依次发送至卷积处理单元54。卷积处理单元54具体被配置为:将当前接收到的当前行内存区的各权重组与当前卷积窗口中与该行权重组对应的输入特征组进行乘积累加,得到当前行内存区的各权重组对应的乘积累加结果;针对当前切片单元的每个切片组,将该切片组的各权重组对应的乘积累加结果依次进行累加,得到该切片组对应的卷积处理结果。
图16为图15中的加速装置的一种应用场景示意图,下面结合图10、图12、图15和图16对加速装置的工作原理进行示例性的详细说明。
具体地,在利用上述压缩方法对卷积神经网络模型进行压缩后,利用权重缓存器51缓存压缩后的卷积神经网络模型的权重,压缩后的卷积神经网络模型的权重在权重缓存器51中的具体缓存方式可参见上述相关的描述,此处不再赘述。
图16所示的权重缓存器仅示例性示出了一个存储单元对应缓存的一个卷积核单元的情形,作为示例,如图16所示,该卷积核单元包括卷积核1和卷积核2,卷积核1包括切片组11和切片组12,卷积核2包括切片组21和切片组22,其中,卷积核1的切片组11和卷积核2的切片组21组成切片单元1,卷积核1的切片组12和卷积核2的切片组22组成切片单元2,,其中切片组11的未被稀疏掉的权重包括权重组a1、权重组e1和权重组i1,切片组12的未被稀疏掉的权重包括权重组k1、权重组j1和权重组g1,切片组21的未被稀疏掉的权重包括权重组a2、权重组e2和权重组i2,切片组22的未被稀疏掉的权重包括权重组k2、权重组j2和权重组g2,切片单元1和切片单元2按照上述的权重存储方式被存储至权重缓存器51中。
加速装置在获取到输入特征图后,针对该输入特征图,利用上述压缩后的卷积神经网络模型对该输入特征图进行处理,处理过程可以包括多个卷积周期,每个卷积周期对应一卷积核单元,针对每个卷积周期,利用该卷积周期对应的卷积核单元对输入特征图进行处理,以得到该卷积核单元的每个卷积核所对应的输出特征子图,输出特征子图包含对应的卷积核对输入特征图的各卷积窗口进行处理得到的输出特征值。其中,每个卷积周期可以包括多个卷积子周期,每个卷积子周期可以对应处理输入特征图的一个卷积窗口。
在当前卷积周期中的当前卷积子周期,针对输入特征图的当前卷积窗口,依次利用当前卷积核单元的各切片单元对输入特征图的当前卷积窗口进行卷积处理,从而得到当前卷积核单元的各切片单元中各切片组针对该当前卷积窗口的卷积处理结果,而后将当前卷积核单元的每个卷积核的各切片组对应的卷积处理结果进行累加,得到针对输入特征图的当前卷积窗口,当前卷积核单元的每个卷积核对应处理得到的输出特征值。
具体而言,加速装置的输入缓存器53负责接收并缓存输入特征图。在当前卷积周期的当前卷积子周期,输入缓存器53将输入特征图的当前卷积窗口中各输入通道的输入特征值复制至窗口缓冲区(sliding window)以供读取单元52读取。
地址生成单元56已预先配置有权重缓存器51中各存储单元中各行内存区的读取地址,且通过地址查找表预先配置有与各行内存区的权重组对应的输入特征组在窗口缓冲区中的读取地址。
在当前卷积周期的当前卷积子周期,针对当前卷积核单元的每个切片单元,读取单元52按照地址生成单元(AGU)56提供的该切片单元对应的每一行内存区的读取地址,依次从权重缓存器51中相应的存储单元中寻址并搬运被密集、连续存储的与该切片单元对应的每一行内存区所存储的权重组,并依次将与该切片单元对应的每一行内存区所存储的权重组发送至卷积处理单元54。例如,针对切片单元1,先读取位于第一行的权重组a1和a2并发送至卷积处理单元54,而后读取位于第二行的权重组e1和e2并发送至卷积处理单元54,最后读取位于第二行的权重组i1和i2并发送至卷积处理单元54。
输入特征图的当前卷积窗口中与该切片单元的切片组对应的输入通道的输入特征值预先已被复制至预设的窗口缓冲区,在从权重缓存器51中读取到与该切片单元对应的当前行内存区所存储的权重组的同时,读取单元52根据地址生成单元56通过预设的地址查找表(ALUT)提供的与当前行内存区的权重组对应的输入特征组在窗口缓冲区中的读取地址,从窗口缓冲区中读取当前卷积窗口中与该切片单元的当前行内存区的权重组所对应的输入特征组,并发送至卷积处理单元54。例如,读取单元52读取的当前行内存区的权重组为权重组a1、a2,则相应地从窗口缓冲区中读取当前卷积窗口中与该切片单元的当前行内存区的权重组所对应的输入特征组α。
其中,如前所述,地址查找表预先存储有权重缓存器中各行内存区的权重组所对应的当前卷积窗口的各输入特征组在预设的所述窗口缓冲区中的的读取地址,地址生成单元56根据预设的地址查找表(ALUT)可以获取当前卷积窗口中与该切片单元的的当前行内存区的权重组所输入特征组在窗口缓冲区中的读取地址并提供给读取单元52,以供读取单元52根据该读取地址从窗口缓冲区中读取相应的输入特征组。
在本公开实施例中,卷积处理单元54可以包括MAC(乘积累加运算,MultiplyAccumulate)阵列,MAC阵列是由多个MAC单元构成的阵列,每个MAC单元可以由多个乘法器和累加器组成,其中每个MAC单元可以用于将该切片单元对应的每一行内存区的权重组,与输入特征图的当前卷积窗口中与该行权重组对应的输入特征组进行乘积累加,并将该行权重组中各切片组的权重组分别对应的卷积运算结果送入对应的累加器。
针对该切片单元对应的每一行权重组,在该行权重组中各权重组分别与对应的输入特征组进行乘积累加后,该行权重组中各切片组的权重组分别对应的乘积累加结果将被送入到对应的累加器,各累加器将属于该切片单元中同一切片组的权重组所对应的乘积累加结果进行累加,得到该切片单元中每个切片组分别对应的卷积处理结果,该卷积处理结果将被缓存至输出缓冲区。
作为示例,如图16所示,针对切片单元1,读取单元52当前读取的当前行内存区的权重组为权重组a1和权重组a2,且当前读取的输入特征组为输入特征组α,则卷积处理单元54在当前接收到权重组a1、a2以及对应的输入特征组α后,卷积处理单元54将权重组a1和输入特征组α送入一MAC单元进行乘积累加,并将权重组a2和输入特征组α送入另一MAC单元进行乘积累加,该两个MAC单元并行进行乘积累加,得到权重组a1对应的卷积运算结果以及权重组a2对应的乘积累加结果,权重组a1对应的卷积运算结果以及权重组a2对应的卷积运算结果分别被送入对应的累加器中进行累加。
读取单元52继续读取切片单元1对应的下一行内存区的权重组,即权重组e1和e2,并读取对应的输入特征组ε,卷积处理单元54在当前接收到权重组e1、e2以及对应的输入特征组ε后,卷积处理单元54将权重组e1和输入特征组ε送入一MAC单元进行乘积累加,并将权重组e2和输入特征组ε送入另一MAC单元进行乘积累加,该两个MAC单元并行进行乘积累加,得到权重组e1对应的卷积运算结果以及权重组e2对应的乘积累加结果,权重组e1对应的卷积运算结果以及权重组e2对应的卷积运算结果分别被送入对应的累加器中进行累加。
读取单元52继续读取切片单元1对应的下一行内存区的权重组,即权重组i1和i2,并读取对应的输入特征组β,卷积处理单元54在当前接收到权重组i1、i2以及对应的输入特征组β后,卷积处理单元54将权重组i1和输入特征组β送入一MAC单元进行乘积累加,并将权重组i2和输入特征组β送入另一MAC单元进行乘积累加,该两个MAC单元并行进行乘积累加,得到权重组i1对应的乘积累加结果以及权重组i2对应的乘积累加结果,权重组i1对应的卷积运算结果以及权重组i2对应的乘积累加结果分别被送入对应的累加器中进行累加。
可以理解的是,每个累加器可以对应一卷积核,属于同一卷积核的权重组所对应的乘积累加结果在该累加器中进行累加。换言之,权重组i1对应的乘积累加结果、权重组e1对应的乘积累加结果与权重组a1对应的乘积累加结果在对应的累加器中被累加,从而得到该切片单元1的切片组11对应的卷积处理结果;而权重组i2对应的乘积累加结果、权重组e2对应的乘积累加结果与权重组a2对应的乘积累加结果在对应的累加器中被累加,从而得到该切片单元1的切片组21对应的卷积处理结果。
在当前卷积周期的当前卷积子周期,遍历当前卷积核单元的所有切片单元对当前卷积窗口进行处理后,得到当前卷积核单元中各卷积核的各切片组对应的卷积处理结果。针对当前卷积核单元的每个卷积核,该卷积核的各切片组对应的卷积运算结果将依次被送入对应的累加器,该累加器每次的累加结果将被送入对应的输出缓冲区中进行缓存,该累加器在对当前卷积核单元中该卷积核的全部切片组所对应的卷积处理结果进行累加后,该输出缓冲区最终缓存的累加结果为该卷积核对应处理的当前卷积窗口的输出特征值,该输出缓冲区将该卷积核对应处理的当前卷积窗口的输出特征值送入输出缓存器进行缓存。而后,进入当前卷积周期的下一个卷积子周期,以利用当前卷积核单元对输入特征图的下一个卷积窗口进行处理。
在当前卷积周期,利用上述方式迭代所有卷积子周期,最终可以获得当前卷积核单元的每个卷积核对应的输出特征子图,该卷积核对应的输出特征子图包括该卷积核针对各卷积窗口的各输出特征值。
在迭代所有卷积周期后,即可获得卷积层的所有卷积核针对该输入特征图的输出特征子图,继而得到完整的输出特征图。
本公开实施例所提供的卷积神经网络加速装置,能够针对压缩后的卷积神经网络模型实现高并行的硬件加速,且有效减少了压缩后的卷积神经网络模型的内存消耗和计算量,且不损失模型的精度。
在实际应用中,在卷积子周期的每个时钟周期,地址生成单元对应读取一行内存区的权重组并送入卷积处理单元进行乘积累加,假设切片组对应的切片数为c
图17为本公开实施例提供的一种电子设备的组成框图,如图17所示,该电子设备包括:一个或多个处理器601;与至少一个处理器601通信连接的存储器602,其上存储有可被至少一个处理器601执行的一个或多个计算机程序,当一个或多个计算机程序被一个或多个处理器601执行,使得一个或多个处理器601实现上述方法中的任一项或多项方法;一个或多个I/O接口603,连接在处理器501与存储器602之间,配置为实现处理器601与存储器602的信息交互。
此外,本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述方法中任一项或多项方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
- 卷积神经网络模型压缩方法和装置、存储介质及电子装置
- 卷积神经网络模型的压缩方法及装置