量化模型生成方法、装置和电子设备与流程

文档序号:16581081发布日期:2019-01-14 17:58阅读:219来源:国知局
量化模型生成方法、装置和电子设备与流程

本申请涉及数据处理领域,且更具体地,涉及一种量化模型生成方法、量化模型生成装置和电子设备。



背景技术:

在神经网络技术中,现有的神经网络都是通过浮点训练,要想在硬件或移动端上应用的话,受限于硬件设备或移动端的存储空间和处理器,通常需要把网络进行压缩。

常用的网络压缩方式包括量化、剪枝、蒸馏等,通过压缩,可以减小网络参数量、提高运算速度、从而适应芯片和手机等小型设备。

当前在神经网络模型压缩技术中,量化是非常重要的手段之一,具体地,其将网络中的浮点参数量化成为低比特的存储单元,从而实现加速运算,减少参数量。

因此,为了进一步提高神经网络的压缩效果,能够提供改进的量化模型生成方案。



技术实现要素:

为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种量化模型生成方法、量化模型生成装置和电子设备,其通过强化学习模型对神经网络进行选择性量化并逐层计算量化程度,以获得参数量小且精度高的神经网络。

根据本申请的一个方面,提供了一种量化模型生成方法,包括:从神经网络的浮点模型获取至少一层的层信息;通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度;以及,根据所述至少一层的量化程度生成量化模型。

在上述量化模型生成方法中,进一步包括:对所述浮点模型除所述至少一层外的其它层指定预定量化程度。

在上述量化模型生成方法中,所述浮点模型包括resnet18神经网络结果、resnet50神经网络结构和densenet神经网络结构之一。

在上述量化模型生成方法中,所述至少一层的层信息包括每层的深度,每层的类型和每层的超参数中的至少一个。

在上述量化模型生成方法中,所述量化程度包括二比特、四比特、八比特、十六比特和不量化之一。

在上述量化模型生成方法中,进一步包括:获取所述量化模型量化后的神经网络的网络参数;以及,基于所述网络参数更新所述强化学习模块。

在上述量化模型生成方法中,基于所述网络参数更新所述强化学习模块包括:基于参数量和网络精度获得综合评价指标;以及,基于所述综合评价指标更新所述强化学习模块。

根据本申请的另一方面,提供了一种量化模型生成装置,包括:信息获取单元,用于从神经网络的浮点模型获取至少一层的层信息;量化决策单元,用于通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度;以及,模型生成单元,用于根据所述至少一层的量化程度生成量化模型。

在上述量化模型生成装置中,所述量化决策单元进一步用于:对所述浮点模型除所述至少一层外的其它层指定预定量化程度。

在上述量化模型生成装置中,所述浮点模型包括resnet18神经网络结果、resnet50神经网络结构和densenet神经网络结构之一。

在上述量化模型生成装置中,所述至少一层的层信息包括每层的深度,每层的类型和每层的超参数中的至少一个。

在上述量化模型生成装置中,所述量化程度包括二比特、四比特、八比特、十六比特和不量化之一。

在上述量化模型生成装置中,进一步包括:精度获取单元,用于获取所述量化模型量化后的神经网络的网络参数;以及,模块更新单元,用于基于所述网络参数更新所述强化学习模块。

在上述量化模型生成装置中,所述模块更新单元用于:基于参数量和网络精度获得综合评价指标;以及,基于所述综合评价指标更新所述强化学习模块。

根据本申请的再一方面,提供了一种电子设备,包括:处理器;以及,存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如上所述的量化模型生成方法。

根据本申请的又一方面,提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如上所述的量化模型生成方法。

与现有技术相比,本申请提供的量化模型生成方法、量化模型生成装置和电子设备可以从神经网络的浮点模型获取至少一层的层信息;通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度;以及,根据所述至少一层的量化程度生成量化模型。这样,可以通过强化学习来自主选择神经网络中要量化的层并确定其应该被量化的程度,从而使得量化后的神经网络在精度和参数量之间达到一个最优的平衡态,获得参数量小且精度高的神经网络。

附图说明

通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1图示了根据本申请实施例的量化模型生成方法的应用环境的示意图。

图2图示了根据本申请实施例的量化模型生成方法的流程图。

图3图示了根据本申请实施例的量化模型生成方法中的强化学习模块的原理图。

图4图示了根据本申请实施例的量化模型生成方法应用的dqn模型的示意图。

图5图示了根据本申请实施例的量化模型生成装置的框图。

图6图示了根据本申请实施例的电子设备的框图。

具体实施方式

下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。

申请概述

