CN110852439A - 神经网络模型的压缩与加速方法、数据处理方法及装置 - Google Patents
神经网络模型的压缩与加速方法、数据处理方法及装置 Download PDFInfo
- Publication number
- CN110852439A CN110852439A CN201911139595.8A CN201911139595A CN110852439A CN 110852439 A CN110852439 A CN 110852439A CN 201911139595 A CN201911139595 A CN 201911139595A CN 110852439 A CN110852439 A CN 110852439A
- Authority
- CN
- China
- Prior art keywords
- quantization
- bit width
- parameters
- layer
- neural network
- 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.)
- Granted
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 157
- 238000000034 method Methods 0.000 title claims abstract description 125
- 238000003672 processing method Methods 0.000 title claims abstract description 32
- 230000001133 acceleration Effects 0.000 title abstract description 52
- 230000006835 compression Effects 0.000 title abstract description 52
- 238000007906 compression Methods 0.000 title abstract description 52
- 238000013139 quantization Methods 0.000 claims abstract description 362
- 238000010606 normalization Methods 0.000 claims abstract description 117
- 238000012549 training Methods 0.000 claims abstract description 84
- 230000004913 activation Effects 0.000 claims abstract description 48
- 238000003860 storage Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 91
- 230000006870 function Effects 0.000 claims description 64
- 239000011159 matrix material Substances 0.000 claims description 42
- 230000008569 process Effects 0.000 claims description 33
- 238000004364 calculation method Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 15
- 230000009466 transformation Effects 0.000 claims description 12
- 102100025189 E3 ubiquitin-protein ligase RBBP6 Human genes 0.000 claims description 11
- 101001077300 Homo sapiens E3 ubiquitin-protein ligase RBBP6 Proteins 0.000 claims description 11
- 101001125123 Homo sapiens Interferon-inducible double-stranded RNA-dependent protein kinase activator A Proteins 0.000 claims description 11
- 239000000126 substance Substances 0.000 claims description 10
- 238000005265 energy consumption Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 210000004205 output neuron Anatomy 0.000 claims description 6
- 239000010410 layer Substances 0.000 description 277
- 238000001994 activation Methods 0.000 description 40
- 238000013527 convolutional neural network Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 18
- 238000013135 deep learning Methods 0.000 description 10
- 239000013598 vector Substances 0.000 description 9
- 230000009286 beneficial effect Effects 0.000 description 8
- 230000007423 decrease Effects 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 239000002346 layers by function Substances 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000032683 aging Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000000137 annealing Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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/08—Learning methods
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 Or Coding Systems Of Tv Signals (AREA)
Abstract
一种神经网络模型的压缩与加速方法、数据处理方法及装置、存储介质。神经网络模型包括线性层、批归一化层和激活层;压缩与加速方法包括:基于神经网络模型,构建与多种位宽一一对应的多个量化子模型,每种位宽对应的量化子模型的线性层、批归一化层和激活层分别包括该种位宽对应的量化权值参数、批归一化参数和截断参数,每种位宽对应的量化权值参数具有该种位宽;基于神经网络模型的参数,初始化每种位宽对应的量化子模型的参数;以及对多种位宽对应的多个量化子模型进行联合训练,以得到位宽可调的量化模型,位宽可调的量化模型的参数包括多种位宽中的最大位宽对应的量化权值参数、多种位宽各自对应的批归一化参数和截断参数。
Description
技术领域
本公开的实施例涉及一种神经网络模型的压缩与加速方法、数据处理方法及装置、存储介质。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
发明内容
本公开至少一个实施例提供一种神经网络模型的压缩与加速方法,所述神经网络模型包括线性层、批归一化层和激活层,所述压缩与加速方法包括:基于所述神经网络模型,构建与多种位宽一一对应的多个量化子模型,每种位宽对应的量化子模型的线性层包括该种位宽对应的量化权值参数,每种位宽对应的量化权值参数具有该种位宽,每种位宽对应的量化子模型的批归一化层包括该种位宽对应的批归一化参数,每种位宽对应的量化子模型的激活层包括该种位宽对应的截断参数;基于所述神经网络模型的参数,初始化每种位宽对应的量化子模型的参数;以及对所述多种位宽对应的多个量化子模型进行联合训练,以得到位宽可调的量化模型,所述位宽可调的量化模型的参数包括所述多种位宽中的最大位宽对应的量化权值参数、所述多种位宽各自对应的批归一化参数以及所述多种位宽各自对应的截断参数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述多种位宽对应的多个量化子模型进行所述联合训练,包括:分别使用每种位宽对应的量化子模型对训练输入数据进行处理,以得到每种位宽对应的量化子模型的训练输出数据,基于每种位宽对应的量化子模型的训练输出数据,计算每种位宽对应的量化子模型的损失值,基于每种位宽对应的量化子模型的损失值,计算每种位宽对应的量化子模型的梯度;基于每种位宽对应的量化子模型的梯度,更新该种位宽对应的截断参数和批归一化参数;对所述多种位宽对应的多个量化子模型的梯度进行求和,以得到梯度和,并基于所述梯度和,更新所述神经网络模型的参数;以及对所述神经网络模型的线性层的权值参数进行量化,以更新所述多种位宽各自对应的量化权值参数。
例如,在本公开一些实施例提供的压缩与加速方法中,所述多种位宽各自对应的截断参数之间是相互独立的,所述多种位宽各自对应的批归一化参数之间是相互独立的。
例如,在本公开一些实施例提供的压缩与加速方法中,基于所述神经网络模型的参数,初始化所述每种位宽对应的量化子模型的参数,包括:对所述神经网络模型的线性层的权值参数进行量化,以得到所述多种位宽各自对应的量化权值参数;将所述神经网络模型的批归一化层的批归一化参数设置为每种位宽对应的批归一化参数;以及初始化每种位宽对应的截断参数,其中,每种位宽对应的截断参数为正数。
例如,在本公开一些实施例提供的压缩与加速方法中,每种位宽对应的量化子模型的激活层包括PACT激活函数和激活量化函数;所述PACT激活函数表示为:
所述激活量化函数表示为:
其中,q表示该种位宽对应的量化子模型的激活层的输出的量化值,a表示该种位宽的取值,min()表示取最小值函数,floor()表示向下取整函数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述神经网络模型的线性层的权值参数进行量化,以更新或得到所述多种位宽各自对应的量化权值参数,包括:对所述神经网络模型的线性层的权值参数进行钳位处理,以得到所述线性层的钳位权值参数;对所述线性层的钳位权值参数进行量化处理,以得到所述最大位宽对应的量化权值参数;以及基于所述最大位宽对应的量化权值参数,得到其余位宽对应的量化权值参数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述神经网络模型的线性层的权值参数进行所述钳位处理,以得到所述线性层的钳位权值参数,包括:根据钳位公式对所述神经网络模型的线性层的权值参数进行所述钳位处理,所述钳位公式表示为:
其中,表示所述线性层的钳位权值矩阵,表示所述钳位权值矩阵的第i行第j列的参数,W表示所述线性层的权值矩阵,Wij表示所述线性层的权值矩阵的第i行第j列的参数,Wmn表示所述线性层的权值矩阵的第m行第n列的参数,tanh()表示双曲正切函数,max()表示取最大值函数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述线性层的钳位权值参数进行所述量化处理,以得到所述最大位宽对应的量化权值参数,包括:根据权值量化公式对所述线性层的钳位权值参数进行所述量化处理,所述权值量化公式表示为:
例如,在本公开一些实施例提供的压缩与加速方法中,基于所述最大位宽对应的量化权值参数,得到其余位宽对应的量化权值参数,包括:去掉所述最大位宽对应的量化权值参数的后x个比特位,将剩余的部分作为其余位宽中的某一个位宽对应的量化权值参数,其中,x的取值依次为所述最大位宽的取值与其余位宽中的每一个位宽的取值的差值。
例如,本公开一些实施例提供的压缩与加速方法,还包括:根据尺度变换公式对每种位宽对应的量化权值参数进行尺度变换处理,所述尺度变换公式表示为:
其中,Q*表示经过所述尺度变化处理后的量化权值矩阵,表示经过所述尺度变化处理后的量化权值矩阵的第i行第j列的参数,Q表示未经所述尺度变化处理的量化权值矩阵,Qij表示未经所述尺度变化处理的量化权值矩阵的第i行第j列的参数,RSF表示尺度变换参数。
例如,在本公开一些实施例提供的压缩与加速方法中,所述尺度变换参数根据尺度变换参数计算公式计算得到,所述尺度变换参数计算公式表示为:
例如,在本公开一些实施例提供的压缩与加速方法中,所述位宽可调的量化模型的参数还包括所述多种位宽各自对应的所述尺度变换参数。
例如,在本公开一些实施例提供的压缩与加速方法中,所述多种位宽对应的多个量化子模型中的批归一化层均根据批归一化公式进行批归一化处理,所述批归一化公式表示为:
其中,B={x1,x2,…,xm}表示所述批归一化层的批处理输入,μB表示所述批处理输入的均值,表示所述批处理输入的方差,表示所述批处理输入中的第i个输入xi对应的规范化输出,yi表示所述批归一化层的第i个输出,γ、β表示所述批归一化层的批归一化参数,ε为一个很小的正数。
例如,本公开一些实施例提供的压缩与加速方法,还包括:对所述神经网络模型进行预训练,以得到所述神经网络模型的预先训练好的参数;其中,基于所述神经网络模型的参数,初始化每种位宽对应的量化子模型的参数,包括:基于所述神经网络模型的预先训练好的参数,初始化每种位宽对应的量化子模型的参数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述多种位宽对应的多个量化子模型进行所述联合训练所采用的训练参数配置与对所述神经网络模型进行预训练所采用的训练参数配置相同。
例如,在本公开一些实施例提供的压缩与加速方法中,所述训练参数配置包括:初始学习率、学习率调整方案、权值衰减、训练集的迭代次数、优化器和批尺寸。
例如,在本公开一些实施例提供的压缩与加速方法中,所述线性层包括选自卷积层、递归层和全连接层组成的群组中的至少一个。
例如,在本公开一些实施例提供的压缩与加速方法中,所述神经网络模型包括MobileNet-V1、MobileNet-V2和ResNet之一。
本公开至少一实施例还提供一种基于位宽可调的量化模型的数据处理方法,所述位宽可调的量化模型包括线性层、批归一化层和激活层;所述位宽可调的量化模型的批归一化层包括与多种位宽一一对应的批归一化参数,所述位宽可调的量化模型的激活层包括与所述多种位宽一一对应的截断参数,所述位宽可调的量化模型的线性层包括与所述多种位宽中的最大位宽对应的量化权值参数;所述数据处理方法包括:基于当前的运算限制条件,选择所述多种位宽中的一种作为当前的工作位宽;若所述当前的工作位宽等于所述最大位宽,则将所述最大位宽对应的量化权值参数、批归一化参数和截断参数作为所述位宽可调的量化模型的当前的工作参数;若所述当前的工作位宽小于所述最大位宽,则将所述最大位宽对应的量化权值参数转换为所述当前的工作位宽对应的量化权值参数,并将所述当前的工作位宽对应的量化权值参数、批归一化参数和截断参数作为所述位宽可调的量化模型的当前的工作参数;以及使所述位宽可调的量化模型基于所述当前的工作参数进行数据处理。
例如,在本公开一些实施例提供的数据处理方法中,在所述当前的工作位宽小于所述最大位宽的情况下,将所述最大位宽对应的权值参数转换为所述当前的工作位宽对应的权值参数,包括:去掉所述最大位宽对应的量化权值参数的后y个比特位,将剩余的部分作为所述当前的工作位宽对应的量化权值参数,其中,y的取值为所述最大位宽的取值与所述当前的工作位宽的取值的差值。
例如,在本公开一些实施例提供的数据处理方法中,所述运算限制条件包括对运算量、响应速度、能耗、运行内存至少之一的限制条件。
本公开至少一实施例还提供一种数据处理装置,包括:存储器,用于非暂时性存储计算机可读指令;以及处理器,用于运行计算机可读指令;其中,所述计算机可读指令被所述处理器运行时执行本公开任一实施例提供的压缩与加速方法或执行本公开任一实施例提供的数据处理方法。
本公开至少一实施例还提供一种存储介质,非暂时性地存储计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时可以执行本公开任一实施例提供的压缩与加速方法的指令或者可以执行本公开任一实施例提供的数据处理方法的指令。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种卷积神经网络的示意图;
图2A为一种卷积神经网络的结构示意图;
图2B为一种卷积神经网络的工作过程示意图;
图3为另一种卷积神经网络的结构示意图;
图4为本公开至少一实施例提供的一种神经网络模型的结构示意图;
图5为本公开至少一实施例提供的一种神经网络模型的压缩与加速方法的流程图;
图6为本公开至少一实施例提供的一种对应于图5中所示的步骤S200的示例性流程图;
图7为本公开至少一实施例提供的一种对应于图6中所示的步骤S210的示例性流程图;
图8为本公开至少一实施例提供的另一种对应于图6中所示的步骤S210的示例性流程图;
图9为本公开至少一实施例提供的一种对应于图5中所示的步骤S300的示例性流程图;
图10为本公开至少一实施例提供的一种基于位宽可调的量化模型数据处理方法的流程图;
图11A为本公开至少一实施例提供的一种部署位宽可调的量化模型的数据处理装置的原理图;
图11B为一种部署多种位宽对应的多个单一量化模型的数据处理装置的原理图;
图12为本公开至少一实施例提供的一种数据处理装置的示意性框图;以及
图13为本公开至少一实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。
在AI领域的算法技术当中,深度学习(Deep Learning)受到学术界与工业界的广泛关注,各国科学家、研究人员、企业、网络社区等都在大力研究并推动深度学习的神经网络模型的研究与发展。
随着深度学习在图像分类、目标检测以及自然语言处理等领域取得突破进展,将其应用到实际生活场景的需求也愈发强烈。当前,移动与便携式电子设备极大地方便了人们的生活,而深度学习将极大地提高这些设备的智能性与娱乐性。因此,将深度学习的神经网络模型部署在移动端与嵌入式系统便成为迫切需求。
但是,应用深度学习的神经网络模型在实际部署中,通常面临模型尺寸过大的问题,例如神经网络模型的文件大小一般从几十兆到上百兆不等,这样的文件大小,对于移动端来说,下载时耗费的流量以及带宽影响所导致的传输等待时间过长是用户无法忍受的;特别是对于一些存储空间有限的嵌入式系统,可能根本没有足够的存储空间来存储这么大的神经网络模型文件。同时,深度学习的神经网络模型对计算资源及计算能力要求高;在使用大型神经网络模型进行计算时,移动端与嵌入式系统抑或无法提供其所需的计算资源,抑或计算缓慢,导致响应延迟太高而无法满足实际应用场景。此外,神经网络模型耗电量也大。在神经网络计算过程中,处理器需要频繁读取神经网络模型的参数,因此较大的神经网络模型也相应带来更高的内存访问次数,而频繁的内存访问也会极大提高耗电量,高耗电量不利于将神经网络模型部署在移动端。
因此,为了在资源有限的硬件设备上部署性能良好的神经网络,就需要对神经网络模型进行压缩和加速。由于量化模型在硬件上移植会非常方便,因此,在众多的对神经网络模型进行压缩和加速方法中,对神经网络模型进行量化的方法具有巨大的发展潜力。然而,值得注意的是,一方面,如果在移动端与嵌入式系统中部署单一量化模型,可能难以满足不同应用场景的需求,也无法即时实现运算精度和运算效率的均衡;另一方面,如果在移动端与嵌入式系统中部署多个不同的单一量化模型,虽然可以满足不同应用场景的需求,但是占用的存储空间却大幅上升(参考后续图11B和表1的相关描述)。
本公开至少一实施例提供一种神经网络模型的压缩与加速方法。该神经网络模型包括线性层、批归一化层和激活层,该压缩与加速方法包括:基于神经网络模型,构建与多种位宽一一对应的多个量化子模型,每种位宽对应的量化子模型的线性层包括该种位宽对应的量化权值参数,每种位宽对应的量化权值参数具有该种位宽,每种位宽对应的量化子模型的批归一化层包括该种位宽对应的批归一化参数,每种位宽对应的量化子模型的激活层包括该种位宽对应的截断参数;基于神经网络模型的参数,初始化每种位宽对应的量化子模型的参数;以及对多种位宽对应的多个量化子模型进行联合训练,以得到位宽可调的量化模型,该位宽可调的量化模型的参数包括多种位宽中的最大位宽对应的量化权值参数、多种位宽各自对应的批归一化参数以及多种位宽各自对应的截断参数。例如,在该压缩与加速方法中,对多种位宽对应的多个量化子模型进行联合训练,包括:分别使用每种位宽对应的量化子模型对训练输入数据进行处理,以得到每种位宽对应的量化子模型的训练输出数据,基于每种位宽对应的量化子模型的训练输出数据,计算每种位宽对应的量化子模型的损失值,基于每种位宽对应的量化子模型的损失值,计算每种位宽对应的量化子模型的梯度;基于每种位宽对应的量化子模型的梯度,更新该种位宽对应的截断参数和批归一化参数;对多种位宽对应的多个量化子模型的梯度进行求和,以得到梯度和,并基于梯度和,更新神经网络模型的参数;以及对神经网络模型的线性层的权值参数进行量化,以更新多种位宽各自对应的量化权值参数。
本公开的一些实施例还提供对应于上述压缩与加速方法的数据处理方法及装置、存储介质。
本公开的实施例提供的神经网络模型的压缩与加速方法,可以基于神经网络模型得到位宽可调的量化模型,该位宽可调的量化模型的工作参数可以根据运算需求进行即时调整,从而,该位宽可调的量化模型可以部署于移动端与嵌入式系统以满足不同应用场景的需求。
最初,卷积神经网络(Convolutional Neural Network,CNN)主要用于识别二维形状,其对图像的平移、比例缩放、倾斜或其他形式的变形具有高度不变性。CNN主要通过局部感知野和权值共享来简化神经网络模型的复杂性、减少权重的数量。随着深度学习技术的发展,CNN的应用范围已经不仅仅限于图像识别领域,其也可以应用在人脸识别、文字识别、动物分类、图像处理等领域。
图1示出了一种卷积神经网络的示意图。例如,该卷积神经网络可以用于图像处理,其使用图像作为输入和输出,并通过卷积核替代标量的权重。
图1中仅示出了具有3层结构的卷积神经网络,本公开的实施例对此不作限制。如图1所示,卷积神经网络包括输入层101、隐藏层102和输出层103。输入层101具有4个输入,隐藏层102具有3个输出,输出层103具有2个输出,最终该卷积神经网络最终输出2幅图像。例如,输入层101的4个输入可以为4幅图像,或者1幅图像的四种特征图像。隐藏层102的3个输出可以为经过输入层101输入的图像的特征图像。
例如,如图1所示,卷积层具有权重和偏置权重表示卷积核,偏置是叠加到卷积层的输出的标量,其中,k是表示输入层101的标签,i和j分别是输入层101的单元和隐藏层102的单元的标签。例如,第一卷积层201包括第一组卷积核(图1中的)和第一组偏置(图1中的)。第二卷积层202包括第二组卷积核(图1中的)和第二组偏置(图1中的)。通常,每个卷积层包括数十个或数百个卷积核,若卷积神经网络为深度卷积神经网络,则其可以包括至少五层卷积层。
例如,如图1所示,该卷积神经网络还包括第一激活层203和第二激活层204。第一激活层203位于第一卷积层201之后,第二激活层204位于第二卷积层202之后。激活层(例如,第一激活层203和第二激活层204)包括激活函数,激活函数用于给卷积神经网络引入非线性因素,以使卷积神经网络可以更好地解决较为复杂的问题。激活函数可以包括线性修正单元(ReLU)函数、S型函数(Sigmoid函数)或双曲正切函数(tanh函数)等。ReLU函数为非饱和非线性函数,Sigmoid函数和tanh函数为饱和非线性函数。例如,激活层可以单独作为卷积神经网络的一层,或者激活层也可以被包含在卷积层(例如,第一卷积层201可以包括第一激活层203,第二卷积层202可以包括第二激活层204)中。
例如,在第一卷积层201中,首先,对每个输入应用第一组卷积核中的若干卷积核和第一组偏置中的若干偏置以得到第一卷积层201的输出;然后,第一卷积层201的输出可以通过第一激活层203进行处理,以得到第一激活层203的输出。在第二卷积层202中,首先,对输入的第一激活层203的输出应用第二组卷积核中的若干卷积核和第二组偏置中的若干偏置以得到第二卷积层202的输出;然后,第二卷积层202的输出可以通过第二激活层204进行处理,以得到第二激活层204的输出。例如,第一卷积层201的输出可以为对其输入应用卷积核后再与偏置相加的结果,第二卷积层202的输出可以为对第一激活层203的输出应用卷积核后再与偏置相加的结果。
在利用卷积神经网络进行图像处理前,需要对卷积神经网络进行训练。经过训练之后,卷积神经网络的卷积核和偏置在图像处理期间保持不变。在训练过程中,各卷积核和偏置通过多组输入/输出示例图像以及优化算法进行调整,以获取优化后的卷积神经网络模型。
图2A示出了一种卷积神经网络的结构示意图,图2B示出了一种卷积神经网络的工作过程示意图。例如,如图2A和2B所示,输入图像通过输入层输入到卷积神经网络后,依次经过若干个处理过程(如图2A中的每个层级)后输出类别标识。卷积神经网络的主要组成部分可以包括多个卷积层、多个下采样层和全连接层。在本公开中,应该理解的是,多个卷积层、多个下采样层和全连接层等这些层每个都指代对应的处理操作,即卷积处理、下采样处理、全连接处理等,所描述的神经网络(模型)也都指代对应的处理操作,后续将要描述的批归一化层等也与此类似,不再重复说明。例如,一个完整的卷积神经网络可以由这三种层叠加组成。例如,图2A仅示出了一种卷积神经网络的三个层级,即第一层级、第二层级和第三层级。例如,每个层级可以包括一个卷积模块和一个下采样层。例如,每个卷积模块可以包括卷积层。由此,每个层级的处理过程可以包括:对输入图像进行卷积(convolution)以及下采样(sub-sampling/down-sampling)。例如,根据实际需要,每个卷积模块还可以包括批归一化(batch normalization)层和激活层,从而每个层级的处理过程还可以包括批归一化处理和激活处理。
例如,批归一化层用于对小批量(mini-batch)的样本的特征图像进行批归一化处理,以使各特征图像的像素的灰度值在预定范围内变化,从而降低计算难度,提高对比度。例如,预定范围可以为[-1,1],但不限于此。例如,批归一化层可以根据每个小批量的样本的特征图像的均值和方差,对各特征图像进行批归一化处理。
例如,假设小批量的样本数量为T,某一卷积层输出的特征图像的数量为C,且每个特征图像均为H行W列的矩阵,则特征图像的模型表示为(T,C,W,H)。批归一化层的批归一化处理包括对每个通道的特征图像分别进行归一化(normalize)处理以及尺度变换和位移(scale and shift)处理,具体公式如下:
其中,xtijk为某一卷积层输出的特征图像集合中的第t个特征块(patch)、第i个特征通道、第j列、第k行的值。ytijk表示xtijk输入批归一化层得到的结果。γi、βi为批归一化层的批归一化参数,γi表示第i个特征通道的尺度变换,βi表示第i个特征通道的位移。ε为一个很小的正数,以避免分母为0。
卷积层是卷积神经网络的核心层。在卷积神经网络的卷积层中,一个神经元只与部分相邻层的神经元连接。卷积层可以对输入图像应用若干个卷积核(也称为滤波器),以提取输入图像的多种类型的特征。每个卷积核可以提取一种类型的特征。卷积核一般以随机小数矩阵的形式初始化,在卷积神经网络的训练过程中卷积核将通过学习以得到合理的权值。对输入图像应用一个卷积核之后得到的结果被称为特征图像(feature map),特征图像的数目与卷积核的数目相等。每个特征图像由一些矩形排列的神经元组成,同一特征图像的神经元共享权值,这里共享的权值就是卷积核。一个层级的卷积层输出的特征图像可以被输入到相邻的下一个层级的卷积层并再次处理以得到新的特征图像。例如,如图2A所示,第一层级的卷积层可以输出第一特征图像,该第一特征图像被输入到第二层级的卷积层再次处理以得到第二特征图像。
例如,如图2B所示,卷积层可以使用不同的卷积核对输入图像的某一个局部感受域的数据进行卷积;例如,卷积结果可以被输入激活层,该激活层根据相应的激活函数进行计算以得到输入图像的特征信息。
例如,如图2A和2B所示,下采样层设置在相邻的卷积层之间,下采样层是下采样的一种形式。一方面,下采样层可以用于缩减输入图像的规模,简化计算的复杂度,在一定程度上减小过拟合的现象;另一方面,下采样层也可以进行特征压缩,提取输入图像的主要特征。下采样层能够减少特征图像的尺寸,但不改变特征图像的数量。例如,一个尺寸为12×12的输入图像,通过6×6的卷积核对其进行采样,那么可以得到2×2的输出图像,这意味着输入图像上的36个像素合并为输出图像中的1个像素。最后一个下采样层或卷积层可以连接到一个或多个全连接层,全连接层用于连接提取的所有特征。全连接层的输出为一个一维矩阵,也就是向量。
图3示出了另一种卷积神经网络的结构示意图。例如,参见图3所示的示例,最后一个卷积层(即第t个卷积层)的输出被输入到平坦化层以进行平坦化操作(Flatten)。平坦化层可以将特征图像(2D图像)转换为向量(1D)。该平坦化操作可以按照如下的方式进行:
vk=fk/j,k%j
其中,v是包含k个元素的向量,f是具有i行j列的矩阵。
然后,平坦化层的输出(即1D向量)被输入到一个全连接层(FCN)。全连接层可以具有与卷积神经网络相同的结构,但不同之处在于,全连接层使用不同的标量值以替代卷积核。
例如,最后一个卷积层的输出也可以被输入到均化层(AVG)。均化层用于对输出进行平均操作,即利用特征图像的均值表示输出图像,因此,一个2D的特征图像转换成为一个标量。例如,如果卷积神经网络包括均化层,则其可以不包括平坦化层。
例如,根据实际需要,均化层或全连接层可以连接到分类器,分类器可以根据提取的特征进行分类,分类器的输出可以作为卷积神经网络的最终输出,即表征图像类别的类别标识(label)。
例如,分类器可以为支持向量机(Support Vector Machine,SVM)分类器、softmax分类器以及最邻近规则(KNN)分类器等。如图3所示,在一个示例中,卷积神经网络包括softmax分类器,softmax分类器是一种逻辑函数的生成器,可以把一个包含任意实数的K维向量z压缩成K维向量σ(z)。softmax分类器的公式如下:
其中,Zj表示K维向量z中第j个元素,σ(z)表示每个类别标识(label)的预测概率,σ(z)为实数,且其范围为(0,1),K维向量σ(z)的和为1。根据以上公式,K维向量z中的每个类别标识均被赋予一定的预测概率,而具有最大预测概率的类别标识被选择作为输入图像的标识或类别。
下面结合附图对本公开的一些实施例及其示例进行详细说明。
图4为本公开至少一实施例提供的一种神经网络模型的结构示意图。例如,如图4所示,该神经网络模型包括线性层、批归一化层(batch normalization layer)和激活层(activation layer)。例如,线性层包括卷积层(convolution layer)、递归层(recurrentlayer)和全连接层(fully-connected layer)等至少之一。
例如,在一些示例中,该神经网络模型可以包括依次连接的卷积层、批归一化层和激活层形成的卷积模块,例如激活层的激活函数为ReLU函数;又例如,在一些示例中,该神经网络模型还可以包括下采样层、上采样层、平坦化层、全连接层等功能层中的一种或多种;本公开的实施例对此均不作限制。需要说明的是,本公开的实施例对神经网络模型中的各种功能层(例如,线性层、批归一化层、激活层、下采样层等)的数目及连接顺序等均不作限制。
例如,该神经网络模型可以为MobileNet-V1、MobileNet-V2和ResNet(例如,ResNet-50)等广泛应用的神经网络模型,本公开的实施例包括但不限于此。
图5为本公开至少一实施例提供的一种神经网络模型的压缩与加速方法的流程图。例如,该压缩与加速方法可以用于对上述各种神经网络模型进行量化,以得到位宽可调的量化模型,从而实现上述各种神经网络模型的压缩与加速。需要说明的是,该压缩与加速方法的适用范围包括但不限于以上列举的各种神经网络模型。
例如,如图5所示,该压缩与加速方法包括步骤S100至步骤S300。
步骤S100:基于神经网络模型,构建与多种位宽一一对应的多个量化子模型。
例如,在步骤S100中,每种位宽对应的量化子模型的结构与该神经网络模型的结构(例如,参考图4所示)基本相同,也就是说,每种位宽对应的量化子模型包括的各功能层与该神经网络模型包括的各功能层基本一致。
需要说明的是,在本公开的实施例中,每种位宽对应的量化子模型的线性层包括该种位宽对应的量化权值参数,每种位宽对应的量化权值参数(即每种位宽对应的量化子模型的线性层的量化权值参数)具有该种位宽,每种位宽对应的量化子模型的批归一化层包括该种位宽对应的批归一化参数,每种位宽对应的量化子模型的激活层包括该种位宽对应的截断参数。
例如,在一些示例中,对于MobileNet-V1或MobileNet-V2,可以构建四种位宽对应的四个量化子模型,例如,该四种位宽分别为8位(8-bit)、6位(6-bit)、5位(5-bit)、4位(4-bit);其中,8位对应的量化子模型的线性层的量化权值参数包括8个比特位,6位对应的量化子模型的线性层的量化权值参数包括6个比特位,5位对应的量化子模型的线性层的量化权值参数包括5个比特位,4位对应的量化子模型的线性层的量化权值参数包括4个比特位。例如,在一些示例中,对于ResNet-50,可以构建三种位宽对应的三个量化子模型,例如,该三种位宽分别为4位(4-bit)、3位(3-bit)、2位(2-bit);其中,每种位宽对应的量化权值参数具有该种位宽。应当理解的是,上述具体示例均是示意性的,本公开的实施例对各种位宽的取值及多种位宽的种类数量(即量化子模型的数量)均不作限制。
需要说明的是,在一些实施例中,上述压缩与加速方法还可以在步骤S100之前插入步骤S000。
步骤S000:对神经网络模型进行预训练,以得到神经网络模型的预先训练好的参数。
例如,在步骤S000中,该神经网络模型可以是未经训练的全精度模型(full-precision model),例如,全精度模型的线性层的权值参数等为全精度的32位的浮点数。例如,可以采用常规的训练方法、训练技巧(tricks)以及训练参数(例如,包括超参数)配置对该全精度模型进行预训练。
例如,训练参数配置通常包括:初始学习率(initial learning rate)、学习率调整方案(learning rate scheduler)、权值衰减(weight decay)、训练集的迭代次数(thenumber of epochs)、优化器(optimizer)和批尺寸(batch size)等。例如,在一些示例中,初始学习率可以设置为0.05,学习率调整方案可以采用余弦退火调整方案(cosineannealing scheduler),权值衰减可以设置为4×10-5,训练集的迭代次数可以设置为150次,优化器可以采用随机梯度下降(stochastic gradient descent,SGD)优化器,批尺寸(即小批量的样本数量)可以设置为2048或1024等。需要说明的是,上述训练参数配置是示例性的,不应视作对本公开的限制。在本公开的实施例中,训练参数配置可以根据实际需要进行设定。
例如,神经网络模型的预训练过程通常包括:对神经网络模型的参数进行初始化;使用神经网络模型对训练输入数据进行处理,得到训练输出数据;基于训练输出数据,通过损失函数计算损失值;基于损失值计算梯度;以及基于梯度,对神经网络模型的参数进行修正。
例如,在一些示例中,可以采用例如恺明初始化(Kaiming Initialization)方案对神经网络模型的参数进行初始化。例如,可以将神经网络模型的参数初始化为符合高斯分布的随机数。例如,可以使神经网络模型的各功能层(例如,卷积层、全连接层等)的初始权值参数符合高斯分布,例如,该高斯分布的期望为0,该高斯分布的标准差为该功能层的输出神经元的数量的倒数。例如,对于一个卷积层而言,该卷积层的输出神经元的数量等于该卷积层的输出通道数与该卷积层的卷积核中的元素数量之积;例如,对于一个全连接层而言,该全连接层的输出神经元的数量等于该全连接层输出的特征的数量。
例如,在一些示例中,训练输入数据的类型依赖于神经网络模型的处理对象,例如根据神经网络模型的处理对象的不同,训练输入数据可以包括图像、文本、语音等。以MobileNet-V1、MobileNet-V2和ResNet等神经网络模型为例,其训练输入数据可以为图像,例如可以使用ImageNet数据库中的图像作为其训练输入数据。
例如,在一些示例中,损失函数可以根据实际需要进行选择,例如,损失函数可以包括但不限于0-1损失函数、平方损失函数、对数损失函数、交叉熵损失函数(cross-entropy cost function)等之中的一种或其任意组合,本公开的实施例对此不作限制。
例如,在一些示例中,可以采用随机梯度下降算法或批量梯度下降(batchgradient descent,BGD)算法等计算梯度,并根据该梯度对神经网络模型的参数进行修正。
例如,在一些示例中,神经网络模型的预训练过程还可以包括:判断神经网络模型的训练是否满足预定条件,若不满足预定条件,则重复对其进行训练;若满足预定条件,则停止对其进行训练,得到训练好的神经网络模型。例如,在一个示例中,上述预定条件为训练输入数据对应的损失值不再显著减小;例如,在另一个示例中,上述预定条件为神经网络模型的训练次数或训练周期达到预定数目;本公开的实施例对此不作限制。
需要说明的是,上述说明仅是示意性阐述神经网络模型的训练过程。本领域技术人员应当知道,在训练过程中,需要利用大量样本数据对神经网络模型进行训练;同时,在每一个样本数据的训练过程中,都可以包括多次反复迭代以对神经网络模型的参数进行修正。又例如,训练阶段还包括对神经网络模型的参数进行微调(fine-tune),以获取更优化的参数。
例如,在一些示例中,经过预训练后,神经网络模型的线性层的权值参数可以为全精度的32位的浮点数。需要说明的是,在一些示例中,本公开的实施例提供的压缩与加速方法可以不包括步骤S000,例如,可以直接基于本领域中已经训练好的神经网络模型,执行步骤S100至步骤S300,以得到位宽可调的量化模型。在此情况下,可以直接基于该已经训练好的神经网络模型的参数执行后续步骤。
步骤S200:基于神经网络模型的参数,初始化每种位宽对应的量化子模型的参数。
例如,在步骤S200中,基于神经网络模型的参数,初始化每种位宽对应的量化子模型的参数,包括:初始化每种位宽对应的量化子模型的线性层的量化权值参数(即每种位宽对应的量化权值参数)、每种位宽对应的量化子模型的批归一化层的批归一化参数(即每种位宽对应的量化权值参数)以及每种位宽对应的量化子模型的激活层的截断参数(每种位宽对应的截断参数)。应当理解的是,在本公开的实施例提供的压缩与加速方法包括步骤S000的情况下,步骤S200是指:基于神经网络模型的预先训练好的参数,初始化每种位宽对应的量化子模型的参数。
图6为本公开至少一实施例提供的一种对应于图5中所示的步骤S200的示例性流程图。例如,如图6所示,基于神经网络模型的参数,初始化每种位宽对应的量化子模型的参数,即步骤S200,包括步骤S210至步骤S230。
步骤S210:对神经网络模型的线性层的权值参数进行量化,以得到多种位宽各自对应的量化权值参数。
例如,对神经网络模型的线性层的权值参数进行量化,是指将神经网络模型的线性层的权值参数从例如高精度的浮点数(例如,全精度的32位的浮点数)变为例如低精度的定点数(例如,1-8位的定点数),以得到对应的量化权值参数,从而实现对神经网络模型的压缩与加速。
图7为本公开至少一实施例提供的一种对应于图6中所示的步骤S210的示例性流程图。例如,如图7所示,对神经网络模型的线性层的权值参数进行量化,以得到多种位宽各自对应的量化权值参数,即步骤S210,包括步骤S211至步骤S213。
步骤S211:对神经网络模型的线性层的权值参数进行钳位处理,以得到线性层的钳位权值参数。
例如,“钳位处理”是指对一组参数(例如,神经网络模型的线性层的权值参数)按照一定的规则(例如,根据某一个公式)进行缩放,使缩放后的参数的取值范围限制在某一区间,以便于后续进一步处理。例如,在一些示例中,可以根据钳位公式对神经网络模型的线性层的权值参数进行钳位处理,以将线性层的钳位权值参数的取值范围限制在预定区间,例如预定区间可以为[0,1],但不限于此。例如,通过钳位处理,可以使线性层的参数(即线性层的钳位权值参数)在预定区间中的分布更加均匀,从而有利于减小后续步骤中的量化误差。例如,在一些示例中,钳位公式可以表示为:
其中,表示线性层的钳位权值矩阵,表示钳位权值矩阵的第i行第j列的参数,W表示线性层的权值矩阵,Wij表示线性层的权值矩阵的第i行第j列的参数,Wmn表示线性层的权值矩阵的第m行第n列的参数,tanh()表示双曲正切函数,max()表示取最大值函数。
例如,上述钳位公式可以将线性层的钳位权值参数的取值范围限制在区间[0,1]中。
步骤S212:对线性层的钳位权值参数进行量化处理,以得到最大位宽对应的量化权值参数。
例如,在一些示例中,可以根据权值量化公式对线性层的钳位权值参数进行量化处理,以得到最大位宽对应的量化权值参数。例如,在一些示例中,权值量化公式可以表示为:
需要说明的是,为了便于量化模型移植到移动端与嵌入式系统,线性层的量化权值参数的位宽一般设定为1-8位(bit),因此,最大位宽的取值b通常可以为2、3、4、5、6、7、8等。当然,线性层的量化权值参数的比特位的位数也可以根据需要设定为更多位,因此,最大位宽的取值b也可以大于8,本公开的实施例对此不作限制。
步骤S213:基于最大位宽对应的量化权值参数,得到其余位宽对应的量化权值参数。
例如,在一些示例中,可以去掉最大位宽对应的量化权值参数的后x个比特位(较低的比特位),将剩余的部分(较高的比特位)作为其余位宽中的某一个位宽对应的量化权值参数,其中,x的取值依次为最大位宽的取值与其余位宽中的每一个位宽的取值的差值。
示例性地,以基于MobileNet-V1或MobileNet-V2构建的四种位宽(例如,[8,6,5,4]位)对应的四个量化子模型为例,在步骤S212中可以得到最大位宽(即8位)对应的量化权值参数,在步骤S213中,只要去掉8位对应的量化权值参数的后2/3/4位,则可以将剩余的部分(6/5/4位)相应作为6/5/4位对应的量化权值参数。
在研究中,本申请的发明人发现:一方面,根据步骤S211至步骤S213得到的量化子模型通常存在精度下降和性能退化的问题;另一方面,在神经网络模型或/和量化模型(例如,各种位宽对应的量化子模型)中,如果保持线性层的权值参数/量化权值参数的梯度处于同一尺度量级,可以防止梯度爆炸和梯度消失的问题,从而有利于提高量化模型的精度和改善量化模型的性能。例如,为了保持线性层的权值参数/量化权值参数的梯度处于同一尺度量级,在神经网络模型或/和量化模型中,可以在线性层(例如卷积层)之后直接连接批归一化层(线性层的输出经过批归一化处理之后再输入到后续的功能层中);但是,在神经网络模型或/和量化模型中,往往还包括未被批归一化层直接跟随的线性层(例如,卷积层、全连接层),例如,MobileNet-V1、MobileNet-V2和ResNet等神经网络模型中用于输出的最后一层全连接层等。因此,在一些实施例中,如图8所示,前述压缩与加速方法的步骤S210,在步骤S211至步骤S213的基础上,还包括步骤S214,以对线性层的量化权值参数进行进一步处理。
步骤S214:根据尺度变换公式对每种位宽对应的量化权值参数进行尺度变换处理。
例如,在一些示例中,对每种位宽对应的量化权值参数(例如,未被批归一化层直接跟随的线性层的量化权值参数)进行尺度变换处理,有利于保持每种位宽对应的量化权值参数的梯度处于同一尺度量级,从而有利于提高量化模型的精度和改善量化模型的性能。
例如,在一些示例中,尺度变换公式可以表示为:
其中,Q*表示经过尺度变化处理后的量化权值矩阵,表示经过尺度变化处理后的量化权值矩阵的第i行第j列的参数,Q表示未经尺度变化处理的量化权值矩阵,Qij表示未经尺度变化处理的量化权值矩阵的第i行第j列的参数,RSF表示尺度变换参数。
例如,在一些示例中,尺度变换参数可以根据尺度变换参数计算公式计算得到。例如,尺度变换参数计算公式可以表示为:
需要说明的是,上述尺度变换参数计算公式是示例性的,在本公开的实施例中,尺度变换参数RSF还可以通过其他形式的尺度变换参数计算公式计算得到,只要能够保持量化权值参数的梯度处于同一尺度量级即可。
需要说明的是,在本公开的实施例中,可以只对未被批归一化层直接跟随的线性层的量化权值参数进行尺度变换处理,即可以不对被批归一化层直接跟随的线性层的量化权值参数进行尺度变换处理。当然,也可以同时对未被批归一化层直接跟随的线性层和被批归一化层直接跟随的线性层的量化权值参数进行尺度变换处理。本公开的实施例对此不作限制。
步骤S220:将神经网络模型的批归一化层的批归一化参数设置为每种位宽对应的批归一化参数。
需要说明的是,与通常的压缩与加速方法中的量化方案一致,在本公开的实施例中,可以不对神经网络模型中的批归一化层进行量化处理,也可以不对神经网络模型中最后的全连接层的偏置(bias)进行量化处理。因此,在本公开的实施例中,可以将神经网络模型的批归一化层的批归一化参数(例如,预先训练好的批归一化参数)直接设置为每种位宽对应的量化子模型的批归一化参数的初始值。
例如,在一些示例中,神经网络模型以及每种位宽对应的量化子模型中的批归一化层均可以根据批归一化公式进行批归一化处理。例如,批归一化公式可以表示为:
其中,B={x1,x2,…,xm}表示批归一化层的批处理输入,μB表示批处理输入的均值,表示批处理输入的方差,表示批处理输入中的第i个输入xi对应的规范化输出,yi表示批归一化层的第i个输出,γ、β表示批归一化层的批归一化参数,ε为一个很小的正数。
应当理解的是,在神经网络模型的输入为图像的情况下,神经网络模型以及每种位宽对应的量化子模型中的批归一化层的批归一化公式还可以实现为前述归一化(normalize)处理以及尺度变换和位移(scale and shift)处理的具体公式,在此不再重复赘述。
需要说明的是,神经网络模型以及每种位宽对应的量化子模型的归一化层的批归一化参数均是可以训练的(trainable)。
步骤S230:初始化每种位宽对应的截断参数。
例如,在一些示例中,每种位宽对应的量化子模型的激活层可以包括PACT激活函数和激活量化函数。例如,PACT激活函数可以减小激活层的输出的量化误差。例如,PACT激活函数表示为:
其中,表示任一种位宽对应的量化子模型的激活层的输出,x表示该种位宽对应的量化子模型的激活层的输入,α表示该种位宽对应的截断参数。例如,每种位宽对应的截断参数α均为正数;又例如,α可以为浮点数(floating number)。
例如,激活量化函数表示为:
其中,q表示该种位宽对应的量化子模型的激活层的输出的量化值,a表示该种位宽的取值,min()表示取最小值函数,floor()表示向下取整函数。例如,q可以称为动态固定点数(dynamic fixed-point number)。
例如,在本公开的实施例中,对每种位宽对应的量化子模型中,对激活层的输出进行量化处理,有利于提升量化模型的运算速度,从而有利于实现本公开的实施例提供的压缩与加速方法的加速功能。
需要说明的是,每种位宽对应的量化子模型的激活层的截断参数均是可以训练的(trainable)。
步骤S300:对多种位宽对应的多个量化子模型进行联合训练,以得到位宽可调的量化模型。
例如,在步骤S300中,对多种位宽对应的多个量化子模型进行联合训练所采用的训练参数配置可以与对神经网络模型进行预训练所采用的训练参数配置相同。例如,联合训练的训练参数配置可以参考前述步骤S000中的相关描述,在此不再重复赘述。
图9为本公开至少一实施例提供的一种对应于图5中所示的步骤S300的示例性流程图。例如,如图9所示,对多种位宽对应的多个量化子模型进行联合训练,即步骤S300,包括步骤S310至步骤S330。
步骤S310:分别使用每种位宽对应的量化子模型对训练输入数据进行处理,以得到每种位宽对应的量化子模型的训练输出数据,基于每种位宽对应的量化子模型的训练输出数据,计算每种位宽对应的量化子模型的损失值,基于每种位宽对应的量化子模型的损失值,计算每种位宽对应的量化子模型的梯度。
例如,步骤S310中的各项操作可以参考神经网络模型(例如,全精度模型)的预训练过程中相应的各项操作,在此不再重复赘述。需要说明的是,在一些示例中,与神经网络模型不同的是,对于每种位宽对应的量化子模型,还需要根据截断参数的梯度公式计算截断参数的梯度,以便在下述步骤S320中,基于截断参数的梯度对截断参数进行更新。例如,在一些示例中,对于前述PACT激活函数和激活量化函数而言,截断参数的梯度公式可以表示为:
步骤S320:基于每种位宽对应的量化子模型的梯度,更新该种位宽对应的截断参数和批归一化参数。
例如,步骤S320中的每种位宽对应的批归一化参数的更新操作可以相应参考神经网络模型(例如,全精度模型)的预训练过程中的批归一化参数的更新操作,在此不再重复赘述。
例如,步骤S320中的每种位宽对应的截断参数的更新操作可以参考已知的PACT量化方案中的截断参数的更新操作。例如,PACT量化方案的具体细节可以参见文献,JungwookChoi,Zhuo Wang,Swagath Venkataramani,Pierce I-Jen Chuang,VijayalakshmiSrinivasan,and Kailash Gopalakrishnan.PACT:Parameterized Clipping Activationfor Quantized Neural Networks,arXiv:1805.06085,2018,在此将上述文献全文引用结合于此,以作为本公开的一部分。
应当理解的是,在本公开的实施例中,由于每种位宽对应的量化子模型的梯度与其他位宽对应的量化子模型的梯度之间是相互独立的,因此,该多种位宽各自对应的截断参数之间是相互独立的,同时,该多种位宽各自对应的批归一化参数之间也是相互独立的。
步骤S330:对多种位宽对应的多个量化子模型的梯度进行求和,以得到梯度和,并基于梯度和,更新神经网络模型的参数。
例如,在步骤S330中,神经网络模型的参数可以相应参考神经网络模型(例如,全精度模型)的预训练过程中的参数更新操作,在此不再重复赘述。需要说明的是,对多种位宽对应的多个量化子模型的梯度进行求和,是指对功能层的梯度对应求和,例如对各种位宽对应的量化子模型的线性层的梯度对应求和等。
步骤S340:对神经网络模型的线性层的权值参数进行量化,以更新多种位宽各自对应的量化权值参数。
例如,对神经网络模型的线性层的权值参数进行量化,即步骤S340,可以参考步骤S210中的相关描述,在此不再重复赘述。
例如,在上述联合训练的过程中,通过重复上述步骤S310至步骤S340,可以得到训练好的每种位宽对应的量化子模型,进而,可以得到位宽可调的量化模型。例如,该位宽可调的量化模型的参数包括多种位宽中的最大位宽对应的量化权值参数、多种位宽各自对应的批归一化参数以及多种位宽各自对应的截断参数;其中,其余位宽对应的量化权值参数可以基于最大位宽对应的量化权值参数得到,例如可以参考前述步骤S213中的相关描述,在此不再重复赘述。
例如,在一些实施例中,对应于前述步骤S214,该位宽可调的量化模型的参数还可以包括多种位宽各自对应的尺度变换参数,从而可以直接基于该尺度变换参数进行尺度变换处理。当然,该位宽可调的量化模型也可以不存储多种位宽各自对应的尺度变换参数;例如,基于实际需要,可以根据前述尺度变换参数计算公式计算得到多种位宽各自对应的尺度变换参数(基于未经尺度变化处理的量化权值参数)。本公开的实施例对此不作限制。
需要说明的是,在上述联合训练的过程中,并不直接对每种位宽对应的量化子模型的线性层的量化权值参数进行更新,而是通过对神经网络模型的线性层的权值参数进行更新,再进行量化,从而实现每种位宽对应的量化子模型的线性层的量化权值参数的更新。
需要说明的是,在本公开的实施例中,神经网络模型和每种位宽对应的量化子模型以及位宽可调的量化模型均可以采用软件、硬件、固件或其任意组合等方式实现,从而执行相应的处理过程。
需要说明的是,在本公开的实施例中,上述神经网络模型的压缩与加速方法的流程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行。虽然上文描述的神经网络模型的压缩与加速方法的流程包括特定顺序出现的多个操作,但是应该清楚地了解,多个操作的顺序并不受限制。上文描述的神经网络模型的压缩与加速方法可以执行一次,也可以按照预定条件执行多次。
本公开的实施例提供的神经网络模型的压缩与加速方法,可以基于神经网络模型得到位宽可调的量化模型,该位宽可调的量化模型的工作参数可以根据运算需求进行即时调整,从而,该位宽可调的量化模型可以部署于移动端与嵌入式系统以满足不同应用场景的需求。
本公开至少一实施例还提供一种基于位宽可调的量化模型数据处理方法。该位宽可调的量化模型包括线性层、批归一化层和激活层,例如可以参考图4所示的神经网络模型的结构;该位宽可调的量化模型的批归一化层包括与多种位宽一一对应的批归一化参数,该位宽可调的量化模型的激活层包括与所述多种位宽一一对应的截断参数,该位宽可调的量化模型的线性层包括与所述多种位宽中的最大位宽对应的量化权值参数。例如,在一些示例中,该位宽可调的量化模型可以采用本公开上述实施例提供的压缩与加速方法得到,但不限于此。
图10为本公开至少一实施例提供的一种基于位宽可调的量化模型数据处理方法的流程图。例如,如图10所示,基于上述位宽可调的量化模型,该数据处理方法包括步骤S410至步骤S440。
步骤S410:基于当前的运算限制条件,选择多种位宽中的一种作为当前的工作位宽。
例如,在步骤S410中,运算限制条件可以包括对运算量、响应速度、能耗、运行内存等至少之一的限制条件。例如,在一些示例中,要求量化模型具有较高的运算精度,而对量化模型的运算量、响应速度、能耗、占用的运行内存等均不作限制,在此情况下,可以选择多种位宽中的较高者作为当前的工作位宽要求;例如,在另一些示例中,要求量化模型具有较少的运算量、较快的响应速度、较低的能耗、占用较少的运行内存,同时允许量化模型的运算精度略微降低,在此情况下,可以选择多种位宽中的较低者作为当前的工作位宽。应当理解的是,在本公开的实施例提供的数据处理方法中,可以根据实际的运算限制条件,选择合适的位宽作为当前的工作位宽,以达到运算限制条件和运算精度的均衡。
还应当理解的是,在一些具体示例中,位宽可调的量化模型可以部署于移动端与嵌入式系统,在此情况下,运算限制条件可以体现为对移动端与嵌入式系统的硬件老化程度、电池电量状况等的要求。例如,在一些示例中,硬件老化程度较高或者电池电量较低,在此情况下,往往要求量化模型的运算量较少、能耗较低,而允许量化模型的运算精度略微降低,从而可以选择多种位宽中的较低者作为当前的工作位宽;例如,在另一些示例中,硬件老化程度较低或者电池电量较高,在此情况下,往往要求量化模型具有较高的运算精度,而对量化模型的运算量、能耗等均不作限制,从而可以选择多种位宽中的较高者作为当前的工作位宽。例如,在一些示例中,可以预先设置多个电池电量区间,将多种位宽与该多个电池电量区间一一对应;当电池电量处于某一个预设的电量区间时,可以选择该预设的电量区间对应的位宽作为当前的工作位宽。
步骤S420:若当前的工作位宽等于最大位宽,则将最大位宽对应的量化权值参数、批归一化参数和截断参数作为位宽可调的量化模型的当前的工作参数。
例如,在当前的工作位宽等于最大位宽的情况下,由于位宽可调的量化模型中存储了最大位宽对应的量化权值参数、批归一化参数和截断参数,因此可以直接进行参数设置,以得到可以用于工作的量化模型。
步骤S430:若当前的工作位宽小于最大位宽,则将最大位宽对应的量化权值参数转换为当前的工作位宽对应的量化权值参数,并将当前的工作位宽对应的量化权值参数、批归一化参数和截断参数作为位宽可调的量化模型的当前的工作参数。
例如,在当前的工作位宽小于最大位宽的情况下,由于位宽可调的量化模型中仅存储了最大位宽对应的量化权值参数而未存储其他位宽对应的量化权值参数(为了节省位宽可调的量化模型占用的存储空间)因此,需要先将最大位宽对应的量化权值参数转换为当前的工作位宽对应的量化权值参数。例如,在一些示例中,可以去掉所述最大位宽对应的量化权值参数的后y个比特位,将剩余的部分作为当前的工作位宽对应的量化权值参数,其中,y的取值为最大位宽的取值与当前的工作位宽的取值的差值,例如,具体细节可以参考前述步骤S213中的相关描述。然后,再进行参数设置,从而得到可以用于工作的量化模型。
步骤S440:使位宽可调的量化模型基于当前的工作参数进行数据处理。
例如,在步骤S440中,使位宽可调的量化模型基于当前的工作参数进行数据处理,是指:基于步骤S420或者步骤S430中的得到的用于工作的量化模型进行数据处理。
例如,在一些示例中,位宽可调的量化模型的输入的类型依赖于位宽可调的量化模型的处理对象,例如根据位宽可调的量化模型的处理对象的不同,其输入可以包括图像、文本、语音等。以基于MobileNet-V1、MobileNet-V2和ResNet等神经网络模型得到的位宽可调的量化模型为例,其输入可以为图像。
例如,位宽可调的量化模型的输出可以表示位宽可调的量化模型对输入数据进行推理预测的结果。以基于MobileNet-V1、MobileNet-V2和ResNet等神经网络模型得到的位宽可调的量化模型为例,其输出可以表示对图像(即输入)的分类结果。
例如,在一些示例中,位宽可调的量化模型可以部署在智能手机、平板电脑、车载导航仪等移动端和嵌入式系统中,从而该移动端和嵌入式系统等可以执行上述数据处理方法。
图11A为本公开至少一实施例提供的一种部署位宽可调的量化模型的数据处理装置的原理图,图11B为一种部署多种位宽对应的多个单一量化模型的数据处理装置的原理图。
例如,如图11A所示,该数据处理装置可以为部署有位宽可调的量化模型的移动端(例如,智能手机等),例如,该位宽可调的量化模型的参数通过前述联合训练得到。例如,如图11A所示,在工作过程中,该移动端可以根据电池电量状况在多种位宽中选择合适的位宽作为当前的工作位宽,并对量化权值参数进行相应的转换,以得到用于进行推理预测的量化模型。例如,在一些示例中,随着电池电量的减少,选择的工作位宽的取值相应减小。
图11B为与图11A对应的一种常规部署方案。例如,如图11B所示,该移动端部署有多种位宽对应的多个单一量化模型(例如,M1-M4),例如,每种位宽对应的单一量化模型分别可以通过单独训练得到。例如,为了提高可比性,单独训练的过程与联合训练的过程基本相同,而不同之处在于:在单独训练过程中,基于每个单一量化模型的梯度,更新神经网络模型的参数;以及,对神经网络模型的线性层的权值参数进行量化,以更新每个单一量化模型的量化权值参数。也就是说,在单独训练过程中,不存在求梯度和的操作。例如,如图11B所示,在工作过程中,该移动端可以根据电池电量状况选择一种合适的位宽对应的单一量化模型进行推理预测的工作。例如,在一些示例中,随着电池电量的减少,选择的单一量化模型的对应的位宽的取值相应减小。
表1为两种不同部署方案中的MobileNet-V1、MobileNet-V2和ResNet-50的量化模型的尺寸大小和运算精度的对比表。根据表1可知,与图11B所示的部署方案相比,采用图11A所示的部署方案,即部署根据本公开的实施例的位宽可调的量化模型(如表1中的前缀“AB-”所示),有利于减小占用的存储空间。例如,如表1所示,对于MobileNet-V1、MobileNet-V2和ResNet-50而言,图11A所示的部署方案中的位宽可调的量化模型的尺寸大小均略大于图11B所示的部署方案中的最大位宽对应的单一量化模型的尺寸大小,但是远小于图11B所示的部署方案中的多种位宽对应的多种单一量化模型的尺寸大小之和。另外,根据表1可知,当位宽可调的量化模型采用一种位宽对应的参数进行工作时,其运算精度与该种位宽对应的单一量化模型的运算精度基本相当。此外,根据表1可知,当位宽可调的量化模型采用不同的工作位宽对应的参数进行工作时,其运算量(例如,以位操作(BitOPs)的数量表征)随着工作位宽的减小而减小;应当理解的是,响应速度、能耗及占用的运行内存等也相应随着工作位宽的减小而减小。
表1.两种不同部署方案中的MobileNet-V1、MobileNet-V2和ResNet-50的量化模型的尺寸大小和运算精度的对比表
本公开的实施例提供的数据处理方法的技术效果可以参考上述实施例中关于神经网络模型的压缩与加速方法的相应描述,在此不再赘述。
本公开至少一实施例还提供一种数据处理装置。图12为本公开至少一实施例提供的一种数据处理装置的示意性框图。
例如,如图12所示,该数据处理装置500包括存储器510和处理器520。例如,存储器510用于非暂时性存储计算机可读指令,处理器520用于运行该计算机可读指令,该计算机可读指令被处理器520运行时执行本公开任一实施例提供的神经网络模型的压缩与加速方法或/和数据处理方法。
例如,存储器510和处理器520之间可以直接或间接地互相通信。例如,在一些示例中,如图9所示,该数据处理装置500还可以包括系统总线530,存储器510和处理器520之间可以通过系统总线530互相通信,例如,处理器520可以通过系统总线1006访问存储器510。例如,在另一些示例中,存储器510和处理器520等组件之间可以通过网络连接进行通信。网络可以包括无线网络、有线网络、和/或无线网络和有线网络的任意组合。网络可以包括局域网、互联网、电信网、基于互联网和/或电信网的物联网(Internet of Things)、和/或以上网络的任意组合等。有线网络例如可以采用双绞线、同轴电缆或光纤传输等方式进行通信,无线网络例如可以采用3G/4G/5G移动通信网络、蓝牙、Zigbee或者WiFi等通信方式。本公开对网络的类型和功能在此不作限制。
例如,处理器520可以控制数据处理装置中的其它组件以执行期望的功能。处理器520可以是中央处理单元(CPU)、张量处理器(TPU)或者图形处理器GPU等具有数据处理能力和/或程序执行能力的器件。中央处理器(CPU)可以为X86或ARM架构等。GPU可以单独地直接集成到主板上,或者内置于主板的北桥芯片中。GPU也可以内置于中央处理器(CPU)上。
例如,存储器510可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。
例如,在存储器510上可以存储一个或多个计算机指令,处理器520可以运行所述计算机指令,以实现各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如线性层的预备权值参数、线性层的标准量化权值参数、线性层的尺度变换参数、激活值参数以及应用程序使用和/或产生的各种数据等。
例如,存储器510存储的一些计算机指令被处理器520执行时可以执行根据上文所述的压缩与加速方法中的一个或多个步骤。又例如,存储器510存储的另一些计算机指令被处理器520执行时可以执行根据上文所述的数据处理方法中的一个或多个步骤。
例如,如图12所示,数据处理装置500还可以包括允许外部设备与数据处理装置500进行通信的输入接口540。例如,输入接口540可被用于从外部计算机设备、从用户等处接收指令。数据处理装置500还可以包括使数据处理装置500和一个或多个外部设备相互连接的输出接口550。例如,数据处理装置500可以通过输出接口550显示图像等。通过输入接口1010和输出接口1012与数据处理装置500通信的外部设备可被包括在提供任何类型的用户可与之交互的用户界面的环境中。用户界面类型的示例包括图形用户界面、自然用户界面等。例如,图形用户界面可接受来自用户采用诸如键盘、鼠标、遥控器等之类的(诸)输入设备的输入,以及在诸如显示器之类的输出设备上提供输出。此外,自然用户界面可使得用户能够以无需受到诸如键盘、鼠标、遥控器等之类的输入设备强加的约束的方式来与数据处理装置500交互。相反,自然用户界面可依赖于语音识别、触摸和指示笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、语音和语音、视觉、触摸、手势、以及机器智能等。
另外,数据处理装置500尽管在图12中被示出为单个系统,但可以理解,数据处理装置500也可以是分布式系统,还可以布置为云设施(包括公有云或私有云)。因此,例如,若干设备可以通过网络连接进行通信并且可共同执行被描述为由数据处理装置500执行的任务。
例如,关于压缩与加速方法的处理过程的详细说明可以参考上述压缩与加速方法的实施例中的相关描述,关于数据处理方法的处理过程的详细说明可以参考上述数据处理方法的实施例中的相关描述,重复之处不再赘述。
例如,在一些示例中,该数据处理装置可以包括但不限于智能手机、平板电脑、车载导航仪等移动端和嵌入式系统。
需要说明的是,本公开的实施例提供的数据处理装置是示例性的,而非限制性的,根据实际应用需要,该数据处理装置还可以包括其他常规部件或结构,例如,为实现数据处理装置的必要功能,本领域技术人员可以根据具体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。
本公开的实施例提供的数据处理装置的技术效果可以参考上述实施例中关于压缩与加速方法以及数据处理方法的相应描述,在此不再赘述。
本公开至少一实施例还提供一种存储介质。图13为本公开一实施例提供的一种存储介质的示意图。例如,如图13所示,该存储介质600非暂时性地存储计算机可读指令601,当非暂时性计算机可读指令601由计算机(包括处理器)执行时可以执行本公开任一实施例提供的压缩与加速方法的指令或者可以执行本公开任一实施例提供的数据处理方法的指令。
例如,在存储介质600上可以存储一个或多个计算机指令。存储介质600上存储的一些计算机指令可以是例如用于实现上述压缩与加速方法中的一个或多个步骤的指令。存储介质上存储的另一些计算机指令可以是例如用于实现上述数据处理方法中的一个或多个步骤的指令。例如,在存储介质上可以存储上述位宽可调的量化模型。
例如,存储介质可以包括平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
本公开的实施例提供的存储介质的技术效果可以参考上述实施例中关于压缩与加速方法以及数据处理方法的相应描述,在此不再赘述。
对于本公开,有以下几点需要说明:
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (23)
1.一种神经网络模型的压缩与加速方法,所述神经网络模型包括线性层、批归一化层和激活层,所述方法包括:
基于所述神经网络模型,构建与多种位宽一一对应的多个量化子模型,每种位宽对应的量化子模型的线性层包括该种位宽对应的量化权值参数,每种位宽对应的量化权值参数具有该种位宽,每种位宽对应的量化子模型的批归一化层包括该种位宽对应的批归一化参数,每种位宽对应的量化子模型的激活层包括该种位宽对应的截断参数;
基于所述神经网络模型的参数,初始化每种位宽对应的量化子模型的参数;以及
对所述多种位宽对应的多个量化子模型进行联合训练,以得到位宽可调的量化模型,所述位宽可调的量化模型的参数包括所述多种位宽中的最大位宽对应的量化权值参数、所述多种位宽各自对应的批归一化参数以及所述多种位宽各自对应的截断参数。
2.根据权利要求1所述的方法,其中,对所述多种位宽对应的多个量化子模型进行所述联合训练,包括:
分别使用每种位宽对应的量化子模型对训练输入数据进行处理,以得到每种位宽对应的量化子模型的训练输出数据,基于每种位宽对应的量化子模型的训练输出数据,计算每种位宽对应的量化子模型的损失值,基于每种位宽对应的量化子模型的损失值,计算每种位宽对应的量化子模型的梯度;
基于每种位宽对应的量化子模型的梯度,更新该种位宽对应的截断参数和批归一化参数;
对所述多种位宽对应的多个量化子模型的梯度进行求和,以得到梯度和,并基于所述梯度和,更新所述神经网络模型的参数;以及
对所述神经网络模型的线性层的权值参数进行量化,以更新所述多种位宽各自对应的量化权值参数。
3.根据权利要求2所述的方法,其中,所述多种位宽各自对应的截断参数之间是相互独立的,所述多种位宽各自对应的批归一化参数之间是相互独立的。
4.根据权利要求2或3所述的方法,其中,基于所述神经网络模型的参数,初始化所述每种位宽对应的量化子模型的参数,包括:
对所述神经网络模型的线性层的权值参数进行量化,以得到所述多种位宽各自对应的量化权值参数;
将所述神经网络模型的批归一化层的批归一化参数设置为每种位宽对应的批归一化参数;以及
初始化每种位宽对应的截断参数,其中,每种位宽对应的截断参数为正数。
6.根据权利要求2-5任一项所述的方法,其中,对所述神经网络模型的线性层的权值参数进行量化,以更新或得到所述多种位宽各自对应的量化权值参数,包括:
对所述神经网络模型的线性层的权值参数进行钳位处理,以得到所述线性层的钳位权值参数;
对所述线性层的钳位权值参数进行量化处理,以得到所述最大位宽对应的量化权值参数;以及
基于所述最大位宽对应的量化权值参数,得到其余位宽对应的量化权值参数。
9.根据权利要求8所述的方法,其中,基于所述最大位宽对应的量化权值参数,得到其余位宽对应的量化权值参数,包括:
去掉所述最大位宽对应的量化权值参数的后x个比特位,将剩余的部分作为其余位宽中的某一个位宽对应的量化权值参数,其中,x的取值依次为所述最大位宽的取值与其余位宽中的每一个位宽的取值的差值。
12.根据权利要求10或11所述的方法,其中,所述位宽可调的量化模型的参数还包括所述多种位宽各自对应的所述尺度变换参数。
14.根据权利要求1-13任一项所述的方法,还包括:对所述神经网络模型进行预训练,以得到所述神经网络模型的预先训练好的参数;
其中,基于所述神经网络模型的参数,初始化每种位宽对应的量化子模型的参数,包括:
基于所述神经网络模型的预先训练好的参数,初始化每种位宽对应的量化子模型的参数。
15.根据权利要求14所述的方法,其中,对所述多种位宽对应的多个量化子模型进行所述联合训练所采用的训练参数配置与对所述神经网络模型进行预训练所采用的训练参数配置相同。
16.根据权利要求15所述的方法,其中,所述训练参数配置包括:初始学习率、学习率调整方案、权值衰减、训练集的迭代次数、优化器和批尺寸。
17.根据权利要求1-16任一项所述的方法,其中,所述线性层包括选自卷积层、递归层和全连接层组成的群组中的至少一个。
18.根据权利要求1-17任一项所述的方法,其中,所述神经网络模型包括MobileNet-V1、MobileNet-V2和ResNet之一。
19.一种基于位宽可调的量化模型的数据处理方法,所述位宽可调的量化模型包括线性层、批归一化层和激活层;
所述位宽可调的量化模型的批归一化层包括与多种位宽一一对应的批归一化参数,所述位宽可调的量化模型的激活层包括与所述多种位宽一一对应的截断参数,所述位宽可调的量化模型的线性层包括与所述多种位宽中的最大位宽对应的量化权值参数;
所述数据处理方法包括:
基于当前的运算限制条件,选择所述多种位宽中的一种作为当前的工作位宽;
若所述当前的工作位宽等于所述最大位宽,则将所述最大位宽对应的量化权值参数、批归一化参数和截断参数作为所述位宽可调的量化模型的当前的工作参数;
若所述当前的工作位宽小于所述最大位宽,则将所述最大位宽对应的量化权值参数转换为所述当前的工作位宽对应的量化权值参数,并将所述当前的工作位宽对应的量化权值参数、批归一化参数和截断参数作为所述位宽可调的量化模型的当前的工作参数;以及
使所述位宽可调的量化模型基于所述当前的工作参数进行数据处理。
20.根据权利要求19所述的数据处理方法,其中,在所述当前的工作位宽小于所述最大位宽的情况下,将所述最大位宽对应的权值参数转换为所述当前的工作位宽对应的权值参数,包括:
去掉所述最大位宽对应的量化权值参数的后y个比特位,将剩余的部分作为所述当前的工作位宽对应的量化权值参数,其中,y的取值为所述最大位宽的取值与所述当前的工作位宽的取值的差值。
21.根据权利要求19或20所述的数据处理方法,其中,所述运算限制条件包括对运算量、响应速度、能耗、运行内存至少之一的限制条件。
22.一种数据处理装置,包括:
存储器,用于非暂时性存储计算机可读指令;以及
处理器,用于运行计算机可读指令;
其中,所述计算机可读指令被所述处理器运行时执行根据权利要求1-18任一项所述的方法或执行根据权利要求19-21任一项所述的数据处理方法。
23.一种存储介质,非暂时性地存储计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时可以执行根据权利要求1-18任一项所述的方法的指令或者可以执行根据权利要求19-21任一项所述的数据处理方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139595.8A CN110852439B (zh) | 2019-11-20 | 2019-11-20 | 数据处理方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139595.8A CN110852439B (zh) | 2019-11-20 | 2019-11-20 | 数据处理方法及装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110852439A true CN110852439A (zh) | 2020-02-28 |
CN110852439B CN110852439B (zh) | 2024-02-02 |
Family
ID=69602963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911139595.8A Active CN110852439B (zh) | 2019-11-20 | 2019-11-20 | 数据处理方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110852439B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563589A (zh) * | 2020-04-14 | 2020-08-21 | 中科物栖(北京)科技有限责任公司 | 一种神经网络模型的量化方法及装置 |
CN111563593A (zh) * | 2020-05-08 | 2020-08-21 | 北京百度网讯科技有限公司 | 神经网络模型的训练方法和装置 |
CN111583067A (zh) * | 2020-03-31 | 2020-08-25 | 西南交通大学 | 一种城市地下大空间施工安全预警与应急决策方法及系统 |
CN111898751A (zh) * | 2020-07-29 | 2020-11-06 | 苏州浪潮智能科技有限公司 | 一种数据处理的方法、系统、设备及可读存储介质 |
CN112528973A (zh) * | 2021-02-08 | 2021-03-19 | 上海齐感电子信息科技有限公司 | 人脸活体识别方法 |
CN112766456A (zh) * | 2020-12-31 | 2021-05-07 | 平安科技(深圳)有限公司 | 浮点型深度神经网络的量化方法、装置、设备及存储介质 |
CN113378911A (zh) * | 2021-06-08 | 2021-09-10 | 北京百度网讯科技有限公司 | 图像分类模型训练、图像分类方法及相关装置 |
CN113469349A (zh) * | 2021-07-02 | 2021-10-01 | 上海酷芯微电子有限公司 | 多精度神经网络模型实现方法及系统 |
CN113496186A (zh) * | 2020-08-21 | 2021-10-12 | 上海齐感电子信息科技有限公司 | 移动端设备及其人脸识别方法 |
WO2021262053A1 (en) * | 2020-06-25 | 2021-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for image compressing and coding with deep learning |
WO2023020456A1 (zh) * | 2021-08-16 | 2023-02-23 | 北京百度网讯科技有限公司 | 网络模型的量化方法、装置、设备和存储介质 |
CN115905546A (zh) * | 2023-01-06 | 2023-04-04 | 之江实验室 | 基于阻变存储器的图卷积网络文献识别装置与方法 |
WO2024087512A1 (zh) * | 2022-10-24 | 2024-05-02 | 浪潮电子信息产业股份有限公司 | 一种图神经网络压缩方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634273A (zh) * | 2012-08-21 | 2014-03-12 | 电信科学技术研究院 | 数据压缩发送及解压缩方法和设备 |
US20190012559A1 (en) * | 2017-07-06 | 2019-01-10 | Texas Instruments Incorporated | Dynamic quantization for deep neural network inference system and method |
US20190253071A1 (en) * | 2018-02-09 | 2019-08-15 | Kneron, Inc. | Method of compressing convolution parameters, convolution operation chip and system |
CN110245753A (zh) * | 2019-05-27 | 2019-09-17 | 东南大学 | 一种基于幂指数量化的神经网络压缩方法 |
CN110348562A (zh) * | 2019-06-19 | 2019-10-18 | 北京迈格威科技有限公司 | 神经网络的量化策略确定方法、图像识别方法和装置 |
-
2019
- 2019-11-20 CN CN201911139595.8A patent/CN110852439B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634273A (zh) * | 2012-08-21 | 2014-03-12 | 电信科学技术研究院 | 数据压缩发送及解压缩方法和设备 |
US20190012559A1 (en) * | 2017-07-06 | 2019-01-10 | Texas Instruments Incorporated | Dynamic quantization for deep neural network inference system and method |
US20190253071A1 (en) * | 2018-02-09 | 2019-08-15 | Kneron, Inc. | Method of compressing convolution parameters, convolution operation chip and system |
CN110245753A (zh) * | 2019-05-27 | 2019-09-17 | 东南大学 | 一种基于幂指数量化的神经网络压缩方法 |
CN110348562A (zh) * | 2019-06-19 | 2019-10-18 | 北京迈格威科技有限公司 | 神经网络的量化策略确定方法、图像识别方法和装置 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111583067A (zh) * | 2020-03-31 | 2020-08-25 | 西南交通大学 | 一种城市地下大空间施工安全预警与应急决策方法及系统 |
CN111563589A (zh) * | 2020-04-14 | 2020-08-21 | 中科物栖(北京)科技有限责任公司 | 一种神经网络模型的量化方法及装置 |
CN111563589B (zh) * | 2020-04-14 | 2024-01-16 | 中科物栖(南京)科技有限公司 | 一种神经网络模型的量化方法及装置 |
CN111563593A (zh) * | 2020-05-08 | 2020-08-21 | 北京百度网讯科技有限公司 | 神经网络模型的训练方法和装置 |
CN111563593B (zh) * | 2020-05-08 | 2023-09-15 | 北京百度网讯科技有限公司 | 神经网络模型的训练方法和装置 |
WO2021262053A1 (en) * | 2020-06-25 | 2021-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for image compressing and coding with deep learning |
CN111898751B (zh) * | 2020-07-29 | 2022-11-25 | 苏州浪潮智能科技有限公司 | 一种数据处理的方法、系统、设备及可读存储介质 |
CN111898751A (zh) * | 2020-07-29 | 2020-11-06 | 苏州浪潮智能科技有限公司 | 一种数据处理的方法、系统、设备及可读存储介质 |
CN113496186A (zh) * | 2020-08-21 | 2021-10-12 | 上海齐感电子信息科技有限公司 | 移动端设备及其人脸识别方法 |
CN112766456A (zh) * | 2020-12-31 | 2021-05-07 | 平安科技(深圳)有限公司 | 浮点型深度神经网络的量化方法、装置、设备及存储介质 |
CN112766456B (zh) * | 2020-12-31 | 2023-12-26 | 平安科技(深圳)有限公司 | 浮点型深度神经网络的量化方法、装置、设备及存储介质 |
CN112528973A (zh) * | 2021-02-08 | 2021-03-19 | 上海齐感电子信息科技有限公司 | 人脸活体识别方法 |
CN113378911B (zh) * | 2021-06-08 | 2022-08-26 | 北京百度网讯科技有限公司 | 图像分类模型训练、图像分类方法及相关装置 |
CN113378911A (zh) * | 2021-06-08 | 2021-09-10 | 北京百度网讯科技有限公司 | 图像分类模型训练、图像分类方法及相关装置 |
CN113469349A (zh) * | 2021-07-02 | 2021-10-01 | 上海酷芯微电子有限公司 | 多精度神经网络模型实现方法及系统 |
WO2023020456A1 (zh) * | 2021-08-16 | 2023-02-23 | 北京百度网讯科技有限公司 | 网络模型的量化方法、装置、设备和存储介质 |
WO2024087512A1 (zh) * | 2022-10-24 | 2024-05-02 | 浪潮电子信息产业股份有限公司 | 一种图神经网络压缩方法、装置、电子设备及存储介质 |
CN115905546A (zh) * | 2023-01-06 | 2023-04-04 | 之江实验室 | 基于阻变存储器的图卷积网络文献识别装置与方法 |
CN115905546B (zh) * | 2023-01-06 | 2023-07-14 | 之江实验室 | 基于阻变存储器的图卷积网络文献识别装置与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110852439B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110852439B (zh) | 数据处理方法及装置、存储介质 | |
CN110659725B (zh) | 神经网络模型的压缩与加速方法、数据处理方法及装置 | |
EP3270330B1 (en) | Method for neural network and apparatus performing same method | |
US11875268B2 (en) | Object recognition with reduced neural network weight precision | |
US20210089925A1 (en) | Training method for quantizing the weights and inputs of a neural network | |
US11645493B2 (en) | Flow for quantized neural networks | |
Tjandra et al. | Compressing recurrent neural network with tensor train | |
Novikov et al. | Tensorizing neural networks | |
KR101880901B1 (ko) | 기계 학습 방법 및 장치 | |
CN110378383B (zh) | 一种基于Keras框架和深度神经网络的图片分类方法 | |
US20240152758A1 (en) | Neural network activation compression with non-uniform mantissas | |
CN111095302A (zh) | 稀疏深度卷积网络权重的压缩 | |
CN111767979A (zh) | 神经网络的训练方法、图像处理方法、图像处理装置 | |
CN111105017A (zh) | 神经网络量化方法、装置及电子设备 | |
CN115129386A (zh) | 用于神经网络部署和执行的有效优化 | |
Mamatkulovich | Lightweight residual layers based convolutional neural networks for traffic sign recognition | |
CN114266897A (zh) | 痘痘类别的预测方法、装置、电子设备及存储介质 | |
WO2020060659A1 (en) | System and method for synthesis of compact and accurate neural networks (scann) | |
Li et al. | Automatic densenet sparsification | |
US20230004816A1 (en) | Method of optimizing neural network model and neural network model processing system performing the same | |
CN111325222A (zh) | 图像归一化处理方法及装置、存储介质 | |
CN114444686A (zh) | 一种卷积神经网络的模型参数量化方法、装置及相关装置 | |
Hung et al. | Bridge deep learning to the physical world: An efficient method to quantize network | |
Ososkov et al. | Two-stage approach to image classification by deep neural networks | |
CN114463591A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |