CN113947206A - 一种深度神经网络量化方法及系统及装置及介质 - Google Patents

一种深度神经网络量化方法及系统及装置及介质 Download PDF

Info

Publication number
CN113947206A
CN113947206A CN202111558843.XA CN202111558843A CN113947206A CN 113947206 A CN113947206 A CN 113947206A CN 202111558843 A CN202111558843 A CN 202111558843A CN 113947206 A CN113947206 A CN 113947206A
Authority
CN
China
Prior art keywords
quantization
layer
neural network
layers
deep neural
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
Application number
CN202111558843.XA
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Shulian Cloud Computing Technology Co ltd
Original Assignee
Chengdu Shulian Cloud Computing Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Shulian Cloud Computing Technology Co ltd filed Critical Chengdu Shulian Cloud Computing Technology Co ltd
Priority to CN202111558843.XA priority Critical patent/CN113947206A/zh
Publication of CN113947206A publication Critical patent/CN113947206A/zh
Priority to CN202210129537.2A priority patent/CN114444668A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Abstract

本发明公开了一种深度神经网络量化方法及系统及装置及介质,涉及神经网络量化领域,具体地,所述方法包括:获得第一深度神经网络
Figure DEST_PATH_IMAGE002
,所述
Figure 79390DEST_PATH_IMAGE002
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 30029DEST_PATH_IMAGE002
的准确率为
Figure DEST_PATH_IMAGE004
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure DEST_PATH_IMAGE006
;基于所述
Figure 991163DEST_PATH_IMAGE004
和所述
Figure 78067DEST_PATH_IMAGE006
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化;本发明能够降低量化的时间复杂度并且能够同时找到一个局部最优的量化层组合。

Description

