掌桥专利:专业的专利平台
掌桥专利
首页

提供神经网络的方法、计算装置和计算机可读存储介质

文献发布时间:2023-06-19 09:26:02


提供神经网络的方法、计算装置和计算机可读存储介质

技术领域

本披露一般地涉及人工智能领域。更具体地,本披露涉及一种提供神经网络的方法、计算装置和计算机可读存储介质。

背景技术

卷积神经网络是目前深度学习技术领域中非常具有代表性的神经网络之一,在图像分析和处理领域取得了众多突破性的进展。已有的实验结果表明,更深或者更宽的卷积神经网络有更强大的能力来描述训练数据,可以使模型的模拟能力更强。然而,这样的卷积神经网络也将导致模型具有过多的冗余参数以及高昂的计算成本,使得在移动或嵌入式设备上部署模型变得困难,甚至是不可能。

剪枝是压缩神经网络的常用方法,其可以去除网络中不重要的神经元,大大降低计算量和参数量,提高网络运行效率。一种可取的剪枝技术是滤波器剪枝,其直接丢弃整个选定的滤波器,留下具有规则结构的模型。

然而,为了保证神经网络中的某些层(例如,eltwise层、concate层)的计算结果不会因为剪枝发生变化,进而保证剪枝压缩前的大模型和剪枝压缩后的小模型的精度一致,现有的滤波器剪枝方案通过对影响这些层的计算的卷积层不做剪枝或者共用一套剪枝索引(即需要被剪枝的滤波器的索引)来实现。这种处理方式限制了剪枝方法的通用性,增加了剪枝方法移植到不同神经网络的难度。

发明内容

为了至少解决如上所提到的技术问题,本披露在多个方面中提出了提供压缩神经网络的方案,该方案通过重排神经网络的剪枝层的滤波器,可以提高剪枝技术的通用性和可移植性。

在第一方面中,本披露提供了一种用于提供神经网络的方法,其中所述神经网络包括至少一个待剪枝层,每个待剪枝层包括一组滤波器,所述方法包括:接收所述神经网络的配置信息;根据预定的剪枝策略,基于所述配置信息确定每个所述待剪枝层的保留滤波器和剪枝滤波器,以对所述神经网络进行剪枝;以及对剪枝后的所述神经网络进行压缩,以提供压缩后的神经网络;其中,在所述压缩之前,所述方法还包括:按照预定的排序方式,对所述待剪枝层的滤波器进行重新排序。

在第二方面中,本披露提供了一种计算装置,包括:处理器,其配置用于执行程序指令;以及存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述计算装置执行根据本披露第一方面任一实施例所述的方法。

在第三方面中,本披露提供了一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行本披露第一方面任一实施例所述的方法。

通过如上所提供的提供神经网络的方法、计算装置和计算机可读存储介质,本披露的方案通过在对神经网络压缩之前,将剪枝层中的滤波器进行重排,使得可以对任意神经网络中的任意需要剪枝的层进行针对性剪枝,降低剪枝技术移植到不同神经网络的难度,提高了剪枝方法的通用性。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:

图1示出了可以应用本披露实施例的示例性残差网络的一种残差块结构的示意性简化图;

图2示出了无滤波器重排时剪枝模型压缩前和压缩后的eltwise层的计算情况;

图3示出了根据本披露一个实施例的滤波器重排操作的示意图;

图4示出了应用本披露实施例的滤波器重排后剪枝模型压缩前和压缩后的eltwise层的计算情况;

图5示出了根据本披露一个实施例的提供神经网络的方法500的示例性流程图;

图6示出了根据本披露另一个实施例的提供神经网络的方法600的示例性流程图;

图7示出了可以实施本披露实施例的提供神经网络方案的计算装置700的硬件配置框图;

图8示出了本披露实施例的用于提供神经网络的计算装置应用于人工智能处理器芯片的应用示意图;

图9是示出根据本披露实施例的一种组合处理装置900的结构图;以及

图10是示出根据本披露实施例的一种板卡1000的结构示意图。

具体实施方式

下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。

