CN116822594A - 模型量化方法、模型量化装置、电子设备和介质 - Google Patents
模型量化方法、模型量化装置、电子设备和介质 Download PDFInfo
- Publication number
- CN116822594A CN116822594A CN202310823637.XA CN202310823637A CN116822594A CN 116822594 A CN116822594 A CN 116822594A CN 202310823637 A CN202310823637 A CN 202310823637A CN 116822594 A CN116822594 A CN 116822594A
- Authority
- CN
- China
- Prior art keywords
- bit width
- network layer
- weight parameter
- network
- model
- 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
- 238000013139 quantization Methods 0.000 title claims abstract description 83
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000003062 neural network model Methods 0.000 claims abstract description 84
- 230000009467 reduction Effects 0.000 claims description 7
- 238000013528 artificial neural network Methods 0.000 abstract description 2
- 230000035945 sensitivity Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000010206 sensitivity analysis Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 239000013585 weight reducing agent Substances 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/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种模型量化方法、模型量化装置、电子设备和介质,属于神经网络技术领域。该方法包括:基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
Description
技术领域
本申请属于神经网络技术领域,具体涉及一种模型量化方法、模型量化装置、电子设备和介质。
背景技术
模型量化是模型达到轻量化的重要手段,能够减小模型体积,降低内存,提升性能,降低功耗。虽然模型量化能够带来模型体积的精简和优化,但是不可避免的会带来精度上的损失,量化后的模型精度损失与位宽比特数强相关。位宽越高,精度越高,损失越小。
通常使用的模型量化方式是将模型参数从浮点模型(float32)精简到更低比特的定点模型,比如定点模型(int16)、定点模型(int8)或定点模型(int4)。
在实际执行中,一般是统一对模型参数进行8bit位宽的量化,或者使用8bit与32bit的混合量化,上述模型量化方法无法兼顾良好的模型压缩效果和较低的模型精度损失。
发明内容
本申请实施例的目的是提供一种模型量化方法、模型量化装置、电子设备和介质,能够解决模型量化过程中无法兼顾良好的模型压缩效果和较低的模型精度损失的问题。
第一方面,本申请实施例提供了一种模型量化方法,该方法包括:
基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;
基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
第二方面,本申请实施例提供了一种模型量化装置,该装置包括:
第一确定模块,用于基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;
量化模块,用于基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,通过神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,可以确定目标网络结构中每个网络层的权重参数的目标位宽,实现对任意结构的神经网络模型中的具有权重参数的网络层进行单独分析,最大程度地精简每个网络层的权重参数,进而可以采用每个网络层的权重参数的目标位宽,来量化神经网络模型,使得量化后的神经网络模型的精度损失小于精度损失阈值,不仅可以保证精度损失不会超过精度损失阈值,还可以最大限度地精简模型文件体积。
附图说明
图1是本申请实施例提供的模型量化方法的流程示意图之一;
图2是本申请实施例提供的模型量化方法的流程示意图之二;
图3是本申请实施例提供的模型量化方法的网络权重树示意图;
图4是本申请实施例提供的模型量化方法的位宽热力图;
图5是本申请实施例提供的模型量化方法的量化过程示意图;
图6是本申请实施例提供的模型量化装置的结构示意图;
图7是本申请实施例提供的电子设备的结构示意图;
图8是本申请实施例提供的电子设备的硬件示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的模型量化方法、模型量化装置、电子设备和介质进行详细地说明。
其中,模型量化方法可应用于终端,具体可由,终端中的硬件或软件执行。
该终端包括但不限于具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话或平板电脑等其它便携式通信设备。还应当理解的是,在某些实施例中,该终端可以不是便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。
以下各个实施例中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和控制杆的一个或多个其它物理用户接口设备。
相关技术中,模型量化是人工智能(Artificial Intelligence,AI)算法在终端落地,达到轻量化的一个重要手段。使用模型量化进行AI算法的部署,能够减小模型体积,降低内存,提升性能,降低功耗。通常训练出来的模型是浮点格式的,如果直接使用浮点模型在终端侧部署,很容易不满足AI功能在内存、性能或体积上的需求;而模型量化是通过将浮点模型转换为低比特位宽的定点模型,以此来达到模型轻量化需求。但低比特位宽会给模型带来信息损失,使得模型表征能力变差,性能降低,从而产生精度损失。
例如:模型里存在部分网络层的权重参数为浮点型权重参数,可以用浮点模型float32表示,通过模型量化,部分网络层的权重参数可以变成整型权重参数,可以用定点模型int8表示。
浮点模型float32指的是32位的浮点类型数据。定点模型int8指的是8位的整型数据。权重参数由精度更高的float32数据转化为精度更低的int8数据,即仅保留32位浮点类型数据的整数部分,会带来极大的精度损失。
当前AI算法种类和模型算子的种类非常多,并且各种AI业务的需求不一,有些需要对模型文件体积做尽可能压缩,但是对性能实时性要求不高;有些对性能实时性要求很高,对模型体积要求不高。因此,通用固定的量化方案无法满足一些实际业务中AI算法的具体需求,通常在模型精度损失较大的情况下,可以获得较好的模型压缩效果,而在模型精度损失较小的情况下,模型压缩效果就相对较差,均无法兼顾良好的模型压缩效果和较低的模型精度损失。
如图1所示,本申请提供的模型量化方法包括:步骤110和步骤120。
步骤110、基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定每个网络层的权重参数的目标位宽,目标网络结构基于神经网络模型中的至少部分网络层构建得到,每个网络层的权重参数的阈值位宽基于每个网络层的精度损失确定,每个网络层的精度损失是对每个网络层的权重参数的位宽进行量化后确定的;
步骤120、基于每个网络层的权重参数的目标位宽,量化神经网络模型,得到量化后的神经网络模型,量化后的神经网络模型的精度损失小于精度损失阈值。
本申请中的神经网络模型可以是任意结构的需要精简模型文件大小或文件存储空间的神经网络模型。
在步骤110中,精度损失阈值可以为预先设置的精度损失值,即模型量化给神经网络模型带来的精度损失不能超过精度损失阈值。
对于任一神经网络模型,可以基于网络层的索引顺序,提取出该神经网络模型中至少一个具有权重参数的网络层,进而可以确定目标网络结构。
可以理解的是,神经网络模型中不是所有网络层都具有权重参数。例如:卷积层和全连接层为具有权重参数的网络层,池化层不涉及权重参数。
本申请中的目标网络结构可以包括神经网络模型中部分或全部具有权重参数的网络层。本申请中的每个网络层指的是目标网络结构中每个具有权重参数的网络层。
在实际执行中,通过量化目标网络结构中任一网络层的权重参数的位宽,从而可以达到压缩神经网络模型的文件大小的目的。
可以理解的是,神经网络模型的模型参数的数值精度会影响到网络训练和推理的性能及效率,数值精度指的就是位宽,本申请中所提到的模型参数可以是网络层的权重参数。
需要说明的是,阈值位宽是基于在量化每个网络层的权重参数的位宽的情况下,所确定的每个网络层的精度损失确定的位宽值。阈值位宽是每个网络层对精度损失最为敏感的位宽。
对于单个网络层,在量化单个网络层的权重参数的位宽时,每量化一次,就可以确定一次单个网络层的精度损失,相邻两次的精度损失的下降幅度达到最大时,即可确定阈值位宽,可以理解为对精度损失最为敏感的位宽值。
基于精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,调整神经网络模型中目标网络结构的每个网络层的权重参数的位宽,从而可以确定每个网络层的权重参数的最合适的位宽,即目标位宽。
在确定每个网络层的权重参数的目标位宽之后,将神经网络模型中具有权重参数的网络层的权重参数的位宽设置为对应的目标位宽,从而可以量化神经网络模型,并可以保证量化后的神经网络模型与量化前的神经网络模型之间的精度损失小于精度损失阈值。
在实际执行中,量化方式采用相关技术中的线性量化方法,线性量化公式可以为:F=S*(Q-Z)。
其中,F表示浮点数据;Q表示低比特整型数据;S表示量化线性系数;Z表示量化零点偏移。
根据本申请实施例提供的模型量化方法,通过神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,可以确定目标网络结构中每个网络层的权重参数的目标位宽,实现对任意结构的神经网络模型中的具有权重参数的网络层进行单独分析,最大程度地精简每个网络层的权重参数,进而可以采用每个网络层的权重参数的目标位宽,来量化神经网络模型,使得量化后的神经网络模型的精度损失小于精度损失阈值,不仅可以保证精度损失不会超过精度损失阈值,还可以最大限度地精简模型文件体积。
在一些实施例中,在步骤110之前,该模块量化方法还可以包括:
在第一网络层的权重参数的位宽由初始位宽开始等差减小,且在第一网络层的权重参数的位宽每减小一次的情况下,获得与减小次数对应的第一网络层的精度损失,第一网络层为目标网络结构中的任一网络层;
在与减小次数对应的第一网络层的精度损失中,确定最大精度损失;
将最大精度损失对应的权重参数的位宽确定为第一网络层的权重参数的阈值位宽。
在实际执行中,目标网络结构中包括多个具有权重参数的网络层,还可以包括各个网络层之间的连接顺序。连接顺序可以基于网络层在神经网络模型中的索引顺序确定。
以目标网络结构中的第一网络层为例,来说明目标网络结构中的任一网络层的权重参数的阈值位宽的确定方式。
先确定目标网络结构中每个网络层的权重参数的位宽,然后逐次等差减小第一网络层的权重参数的位宽,且固定第二网络层的权重参数的位宽不变。第一网络层的权重参数的位宽每减小一次,就相应确定第一网络层在权重参数的位宽变化之后的精度损失。即可以确定与减小次数相对应的精度损失。
其中,第二网络层为目标网络结构中除第一网络层之外的网络层。
例如:假设目标网络结构中每个网络层的权重参数的位宽均为16bit,然后设置第一网络层的权重参数的位宽量化范围为16bit到4bit,第一网络层的权重参数的位宽每次减小1bit,然后就确定第一网络层的精度损失,位宽的减小次数为12次,那么就可以确定12次精度损失。
可以比较每次确定的第一网络层的精度损失,确定最大精度损失。
将第一网络层的精度损失达到最大精度损失时,此时可以将与最大精度损失对应的第一网络层的权重参数的位宽确定为第一网络层的权重参数的阈值位宽。
例如:假设7bit时第一网络层的精度损失最大,因此可以认为第一网络层的权重参数的阈值位宽是7bit。
按照上述方式,可以确定目标网络结构中每个网络层的权重参数的阈值位宽。
根据本申请实施例提供的模型量化方法,通过确定第一网络层的权重参数的阈值位宽,进而可以确定每个网络层的权重参数的阈值位宽,便于以阈值位宽作为参考,来确定每个网络层的权重参数的目标位宽,从而缩小目标位宽的确定范围,可以更加快速的确定目标位宽。
在一些实施例中,步骤110可以包括:
在第一网络层的权重参数的初始位宽调整为第一网络层的权重参数的阈值位宽的情况下,确定目标网络结构的精度损失;
在目标网络结构的精度损失小于精度损失阈值的情况下,将第一网络层的权重参数的阈值位宽确定为第一网络层的权重参数的目标位宽。
在实际执行中,在目标网络结构中的任一网络层的权重参数的位宽变化的情况下,可以确定目标网络结构的精度损失。同理,在其他任一网络层的权重参数的位宽变化的情况下,也可以确定目标网络结构的精度损失。
在本申请中,可以将在每个网络层的权重参数的位宽变化之后的目标网络结构的精度损失与神经网络模型的精度损失阈值进行对比。
若目标网络结构的精度损失大于神经网络模型的精度损失阈值,说明需要继续调整每个网络层的权重参数的位宽;若目标网络结构的精度损失小于神经网络模型的精度损失阈值,说明变化后的位宽可以满足预先设置的精度损失阈值。该变化后的位宽即为每个网络层的权重参数的目标位宽。
可以逐一判断目标网络结构中每个网络层在位宽变化之后,目标网络结构的精度损失和精度损失阈值之间的大小关系,然后确定目标网络结构中每个网络层的权重参数的目标位宽。
在确定第一网络层的权重参数的阈值位宽之后,可以将第一网络层的权重参数的初始位宽调整为第一网络层的权重参数的阈值位宽,保持第二网络层的权重参数的位宽不变,然后计算目标网络结构的精度损失,若目标网络结构的精度损失小于精度损失阈值,则可以将第一网络层的权重参数的阈值位宽确定为第一网络层的权重参数的目标位宽。其中,阈值位宽即为第一网络层的最佳精简位宽。
还可以将第二网络层的权重参数的位宽调整为第二网络层的权重参数的阈值位宽,保持目标网络结构中其他网络层的权重参数的位宽不变,然后计算目标网络结构的精度损失,若目标网络结构的精度损失小于精度损失阈值,则可以将第二网络层的权重参数的阈值位宽确定为第二网络层的权重参数的目标位宽。其中,阈值位宽即为第二网络层的最佳精简位宽。
确定第一网络层的权重参数的目标位宽和第二网络层的权重参数的目标位宽,即确定了目标网络结构中每个网络层的权重参数的目标位宽。
根据本申请实施例提供的模型量化方法,通过将第一网络层的权重参数的位宽调整为第一网络层的权重参数的阈值位宽,并在第一网络层的权重参数的阈值位宽对应的目标网络结构的精度损失小于精度损失阈值的情况下,将第一网络层的权重参数的阈值位宽直接确定为第一网络层的权重参数的目标位宽,可以提升目标位宽的确定效率,阈值位宽为第一网络层的权重参数最合适的位宽,从而可以最大限度地精简第一网络层的权重参数。
在一些实施例中,在第一网络层的权重参数的初始位宽调整为第一网络层的权重参数的阈值位宽的情况下,确定目标网络结构的精度损失之后,模型量化方法还包括:
在目标网络结构的精度损失大于精度损失阈值的情况下,调整第一网络层的权重参数的初始位宽,直至目标网络结构的精度损失小于精度损失阈值,得到调整后的目标位宽。
在上述实施例中的基础上,若第一网络层的权重参数的阈值位宽对应的目标网络结构的精度损失大于精度损失阈值,说明阈值位宽并不是第一网络层的最佳精简位宽,目标网络结构的精度损失过大,即第一网络层的权重参数的位宽被调整得过小,则需要重新调整第一网络层的权重参数的位宽。
在实际执行中,在第一网络层的权重参数的阈值位宽的基础上,可以重新调整第一网络层的权重参数的初始位宽,在初始位宽的基础上,逐次增加第一网络层的权重参数的位宽。每增加一次位宽,确定当前位宽对应的目标网络结构的精度损失,直至增加后的位宽对应的目标网络结构的精度损失小于精度损失阈值,进而可以确定增加后的位宽为第一网络层的权重参数的目标位宽。
例如:第一网络层的权重参数的阈值位宽为Mi,则增加后的位宽可以为Mi+1bit。当然,也可以每次增加2bit或2bit以上,本申请对递增的位宽幅度不作具体限定。
可以理解的是,递增的位宽幅度越大,目标位宽的确定速度越快;递增的位宽幅度越小,确定的目标位宽会更精确。
根据本申请实施例提供的模型量化方法,通过在第一网络层的权重参数的阈值位宽对应的目标网络结构的精度损失大于精度损失阈值的情况下,以阈值位宽为基础,调整第一网络层的权重参数的初始位宽,直至增加后的位宽对应的目标网络结构的精度损失小于精度损失阈值,进而确定增加后的位宽为第一网络层的权重参数的目标位宽,增加后的位宽即为第一网络层最合适的位宽,便于最大限度地精简第一网络层的权重参数。
结合图2以及应用场景对本申请提供的模型量化方法进行说明。
如图2所示,本申请提供的模型量化方法可以包括如下步骤:
步骤201、输入模型文件,设置精度损失阈值;
输入需要精简体积的任一神经网络模型的模型文件,同时设置精度损失阈值,使得模型精简带来的精度损失不能超过设置的目标精度损失E,目标精度损失E即为精度损失阈值。
步骤202、建立网络权重树;
根据输入的神经网络模型,生成对应的网络权重树。生成方式可以按照网络层的索引顺序,在神经网络模型中提取所有带权重参数的网络层,然后将每个带权重参数的网络层作为网络权重树的节点,各网络层对应其中的一个节点。如图3所示,网络权重树可以依次包括:卷积层Conv0、深度可分离卷积层Depthwise0、卷积层Conv1、卷积层Conv2、卷积层Conv3和全连接层FC0。
可以理解的是,网络权重树即为上述实施例中的目标网络结构,目标网络结构中的每个网络层即为网络权重树中的每个节点。
步骤203、生成网络权重树各个节点位宽敏感度热力图;
遍历网络权重树的各个节点,然后生成对应的位宽敏感度热力图。比如第1个节点的权重参数的位宽敏感度热力图,固定其他节点为16bit,然后分别设置第1个节点的权重参数的位宽为16bit到4bit,分别计算出网络权重树的损失,生成第1个节点的权重参数的位宽热力图,位宽热力图即为位宽敏感度热力图。位宽敏感度热力图横轴表示位宽,纵轴表示第1个节点的精度损失值。
步骤204、确定网络权重树各个节点的敏感度阈值位宽
根据输出的位宽敏感度热力图,分析损失值下降幅度最大的位宽,即是敏感度阈值位宽。如图4所示,可以看到7bit对应的损失值下降幅度最大,因此认为第1个节点的敏感度位宽Mi是7bit。
可以理解的是,敏感度阈值位宽即为上述实施例中的阈值位宽。
步骤204-步骤211、遍历搜索各个节点并确定各个节点的精简位宽;
(1)遍历过程如下:首先确定第1个节点的精简位宽Bi,设置网络权重树第1个节点位宽为敏感度位宽Mi,其他节点位宽都为16bit。然后计算当前网络权重树的精度损失e,如果e小于精度损失阈值E,则说明这个节点的精简位宽就是敏感度位宽Mi。如果e大于精度损失阈值E,则需要重新设置节点的位宽Mi=Mi+1bit,递增重复这个过程,直到得到小于精度损失阈值E的位宽就是该节点的精简位宽Bi。
可以理解的是,精简位宽即为上述实施例中的目标位宽。
(2)遍历其他节点方式同(1),以此得到网络权重树中所有节点的精简位宽。
步骤212、根据精简位宽进行模型量化,精简模型文件。
根据步骤211中得到的网络权重树各个节点的精简位宽,将神经网络模型进行量化,量化方式采用常见的线性量化方法即可,从而可以精简神经网络模型的模型文件。
线性量化公式可以为:F=S*(Q-Z)。其中,F表示浮点数据;Q表示低比特整型数据;S表示量化线性系数;Z表示量化零点偏移。
如图5所示,经过上述步骤进行搜索,得到网络权重树510各个节点的精简位宽,进行量化,最终从60MB的模型文件520精简到13.127MB的模型文件530,同时精度损失也满足要求。
根据本申请实施例提供的模型量化方法,相比模型文件通用量化精简方案,本申请对模型文件权重进行单独的位宽敏感度分析,确认各个节点的敏感度阈值位宽,以此来约束搜索策略;引入精度损失阈值,参考敏感度阈值位宽,遍历搜索各个节点最合适的精简位宽,最大限度地精简神经网络模型各层权重,达到最大限度精简模型文件体积的目标;此外,通过先分析各个节点的位宽敏感度,设置约束范围,可以缩短搜索空间。
本申请实施例能够实现对任意结构的神经网络模型文件体积的精简,同时保障精度损失。在设置精度损失阈值的前提下,最大限度的去精简神经网络模型体积,减小AI算法端侧部署所需内存,解决当前AI算法模型体积大的问题。
本申请实施例提供的模型量化方法,执行主体可以为模型量化装置。本申请实施例中以模型量化装置执行模型量化方法为例,说明本申请实施例提供的模型量化装置。
本申请实施例还提供一种模型量化装置。
如图6所示,该模型量化装置包括:第一确定模块610和量化模块620。
第一确定模块610,用于基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;
量化模块620,用于基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
在一些实施例中,所述装置还包括:
第二确定模块,用于在第一网络层的权重参数的位宽由初始位宽开始等差减小,且在所述第一网络层的权重参数的位宽每减小一次的情况下,获得与减小次数对应的所述第一网络层的精度损失,所述第一网络层为所述目标网络结构中的任一网络层;
在与所述减小次数对应的所述第一网络层的精度损失中,确定最大精度损失;
将所述最大精度损失对应的权重参数的位宽确定为所述第一网络层的权重参数的阈值位宽。
在一些实施例中,所述第一确定模块610,具体用于:
在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失;
在所述目标网络结构的精度损失小于所述精度损失阈值的情况下,将所述第一网络层的权重参数的阈值位宽确定为所述第一网络层的权重参数的目标位宽。
在一些实施例中,所述装置还包括:
调整模块,用于所述在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失之后,在所述目标网络结构的精度损失大于所述精度损失阈值的情况下,调整所述第一网络层的权重参数的初始位宽,直至所述目标网络结构的精度损失小于所述精度损失阈值,得到调整后的目标位宽。
根据本申请实施例提供的模型量化装置,通过神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,可以确定目标网络结构中每个网络层的权重参数的目标位宽,实现对任意结构的神经网络模型中的具有权重参数的网络层进行单独分析,最大程度地精简每个网络层的权重参数,进而可以采用每个网络层的权重参数的目标位宽,来量化神经网络模型,使得量化后的神经网络模型的精度损失小于精度损失阈值,不仅可以保证精度损失不会超过精度损失阈值,还可以最大限度地精简模型文件体积。
本申请实施例中的模型量化装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的模型量化装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为iOS操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的模型量化装置能够实现图1至图5的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图7所示,本申请实施例还提供一种电子设备700,包括处理器701和存储器702,存储器702上存储有可在所述处理器701上运行的程序或指令,该程序或指令被处理器701执行时实现上述模型量化方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图8为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备800包括但不限于:射频单元801、网络模块802、音频输出单元803、输入单元804、传感器805、显示单元806、用户输入单元807、接口单元808、存储器809、以及处理器810等部件。
本领域技术人员可以理解,电子设备800还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器810逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图8中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器810,用于基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;
基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
可选地,处理器810,还用于:
所述基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽之前,在第一网络层的权重参数的位宽由初始位宽开始等差减小,且在所述第一网络层的权重参数的位宽每减小一次的情况下,获得与减小次数对应的所述第一网络层的精度损失,所述第一网络层为所述目标网络结构中的任一网络层;
在与所述减小次数对应的所述第一网络层的精度损失中,确定最大精度损失;
将所述最大精度损失对应的权重参数的位宽确定为所述第一网络层的权重参数的阈值位宽。
可选地,处理器810,还用于:
在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失;
在所述目标网络结构的精度损失小于所述精度损失阈值的情况下,将所述第一网络层的权重参数的阈值位宽确定为所述第一网络层的权重参数的目标位宽。
可选地,处理器810,还用于:
所述在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失之后,在所述目标网络结构的精度损失大于所述精度损失阈值的情况下,调整所述第一网络层的权重参数的初始位宽,直至所述目标网络结构的精度损失小于所述精度损失阈值,得到调整后的目标位宽。
根据本申请实施例提供的电子设备,通过神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,可以确定目标网络结构中每个网络层的权重参数的目标位宽,实现对任意结构的神经网络模型中的具有权重参数的网络层进行单独分析,最大程度地精简每个网络层的权重参数,进而可以采用每个网络层的权重参数的目标位宽,来量化神经网络模型,使得量化后的神经网络模型的精度损失小于精度损失阈值,不仅可以保证精度损失不会超过精度损失阈值,还可以最大限度地精简模型文件体积。
应理解的是,本申请实施例中,输入单元804可以包括图形处理器(GraphicsProcessing Unit,GPU)8041和麦克风8042,图形处理器8041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元806可包括显示面板8061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板8061。用户输入单元807包括触控面板8071以及其他输入设备8072中的至少一种。触控面板8071,也称为触摸屏。触控面板8071可包括触摸检测装置和触摸控制器两个部分。其他输入设备8072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器809可用于存储软件程序以及各种数据。存储器809可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器809可以包括易失性存储器或非易失性存储器,或者,存储器809可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器809包括但不限于这些和任意其它适合类型的存储器。
处理器810可包括一个或多个处理单元;可选的,处理器810集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器810中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述模型量化方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述模型量化方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述模型量化方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种模型量化方法,其特征在于,包括:
基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;
基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
2.根据权利要求1所述的模型量化方法,其特征在于,所述基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽之前,所述方法还包括:
在第一网络层的权重参数的位宽由初始位宽开始等差减小,且在所述第一网络层的权重参数的位宽每减小一次的情况下,获得与减小次数对应的所述第一网络层的精度损失,所述第一网络层为所述目标网络结构中的任一网络层;
在与所述减小次数对应的所述第一网络层的精度损失中,确定最大精度损失;
将所述最大精度损失对应的权重参数的位宽确定为所述第一网络层的权重参数的阈值位宽。
3.根据权利要求1所述的模型量化方法,其特征在于,所述基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,包括:
在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失;
在所述目标网络结构的精度损失小于所述精度损失阈值的情况下,将所述第一网络层的权重参数的阈值位宽确定为所述第一网络层的权重参数的目标位宽。
4.根据权利要求3所述的模型量化方法,其特征在于,所述在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失之后,所述方法还包括:
在所述目标网络结构的精度损失大于所述精度损失阈值的情况下,调整所述第一网络层的权重参数的初始位宽,直至所述目标网络结构的精度损失小于所述精度损失阈值,得到调整后的目标位宽。
5.一种模型量化装置,其特征在于,包括:
第一确定模块,用于基于神经网络模型的精度损失阈值和目标网络结构中每个网络层的权重参数的阈值位宽,确定所述每个网络层的权重参数的目标位宽,所述目标网络结构基于所述神经网络模型中的至少部分网络层构建得到,所述每个网络层的权重参数的阈值位宽基于所述每个网络层的精度损失确定,所述每个网络层的精度损失是对所述每个网络层的权重参数的位宽进行量化后确定的;
量化模块,用于基于所述每个网络层的权重参数的目标位宽,量化所述神经网络模型,得到量化后的神经网络模型,所述量化后的神经网络模型的精度损失小于所述精度损失阈值。
6.根据权利要求5所述的模型量化装置,其特征在于,所述装置还包括:
第二确定模块,用于在第一网络层的权重参数的位宽由初始位宽开始等差减小,且在所述第一网络层的权重参数的位宽每减小一次的情况下,获得与减小次数对应的所述第一网络层的精度损失,所述第一网络层为所述目标网络结构中的任一网络层;
在与所述减小次数对应的所述第一网络层的精度损失中,确定最大精度损失;
将所述最大精度损失对应的权重参数的位宽确定为所述第一网络层的权重参数的阈值位宽。
7.根据权利要求5所述的模型量化装置,其特征在于,所述第一确定模块,具体用于:
在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失;
在所述目标网络结构的精度损失小于所述精度损失阈值的情况下,将所述第一网络层的权重参数的阈值位宽确定为所述第一网络层的权重参数的目标位宽。
8.根据权利要求7所述的模型量化装置,其特征在于,所述装置还包括:
调整模块,用于所述在第一网络层的权重参数的初始位宽调整为所述第一网络层的权重参数的阈值位宽的情况下,确定所述目标网络结构的精度损失之后,在所述目标网络结构的精度损失大于所述精度损失阈值的情况下,调整所述第一网络层的权重参数的初始位宽,直至所述目标网络结构的精度损失小于所述精度损失阈值,得到调整后的目标位宽。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-4任一项所述的模型量化方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-4任一项所述的模型量化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310823637.XA CN116822594A (zh) | 2023-07-05 | 2023-07-05 | 模型量化方法、模型量化装置、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310823637.XA CN116822594A (zh) | 2023-07-05 | 2023-07-05 | 模型量化方法、模型量化装置、电子设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116822594A true CN116822594A (zh) | 2023-09-29 |
Family
ID=88116520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310823637.XA Pending CN116822594A (zh) | 2023-07-05 | 2023-07-05 | 模型量化方法、模型量化装置、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116822594A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114075A (zh) * | 2023-10-19 | 2023-11-24 | 湖南苏科智能科技有限公司 | 神经网络模型量化方法、装置、设备及介质 |
CN117787358A (zh) * | 2024-01-16 | 2024-03-29 | 之江实验室 | 一种基于阻变存储器的模型量化方法、装置以及设备 |
-
2023
- 2023-07-05 CN CN202310823637.XA patent/CN116822594A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114075A (zh) * | 2023-10-19 | 2023-11-24 | 湖南苏科智能科技有限公司 | 神经网络模型量化方法、装置、设备及介质 |
CN117114075B (zh) * | 2023-10-19 | 2024-01-26 | 湖南苏科智能科技有限公司 | 神经网络模型量化方法、装置、设备及介质 |
CN117787358A (zh) * | 2024-01-16 | 2024-03-29 | 之江实验室 | 一种基于阻变存储器的模型量化方法、装置以及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110363279B (zh) | 基于卷积神经网络模型的图像处理方法和装置 | |
CN116822594A (zh) | 模型量化方法、模型量化装置、电子设备和介质 | |
CN110162799A (zh) | 模型训练方法、机器翻译方法以及相关装置和设备 | |
CN111428516B (zh) | 一种信息处理的方法以及装置 | |
CN108304758B (zh) | 人脸特征点跟踪方法及装置 | |
CN110163367B (zh) | 一种终端部署方法和装置 | |
CN109542512B (zh) | 一种数据处理方法、装置和存储介质 | |
CN109543824A (zh) | 一种序列模型的处理方法和装置 | |
CN109918684A (zh) | 模型训练方法、翻译方法、相关装置、设备及存储介质 | |
CN109961041B (zh) | 一种视频识别方法、装置及存储介质 | |
CN110110045B (zh) | 一种检索相似文本的方法、装置以及存储介质 | |
CN112748899A (zh) | 一种数据处理方法和相关设备 | |
CN114065900A (zh) | 数据处理方法和数据处理装置 | |
CN110555337A (zh) | 一种指示对象的检测方法、装置以及相关设备 | |
CN110651273B (zh) | 一种数据处理方法及设备 | |
WO2022246986A1 (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN117237742B (zh) | 一种针对初始模型的知识蒸馏方法和装置 | |
CN117523632A (zh) | 一种面瘫等级分析方法和相关装置 | |
CN112948763B (zh) | 件量预测方法、装置、电子设备及存储介质 | |
CN112381224A (zh) | 神经网络训练方法、装置、设备及计算机可读存储介质 | |
CN116542289A (zh) | 一种数据处理方法及其装置 | |
CN113709370B (zh) | 图像生成方法、装置、电子设备及可读存储介质 | |
CN116089474B (zh) | 自定义编辑模式下的数据缓存方法、装置、设备及介质 | |
CN111800537B (zh) | 终端使用状态的评估方法、装置、存储介质及电子设备 | |
WO2024149142A1 (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 |