用于神经网络模型的组平衡式稀疏激活特征图的制作方法
未命名
07-24
阅读:155
评论:0
用于神经网络模型的组平衡式稀疏激活特征图
1.相关申请的交叉引用
2.本技术要求2020年9月30日提交的美国非临时专利申请第17/038557号的权益,其公开内容通过引用全部纳入本文。
技术领域
3.本公开的实施例总体上涉及人工智能。更具体地说,本公开的实施例涉及用于深度神经网络模型的组平衡式稀疏激活特征图的方法和系统。
背景技术:
4.深度神经网络(dnn)已经成为人工智能(ai)中广泛使用的一种方法,用于从诸如图像、视频、音频和文本等低级数据中提取高级信息。然而,dnn昂贵的计算成本阻碍了它在能源消耗、存储空间或延迟容忍度方面预算较紧的应用中的使用,特别是阻碍了在诸如移动电话和监控摄像头等边缘设备上的使用。
5.dnn模型的计算成本来自于多个方面。首先,dnn模型参数可能是几百万或几千万的数量级,这导致了巨大的存储成本,并且会阻碍dnn模型参数在内存空间中的存储。第二,dnn模型中的神经元数量会消耗大量的内存空间,并且在运行时可能需要数十亿次的算术运算。第三,基于由神经网络生成的向量表征的搜索引擎、如人脸比较引擎,计算成本可能会很高,部分原因是dnn的高维密集向量表征(嵌入)。
附图说明
6.本公开的实施例在附图的示图中以举例而非限制的方式进行了说明,其中,相同的附图标记表示相同的元素。
7.图1是框图,示出了根据一个实施例的具有组平衡式稀疏激活特征图的深度神经网络(dnn)模型的示例。
8.图2a至图2b是框图,示出了根据一个实施例的神经网络稀疏化引擎。
9.图3是框图,示出了根据一个实施例的dnn模型的层。
10.图4是框图,示出了根据一个实施例通过更新dnn模型的层的权重进行的激活特征图稀疏化。
11.图5a是框图,示出了根据一个实施例的dnn的层的组平衡式稀疏激活张量。
12.图5b是框图,示出了根据一个实施例的dnn的层的组平衡式稀疏激活张量的另一示例。
13.图6是框图,示出了根据一个实施例的具有二维的激活张量。
14.图7是框图,示出了根据一些实施例的具有三维的激活张量的组布置的三个示例。
15.图8是流程图,示出了根据一个实施例的生成组平衡式稀疏dnn的过程。
16.图9是流程图,示出了根据一个实施例的方法。
具体实施方式
17.本公开的各种实施例和方面将参照下文讨论的细节进行描述,而附图将说明各种实施例。下面的描述和附图是对公开内容的说明,不应理解为对公开内容的限制。描述了许多具体细节,以提供对本公开的各种实施例的透彻理解。然而,在某些情况下,为了对本公开的实施例进行简明的讨论,没有描述众所周知或常规的细节。
18.本说明书中提到的“一个实施例”或“一实施例”是指与该实施例一起描述的特定特征、结构或特性可以包括在本公开的至少一个实施例中。说明书中各处出现的“在一个实施例中”这一短语不一定都是指同一个实施例。
19.以下定义适用于本文所述的元素和操作。这些定义有助于描述本公开内容的实施例,但并不意味着要被解释为限制性的。
20.加速——指改变dnn,使计算dnn功能所需的算术运算次数减少。
21.组平衡式稀疏权重——在一个或多个权重组(bank)中平衡的稀疏模式,使得每个权重组中的非零权重元素数量相同。组平衡式稀疏性适用于dnn模型的层的权重。
22.组平衡式稀疏激活——在一个或多个特征图组中平衡的稀疏模式,使得每个特征图组中的非零输出激活元素数量相同。组平衡式稀疏性适用于dnn模型的层的输出激活特征图。
23.深度神经网络(dnn)模型——深度神经网络(dnn)模型是由若干层初等函数组成的复合函数,其中每个函数都把在先各层的输出作为输入,并计算出一组新的输出。每层的输出被称为神经元,如果神经元具有非零值,则该神经元被激活(或是活跃的),反之则停用(或是不活跃的)。
24.目标函数——指的是在训练过程中通过衡量dnn在与特定训练数据集相关的特定任务中的表现来优化的函数。
25.稀疏化(稀疏性)——指的是训练dnn的方法论(即调整dnn的参数),使所激活的神经元的数量明显小于神经元的总数(即至少小于一半,通常小于四分之一)。
26.张量——指的是用于存储神经网络的参数的一数据结构,如任何维度的向量和矩阵。
27.实施例公开了组平衡式稀疏激活神经网络模型和生成组平衡式稀疏激活神经网络模型的方法。根据一个方面,神经网络稀疏化引擎确定具有两个或更多个隐藏层的第一深度神经网络(dnn)模型。该引擎确定组大小、组布局和目标稀疏性。该引擎基于组大小和组布局将激活特征图分割成多个组。该引擎通过基于目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型,其中第二dnn模型被用于推理。
28.根据第二方面,公开了一种组平衡式稀疏激活深度神经网络(dnn)模型。组平衡式稀疏激活dnn模型包括一输入层、一个或多个隐藏层和一输出层,其中一个或多个隐藏层设置在该输入层和该输出层之间,并且每个隐藏层是为了输出组平衡式稀疏激活特征图。组平衡式稀疏激活dnn模型通过以下方式生成,即,确定具有一个或多个隐藏层的第一dnn模型;确定组大小、组布局和目标稀疏性;基于组大小和组布局将激活特征图分割成多个组;以及通过基于目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型作为组平衡式稀疏激活dnn模型,其中第二dnn模型用于推理。
29.图1是框图,示出了根据一个实施例的具有组平衡式稀疏激活特征图的深度神经
网络(dnn)模型的示例。参照图1,dnn模型100包括深度神经网络模型,该深度神经网络模型具有设置在输入层111和输出层113之间的一个或多个内层/隐藏层101-103。每个内层101-103可具有激活函数(未示出)和权重/偏置(未示出)的一个或多个张量,当这些张量与输入特征图111、123-125相乘时,为各层生成输出激活特征图123-125、113。在此,一个或多个输出激活特征图是组平衡式稀疏特征图(下文进一步讨论组平衡式稀疏特征图)。dnn模型的类型包括、但不限于每一层都完全连接到前一层和下一层的卷积nn、部分连接的dnn、循环nn、长短期记忆(lstm)dnn模型等。尽管可以用图1的dnn来描述一些实施例,但dnn模型的类型范围不应该被理解为是受限的。
30.图2a至图2b是框图,示出了根据一个实施例的神经网络稀疏化引擎。参照图2a至图2b,神经网络稀疏化引擎200可以生成组平衡式稀疏dnn模型。在一个实施例中,神经网络稀疏化引擎200包括以下输入:训练数据和评价指标(例如目标函数)、预训练的dnn模型(可选)、组数量、稀疏率,并且神经网络稀疏化引擎200包括以下输出:具有组平衡式稀疏激活特征图的dnn模型。在一个实施例中,引擎200可以基于输入的训练数据和评价指标(例如目标函数)生成预训练的dnn模型。
31.在一个实施例中,组大小、组布局和稀疏率设置有默认值或初始值,例如组大小=2、4、8、16;组布局=列、行、通道;稀疏率=20%、40%、60%等。在另一个实施例中,对于具有引擎200的装置/系统,组大小、组布局和稀疏率可由用户配置。在另一个实施例中,块大小/布局和稀疏率可基于神经网络的一个或多个超参数/类型/张量维度自动配置。例如,对于自然语言处理dnn,神经网络的张量维度可以是通过词嵌入而得到的句子长度,词嵌入即每个具有它们相关情感的词的向量。
32.在此,第一维度的组的数量可以基于句子长度维度来确定,例如,组的数量等于句子长度除以val,其中val是代表组大小的数字数据类型的数字。第二维度的组数量可以基于词嵌入维度来确定,例如,组的数量等于词嵌入除以val,其中val是代表组大小的数字数据类型的数字。图5a中示出了组大小等于4的组平衡式激活的示例,而图5b中示出了组大小等于2的组平衡式激活的示例。稀疏率可以被设置为默认值。例如,稀疏率可以被设置为50%。在另一个实施例中,只要评价指标(目标函数)收敛并且不调整dnn模型的权重/偏置,例如输出结果在预定次数的迭代的预定阈值内,稀疏率就可以自动配置为增加。
33.参照图2b,在一个实施例中,神经网络稀疏化引擎200可以作为数据处理系统、服务器、计算系统、边缘设备等的一部分来实现。引擎200可以生成组平衡式稀疏深度神经网络模型,如图1的模型100。参照图2b,引擎200可以包括诸如dnn生成器201、组数量确定器202、目标稀疏性确定器203、激活组确定器204、dnn训练器205和稀疏器206等模块。
34.在一个实施例中,dnn生成器201可以基于一个或多个训练数据集和目标函数生成dnn模型。训练数据可以包括用于特定任务的输入数据和输出标签(例如分类、对象检测、面部识别、语言处理等)。在一个实施例中,dnn生成器201可以基于预训练的dnn模型生成稀疏dnn模型。组数量确定器202可以为输出的激活特征图组确定组的值/数量,因此这些组可以基于组数量进行检索。目标稀疏性确定器203可以确定稀疏dnn模型的目标稀疏性(如20%、40%、60%、80%等)。激活组确定器204可以基于组大小/布局,将特征图分组/划分为若干个组。应注意的是,每个神经网络层输出激活特征图,并且输出的激活特征图是对下一层的输入。
35.dnn训练器205可以通过前向和后向传播来训练dnn模型或重新训练dnn模型。稀疏器206可以通过对dnn模型的任何层的权重或激活特征图进行稀疏化而将稀疏化应用到dnn模型上。应注意的是,模块201-206的一些或全部可以用软件、硬件或软件与硬的组合来实现。例如,这些模块可以安装在存储设备212中、加载到内存211、并由一个或多个处理器210执行。模块201-206中的一些可以被集成在一起,成为集成模块。
36.图3是框图,示出了根据一个实施例的dnn模型的层。层300可以是深度神经网络的层,如图1的层101。参照图3,层300可以由y=activation_fn(wx+b)表示,其中x代表输入张量,y代表输出张量(或输出激活特征图),w代表权重张量,b代表偏置张量,activation_fn代表激活函数。激活函数的示例包括线性整流函数(relu)、s型函数(sigmoid)、双曲正切函数(tanh)等。
37.图4是框图,示出了根据一个实施例的通过更新层的权重而对dnn的层进行激活特征图稀疏化。层400可以代表图3的层300,但具有激活剪枝(或激活稀疏化)。参照图4,为了激活剪枝,基于目标稀疏性将一个或多个激活特征图(例如输出y)设置为零。例如,y=activation_fn(wx+b)
·
t,其中t是该层的activation_fn(wx+b)的输出张量的掩码,“·”是数学上的逐元素积运算,y是输出。在此,权重值401可以被更新,例如,w
→
w',其中w'是更新的权重张量。基于新的权重张量,激活特征图为:y'=activation_fn(w'x+b),其中y'是输出激活。在此,经激活剪枝的dnn模型,例如,具有用于一个或多个层的、经剪枝的激活张量(即特征图)的dnn模型会使用较少的计算(例如乘法和/或加法)进行推理,从而导致更快和更有效的dnn模型。应注意的是,掩码t是二进制向量,其是基于输入x和t而动态得出的,其中t是activation_fn(wx+b)的函数。
38.掩码t的示例可以通过挑选每组张量activation_fn(wx+b)的最大前k(top-k)项来获得,将与每组的最大前k项对应的元素设置为1,并将与其他项对应的元素设置为0。这导致非零元素的总数为k乘以组的数量。
39.在一个实施例中,对于具有l层的dnn模型,其在第i层具有输出特征图在一个实施例中,激活剪枝可以表示为掩码:其中i=1,...,l-1;鉴于输出特征图是三维(3d)张量,ci、n和di是3d输出特征图的各维度大小。
40.图5a是框图,示出了根据一个实施例的dnn的层的组平衡式稀疏激活张量。参照图5a,层500可以代表图4的层400。在一个实施例中,层500输出密集的激活矩阵y1,y1代表在激活稀疏化之前的激活特征图张量501。对于一个示例,对于组大小=4、组布局=行以及目标稀疏率=50%,稀疏化引擎(如图2a-图2b的引擎200)可以基于特征图501生成组平衡式稀疏特征图502。应注意的是,稀疏激活可以提供硬件加速。
41.在一个实施例中,特征图501是通过确定用于应用稀疏化的维度来生成的。参照图5a,在这个示例中,引擎200可以自动配置为将稀疏化应用于作为组布局的行维度。在此,引擎200根据组大小来划分特征图的每一行,在这种情况下,组大小等于4导致组1和组2。对于每个组,引擎200将数值从大到小排列。例如,组1具有经排列的数值0.8、0.2、0.1、-0.4。基于目标稀疏率,最大的各值被选为激活值,而其余的值被设置为零。在此,0.8和0.2被选为组1的激活值,而其余的值被设置为零(即停用),以达到50%的目标稀疏率。
42.引擎200对层500的其他组应用该选择过程,以生成特征图502。在一个实施例中,选择是逐步和/或迭代地进行的,例如,一次从单个组中调零单个激活值。在另一个实施例
中,激活值基于阈值调零,例如,一个组的激活值如果小于阈值,则设置为零。在一个实施例中,每个组都具有不同的阈值。
43.图5b是框图,示出了根据另一个实施例的dnn的层的组平衡式稀疏激活张量。参照图5b,张量503示出了应用于张量501的列维度的组平衡式稀疏化(在此,引擎200可以由用户配置为将稀疏化应用于列维度)。参照图5b,基于组大小/布局,每一列被划分为顶部组(组1)和底部组(组2),例如组大小=2和组布局=列。对于每个组,可以对激活值进行排序,并保留最大前k个激活值,而其余的激活值被设置为零。
44.例如,基于50%的目标稀疏率,每个具有两个激活值的组被减少到一个激活值(50%的目标率),以生成组平衡式稀疏特征图503。在一个实施例中,要稀疏化的维度(或分量)、组大小/布局和/或稀疏率可以由使用引擎200的加速器/处理系统/服务器/边缘设备的操作员配置。在另一个实施例中,维度、组大小/布局和/或稀疏率可以基于张量501的维度/分量或超参数来自动配置。
45.图6是框图,示出了根据一个实施例的具有二维(2d)的激活张量。参照图6,层600可以代表图5a的层500,而张量601可以代表图5a的张量501。参照图6,对于一个实施例,层600输出2d激活张量601。在这种情况下,张量601可以是自然语言处理深度神经网络的激活张量,并且张量601包括以下维度:句子长度维度和隐藏维度。隐藏维度可以包括词嵌入的维度,或者自然语言处理深度神经网络的任何其他维度值。
46.图7是框图,示出了根据一个实施例的具有三维(3d)的激活张量。参照图7,层700可以代表图5a的层500,而张量701可以代表图5a的张量501。参照图7,对于一个实施例,层700输出3d激活张量701。在这种情况下,张量701可以是图像识别/分类深度神经网络的激活张量,并且张量701包括以下维度:高度、宽度和通道。例如,红绿蓝(rgb)图像包括红色通道、绿色通道、蓝色通道,并且每个通道包括大小为高度
×
宽度的图像。对于具有深度的rgb图像,通道可以包括红色、绿色、蓝色和深度。应注意的是,神经网络的不同层可以生成具有不同数量的通道维度、高度维度和/或宽度维度的激活输出。
47.参照图7,在一个实施例中,可以基于各个激活特征图的颜色通道的数量来自动配置组。在此,每个通道(例如通道711)可以被视为一个组,并且可以基于目标稀疏率从每个组中选择最大的前k个值,以生成组平衡式稀疏激活。在另一个实施例中,组可以自动配置或由操作员配置。在另一个实施例中,一个通道可以被划分为几个组(例如通道712被划分为4个组)。接下来,可以基于目标稀疏率从每个组中选择最大前k个值,以生成组平衡式稀疏激活。在另一个实施例中,几个通道可以合并为一个组(例如组713包括两个或更多个通道)。类似地,可以基于目标稀疏率从每个组中选择最大前k个值,以生成组平衡式稀疏激活。虽然示出的是二维和三维激活张量,但激活张量可以是任何维度的,例如是四维、五维、六维等。
48.图8是流程图,示出了根据一个实施例的生成组平衡式稀疏dnn的过程。过程800可由处理逻辑执行,该处理逻辑可包括软件、硬件或软件和硬件的组合。例如,过程800可以由图2a的神经网络稀疏化引擎200执行,例如由具有引擎200的加速器、处理器、服务器、边缘设备或主机系统执行。参照图8,在区块801,处理逻辑接收用于神经网络模型的训练数据和目标函数。训练数据可以包括用于神经网络训练的一个或多个数据集。训练数据可以是用于拟合神经网络模型参数(例如神经网络模型的各神经元之间的权重和偏置连接)的一组
示例。目标函数描述了推理目标(例如分类、对象识别任务),并可以包括评价标准,以确定网络模型参数对特定目标的训练数据的拟合程度。
49.在区块802,处理逻辑获得dnn模型(例如第一dnn模型)和查核点。dnn模型可以通过使用训练数据对目标函数进行训练来获得,或者dnn模型可以是经预训练的dnn模型。查核点可以包括当特定的训练数据集应用于dnn模型时具有用于特定任务的准确性百分比(例如89%)的查核点。在一个实施例中,目标稀疏率可以基于查核点自动重新配置。例如,最初可以将目标稀疏率设置为80%,如果基于具有该目标稀疏率的目标稀疏性生成的稀疏化的dnn模型将用于特定任务的准确性百分比保持在查核点的预定阈值之内,则目标稀疏性自动增加以生成下一个稀疏化的dnn模型。目标稀疏率的自动重新配置可以重复进行。以此方式,可以为dnn自动选择目标稀疏性,以达到最佳加速。
50.在区块803,处理逻辑获得一个或多个组大小/布局(以得出组的数量)和目标稀疏性值。组大小/布局/目标稀疏性可以由dnn的每个层单独指定,或者相同的组大小/布局/稀疏性可以应用于dnn模型的每个层。在一个实施例中,组大小/布局得出组的数量,该数量可被dnn模型的激活张量的张量维度所除尽。目标稀疏性值可以是百分比值,例如40%、50%、60%等。在区块803,处理逻辑进一步将激活特征图(例如层的输出)基于组大小/布局划分为若干组。然后,处理逻辑确定每个组的稀疏率。
51.在区块804,处理逻辑基于每个组的稀疏率评估是否达到目标稀疏性。如果是,则过程继续进行到区块805,并输出dnn模型作为组平衡式稀疏激活的dnn模型(例如第二dnn模型)。如果否,则处理逻辑继续进行到区块806。在区块806,处理逻辑确定目标函数是否收敛。在一个实施例中,如果最后预定次数的迭代中的变化在预定阈值范围内,则目标函数收敛。例如,最后十次迭代,经修改的dnn模型生成的输出是在0.1%的阈值范围内。如果目标函数输出是在预定阈值范围内,例如目标函数输出收敛,那么处理逻辑继续进行到区块807。如果目标函数未能收敛,那么处理逻辑继续进行到区块808。
52.在区块807,处理逻辑增加各层的激活特征图的稀疏性。在此,激活特征图稀疏性是通过从组中将激活值调零或移除来增加的。例如,参考图5a,组1的第1行具有激活值0.2、0.1、-0.4和0.8。针对75%的稀疏率,通过移除-0.4来增加稀疏性。在一个实施例中,将激活值从一层的一组中移除,同时使该层保持为各组平衡的。在一个实施例中,可以为组设置阈值,并且该阈值可以逐步调整,以逐步移除小于该阈值的激活值。在一个实施例中,通过从dnn模型的每个层的每个组中移除激活值来增加稀疏性。一旦增加了稀疏性,处理逻辑就会进行到区块804,并确定是否达到了该层/dnn模型的目标稀疏性。
53.在区块808,如果目标函数未能收敛(例如最后预定次数的迭代的变化在预定阈值范围之外),处理逻辑便基于目标函数前向传播该dnn模型。在此,输入数据(例如训练数据的子集)沿前向方向馈送通过该dnn模型。每个隐藏层接受该输入数据,对该输入数据进行处理,并将输出传递给相继的层。在一个实施例中,存储为每一层计算的权重/偏置和输出,以用于反向传播。
54.在区块809,处理逻辑反向传播该dnn模型。在此,处理逻辑反向通过该神经网络来计算层输出值,以便计算梯度(例如来自前向传播的输出值的差)。在一个实施例中,处理逻辑以反向拓扑方式从最后一层开始在各层上循环,以计算最后一层输出相对于每一层的导数。以此方式,处理逻辑可以确定造成大多数误差的是哪个权重/偏置值,并且可以基于该
确定来更新权重/偏置。一旦权重/偏置值被更新,处理逻辑就会继续进行到区块806。在一个实施例中,如区块804和区块806至区块809所示,处理逻辑迭代地或逐步地使dnn模型稀疏化,直到dnn模型达到目标稀疏性。
55.图9是流程图,示出了根据一个实施例的方法。过程900可由处理逻辑执行,该处理逻辑可包括软件、硬件或软件和硬件的组合。例如,过程900可以由图2a的神经网络稀疏化引擎200执行,或者由具有引擎200的加速器、处理器、服务器、边缘设备或主机系统执行。参照图9,在区块901,处理逻辑确定具有一个或多个隐藏层的第一深度神经网络(dnn)模型。在区块902,处理逻辑确定组大小、组布局和目标稀疏性。在区块903,处理逻辑基于组大小和组布局将激活特征图分成若干组。在区块904,处理逻辑通过基于目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型,其中第二dnn模型被用于推理。
56.在一个实施例中,第二dnn模型通过以下方式生成,即,对于每个激活特征图组,逐步地增加激活特征图组的稀疏性,直到激活特征图组达到目标稀疏性,并重新训练第二dnn模型以确保第二dnn模型响应于增加激活特征图组的稀疏性而收敛。在一个实施例中,将激活特征图分组包括:如果激活张量是二维张量,则基于组布局、例如基于第一dnn模型的层的激活张量的行维度或列维度将激活特征图分成多个组;并且如果激活张量是三维或多维张量,则基于第一dnn模型的层的激活张量的通道维度或行维度或列维度(例如组布局)将激活特征图分成多个组。
57.在一个实施例中,重新训练第二dnn模型包括通过前向传播计算目标函数的输出,并基于计算的该输出通过反向传播更新dnn模型的每个隐藏层的权重参数。在一个实施例中,第二dnn模型是组平衡式稀疏dnn模型。
58.在一个实施例中,第二dnn模型是动态dnn模型,其中用于第一推理的第二dnn模型的权重参数与用于第二推理的权重参数不同。在一个实施例中,每个激活特征图块的稀疏性通过保留每个组的最大前k个值和将该组的其余值调零来逐步增加,其中k等于或大于1。
59.在一个实施例中,组平衡式稀疏激活深度神经网络(dnn)模型包括输入层、一个或多个隐藏层,以及输出层。一个或多个隐藏层设置在输入层和输出层之间,每个隐藏层都要输出组平衡式稀疏激活特征图。组平衡式稀疏激活dnn模型通过以下方式生成:即,确定具有一个或多个隐藏层的第一dnn模型;确定组大小、组布局和目标稀疏性;基于组大小和组布局将激活特征图分成多个组;以及通过基于目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型作为组平衡式稀疏激活dnn模型,其中第二dnn模型用于推理。
60.在一个实施例中,第二dnn模型通过以下方式生成:即,对于每个激活特征图组,逐步地增加激活特征图组的稀疏性,直到激活特征图组达到目标稀疏性,并重新训练第二dnn模型以确保第二dnn模型响应于增加激活特征图组的稀疏性而收敛。在一个实施例中,将激活特征图分组包括:如果激活张量是二维张量,则基于第一dnn模型的层的激活张量的行维度或列维度将激活特征图分成多个组;并且如果激活张量是三维或更多维张量,则基于第一dnn模型的层的激活张量的通道维度或行维度或列维度将激活特征图分成多个组。
61.在一个实施例中,重新训练第二dnn模型包括通过前向传播计算目标函数的输出,并基于计算的该输出,通过反向传播更新dnn模型的每个隐藏层的权重参数。在一个实施例中,第二dnn模型是组平衡式稀疏dnn模型。
62.在一个实施例中,第二dnn模型是动态dnn模型,其中用于第一推理的第二dnn模型
的权重参数与用于第二推理的权重参数不同。在一个实施例中,每个激活特征图块的稀疏性通过保留每个组的最大前k个值并将该组的其余值逐步调零来逐步增加,其中k等于或大于1。
63.应注意的是,上面示出和描述的一些或全部组件可以用软件、硬件或软件和硬件的组合来实现。例如,此类组件可以实现为安装并存储在持久性存储设备中的软件,该软件可以由处理器(未示出)加载在内存中并在内存中执行,以执行本技术中全文描述的过程或操作。备选地,此类组件可以实现为编程或嵌入专用硬件的可执行代码,专用硬件例如是集成电路(例如特定应用集成电路或专用集成电路)、数字信号处理器(dsp)或现场可编程门阵列(fpga),可执行代码可以通过相应的驱动程序和/或操作系统从应用程序访问。此外,这些组件可以作为在处理器或处理器内核中特定的硬件逻辑实现,该硬件逻辑作为可由软件组件通过一个或多个特定指令进行访问的指令集的一部分。
64.前面详细描述的一些部分已经从算法和计算机内存中数据位运算的符号表示的方面呈现。这些算法描述和表示是数据处理技术领域的技术人员用来向本领域的其他技术人员最有效地传达其工作内容的方法。在此一般来说,算法被认为是自洽的导致期望结果的运算序列。这些运算是那些需要对物理量进行物理操作的运算。
65.然而应记住的是,所有这些和类似的术语都会与适当的物理量相关联,并且只是应用于这些量的方便标签。除非从上述讨论中明显地特别另行说明,否则可以理解的是,在整个描述中,利用诸如所附权利要求书中所列术语进行的讨论是指计算机系统或类似的电子计算设备的动作和过程,该电子计算设备将计算机系统的寄存器和内存中表示为物理(电子)量的数据操作并转换为计算机系统内存或寄存器或其他此类信息存储、传输或显示装置中类似地表示为物理量的其他数据。
66.本公开的实施例还涉及一种用于执行本文操作的装置。这样的计算机程序被存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如计算机)可读的形式存储信息的任何构件。例如,机器可读(例如计算机可读)介质包括机器(例如计算机)可读存储介质(例如只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光学存储介质、闪存设备)。
67.前述附图中描述的过程或方法可由处理逻辑执行,该处理逻辑包括硬件(例如电路、专用逻辑等)、软件(例如体现在非暂时性计算机可读介质上),或两者的组合。尽管上述过程或方法是以一些顺序运算来描述的,但应该理解的是,所描述的一些运算可以以不同的顺序来执行。此外,一些运算可以并行进行,而不是按顺序进行。
68.本公开的实施例没有参照任何特定的编程语言来描述。应理解的是,各种编程语言可用于实现本文所述的本公开的实施例的教导。
69.在上述说明书中,本公开的实施例已经参照其具体的示例性实施例进行了描述。显然,在不背离所附权利要求书中所阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,本说明书和附图应被视为说明性的,而不是限制性的。
技术特征:
1.一种生成深度神经网络(dnn)模型的方法,包括:确定具有一个或多个隐藏层的第一深度神经网络(dnn)模型;确定组大小、组布局和目标稀疏性;基于所述组大小和所述组布局将多个激活特征图分成多个组;并且通过基于所述目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型,其中,所述第二dnn模型被用于推理。2.根据权利要求1所述的方法,其中,生成所述第二dnn模型包括:对于每个激活特征图组,逐步地增加所述激活特征图组的所述稀疏性,直到所述激活特征图组达到所述目标稀疏性;以及重新训练所述第二dnn模型,以确保所述第二dnn模型响应于增加所述激活特征图组的所述稀疏性而收敛。3.根据权利要求1所述的方法,其中,将所述激活特征图分组包括:如果所述激活张量是二维(2d)张量,则基于所述第一dnn模型的层的激活张量的行维度或列维度,将所述激活特征图分成多个组,或者如果所述激活张量是三维或更多维张量,则基于所述第一dnn模型的层的激活张量的通道维度、行维度或列维度将所述激活特征图分成多个组。4.根据权利要求2所述的方法,其中,重新训练所述第二dnn模型包括:通过前向传播计算目标函数的输出;以及基于计算的所述输出,通过反向传播更新所述dnn模型的每个隐藏层的权重参数。5.根据权利要求1所述的方法,其中,所述第二dnn模型是组平衡式稀疏dnn模型。6.根据权利要求1所述的方法,其中,所述第二dnn模型是动态dnn模型,其中,用于第一推理的所述第二dnn模型的权重参数与用于第二推理的权重参数不同。7.根据权利要求1所述的方法,其中,每个激活特征图块的所述稀疏性通过保留每个组的最大前k个值并将所述组的其余值逐步调零来逐步增加,其中,k等于或大于1。8.一种非暂时性机器可读介质,其中存储有指令,当所述指令由处理器执行时,导致所述处理器执行操作,所述操作包括:确定具有一个或多个隐藏层的第一深度神经网络(dnn)模型;确定组大小、组布局和目标稀疏性;基于所述组大小和所述组布局将多个激活特征图分成多个组;并且通过基于所述目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型,其中,所述第二dnn模型被用于推理。9.根据权利要求8所述的非暂时性机器可读介质,其中,生成所述第二dnn模型包括:对于每个激活特征图组,逐步地增加所述激活特征图组的所述稀疏性,直到所述激活特征图组达到所述目标稀疏性;以及重新训练所述第二dnn模型,以确保所述第二dnn模型响应于增加所述激活特征图组的所述稀疏性而收敛。10.根据权利要求8所述的非暂时性机器可读介质,其中,将所述激活特征图分组包括:如果所述激活张量是二维(2d)张量,则基于所述第一dnn模型的层的激活张量的行维度或列维度,将所述激活特征图分成多个组,或者
如果所述激活张量是三维或更多维张量,则基于所述第一dnn模型的层的激活张量的通道维度、行维度或列维度将所述激活特征图分成多个组。11.根据权利要求9所述的非暂时性机器可读介质,其中,重新训练所述第二dnn模型包括:通过前向传播计算目标函数的输出;以及基于计算的所述输出,通过反向传播更新所述dnn模型的每个隐藏层的权重参数。12.根据权利要求8所述的非暂时性机器可读介质,其中,所述第二dnn模型是组平衡式稀疏dnn模型。13.根据权利要求8所述的非暂时性机器可读介质,其中,所述第二dnn模型是动态dnn模型,其中,用于第一推理的所述第二dnn模型的权重参数与用于第二推理的权重参数不同。14.根据权利要求8所述的非暂时性机器可读介质,其中,每个激活特征图块的所述稀疏性通过保留每个组的最大前k个值和将所述组的剩余值逐步调零来逐步增加,其中,k等于或大于1。15.一种组平衡式稀疏激活深度神经网络(dnn)模型,包括:输入层;一个或多个隐藏层;和输出层,其中,所述一个或多个隐藏层设置在所述输入层和所述输出层之间,并且每个隐藏层都要输出多个组平衡式稀疏激活特征图,其中,所述组平衡式稀疏激活dnn模型通过以下方式生成:确定具有一个或多个隐藏层的第一dnn模型,确定组大小、组布局和目标稀疏性,基于所述组大小和所述组布局将多个激活特征图分成多个组;并且通过基于所述目标稀疏性增加每个激活特征图组的稀疏性来生成第二dnn模型作为所述组平衡式稀疏激活dnn模型,其中,所述第二dnn模型被用于推理。16.根据权利要求15所述的组平衡式稀疏dnn模型,其中,生成所述第二dnn模型包括:对于每个激活特征图组,逐步地增加所述激活特征图组的所述稀疏性,直到所述激活特征图组达到所述目标稀疏性;以及重新训练所述第二dnn模型,以确保所述第二dnn模型响应于增加所述激活特征图组的所述稀疏性而收敛。17.根据权利要求15所述的组平衡式稀疏dnn模型,其中,将所述激活特征图分组包括:如果所述激活张量是二维(2d)张量,则基于所述第一dnn模型的层的激活张量的行维度或列维度,将所述激活特征图分成多个组,或者如果所述激活张量是三维或更多维张量,则基于所述第一dnn模型的层的激活张量的通道维度、行维度或列维度将所述激活特征图分成多个组。18.根据权利要求16所述的组平衡式稀疏dnn模型,其中,重新训练所述第二dnn模型包括:通过前向传播计算目标函数的输出;以及基于计算的所述输出,通过反向传播更新所述dnn模型的每个隐藏层的权重参数。
19.根据权利要求15所述的组平衡式稀疏dnn模型,其中,所述第二dnn模型是组平衡式稀疏dnn模型。20.根据权利要求15所述的组平衡式稀疏dnn模型,其中,所述第二dnn模型是动态dnn模型,其中,用于第一推理的所述第二dnn模型的权重参数与用于第二推理的权重参数不同。21.根据权利要求15所述的组平衡式稀疏dnn模型,其中,每个激活特征图块的所述稀疏性通过保留每个组的最大前k个值和将所述组的剩余值逐步调零来逐步增加,其中,k等于或大于1。
技术总结
实施例公开了组平衡式稀疏激活神经网络模型和生成组平衡式稀疏激活神经网络模型的方法。根据一个实施例,神经网络稀疏化引擎确定具有两个或更多个隐藏层的第一深度神经网络(DNN)模型。该引擎确定组大小、组布局和目标稀疏性。该引擎基于组大小和组布局将激活特征图分割成多个组。该引擎通过基于目标稀疏性增加每个激活特征图组的稀疏性来生成第二DNN模型,其中第二DNN模型被用于推理。其中第二DNN模型被用于推理。其中第二DNN模型被用于推理。
技术研发人员:严恩勖 胥栋宽 刘嘉超
受保护的技术使用者:墨芯国际有限公司
技术研发日:2021.09.17
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