应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

首先给出本披露中可能用到的技术术语的解释。

滤波器:在神经网络的层中定义以用于提取特定特征,有时候也用核(kernel)来表示。每层的滤波器可以应用到整个数据上,也可以应用到一小部分数据上。通常每层可以有多个滤波器(一般每层的特征提取方式是相同的)。一个滤波器的维度可以表示为:Kw*Kh*Cin*Cout,其中Kw、Kh分别表示滤波器的宽和高,例如3*3;Cin和Cout分别表示滤波器的输入通道(in channel)和输出通道(out channel)。一般,每层中滤波器的个数可以用Cout来表示,它决定了输出或提取的特征图(Feature Map)的个数。在此情况下,1个滤波器就对应于Kw*Kh*Cin*1。

特征图:对图像应用一个滤波器之后得到的结果称为特征图。特征图的数目和滤波器的数目相等。在本文中,除非另有说明,否则特征图和滤波器可互换使用。

权值:用于表征滤波器的参数。

滤波器剪枝:主要是指对输出通道进行剪枝,直接丢弃整个选定的滤波器,也即减少滤波器的个数或特征图的个数。

如前面所提到的,为了保证神经网络中的某些层(例如,eltwise层、concate层)的计算结果不会因为剪枝发生变化,进而保证剪枝压缩前的大模型和剪枝压缩后的小模型的精度一致,现有的滤波器剪枝方案通过对影响这些层的计算的卷积层不做剪枝或者共用一套剪枝索引(即需要被剪枝的滤波器的索引)来实现。

下面以残差网络为例来描述上述剪枝方案,以便更好地理解可以应用本披露实施例的神经网络环境。图1示出了可以应用本披露实施例的示例性残差网络的一种残差块结构的示意性简化图。实际的残差网络可以包括多个级(stage),每级可以包括多个残差块。不同数量的残差块可以组成不同的残差网络,例如resnet50、resnet101等等。以resnet50为例,其包括5级,其中第2到5级分别包括3、4、6和3个残差块。

如图1所示,示例性的残差块包括残差支路110和旁路支路120。旁路支路120用于传递低层的信息使得网络能够训练得很深。残差支路110包括3个卷积层112、114和116,旁路支路120包括1个卷积层122。

以resnet50为例,根据上述现有滤波器剪枝的一种方案,对残差块的旁路支路120上、用于下采样的卷积层122不做剪枝,即保留该卷积层的所有滤波器,但对残差支路110中的剩余卷积层(例如,卷积层112、114、116)都做剪枝,从而可以确保eltwise层130剪枝前后的计算结果一致。但是这种方案需要在网络结构定义中重写eltwise层,即传入参与计算的卷积层的剪枝索引。这对于芯片的高性能算法库的实现而言,意味着需要额外定制地支持或实现一个eltwise层,因此对硬件支持是不友好的。

上述现有滤波器剪枝的另一种方案是共用一套剪枝索引。具体地,对同一个级(stage)中所有残差块的残差支路中的第三个卷积层(例如图1的卷积层116)和旁路支路上用于下采样的卷积层(例如图1的卷积层122)采用一套剪枝索引。例如,对于resnet50的四个级而言,分别有4、5、7、4个卷积层共用了一套剪枝索引。这样做虽然也可以保证eltwise层剪枝前后的计算结果一致,但处理方式过于简单,忽视了不同深度卷积层的功能差异与重要性差异。

用于不同任务的神经网络往往具有不同的骨干网络(backbone network)。即使使用相同的骨干网络,也会根据具体任务要求增加其他分支网络,因而最终的神经网络结构往往是定制化的。针对不同任务的神经网络结构,已有的剪枝方法就需要对它们进行深度分析,确定不做剪枝的卷积层有哪些,亦或者哪些层需要共用一套剪枝索引。因此,现有的滤波器剪枝方案的通用性与可移植性无疑是较低的。

针对现有滤波器剪枝方案的上述技术问题,本披露的实施例提供了一种剪枝方案,其通过对剪枝层中的滤波器进行重新排序,可以完成对任意神经网络中所有需剪枝层(例如,各种卷积层,归一化层,用于预测输出的卷积层不剪枝)的针对性剪枝,降低剪枝方法移植到不同神经网络的难度,提高剪枝方法的通用性。

下面结合附图来解释本披露实施例中使用的滤波器重排。

滤波器剪枝方法的一般过程包括:1)选择某一重要性计算准则计算神经网络中各待剪枝层(例如,卷积层)每个滤波器的重要性;2)根据重要性,按照某种规则筛选出不重要的滤波器进行剪枝,其中被剪枝的滤波器的权值会被置零;3)待整个网络剪枝完毕之后,提取神经网络中各剪枝层中权值不全为0的滤波器以及与之关联的其他层(如,batch norm层)的参数值,保存为剪枝后的小网络模型,从而完成剪枝全过程。

如前文所提到的,神经网络中的某些层(例如,eltwise层、concate层)的计算结果会因为剪枝而发生变化,进而导致剪枝压缩前的大模型和剪枝压缩后的小模型的精度不一致。

图2以eltwise层为例,示出了无滤波器重排时剪枝模型压缩前和压缩后的eltwise层的计算情况。如图2所示,eltwise层对卷积层1和卷积层2的输出结果执行eltwise操作。eltwise层有三种类型的操作:product(点乘)、sum(求和)、max(取最大值)。顾名思义,sum就是把输入的对应元素相加,product就是对应元素相乘,max就是对应元素取最大,其中sum为默认操作。图2中示出卷积层1和卷积层2的输出特征图大小都是h×w×4,也即各有4个h×w的滤波器,应用滤波器后分别得到4个特征图。在图2中每个特征图表示为一个二维平面。

图2上部示出了模型压缩前eltwise层的计算情况。模型压缩之前,卷积层1和卷积层2都完成了剪枝率为50%的剪枝,即分别都有2个滤波器的权值全部为0。相应地,图2中将与剪枝滤波器对应的特征图示出为浅色二维平面,将与保留滤波器对应的特征图示出为深色二维平面。在图2的示例中,假设经过剪枝之后卷积层1和卷积层2的保留滤波器的索引(索引从0开始)分别是{0,3}和{1,2}。在模型压缩前,这两个卷积层的输出特征图经过eltwise操作(例如,求和)之后,得到由两者的保留滤波器组合成的大小为h×w×4的特征图。

图2下部示出了模型压缩后eltwise层的计算情况。模型压缩之后,神经网络中各剪枝层中权值不全为0的滤波器被提取以形成小的网络模型。此时,卷积层1和卷积层2的保留滤波器的索引发生了变化,都变成了{0,1}。也即,压缩模型中卷积层1和卷积层2的输出特征图大小都是h×w×2。这两个卷积层的输出特征图经过eltwise操作(例如,求和)之后,得到大小为h×w×2的新特征图。

从图2的上下图示对比,可以直观地看到压缩模型使得保留滤波器的索引发生了改变,从而导致压缩前和压缩后的eltwise层计算结果无论是从数值还是维度大小上都不一致。

针对图2所示出的技术问题,本披露实施例提供的剪枝方案中应用了滤波器重排操作,使得与诸如eltwise层、concate层关联的各待剪枝层的保留滤波器索引一致,从而可以保证模型压缩前和压缩后的eltwise层、concate层等的计算结果一致。

图3示出了根据本披露一个实施例的滤波器重排操作的示意图。如图3所示,假设某一卷积层有8个滤波器,每个滤波器的大小是k_h×k_w×ci。

图3上部示出了该卷积层剪枝后重排前的滤波器,其中深色方块表示保留滤波器,浅色方块表示剪枝滤波器。图3上部的保留滤波器的索引依次是{0,2,5,6}。

图3下部示出了根据特定排序规则对该卷积层重排后的滤波器。如所示,经过滤波器重排,保留滤波器的索引变为{0,1,2,3}。因此经过卷积操作之后得到的保留特征图的索引也相应从{0,2,5,6}变为{0,1,2,3}。