如上所述,在通过量化方式压缩神经网络时,将网络中的浮点参数(例如float32)量化成为低比特(例如,二比特、四比特、八比特等)的存储单元。

但是,目前的方法大多数都是将网络的所有层量化到相同的比特。实际上,不同的层有着不同的计算类型,不同的深度等,这些因素使得适合它们的量化程度是不同的。这使得在实际应用中,往往难以使量化后的神经网络达到参数量和精度之间最好的均衡。具体地,如果量化比特高的话,参数量过大,而如果量化比特低的话,精度太低。

针对上述问题,本申请的基本构思是通过强化学习来自主选择神经网络中要量化的层并确定其应该被量化的程度,从而避免现有方法中将所有层量化到相同的比特所带来的问题。

具体地,本申请提供了一种量化模型生成方法、量化模型生成装置和电子设备,其首先从神经网络的浮点模型获取至少一层的层信息,然后通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度,最后根据所述至少一层的量化程度生成量化模型。这样,相比现有方法将所有层全部量化到同一比特,经过本申请的方案量化之后,能够得到一个参数量小且精度较高的神经网络。

在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。

示例性系统

图1图示了根据本申请实施例的量化模型生成方法的应用环境的示意图。

如图1所示,神经网络的浮点模型100包括多层,即层1、层2、…、层n-1、层n。强化学习模型110获得所述浮点模型100的一层或多层的信息,例如,获得层1、层2和层n的信息。

强化学习模型110基于所获得的层信息,确定每层所对应的量化程度,例如,层1量化到二比特,层2量化到八比特,层n不量化等。

然后,量化模块120根据所述强化学习模块110所决策的每层的量化程度,并结合其它层,例如层3到层n-1的量化程度,生成量化模型130。所述量化模型130包括对应于所述浮点模型100的各层,即层1、层2、…、层n-1、层n。

下面,将详细说明根据本申请实施例的量化模型生成方法。

示例性方法

图2图示了根据本申请实施例的量化模型生成方法的流程图。

如图2所示,根据本申请实施例的量化模型生成方法包括:s210,从神经网络的浮点模型获取至少一层的层信息;s220,通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度;以及s230,根据所述至少一层的量化程度生成量化模型。

在步骤s210中,从神经网络的浮点模型获取至少一层的层信息。

这里,在根据本申请实施例的量化模型生成方法中,所述神经网络的浮点模型可以包括各种经典的神经网络结构,例如resnet18神经网络结果、resnet50神经网络结构和densenet神经网络结构等。也就是说,所述浮点模型包括resnet18神经网络结果、resnet50神经网络结构和densenet神经网络结构之一。

并且,所获取的层信息可以包括所述层的深度,所述层的类型(例如,卷积类型、全连接类型、批规范(batchnorm)类型等),所述层的超参数(例如,学习率)。也就是说,所述至少一层的层信息包括每层的深度,每层的类型和每层的超参数中的至少一个。

本领域技术人员可以理解,在选择浮点模型中要量化的层并获取其层信息时,也可以选择所述浮点模型中的每一层,即,将所述浮点模型中的所有层都通过强化学习模型来确定其量化程度。

在步骤s220中,通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度。

如上所述,量化程度可以包括二比特、四比特、八比特、十六比特和不量化之一。

并且,对于没有选为通过强化学习模块决策其量化程度的各层,例如如图1所示的层3到层n-1,可以对其指定预定的量化程度,例如,均量化为二比特。当然,也可以针对不同层指定不同的量化程度,例如对于层3到层m,指定量化程度为八比特,对于层m+1到层n-1,指定量化程度为不量化。并且,本领域技术人员可以理解,针对不通过强化学习模块决策其量化程度的各层,可以采用各种现有方法确定其量化程度,本申请并不意在进行任何限制。

也就是说,在根据本申请实施例的量化模型生成方法中,进一步包括:对所述浮点模型除所述至少一层外的其它层指定预定量化程度。

图3图示了根据本申请实施例的量化模型生成方法中的强化学习模块的原理图。如图3所示,强化学习模型根据环境给出的状态ot,做出一个决策at,这个决策at作用于环境。并且此时,强化学习模型还接收到环境针对之前的决策at-1作出的判断rt。之后,环境根据决策at作出一个判断rt+1,来评价这个决策的好坏,从而来更新强化学习模型。并且,环境还给出相应的状态ot+1。

具体地,在根据本申请实施例的量化模型生成方法中,决策at就是量化程度,即如上所述的2比特、4比特、8比特等之一,状态ot就是要通过强化学习模块进行决策的各层的信息,并且,判断rt例如可以是构建好的整个网络的参数量和精度,这将在下面进一步说明。