一种深度神经网络量化方法及系统及装置及介质
技术领域
本发明涉及神经网络量化领域,具体地,涉及一种深度神经网络量化方法及系统及装置及介质。
背景技术
深度神经网络模型被广泛应用在图像分类、目标检测等机器视觉任务中,并取得了巨大成功。然而,由于存储资源和计算资源的限制,深度神经网络模型在移动端或嵌入式设备上的存储与计算仍然面临巨大挑战,因此深度神经网络的压缩和轻量化是一个亟待解决的问题。近年来,研究者们已经在深度神经网络的压缩方向取得了很多研究成果,其中,量化是压缩深度神经网络的方法之一。
一般的,深度神经网络使用float32位数字表示的参数进行卷积、激活、批归一化等计算。在推理阶段,深度神经网络只需要进行一次前向传播,可能不需要很高的数字计算精度。float32位数字占4个字节,表示的精度过高,显得有些冗余,因此可将网络参数以占2个字节的float16位或1个字节的int8(8位整数型)位进行表示,分别称为fp16(FloatPoint 16-16位浮点型数字)量化和int8量化。
大量的研究和实验表明,fp16量化可以在不损失深度神经网络精度的条件下提升其推理速度,并且可以减少推理时的运行内存。位数更少的int8量化相比于fp16量化有更快的推理速度,然而由于int8量化是将原本卷积神经网络中的fp32(Float Point 32-32位浮点型数字)位的特征层和权重参数均匀的分到[-127, 127]的整数区间内,这些参数损失的精度更高,使得某些模型进行int8量化以后推理精度降低。
部分量化是恢复int8量化模型损失精度的方法之一。部分量化是在int8量化的深度神经网络模型中,选择若干个神经网络层的参数以float32位数字表示,这样的神经网络层称为非量化层,这种同时有int8量化参数和fp32参数表示的模型称为混合精度量化模型。相比于int8量化模型,混合精度量化模型推理速度会降低,但是可以一定程度恢复int8量化模型损失的精度。
可以看出,混合精度量化模型的推理速度和精度恢复程度是一个权衡问题,一般来说,fp32精度的层数越多,推理速度越慢,精度相对会更高。因此,部分量化的目的是使混合精度量化模型的精度损失在一定范围内,找到最少的非量化层;即优化以下公式:
Figure 884609DEST_PATH_IMAGE001
(1)
其中,M为fp32位深度神经网络模型,SM中的int8量化层集合,
Figure 270591DEST_PATH_IMAGE002
表示M中将S表示的层进行int8量化所得到的混合精度量化模型。
Figure 784749DEST_PATH_IMAGE003
Figure 773434DEST_PATH_IMAGE004
分别表示模型M
Figure 56648DEST_PATH_IMAGE005
的推理精度,
Figure 220388DEST_PATH_IMAGE006
为用户设定可接受的最大精度损失阈值,如0.01,其中,“s.t.”,指subject to,受限制于,通常指约束条件。该优化问题的全局最优解法是遍历搜索其中所有的量化层和非量化层组合,然而其算法复杂度为
Figure 956263DEST_PATH_IMAGE007
),n是该模型的神经网络层数。在实际应用中,如此低效的解法肯定不可取,如何更快更准地进行部分量化,是恢复int8量化模型损失精度的难点之一。
发明内容
本发明目的是降低量化的时间复杂度并且能够同时找到一个局部最优的量化层组合。
为实现上述目的,本发明提供了一种深度神经网络量化方法,所述方法包括:
获得第一深度神经网络
Figure 14218DEST_PATH_IMAGE008
,所述
Figure 151938DEST_PATH_IMAGE008
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 489510DEST_PATH_IMAGE008
的准确率为
Figure 712681DEST_PATH_IMAGE009
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure 43168DEST_PATH_IMAGE006
基于所述
Figure 35395DEST_PATH_IMAGE009
和所述
Figure 543867DEST_PATH_IMAGE006
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
其中,本方法使用二分法,针对fp32位神经网络在全部量化int8表示的神经网络以后模型精度损失严重的问题,本方法意图在int8位量化的神经网络中找到对网络准确率影响最大的若干个层,本发明称这些层为非量化层(其余层称为量化层),将这些层还原成fp32位表示,而其余层依旧进行int8位的量化,使整个fp32位和int8位混合精度表示的神经网络在给定测试任务上的准确率相比于原始的fp32位神经网络准确率下降程度在一定阈值之内,同时使得非量化层数尽可能少,量化层数尽可能多。
本发明查找非量化层的思路为:int8位量化模型精度损失主要是因为神经网络中某些层对精度比较敏感,这些层被量化后精度损失较大;而有些层相对不敏感,这些不敏感的层被量化后不会明显降低模型精度。因此,本发明在进行部分量化时,默认平均量化一层神经网络至多只能产生
Figure 519914DEST_PATH_IMAGE010
的精度损失,
Figure 388513DEST_PATH_IMAGE011
为精度损失阈值,n为神经网络层数。若量化b层精度损失小或等于
Figure 500825DEST_PATH_IMAGE012
,则说明这b层都属于不敏感层,均可被量化;否则,这b层中一定存在若干个敏感层,本方案的目的即是找到这些敏感层。
优选的,所述基于所述
Figure 570412DEST_PATH_IMAGE009
和所述
Figure 909121DEST_PATH_IMAGE006
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化,具体包括:
定义qi表示所述
Figure 456777DEST_PATH_IMAGE008
中第1至第i层所述神经网络层之间的量化层集合,将所述
Figure 548230DEST_PATH_IMAGE008
中的第i至第j层以及所述qi对应的所述神经网络层均量化后获得第二深度神经网络,
Figure 788718DEST_PATH_IMAGE013
表示所述第二深度神经网络的准确率;
设定初始条件并执行预设查找步骤查找所述
Figure 815055DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层,初始条件为
Figure 166402DEST_PATH_IMAGE014
Figure 112362DEST_PATH_IMAGE015
所述预设查找步骤包括:
步骤1:若
Figure 789331DEST_PATH_IMAGE016
,则所述
Figure 571473DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层查找结果为空;若
Figure 726511DEST_PATH_IMAGE017
,且
Figure 667922DEST_PATH_IMAGE018
,则所述
Figure 640426DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层查找结果为第i层;若
Figure 300077DEST_PATH_IMAGE017
,且
Figure 993227DEST_PATH_IMAGE019
,则所述
Figure 664511DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层查找结果为空;
步骤2:若
Figure 417703DEST_PATH_IMAGE020
,且
Figure 564651DEST_PATH_IMAGE021
,则所述
Figure 451704DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层查找结果为第i至第j层;若
Figure 102128DEST_PATH_IMAGE022
,且
Figure 26222DEST_PATH_IMAGE023
,则令
Figure 270253DEST_PATH_IMAGE024
,并执行步骤3;
步骤3:更新所述初始条件,令
Figure 570784DEST_PATH_IMAGE014
Figure 606873DEST_PATH_IMAGE025
,并返回执行步骤1,获得所述第一神经网络在第i至第mid层之间的第一量化层集合
Figure 29764DEST_PATH_IMAGE026
,并执行步骤4;
步骤4:更新所述初始条件,令
Figure 758161DEST_PATH_IMAGE027
Figure 862384DEST_PATH_IMAGE028
,并返回执行步骤1,获得所述第一神经网络在第mid+1层至第j层之间的第二量化层集合
Figure 487400DEST_PATH_IMAGE029
步骤5:基于所述第一量化层集合和所述第二量化层集合,获得所述
Figure 346772DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层查找结果;
步骤6:将所述
Figure 299815DEST_PATH_IMAGE008
中第i至第j层所述神经网络层之间的量化层查找结果中的所有量化层均量化。
优选的,本方法中量化前所述
Figure 207728DEST_PATH_IMAGE008
中每个所述神经网络层的参数均采用32位浮点型数据表示。float32位数字占4个字节,表示的精度过高,显得有些冗余,因此需要进行量化。
优选的,本方法中将所述量化层量化具体为:将量化层的参数采用8位整数型数据表示。8位整数型数据与32位浮点型数据相比占用空间小,能够有效实现模型的量化。
优选的,本方法中深度神经网络的准确率获取方式为:利用测试集数据测试深度神经网络,获得深度神经网络的准确率。
优选的,本方法在图形处理器端使用所述
Figure 811885DEST_PATH_IMAGE008
在所述测试集上进行推理得到所述
Figure 514262DEST_PATH_IMAGE009
优选的,所述
Figure 344815DEST_PATH_IMAGE013
的获得方式为:
从所述测试集中随机选择若干批次数据对所述第二深度神经网络的激活层定标以确定每一个激活层的量化尺度,利用所述测试集对所述第二深度神经网络进行多次推理分别获得多个推理准确率,求取所述多个推理准确率的平均值获得所述
Figure 400626DEST_PATH_IMAGE013
。为了确保鲁棒性,定标传入的若干批次测试数据集选取需要有随机性,每一套参数(i, j)的神经网络要以随机定标的方法进行5次int8量化推理,以5次推理准确率的平均值作为
Figure 235DEST_PATH_IMAGE013
的结果。
本发明还提供了一种深度神经网络量化系统,所述系统包括:
网络准确率及准确率损失阈值获得单元,用于获得第一深度神经网络
Figure 873513DEST_PATH_IMAGE008
,所述
Figure 50417DEST_PATH_IMAGE008
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 34553DEST_PATH_IMAGE008
的准确率为
Figure 488668DEST_PATH_IMAGE009
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure 408214DEST_PATH_IMAGE006
量化单元,用于基于所述
Figure 947779DEST_PATH_IMAGE009
和所述
Figure 735607DEST_PATH_IMAGE006
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
本发明还提供了一种深度神经网络量化装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述深度神经网络量化方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述深度神经网络量化方法的步骤。
本发明提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明提出的使用二分算法进行部分量化的方法具有相当低的时间复杂度。从算法流程中很容易计算本方案的时间复杂度为O(log(n))。具体地,若有k个非量化层,则时间复杂度近似为O(k*log(n))。在实际应用中,一般几个非量化层就可以将精度损失控制在一定范围内,因此k值一般比较小,O(k*log(n))的复杂度可近似为O(log(n))。一些深层的神经网络模型进行部分量化时,如YoloV4,该方案有绝对的速度优势,并且此方案能同时找到一个局部最优的量化层组合。
本发明应用普适性强,效率高。体现在模型评价标准简单(只使用模型推理准确率),没有多余的超参数(只有一个自定义的精度损失阈值),进行部分量化的算法也是端到端的,算法执行完毕即可以输出满足条件的最优的量化层组合,并可以同时计算出这个最优量化层组合的混合精度量化模型准确率。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,并不构成对本发明实施例的限定;
图1为深度神经网络量化方法的流程示意图;
图2为深度神经网络量化系统的组成示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
实施例一
请参考图1,图1为深度神经网络量化方法的流程示意图,本发明实施例一提供了一种深度神经网络量化方法,所述方法包括:
获得第一深度神经网络
Figure 168862DEST_PATH_IMAGE008
,所述
Figure 928483DEST_PATH_IMAGE008
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 814400DEST_PATH_IMAGE008
的准确率为
Figure 140339DEST_PATH_IMAGE009
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure 444412DEST_PATH_IMAGE006
基于所述
Figure 564815DEST_PATH_IMAGE009
和所述
Figure 344552DEST_PATH_IMAGE006
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
下面结合具体的例子和现有的深度神经网络优化方法对本方法进行详细的介绍:
本实施例首先介绍与本发明相关的现有技术,目的是凸显本方法的区别和进步:
现有技术1:
此技术对深度神经网络所有层进行敏感度分析,优先选择敏感度更高的层作为非量化层。第i个神经网络层
Figure 598816DEST_PATH_IMAGE030
的敏感度
Figure 616451DEST_PATH_IMAGE031
定义为:fp32位深度神经网络中只将第i层进行int8量化,得到的混合精度量化神经网络推理精度相较于原始fp32位网络推理精度的损失值。其具体的算法流程为:
(1)用原始的fp32位深度神经网络在测试集数据上进行推理,得到基础准确率
Figure 438913DEST_PATH_IMAGE032
(2)在fp32位深度神经网络中,取第i(i=1)层量化为int8位,其余层依旧以fp32位表示,用该混合精度量化神经网络进行推理得到准确率
Figure 315733DEST_PATH_IMAGE033
,则第i(i=1)层的敏感度
Figure 983475DEST_PATH_IMAGE031
Figure 239193DEST_PATH_IMAGE035
(2)
(3)分别取i=2,3,4,...,n(n为深度神经网络总层数),重复步骤(2)n-1次,得到其余神经网络层的敏感度
Figure 462364DEST_PATH_IMAGE031
Figure 543584DEST_PATH_IMAGE036
(4)按照敏感度从大到小对神经网络层进行排序,取前k个层作为非量化层,其余层作为量化层进行int8量化,k为满足混合精度量化模型精度要求的最小值。
现有技术1方案的缺点是:
(1)此方案用控制变量的思想独立分析每一层的敏感度,随后选择敏感度最高的几层作为非量化层,思路合理,但是其并未同时对多个层做非量化分析推理精度,因此可能会失去一些具有高精度的非量化层的组合。
(2)此方案时间复杂度为O(n),n为深度神经网络的层数。在一些比较复杂的网络上,如目标检测网络或目标分割网络等,网络层数多,推理时间长,该方案会很耗时。
现有技术2:
此技术方案是对现有技术1方案的改进,首先自定义一个目标函数:
Figure 801390DEST_PATH_IMAGE037
(3)
其中,S表示混合精度量化神经网络中的量化层集合,该方案以一个参数
Figure 965655DEST_PATH_IMAGE038
来权衡网络的精度和速度。
Figure 535176DEST_PATH_IMAGE039
越大,公式(3)更倾向于最小化右边的量化层S参数量部分,参数量越多,量化层越多,网络推理速度更快;
Figure 810300DEST_PATH_IMAGE038
越小,公式(3)更倾向于最小化左边的精度部分,一个极端情况,
Figure 922612DEST_PATH_IMAGE040
时,网络为全fp32位表示,即S为空集时公式(3)取得最优解。
此技术方案寻找量化层的算法流程为:
(1)初始化V为神经网络所有层的集合,S为空集;
(2)令k=1,在V中分别将每一层添加到S中,计算
Figure 888074DEST_PATH_IMAGE041
,从V中选择使
Figure 85837DEST_PATH_IMAGE041
最大的层
Figure 899072DEST_PATH_IMAGE030
,令
Figure 990525DEST_PATH_IMAGE042
(3)令k=2,3,4,…,n,重复执行第二步n-1次,每一次不加或选择一层加入到
Figure 231013DEST_PATH_IMAGE043
(4)
Figure 791439DEST_PATH_IMAGE043
即是满足条件的量化层集合
Figure 408365DEST_PATH_IMAGE044
方案缺点:
(1)此方案作为对现有技术1方案的改进,以最大化目标函数的方法代替敏感度分析,并且通过贪心算法一步步迭代找到了一个局部最优的量化层组合。然而该方案的时间复杂度过高,从算法流程中易知其时间复杂度为O(n2),n为深度神经网络的层数,对超过百层的深度神经网络,该方案的时间消耗是难以接受的。
(2)此方案的核心是目标函数
Figure 495269DEST_PATH_IMAGE041
,也是唯一的模型评价指标。其中的超参数
Figure 31293DEST_PATH_IMAGE038
的选择过于抽象,在不同的模型,不同的任务,不同的精度损失阈值中,
Figure 203648DEST_PATH_IMAGE038
选择都有很大差异,很难选定到一个非常合适的值去度量
Figure 93107DEST_PATH_IMAGE041
。原方案中也并未介绍如何去选择一个适当
Figure 175464DEST_PATH_IMAGE038
的方法。
现有技术3:
此技术方案参考DARTS的方法,使用神经网络架构自动搜索技术(NAS),去搜索每一个神经网络层的量化位数(8位,4位,2位,1位)。该方案首先定义一个超网络
Figure 757755DEST_PATH_IMAGE045
Figure 151827DEST_PATH_IMAGE046
表示其中一个混合精度量化网络,
Figure 235189DEST_PATH_IMAGE047
表示混合精度量化网络结构,表明了每一层的量化位数,
Figure 31107DEST_PATH_IMAGE048
表示网络权重参数,
Figure 49879DEST_PATH_IMAGE047
Figure 72192DEST_PATH_IMAGE049
都是可导的。接着定义一个包含推理准确率,各层参数量和量化位数的一个目标函数:
Figure 303454DEST_PATH_IMAGE050
(4)
其中,
Figure 219457DEST_PATH_IMAGE051
表示混合精度量化神经网络
Figure 533764DEST_PATH_IMAGE046
推理准确率,
Figure 902428DEST_PATH_IMAGE052
表示
Figure 202960DEST_PATH_IMAGE046
中神经网络层数,
Figure 580327DEST_PATH_IMAGE053
表示
Figure 940901DEST_PATH_IMAGE046
Figure 62441DEST_PATH_IMAGE054
层参数量,
Figure 760138DEST_PATH_IMAGE055
表示
Figure 650734DEST_PATH_IMAGE046
Figure 182209DEST_PATH_IMAGE054
层量化位数,
Figure 135253DEST_PATH_IMAGE056
是一个常数系数。
定义搜索空间之后,
Figure 43166DEST_PATH_IMAGE057
即可以梯度下降的方法进行优化,先固定
Figure 647323DEST_PATH_IMAGE058
不变优化超网络
Figure 349700DEST_PATH_IMAGE045
中的权重参数
Figure 180252DEST_PATH_IMAGE048
,迭代一定次数以后再固定
Figure 360698DEST_PATH_IMAGE048
不变,优化结构参数
Figure 835673DEST_PATH_IMAGE047
。迭代若干轮后采样几组网络结构在数据集上重新进行训练和验证,从其中选取较好的网络结构。
此技术方案寻找量化层的算法流程为:
(1)初始化超网络
Figure 708951DEST_PATH_IMAGE045
,参数
Figure 26800DEST_PATH_IMAGE058
Figure 869991DEST_PATH_IMAGE048
,定义损失函数
Figure 589685DEST_PATH_IMAGE057
,网络结构集合Q A 为空集;
(2)暂时固定参数
Figure 243652DEST_PATH_IMAGE047
不变,训练
Figure 48796DEST_PATH_IMAGE045
(优化
Figure 836624DEST_PATH_IMAGE048
N轮。
(3)暂时固定参数
Figure 269879DEST_PATH_IMAGE048
不变,训练
Figure 484960DEST_PATH_IMAGE045
(优化
Figure 511822DEST_PATH_IMAGE047
)。
(4)从中采样若干个混合精度量化神经网络结构存入Q A 中。
(5)Q A 中每一个网络结构都在数据集上重新训练至收敛后在测试集上进行验证,从中选出需要的网络结构和权重参数。
方案缺点:
(1)此方案使用NAS直接去搜索每一层神经网络的量化位数,而非固定的8位量化,最后能搜索出一个精度尚可的混合精度量化神经网络,推理速度快,模型压缩空间大。然而本方案设计复杂程度过高,目标函数参数量多,使用门槛高,实用性和适用性不强。
(2)此方案搜索空间大,待优化参数多,结构复杂,NAS搜索策略中,搜索时间是一个巨大的消耗。如ResNet18,只有30个卷积层和激活层,此方案搜索ResNet18的一个混合精度量化网络结构使用了8个GPU(图形处理器),花费了5个小时。在一些几百层的网络结构上,该方案的搜索时间可能让人难以接受。
与上述3种方案不同的是,本实施例中的深度神经网络量化方法此发明方案要解决现有的部分量化方法的高时间复杂度问题,同时也能找到一个局部最优量化层组合,具体地:
本方法能够解决高时间复杂度问题。现有的部分量化方法都要在fp32位表示的神经网络中逐个对每一层神经网络层进行int8量化,复杂度为O(n)或O(n2),n为神经网络的层数,即深度神经网络需要该测试数据集上推理至少n次或n2次,才能得到这n层神经网络中的量化层组合。
本方法能够选择一个局部最优量化层组合。全局最优量化层组合时间复杂度为O(2n),因此只能设计启发式方法寻找局部最优组合。现有技术1中逐层遍历得到每个神经网络层对int8量化的敏感度只是选择单层非量化网络层的最优解,以多个这样的局部最优解来决定哪些层要进行非量化会错失可能较好的量化层组合。
本方法使用二分法,针对fp32位神经网络在全部量化int8表示的神经网络以后模型精度损失严重的问题,我们意图在int8位量化的神经网络中找到对网络准确率影响最大的若干个层,我们称这些层为非量化层(其余层称为量化层),将这些层还原成fp32位表示,而其余层依旧进行int8位的量化,使整个fp32位和int8位混合精度表示的神经网络在给定测试任务上的准确率相比于原始的fp32位神经网络准确率下降程度在一定阈值之内,同时使得非量化层数尽可能少,量化层数尽可能多。
本方案查找非量化层的思路为:int8位量化模型精度损失主要是因为神经网络中某些层对精度比较敏感,这些层被量化后精度损失较大;而有些层相对不敏感,这些不敏感的层被量化后不会明显降低模型精度。因此,本方案在进行部分量化时,默认平均量化一层神经网络至多只能产生
Figure 710197DEST_PATH_IMAGE010
的精度损失,
Figure 138905DEST_PATH_IMAGE011
为精度损失阈值,n为神经网络层数。若量化b层精度损失小或等于
Figure 259308DEST_PATH_IMAGE012
,则说明这b层都属于不敏感层,均可被量化;否则,这b层中一定存在若干个敏感层,本方案的目的即是找到这些敏感层。
具体地,对于n层fp32位量化的神经网络:
首先取第1至第n/2个神经网络层,只将这n/2个神经网络层进行int8位量化,用整个神经网络在测试集上进行测试,若准确率相比于原始的fp32位神经网络下降值小于或等于某个阈值,则说明这n/2个神经网络层中不存在非量化层,在后续过程中均可以用int8量化进行神经网络的推理;若精度率下降值大于阈值
Figure 163678DEST_PATH_IMAGE059
,则说明这n/2个神经网络层中存在非量化层,这时候要继续对这n/2个神经层使用二分法寻找非量化层,直到被二分的神经网络只剩一层,不能继续执行二分法为止。
随后寻找第n/2至第n个神经网络层,由于第1至第n/2个神经网络层中的量化层已经找到,将这些层量化成int8位,再以上述流程判断第n/2至第n层中是否存在非量化层,若不存在,则算法结束;若存在,再对第n/2至第n层继续二分寻找非量化层。
本发明目标是找到非量化层集合,而实际上量化层集合就是非量化层集合关于全集的补集,找到量化层集合就相当于找到了非量化层集合。为了计算和说明方便,以下方案步骤均以寻找量化层集合为目的,本方案使用的递归算法也以量化层集合为返回值。
假设整个神经网络有n层,定义find_layer(i, j)为算法在网络第i层至第j层之间寻找到的量化层集合。qi表示神经网络在第i层之前找到的量化层集合,M(i, j)表示神经网络量化第i层至第j层以及qi层的推理准确率。
网络的int8量化推理时需要将每一个被激活后的特征层(以下简称激活层)和卷积网络参数都进行int8量化,每一层卷积网络参数的int8量化可以在获取到原始的float32位网络参数之后统计其最大值和最小值进行,但是每个特征层的数据只有在网络进行推理时才能生成,如果在int8量化推理过程中统计每一个激活层的最大最小值或其分布情况再对激活层进行int8量化,势必会影响量化推理速度。因此,在生成int8量化模型之前,要从测试数据随机选取几个批次送入网络中,提前统计每个激活层的最大最小值和分布情况,确定激活层的量化尺度,称为定标。根据现有技术1,常用的定标方法分为最大值定标,百分位定标,交叉熵定标三种方法。本方案中采用99.999%百分位定标的方法,即将每一个特征层中最大0.001%的值视为极值,量化时直接映射到int8位的最大整数。
为了确保鲁棒性,定标传入的若干批次测试数据集选取需要有随机性,每一套参数(i, j)的神经网络要以随机定标的方法进行5次int8量化推理,以5次推理准确率的平均值作为M(i, j)的结果。
本方法要先给定一个基础的fp32位表示的神经网络
Figure 293308DEST_PATH_IMAGE008
,测试集
Figure 310943DEST_PATH_IMAGE060
,在GPU端使用
Figure 8772DEST_PATH_IMAGE008
Figure 10226DEST_PATH_IMAGE061
上进行推理得到基础神经网络准确率
Figure 412388DEST_PATH_IMAGE009
,以及将神经网络进行int8量化或int8部分量化后最高接受的准确率损失阈值
Figure 940322DEST_PATH_IMAGE006
Figure 933685DEST_PATH_IMAGE008
中有n个神经网络层。
使用递归算法二分的进行查找,算法的输入为神经网络
Figure 891277DEST_PATH_IMAGE008
,测试集
Figure 503655DEST_PATH_IMAGE060
,基础准确率
Figure 761461DEST_PATH_IMAGE009
,可接受损失阈值
Figure 394568DEST_PATH_IMAGE006
,算法的输出为
Figure 35951DEST_PATH_IMAGE008
中的量化层集合。
根据以上算法,首先执行以下初始化步骤:
给定一个基础的fp32位表示的n层神经网络
Figure 882684DEST_PATH_IMAGE008
,测试集
Figure 827637DEST_PATH_IMAGE060
,在GPU端使用
Figure 25400DEST_PATH_IMAGE008
Figure 104215DEST_PATH_IMAGE062
上进行推理得到基础神经网络准确率
Figure 195668DEST_PATH_IMAGE009
,设定一个量化模型最高接受的准确率损失阈值
Figure 436156DEST_PATH_IMAGE006
Figure 121215DEST_PATH_IMAGE013
定义为:
Figure 610578DEST_PATH_IMAGE008
中取第i至第j,以及集合qi所表示的层进行int8量化)以随机定标的方法量化并推理5次,这5次推理准确率的平均值作为该参数(i,j)量化模型的准确率
Figure 697483DEST_PATH_IMAGE063
。初始化
Figure 843293DEST_PATH_IMAGE014
Figure 140282DEST_PATH_IMAGE015
Figure 295320DEST_PATH_IMAGE064
本方案的整体流程如下:
(1)如果
Figure 236731DEST_PATH_IMAGE016
,说明初始条件异常,直接返回
Figure 959968DEST_PATH_IMAGE065
(2)如果
Figure 354040DEST_PATH_IMAGE017
:如果
Figure 312769DEST_PATH_IMAGE018
,说明神经网络第i层可被量化,返回
Figure 498900DEST_PATH_IMAGE066
;否则说明第i层位非量化层,返回
Figure 252092DEST_PATH_IMAGE065
(3)否则(
Figure 133460DEST_PATH_IMAGE067
的情况),如果
Figure 505667DEST_PATH_IMAGE068
,说明在神经网络第i层至第j层没有非量化层,可全部被量化,返回
Figure 421670DEST_PATH_IMAGE069
。否则,令
Figure 611343DEST_PATH_IMAGE024
(4)令
Figure 104641DEST_PATH_IMAGE014
Figure 405173DEST_PATH_IMAGE025
,递归的调用本方案算法流程,返回的结果即为在神经网络第i层至第mid层找到的量化层集合
Figure 785470DEST_PATH_IMAGE026
(5)令
Figure 146044DEST_PATH_IMAGE027
Figure 736425DEST_PATH_IMAGE028
,递归的调用本方案算法流程,返回的结果即为在神经网络mid+1层至第j层找到的量化层集合
Figure 965281DEST_PATH_IMAGE029
(6)令
Figure 855877DEST_PATH_IMAGE070
,返回
Figure 121773DEST_PATH_IMAGE071
。其中,
Figure 337466DEST_PATH_IMAGE071
为量化层集合。
本方案提出的使用二分算法进行部分量化的方法具有相当低的时间复杂度。从算法流程中很容易计算本方案的时间复杂度为O(log(n))。具体地,若有k个非量化层,则时间复杂度近似为O(k*log(n))。在实际应用中,一般几个非量化层就可以将精度损失控制在一定范围内,因此k值一般比较小,O(k*log(n))的复杂度可近似为O(log(n))。一些深层的神经网络模型进行部分量化时,如YoloV4,该方案有绝对的速度优势,并且此方案能同时找到一个局部最优的量化层组合。
本方案应用普适性强,效率高。体现在模型评价标准简单(只使用模型推理准确率),没有多余的超参数(只有一个自定义的精度损失阈值),进行部分量化的算法也是端到端的,算法执行完毕即可以输出满足条件的最优的量化层组合,并可以同时计算出这个最优量化层组合的混合精度量化模型准确率。
本方案以YoloV4在Pascal Voc2012数据集(测试集
Figure 714221DEST_PATH_IMAGE060
)上的目标检测模型为基准fp32网络模型
Figure 459323DEST_PATH_IMAGE072
,有399个神经网络层(只计算卷积层和激活层,因为量化只对这两种层实施)。在GPU端使用
Figure 20754DEST_PATH_IMAGE072
Figure 851307DEST_PATH_IMAGE073
上进行推理得到基础神经网络准确率(MAP)
Figure 907119DEST_PATH_IMAGE074
,对
Figure 772307DEST_PATH_IMAGE072
进行全int8量化之后准确率为
Figure 380006DEST_PATH_IMAGE075
,准确率损失为3.6%。设定量化模型最高接受的准确率损失阈值
Figure 556909DEST_PATH_IMAGE076
。本小节的量化和部分量化实验均在TensorRT(深度学习框架)架构上进行。
本实施示例中展示了本方案的部分量化过程和结果,并对比了现有技术1的部分量化结果。现有技术2和现有技术3由于时间复杂度过高未进行实验。
本方案的实施步骤如下:
(1)将区间[1, 399]二分为[1, 200]和[201, 399]两个区间,只将[1, 200]的所有层进行量化得到准确率78.31%,准确率损失为2.85%,大于阈值0.501%,因此在[1, 200]区间内继续二分区间为[1, 100]和[101, 200]。
(2)只将区间[1, 100]的所有层进行量化得到准确率78.82%,准确率损失为2.34%,大于阈值0.25%,因此继续对二分区间[1, 100]为[1, 50]和[51, 100]。
(3)只将区间[1, 50]的所有层进行量化,得到准确率79.89%,准确率损失为1.27%,大于阈值0.125%,在区间[1, 50]中继续进行二分,只量化[1, 25]层的准确率为81.14%,准确率损失为0.02%,小于阈值0.0625%,满足精度要求,因此区间[1, 25]中各层均可被量化,在寻找后面的量化层时区间[1, 25]中的层一直处于量化状态。
(4)在区间[26, 50]中继续二分查找可找到一个非量化层第45层Tanh层(Tanh-双曲正切函数)。
(5)在区间[51, 100]中查找时,区间[1, 50]中除第45层之外的其余49层均进行量化操作,在区间[51, 100]中能找到两个非量化层,第80层Tanh层和第84层Tanh层。
(6)在区间[101, 200]中查找时,区间[1, 100]中除第45,80,84层之外的其余97层均进行量化操作,再将区间[101, 200]中所有层进行量化推理准确率为80.85%,精度损失为0.31%,小于阈值197/399*1%=0.49%,因此区间[101, 200]中所有层全部为量化层。
(7)在区间[201, 399]中查找时,区间[1, 200]中除第45,80,84层之外的其余197层均进行量化操作,再量化区间[201, 399]中所有层推理精度为78.23%,准确率损失为2.93%,大于阈值0.5%,因此需继续划分区间[201, 399]为区间[201, 300]和区间[301,399]。
(8)在区间[201, 300]中寻找到非量化层第270层Tanh层,在区间[301, 399]中找到非量化层第397层Conv层、398层LeakyRelu层、399层Conv层(Conv-卷积、LeakyRelu-带泄露的修正线性单元函数)。
该方案最终找到392个量化层和7个非量化层,混合精度量化模型推理准确率为80.31%,准确率损失为0.85%。这7个非量化层为:45_Tanh、80_Tanh、84_Tanh、270_Tanh、397_Conv、398_LeakyRelu、399_Conv。
两种方案的部分量化实验结果见表1。
表1两种方案在YoloV4上的部分量化实验结果
Figure 541046DEST_PATH_IMAGE078
上述示例中,本方案在执行时间,找到的非量化层数和部分量化模型准确率三个指标上都优于现有技术1,体现了本方案的优越性。
实施例二
请参考图2,图2为深度神经网络量化系统的组成示意图,本发明实施例二提供了一种深度神经网络量化系统,所述系统包括:
网络准确率及准确率损失阈值获得单元,用于获得第一深度神经网络
Figure 260740DEST_PATH_IMAGE008
,所述
Figure 180286DEST_PATH_IMAGE008
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 454272DEST_PATH_IMAGE008
的准确率为
Figure 242100DEST_PATH_IMAGE079
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure 675355DEST_PATH_IMAGE006
量化单元,用于基于所述
Figure 890436DEST_PATH_IMAGE079
和所述
Figure 182877DEST_PATH_IMAGE006
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
实施例三
本发明实施例三提供了一种深度神经网络量化装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述深度神经网络量化方法的步骤。
实施例四
本发明实施例四提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述深度神经网络量化方法的步骤。
其中,所述处理器可以是中央处理器(CPU,Central Processing Unit),还可以是其他通用处理器、数字信号处理器(digital signal processor)、专用集成电路(Application Specific Integrated Circuit)、现成可编程门阵列(Fieldprogrammablegate array)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的数据,实现发明中深度神经网络量化装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。此外,存储器可以包括高速随机存取存储器、还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡,安全数字卡,闪存卡、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述深度神经网络量化装置如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序可存储于一计算机可读存介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码、对象代码形式、可执行文件或某些中间形式等。所述计算机可读取介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存储器、点载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
本发明已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种深度神经网络量化方法,其特征在于,所述方法包括:
获得第一深度神经网络
Figure 319895DEST_PATH_IMAGE001
,所述
Figure 9503DEST_PATH_IMAGE002
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 455528DEST_PATH_IMAGE003
的准确率为
Figure 55136DEST_PATH_IMAGE004
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure 53048DEST_PATH_IMAGE005
基于所述
Figure 370897DEST_PATH_IMAGE006
和所述
Figure 355033DEST_PATH_IMAGE005
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
2.根据权利要求1所述的深度神经网络量化方法,其特征在于,所述基于所述
Figure 74728DEST_PATH_IMAGE006
和所述
Figure 243541DEST_PATH_IMAGE005
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化,具体包括:
定义qi表示所述
Figure 48686DEST_PATH_IMAGE007
中第1至第i层所述神经网络层之间的量化层集合,将所述
Figure 836513DEST_PATH_IMAGE007
中的第i至第j层以及所述qi对应的所述神经网络层均量化后获得第二深度神经网络,
Figure 410714DEST_PATH_IMAGE008
表示所述第二深度神经网络的准确率;
设定初始条件并执行预设查找步骤查找所述
Figure 750429DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层,初始条件为
Figure 777290DEST_PATH_IMAGE009
Figure 368809DEST_PATH_IMAGE010
所述预设查找步骤包括:
步骤1:若
Figure 797516DEST_PATH_IMAGE011
,则所述
Figure 42553DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层查找结果为空;若
Figure 822290DEST_PATH_IMAGE012
,且
Figure 951920DEST_PATH_IMAGE013
,则所述
Figure 359767DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层查找结果为第i层;若
Figure 182230DEST_PATH_IMAGE012
,且
Figure 183684DEST_PATH_IMAGE014
,则所述
Figure 117005DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层查找结果为空;
步骤2:若
Figure 379359DEST_PATH_IMAGE016
,且
Figure 372723DEST_PATH_IMAGE018
,则所述
Figure 861473DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层查找结果为第i至第j层;若
Figure 332906DEST_PATH_IMAGE015
,且
Figure 715345DEST_PATH_IMAGE019
,则令
Figure 879610DEST_PATH_IMAGE020
,并执行步骤3;
步骤3:更新所述初始条件,令
Figure 590077DEST_PATH_IMAGE021
Figure 865201DEST_PATH_IMAGE022
,并返回执行步骤1,获得所述第一神经网络在第i至第mid层之间的第一量化层集合
Figure 367727DEST_PATH_IMAGE023
,并执行步骤4;
步骤4:更新所述初始条件,令
Figure 437314DEST_PATH_IMAGE024
Figure 900656DEST_PATH_IMAGE025
,并返回执行步骤1,获得所述第一神经网络在第mid+1层至第j层之间的第二量化层集合
Figure 713891DEST_PATH_IMAGE026
步骤5:基于所述第一量化层集合和所述第二量化层集合,获得所述
Figure 70923DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层查找结果;
步骤6:将所述
Figure 311412DEST_PATH_IMAGE007
中第i至第j层所述神经网络层之间的量化层查找结果中的所有量化层均量化。
3.根据权利要求2所述的深度神经网络量化方法,其特征在于,量化前所述
Figure 262050DEST_PATH_IMAGE007
中每个所述神经网络层的参数均采用32位浮点型数据表示。
4.根据权利要求3所述的深度神经网络量化方法,其特征在于,将所述量化层量化具体为:将量化层的参数采用8位整数型数据表示。
5.根据权利要求2所述的深度神经网络量化方法,其特征在于,本方法中深度神经网络的准确率获取方式为:利用测试集数据测试深度神经网络,获得深度神经网络的准确率。
6.根据权利要求5所述的深度神经网络量化方法,其特征在于,本方法在图形处理器端使用所述
Figure 878976DEST_PATH_IMAGE007
在所述测试集上进行推理得到所述
Figure 90515DEST_PATH_IMAGE006
7.根据权利要求5所述的深度神经网络量化方法,其特征在于,所述
Figure 767484DEST_PATH_IMAGE027
的获得方式为:
从所述测试集中随机选择若干批次数据对所述第二深度神经网络的激活层定标以确定每一个激活层的量化尺度,利用所述测试集对所述第二深度神经网络进行多次推理分别获得多个推理准确率,求取所述多个推理准确率的平均值获得所述
Figure 939839DEST_PATH_IMAGE027
8.一种深度神经网络量化系统,其特征在于,所述系统包括:
网络准确率及准确率损失阈值获得单元,用于获得第一深度神经网络
Figure 953932DEST_PATH_IMAGE007
,所述
Figure 160922DEST_PATH_IMAGE007
包括n个神经网络层,所述神经网络层分为量化层和非量化层,所述
Figure 743213DEST_PATH_IMAGE007
的准确率为
Figure 402865DEST_PATH_IMAGE006
,设定量化深度神经网络最高可接受的准确率损失阈值
Figure 220648DEST_PATH_IMAGE005
量化单元,用于基于所述
Figure 282145DEST_PATH_IMAGE006
和所述
Figure 300916DEST_PATH_IMAGE005
,使用二分法从所述n个神经网络层中查找获得所有量化层,将获得的量化层进行量化。
9.一种深度神经网络量化装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7中任意一个所述深度神经网络量化方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任意一个所述深度神经网络量化方法的步骤。
CN202111558843.XA 2021-12-20 2021-12-20 一种深度神经网络量化方法及系统及装置及介质 Pending CN113947206A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111558843.XA CN113947206A (zh) 2021-12-20 2021-12-20 一种深度神经网络量化方法及系统及装置及介质
CN202210129537.2A CN114444668A (zh) 2021-12-20 2022-02-11 网络量化方法及系统及装置及介质及图像处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111558843.XA CN113947206A (zh) 2021-12-20 2021-12-20 一种深度神经网络量化方法及系统及装置及介质

Publications (1)

Publication Number Publication Date
CN113947206A true CN113947206A (zh) 2022-01-18

Family

ID=79339392

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111558843.XA Pending CN113947206A (zh) 2021-12-20 2021-12-20 一种深度神经网络量化方法及系统及装置及介质
CN202210129537.2A Pending CN114444668A (zh) 2021-12-20 2022-02-11 网络量化方法及系统及装置及介质及图像处理方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210129537.2A Pending CN114444668A (zh) 2021-12-20 2022-02-11 网络量化方法及系统及装置及介质及图像处理方法

Country Status (1)

Country Link
CN (2) CN113947206A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114386588A (zh) * 2022-03-23 2022-04-22 杭州雄迈集成电路技术股份有限公司 神经网络量化方法和装置、神经网络推理方法和系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114861886B (zh) * 2022-05-30 2023-03-10 阿波罗智能技术(北京)有限公司 神经网络模型的量化方法及其装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114386588A (zh) * 2022-03-23 2022-04-22 杭州雄迈集成电路技术股份有限公司 神经网络量化方法和装置、神经网络推理方法和系统

Also Published As

Publication number Publication date
CN114444668A (zh) 2022-05-06

Similar Documents

Publication Publication Date Title
CN110880038B (zh) 基于fpga的加速卷积计算的系统、卷积神经网络
CN110413255B (zh) 人工神经网络调整方法和装置
EP3540654A1 (en) Learning classification device and learning classification method
CN113947206A (zh) 一种深度神经网络量化方法及系统及装置及介质
CN111723915B (zh) 一种基于深度卷积神经网络的目标检测方法
CN112016674A (zh) 一种基于知识蒸馏的卷积神经网络的量化方法
US11544542B2 (en) Computing device and method
CN112164426A (zh) 基于TextCNN的药物小分子靶点活性预测方法和装置
CN113255910A (zh) 卷积神经网络的剪枝方法、装置、电子设备和存储介质
CN112598123A (zh) 神经网络的权值的量化方法、量化装置及存储介质
CN116188878A (zh) 基于神经网络结构微调的图像分类方法、装置和存储介质
KR20210111677A (ko) 뉴럴 네트워크의 클리핑 방법, 뉴럴 네트워크의 컨벌루션 계산 방법 및 그 방법을 수행하기 위한 전자 장치
US20220405561A1 (en) Electronic device and controlling method of electronic device
CN114595641A (zh) 组合优化问题的求解方法和系统
CN110969259B (zh) 具有数据关联自适应舍入的处理核心
CN114528968A (zh) 神经网络的训练方法和装置
CN111240606A (zh) 一种基于安全内存的存储优化方法及系统
CN115470899B (zh) 电力设备处理加速方法、装置、设备、芯片及介质
Zhao et al. U-net for satellite image segmentation: Improving the weather forecasting
US11429864B1 (en) System and method for bank-balanced sparse activation and joint-activation-weight-sparse training of neural networks
CN112686278B (zh) 模型获取方法、装置及存储介质
CN110610227A (zh) 人工神经网络调整方法及神经网络计算平台
CN113177627B (zh) 优化系统、重新训练系统及其方法及处理器和可读介质
CN112668702B (zh) 定点化参数优化方法、系统、及终端、存储介质
US20230244534A1 (en) Electronic device and controlling method of electronic device

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20220118

WD01 Invention patent application deemed withdrawn after publication