图4示出了对图2的示例应用图3的滤波器重排操作后进行eltwise计算的示意图。

图4上部示出了模型剪枝后压缩前卷积层1和卷积层2的输出特征图。具体地,经过剪枝之后卷积层1和卷积层2的保留滤波器的索引分别是{0,3}和{1,2}。

图4中部示出了在模型压缩前对滤波器进行重排后的输出特征图。例如,按照图3所示的重排方式,将保留滤波器排在最前面。卷积层1和卷积层2的保留滤波器的索引均变为{0,1}。因此经过卷积操作之后得到的保留特征图的索引也相应地分别从{0,3}和{1,2}变为{0,1}。这两个卷积层的输出特征图经过eltwise操作(例如,求和)之后,得到大小为h×w×4的特征图,其包括由两者的保留特征图经eltwise操作后得到的大小为h×w×2的新特征图以及由两者的剪枝特征图构成的大小为h×w×2的剪枝特征图。

图4下部示出了模型压缩后eltwise层的计算情况。模型压缩之后,神经网络中各剪枝层中权值不全为0的滤波器被提取以形成小的网络模型。此时,卷积层1和卷积层2的保留滤波器的索引发生了变化,都变成了{0,1}。也即,压缩模型中卷积层1和卷积层2的输出特征图大小都是h×w×2。这两个卷积层的输出特征图经过eltwise操作(例如,求和)之后,得到大小为h×w×2的新特征图。

从图4的中部和下部图示对比可以直观地看到,滤波器重排操作使得保留滤波器的索引发生了改变,例如使得与eltwise层关联的两个卷积层的保留滤波器索引一致(在图4示例中都为{0,1}),从而确保压缩前和压缩后的eltwise层计算结果能够保持一致。

上面参考图2-图4描述了本披露实施例的滤波器重排操作的原理。

本领域技术人员可以理解,图3仅仅示出了滤波器重排操作的一种实现方式。在其他实施例中,可以按照不同方式执行滤波器重排操作。

在一种实现中,可以按照剪枝指标(例如,滤波器重要性)从高到低的顺序排列滤波器,从而将保留滤波器集中排在前面(例如图3所示的重排方式)。在这种实现中,经过滤波器重排后,模型压缩前与压缩后的保留滤波器的索引会保持一致。例如,在图4的示例中,卷积层1重排后,压缩前与压缩后的保留滤波器的索引都是{0,1}。

在另一种实现中,可以按照剪枝指标从低到高的顺序排列滤波器,从而将保留滤波器集中排在后面。在这种实现中,经过滤波器重排后,模型压缩前与压缩后的保留滤波器的索引通常不会保持一致。例如,假设图4的示例中按剪枝指标从低到高的顺序重排滤波器,则卷积层1重排后压缩前的保留滤波器的索引为{2,3},而压缩后的保留滤波器的索引为{0,1}。

在又一种实现中,可以将保留滤波器集中在一起,使得同一剪枝层内的保留滤波器具有连续索引。在再一种实现中,可以将保留滤波器分散在两头,甚至分散在整个序列上,由此具有不连续索引。

无论采取哪种方式进行滤波器重排,只需要确保对与计算结果受剪枝影响的特定层(诸如eltwise层、concate层等)关联的各剪枝层应用一致的滤波器重排方式,就可以保证关联剪枝层的保留滤波器的索引相互一致,从而这些特定层的计算结果在压缩前与压缩后能够保持一致。在一些实施例中,可以在神经网络的局部应用一致的滤波器重排方式。例如,在残差网络中,可以在各个stage内部应用一致的滤波器重排方式,而各stage的滤波器重排方式可以不一致。在另一些实施例中,可以在神经网络的全局应用一致的滤波器重排方式。例如,在残差网络中,可以在所有stage内都应用同一种滤波器重排方式。