在步骤s230中,根据所述至少一层的量化程度生成量化模型。所述量化模型根据所述强化学习模块给出的每层量化的程度以及对于未由所述强化学习模块决策的各层指定的量化强度来执行量化。具体地,其接收网络某层参数和指定的比特数作为输入并输出量化后的网络参数,从而得到量化后的神经网络。

如上所述,所述强化学习模块通过环境给出的判断rt来进行更新,并且本申请实施例中,判断rt就是量化后的神经网络的网络参数,例如,可以包括神经网络的参数量和精度。

因此,在根据本申请实施例的量化模型生成方法中,进一步包括:获取所述量化模型量化后的神经网络的网络参数;以及,基于所述网络参数更新所述强化学习模块。

并且,在上述量化模型生成方法中,基于所述网络参数更新所述强化学习模块包括:基于参数量和网络精度获得综合评价指标;以及,基于所述综合评价指标更新所述强化学习模块。

图4图示了根据本申请实施例的量化模型生成方法应用的dqn模型的示意图。如图4所示,浮点模型(环境)把每层的结构信息输送给决策器(强化学习模型),决策器根据该信息决策每层的量化程度,存储器收集历史决策信息并存储。根据存储器的历史决策信息,目标值网络给出目标值,并且dqn误差函数计算所述目标值与决策信息之间的误差,并进行误差梯度更新。每隔t步,以目标值网络的参数更新决策器的参数。

示例性装置

图5图示了根据本申请实施例的量化模型生成装置的框图。

如图5所示,根据本申请实施例的量化模型生成装置300包括:信息获取单元310,用于从神经网络的浮点模型获取至少一层的层信息;量化决策单元320,用于通过强化学习模块根据所述至少一层的层信息决策所述至少一层的量化程度;以及,模型生成单元330,用于根据所述至少一层的量化程度生成量化模型。

在一个示例中,在上述量化模型生成装置300中,所述量化决策单元320进一步用于:对所述浮点模型除所述至少一层外的其它层指定预定量化程度。

在一个示例中,在上述量化模型生成装置300中,所述浮点模型包括resnet18神经网络结果、resnet50神经网络结构和densenet神经网络结构之一。

在一个示例中,在上述量化模型生成装置300中,所述至少一层的层信息包括每层的深度,每层的类型和每层的超参数中的至少一个。

在一个示例中,在上述量化模型生成装置300中,所述量化程度包括二比特、四比特、八比特、十六比特和不量化之一。

在一个示例中,在上述量化模型生成装置300中,进一步包括:精度获取单元,用于获取所述量化模型量化后的神经网络的网络参数;以及,模块更新单元,用于基于所述网络参数更新所述强化学习模块。

在一个示例中,在上述量化模型生成装置300中,所述模块更新单元用于:基于参数量和网络精度获得综合评价指标;以及,基于所述综合评价指标更新所述强化学习模块。

这里,本领域技术人员可以理解,上述量化模型生成装置300中的各个单元和模块的具体功能和操作已经在上面参考图2到图4描述的量化模型生成方法中详细介绍,并因此,将省略其重复描述。

如上所述,根据本申请实施例的量化模型生成装置300可以实现在各种终端设备中,例如用于压缩神经网络的服务器。一个示例中,根据本申请实施例的量化模型生成装置300可以作为一个软件模块和/或硬件模块而集成到所述终端设备中。例如,该装置300可以是该终端设备的操作系统中的一个软件模块,或者可以是针对于该终端设备所开发的一个应用程序。例如,其运行在gpu(图形处理单元)上,由gpu负责神经网络的训练。当然,该装置300同样可以是该终端设备的众多硬件模块之一。

替换地,在另一示例中,该量化模型生成装置300与该终端设备也可以是分立的设备,并且该装置300可以通过有线和/或无线网络连接到该终端设备,并且按照约定的数据格式来传输交互信息。

示例性电子设备

下面,参考图6来描述根据本申请实施例的电子设备。

图6图示了根据本申请实施例的电子设备的框图。

如图6所示,电子设备10包括一个或多个处理器11和存储器12。

处理器11可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。

存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的量化模型生成方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如历史决策信息、指定量化程度等各种内容。

在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

该输入装置13可以包括例如键盘、鼠标等。

该输出装置14可以向外部输出各种信息,包括量化后的神经网络等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图6中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。

示例性计算机程序产品和计算机可读存储介质

除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的量化模型生成方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的量化模型生成方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。

本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1