从上述描述可以看出,本披露实施例的滤波器重排操作可以与各种现有的或未来的剪枝方案进行结合而没有任何限制。一方面,神经网络中不同深度的卷积层可以按照其自身的功能和重要性执行剪枝,而不用像前述滤波器剪枝方案一样必须共用一套剪枝索引。另一方面,由于通过滤波器重排操作确保了诸如eltwise层的计算结果在压缩前后一致,因此无需在网络结构定义中重写eltwise层。这样,即使针对不同任务的神经网络结构,也无需对它们进行深度分析,就可以应用现有的或未来的各种剪枝方案。由此,提高了滤波器剪枝方案的通用性和可移植性。

基于上述描述,本领域技术人员可以进一步理解,本披露实施例的滤波器重排操作可以在滤波器剪枝之前执行,也可以在滤波器剪枝之后执行,只要在模型压缩之前实现重排即可。下面结合更详细的方法流程图来描述本披露的各种实施例。

图5示出了根据本披露一个实施例的提供神经网络的方法500的示例性流程图。方法500例如可以由处理器来执行以提供压缩的神经网络模型。该压缩的神经网络模型例如可以由人工智能处理器运行,以实现各种任务,诸如图像分类、图像识别等等。

如图5所示,在步骤S510中,接收神经网络的配置信息。该神经网络是准备进行剪枝压缩的神经网络,其可以包括至少一个待剪枝层,每个待剪枝层包括一组对应的滤波器。

神经网络的配置信息可以包括用于实施滤波器剪枝所需的各种信息。例如,配置信息可以包括但不限于待剪枝层的各个滤波器的权值信息,待剪枝层的通道参数等等,以供后续计算执行滤波器剪枝的剪枝指标。

接着,在步骤S520中,根据预定的剪枝策略,基于接收的配置信息确定每个待剪枝层的保留滤波器和剪枝滤波器,以对该神经网络进行剪枝。

在一些实施例中,剪枝步骤可以包括子步骤S522,基于接收的配置信息,确定每个待剪枝层的各个滤波器的剪枝指标。

剪枝指标可以客观反映滤波器对于神经网络的贡献程度。从前面的定义可知,滤波器的数量可以用输出通道的数量来表示。相应地,在执行滤波器剪枝时,剪枝指标可以包括滤波器重要性指标、通道重要性指标或两种指标的组合。可以构造各种滤波器重要性指标和/或通道重要性指标。在一些示例中,滤波器重要性指标可以包括以下任一:滤波器的L1范数、L2范数、或前述的任意组合。在另一些示例中,通道重要性指标可以包括以下任一:通道参数的幅值、L1范数、L2范数、梯度、参数相关性、参数冗余度、对通道损失的影响程度、对特征重建误差的贡献、或前述的任意组合。

剪枝步骤S520可以进一步包括子步骤S524,根据剪枝策略,基于所确定的剪枝指标,对每个待剪枝层执行剪枝。

滤波器剪枝,也就是筛选出需要被剪枝的滤波器。从前面的描述可知,本披露的实施例可以与各种剪枝方案结合而无需施加特别限制。因此,剪枝策略可以是各种现有的或未来开发的剪枝策略,其用于限定筛选出需要被剪枝的滤波器的规则。例如,剪枝策略可以包括但不限于以下方面:全局剪枝、局部剪枝、逐层剪枝、剪枝阈值、剪枝比例和剪枝滤波器的处理方式等。全局剪枝是指对整个神经网络进行剪枝。与之相对地,局部剪枝是指对神经网络的局部进行剪枝。逐层剪枝是指逐层进行剪枝,而不是一次性完成剪枝。剪枝阈值可以限定将剪枝指标低于/高于剪枝阈值的滤波器剪除。剪枝阈值可以是绝对阈值,例如根据经验设置;也可以是相对阈值,例如被剪枝滤波器的占比。例如,剪枝比例设置为40%,则根据剪枝指标,将待剪枝层中剪枝指标低的40%个滤波器剪除。

剪枝滤波器的处理方式是指如何标记这些筛选出的剪枝滤波器。可以有多种处理方式。在一个示例中,可以将筛选出的剪枝滤波器的权值置零。在另一示例中,可以仅记录这些筛选出的剪枝滤波器的索引,以供随后的压缩步骤使用。在又一示例中,可以使用附加的掩码来标记筛选出的剪枝滤波器。例如,掩码可以是与剪枝层具有相同维度的标记,掩码中的元素取值为0或1表示该剪枝层对应的滤波器被剪枝或不被剪枝,反过来设置也可以。

执行剪枝之后,方法500可以前进到步骤S530,按照预定的排序方式,对各个待剪枝层的滤波器分别进行排序。

对滤波器进行重新排序会改变滤波器的索引。如前面所提到的,通过对与特定层/计算(例如,eltwise层、concate层等)关联的(待)剪枝层应用一致的滤波器排序方式,可以使得这些剪枝层的保留滤波器索引一致,从而该关联的特定层/计算的计算结果在神经网络模型压缩前后能够保持一致。

神经网络中可能存在多个这种特定层,因此可以在神经网络的局部(或分组)或者全局应用一致的滤波器重排方式。具体地,上述预定的排序方式可以指定在神经网络的各个stage内部应用的排序方式,各stage的滤波器重排方式可以互不相同,或者其中若干stage的滤波器重排方式可以相同;或者,该预定的排序方式也可以指定在神经网络的全局应用一致的滤波器重排方式。

具体的滤波器重排方式可以有很多种。如前面所描述的,滤波器重排方式可以包括但不限于:按照剪枝指标(例如,滤波器重要性)从高到低的顺序;按照剪枝指标从低到高的顺序;将保留滤波器集中在一起,使得同一剪枝层内的保留滤波器具有连续索引;将保留滤波器分散在两头,甚至按指定图案分散在整个序列上,由此具有不连续索引。

无论采取哪种方式进行滤波器重排,只需要确保对与计算结果受剪枝影响的特定层(诸如eltwise层、concate层等)关联的各剪枝层应用一致的滤波器重排方式,就可以保证这些关联剪枝层的保留滤波器的索引相互一致,从而这些特定层的计算结果在压缩前与压缩后能够保持一致。

最后,在步骤S540中,对上述经过剪枝并重新排序后的神经网络进行压缩,以提供压缩后的神经网络。

从前面对剪枝步骤S520的描述可以看出,滤波器剪枝操作主要对剪枝层(例如,卷积层)中不重要的滤波器的权值置零或者获取这些不重要的滤波器的索引,但实际上整个模型大小与计算量是不变的。因此,在步骤S540的压缩操作中,提取保留的滤波器的权值,构成新的神经网络模型,从而缩小模型大小并减少模型计算量。压缩步骤需要保证压缩后的小模型与压缩前的大模型的模拟精度一致。可以采取各种方式来完成压缩步骤,本披露实施例在此方面没有限制。

图6示出了根据本披露另一实施例的提供神经网络的方法600的示例性流程图。图6的方法600与图5的方法500的不同之处在于滤波器重排操作与剪枝操作的顺序,也即在方法600中,在剪枝之前执行滤波器重排操作。因此,在下面的描述中省略与方法500相同之处的描述,仅着重描述方法600的不同之处。

如图6所示,在步骤S610中,接收神经网络的配置信息。

接着,在步骤S620中,按照预定的排序方式,对神经网络中各个待剪枝层的滤波器分别进行排序。

由于此排序步骤在剪枝之前进行,此时尚不能确定哪些滤波器将保留,哪些滤波器将被剪枝。因此,滤波器的重排方式可以基于剪枝指标来进行。例如,滤波器重排方式可以包括但不限于以下任一方式:按照剪枝指标(例如,滤波器重要性)从高到低的顺序;以及按照剪枝指标从低到高的顺序。

在一些实施例中,滤波器重排步骤可以包括子步骤S622,基于接收的配置信息,确定每个待剪枝层的各个滤波器的剪枝指标。

接着,在子步骤S624,基于剪枝指标,按照一致的排序方式对各个待剪枝的滤波器分别进行排序。类似地,该一致的排序方式可以是在神经网络的局部(或分组)内一致,也可以是在神经网络的全局上一致。

通过至少对与计算结果受剪枝影响的特定层(诸如eltwise层、concate层等)关联的各剪枝层应用一致的滤波器重排方式,就可以保证这些关联剪枝层的保留滤波器的索引相互一致,从而这些特定层的计算结果在压缩前与压缩后能够保持一致。

接着,方法600可以前进到步骤S630,根据预定的剪枝策略,对该神经网络进行剪枝。由于在滤波器重排序步骤S620中,为了排序已经计算了待剪枝层中各滤波器的剪枝指标,因此在此剪枝步骤S630中,可以直接利用这些计算出的剪枝指标,而无需重复计算。

具体地,步骤S630可以包括根据剪枝策略,基于所确定的剪枝指标,对每个待剪枝层执行剪枝。换言之,根据预定的剪枝策略和所确定的剪枝指标,确定每个待剪枝层的保留滤波器和剪枝滤波器,并标记出这些筛选出的剪枝滤波器。

最后,在步骤S640中,对上述经过重新排序并剪枝后的神经网络进行压缩,以提供压缩后的神经网络。

以上参考图5-图6的示例性方法流程描述了本披露实施例的可能实现方式。从上述描述可以看出,通过在模型压缩之前增加滤波器重排操作,可以解决神经网络中某些计算层在剪枝模型压缩前后计算结果不一致的问题。增加的滤波器重排操作可以在剪枝之前进行,也可以在剪枝之后进行。由于增加的滤波器重排操作不影响现有剪枝处理,因此不需要在神经网络定义中增加对这些特殊计算层的重写,从而在芯片的高性能算法库的实现上也不需要额外定制这些特殊计算层,这在硬件支持上是很友好的。

此外,本披露实施例的技术方案可以支持对任意神经网络中所有待剪枝层(例如,卷积层)的针对性剪枝,无须像前文描述的现有方案一样深度分析复杂的网络结构,定位不能剪枝的卷积层或者需要特殊处理的卷积层,从而降低了剪枝方法移植到不同神经网络的难度,提高了剪枝方法的通用性。

图7示出可以实施本披露实施例的提供神经网络方案的计算装置700的硬件配置的框图。如图7所示,计算装置700可以包括处理器710和存储器720。在图7的计算装置700中,仅示出了与本实施例有关的组成元素。因此,对于本领域普通技术人员而言显而易见的是:计算装置700还可以包括与图7中所示的组成元素不同的常见组成元素。比如:运算器。

计算装置700可以对应于具有各种处理功能的计算设备,例如,用于生成神经网络、训练或学习神经网络、将浮点型神经网络量化为定点型神经网络、或者重新训练神经网络的功能。例如,计算装置700可以被实现为各种类型的设备,例如个人计算机(PC)、服务器设备、移动设备等。

处理器710控制计算装置700的所有功能。例如,处理器710通过执行计算装置700上的存储器720中存储的程序,来控制计算装置700的所有功能。处理器710可以由计算装置700中提供的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、人工智能处理器芯片(IPU)等来实现。然而,本披露不限于此。

在一些实施例中,处理器710可以包括输入/输出(I/O)单元711和计算单元712。I/O单元711可以用于接收各种数据,例如校准数据集。计算单元712可以用于对经由I/O单元711接收的神经网络模型进行压缩处理。此压缩后的神经网络模型例如可以由I/O单元711输出。输出数据可以提供给存储器720以供其他设备(未示出)读取使用,也可以直接提供给其他设备使用。

存储器720是用于存储计算装置700中处理的各种数据的硬件。例如,存储器720可以存储计算装置700中的处理过的数据和待处理的数据。存储器720可存储处理器710已处理或要处理的神经网络运算过程中涉及的数据集,例如,未训练的初始神经网络的数据、在训练过程中生成的神经网络的中间数据、完成了所有训练的神经网络的数据、经压缩的神经网络的数据等。此外,存储器720可以存储要由计算装置700驱动的应用、驱动程序等。例如:存储器720可以存储与将由处理器710执行的神经网络的训练算法、剪枝算法、压缩算法等有关的各种程序。存储器720可以是DRAM,但是本披露不限于此。存储器720可以包括易失性存储器或非易失性存储器中的至少一种。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁性RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。易失性存储器可以包括动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、PRAM、MRAM、RRAM、铁电RAM(FeRAM)等。在实施例中,存储器820可以包括硬盘驱动器(HDD)、固态驱动器(SSD)、高密度闪存(CF)、安全数字(SD)卡、微安全数字(Micro-SD)卡、迷你安全数字(Mini-SD)卡、极限数字(xD)卡、高速缓存(caches)或记忆棒中的至少一项。

综上,本说明书实施方式提供的计算装置700的存储器720和处理器710实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。

在本实施方式中,处理器710可以按任何适当的方式实现。例如,处理器710可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。

图8示出了本披露实施例的用于提供神经网络的计算装置应用于人工智能处理器芯片的应用示意图。参考图8,如上所述,在诸如PC、服务器等的计算装置700中,处理器710执行剪枝压缩操作,将神经网络剪枝压缩成小模型网络。人工智能处理器芯片820是用于驱动神经网络的专用硬件。由于本披露实施例中增加的滤波器重排操作不影响现有剪枝处理,因此不需要在神经网络定义中增加对这些特殊计算层的重写,从而在芯片的高性能算法库的实现上也不需要额外定制这些特殊计算层,这在硬件支持上是很友好的。

在本披露实施例中,人工智能处理器芯片可以对应于例如神经处理单元(NPU)、张量处理单元(TPU)、神经引擎等,它们是用于驱动神经网络的专用芯片,但是本披露不限于此。

在本披露实施例中,人工智能处理器芯片可以在独立于计算装置700的单独设备中实现,计算装置700也可以作为人工智能处理器芯片的一部分功能模块来实现。但是本披露不限于此。

在本披露实施例中,通用处理器(比如CPU)的操作系统基于本披露实施例生成指令,将生成的指令发送至人工智能处理器芯片(比如GPU)上,由人工智能处理器芯片去执行指令操作实现神经网络的剪枝压缩过程。还有一种应用情况,通用处理器基于本披露实施例直接对神经网络进行剪枝压缩,人工智能处理器芯片利用剪枝压缩后的神经网络模型执行运算操作。更甚者,通用处理器(比如CPU)和人工智能处理器芯片(比如GPU)流水化操作,通用处理器(比如CPU)的操作系统基于本披露实施例生成指令,且对目标数据进行拷贝的同时人工智能处理器芯片(比如GPU)进行神经网络运算操作,这样可以把某些时间消耗隐藏起来。但是本披露不限于此。

在本披露实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器运行时,使得处理器执行上述提供剪枝压缩的神经网络的方法。

图9是示出根据本披露实施例的一种组合处理装置900的结构图。如图9中所示,该组合处理装置900包括计算处理装置902、接口装置904、其他处理装置906和存储装置908。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置910,该计算装置可以配置成图7所示的计算装置700,用于执行本文结合附图5-6所描述的操作。

在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。

在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。

在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。

在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。

附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。

在一些实施例里,本披露还公开了一种芯片(例如图10中示出的芯片1002)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图9中所示的组合处理装置。该芯片可以通过对外接口装置(如图10中示出的对外接口装置1006)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图10对该板卡进行详细地描述。

图10是示出根据本披露实施例的一种板卡1000的结构示意图。如图10中所示,该板卡包括用于存储数据的存储器件1004,其包括一个或多个存储单元1010。该存储器件可以通过例如总线等方式与控制器件1008和上文所述的芯片1002进行连接和数据传输。进一步,该板卡还包括对外接口装置1006,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1012(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。

在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。

根据上述结合图9和图10的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。

根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。

需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。

在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。

在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。

在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。

相关技术
  • 提供神经网络的方法、计算装置和计算机可读存储介质
  • 终端、服务提供装置和优惠券服务器、具有终端、服务提供装置和优惠券服务器的电子钱包系统、其控制方法、以及记录有计算机程序的非暂态计算机可读存储介质
技术分类

06120112168942