CN115081588A - 一种神经网络参数量化方法和装置 - Google Patents

一种神经网络参数量化方法和装置 Download PDF

Info

Publication number
CN115081588A
CN115081588A CN202210600648.7A CN202210600648A CN115081588A CN 115081588 A CN115081588 A CN 115081588A CN 202210600648 A CN202210600648 A CN 202210600648A CN 115081588 A CN115081588 A CN 115081588A
Authority
CN
China
Prior art keywords
parameter
data
neural network
model
parameters
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
CN202210600648.7A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210600648.7A priority Critical patent/CN115081588A/zh
Publication of CN115081588A publication Critical patent/CN115081588A/zh
Priority to PCT/CN2023/095019 priority patent/WO2023231794A1/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/08Learning 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)
  • Image Analysis (AREA)

Abstract

本申请提供人工智能领域中一种神经网络参数量化方法和装置,用于对神经网络进行量化,降低低比特量化时的精度损失,得到输出更准确的轻量化模型。该方法包括:首先,获取待量化模型中各个神经元的参数,得到参数集合;随后对参数集合中的参数进行聚类,得到多种分类数据;对多种分类数据中的每种分类数据进行量化,得到至少一种量化参数,至少一种量化参数用于得到压缩模型,至少一种量化参数的精度低于待量化模型中的参数的精度。

Description

一种神经网络参数量化方法和装置
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络参数量化方法和装置。
背景技术
模型压缩技术是构筑轻量级神经网络的常用技术手段。神经网络模型中一般使用FP32(32位浮点数据)进行存储。研究发现,神经网络具有较好的鲁棒性,将大型神经网络的参数通过量化、编码等方式减小精度,其依然可以保有相对良好的性能。常用的低精度数据包括FP16(半精度浮点)、INT16(16位的定点整数)、INT8(8位的定点整数)、INT4(4位的定点整数)、1bit等等数值格式。从网络性能和模型压缩程度两方面综合考虑,将权重参数由32bit浮点型(FP32)转化为8bit定点整形(INT8),是目前最为常用的量化手段。
然而,在进行量化时,尤其针对假发网络,在低比特量化时精度损失较大,因此,如何降低低比特量化时的精度损失,成为亟待解决的问题。
发明内容
本申请提供一种神经网络参数量化方法和装置,用于对神经网络进行量化,降低低比特量化时的精度损失,得到输出更准确的轻量化模型。
有鉴于此,第一方面,本申请提供一种神经网络参数量化方法,包括:首先,获取待量化模型中各个神经元的参数,得到参数集合;随后对参数集合中的参数进行聚类,得到多种分类数据;对多种分类数据中的每种分类数据进行量化,得到至少一种量化参数,至少一种量化参数用于得到压缩模型,至少一种量化参数的精度低于待量化模型中的参数的精度。
因此,本申请实施方式中,对神经网络的参数进行聚类后再进行量化,针对每个分类的参数分别进行量化,从而可以提高模型的表达能力。
在一种可能的实施方式中,前述的对参数集合进行聚类,得到多种分类数据,可以包括:对参数集合进行聚类,得到至少一种聚类数据;从至少一种聚类数据中的每种聚类数据中截取预设数量的参数,得到多种分类数据。
因此,本申请实施方式中,聚类后对每种分类参数进行截断,从而减少每种分类中的离群值,提高后续的模型表达能力。
在一种可能的实施方式中,待量化模型中的参数包括每个神经元的输出的特征中的参数或者每个神经元内的参数值。因此本申请实施方式中,针对神经网络中各个神经元的内部参数以及输出的特征值均进行量化,从而减少量化后模型所占的比特,得到轻量化模型。
在一种可能的实施方式中,待量化模型包括加法神经网络。因此,本申请实施方式中,针对加法网络,若各个神经元共享缩放系数,降低模型表达能力,若使用乘法卷积量化方式,可能由于权重数据和输入特征的缩放系数不相同,因此,通过本申请提供的方式,可以对参数进行聚类,针对每一类参数进行量化,提高压缩后模型的表达能力,避免量化后出现非INT8的数值。
在一种可能的实施方式中,压缩模型用于进行图像识别、分类任务或者目标检测中的至少一种。因此,本申请提供的方法可以适用于多种场景,泛化能力强。
第二方面,本申请提供一种神经网络参数量化装置,包括:
获取模块,用于获取待量化模型中各个神经元的参数,得到参数集合;
聚类模块,用于对参数集合进行聚类,得到多种分类数据;
量化模块,用于对多种分类数据中的每种分类数据进行量化,得到至少一种量化参数,至少一种量化参数用于得到压缩模型,至少一种量化参数的精度低于待量化模型中的参数的精度。
在一种可能的实施方式中,聚类模块,具体用于:对参数集合进行聚类,得到至少一种聚类数据;从至少一种聚类数据中的每种聚类数据中截取预设数量的参数,得到多种分类数据。
在一种可能的实施方式中,待量化模型中的参数包括每个神经元的输出的特征中的参数或者每个神经元内的参数值。
在一种可能的实施方式中,待量化模型包括加法神经网络。
在一种可能的实施方式中,压缩模型用于进行图像识别、分类任务或者目标检测中的至少一种。
第三方面,本申请实施例提供一种神经网络参数量化装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的神经网络参数量化方法中与处理相关的功能。可选地,该神经网络参数量化装置可以是芯片。
第四方面,本申请实施例提供了一种神经网络参数量化装置,该神经网络参数量化装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。
第五方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
第六方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
附图说明
图1为本申请应用的一种人工智能主体框架示意图;
图2为本申请应用的一种卷积核的结构示意图;
图3为本申请提供的一种卷积神经网络的结构示意图;
图4为本申请提供的一种***架构示意图;
图5为本申请提供的另一种***架构示意图;
图6为本申请提供的一种量化方式示意图;
图7为本申请提供的一种神经网络参数量化方法的流程示意图;
图8为本申请提供的另一种神经网络参数量化方法的流程示意图;
图9为本申请提供的一种参数截断方式示意图;
图10为本申请提供的另一种参数截断方式示意图;
图11为本申请提供的一种待量化模型的结构示意图;
图12为本申请所提出的方案与常用的针对加法网络的量化方案的精度对比图;
图13为本申请提供的一种神经网络参数量化装置的结构示意图;
图14为本申请提供的另一种神经网络参数量化装置的结构示意图;
图15为本申请提供的一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对人工智能***总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到***的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能***提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片,如中央处理器(centralprocessing unit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(英语:graphics processing unit,GPU)、专用集成电路(application specificintegrated circuit,ASIC)或现场可编程逻辑门阵列(field programmable gate array,FPGA)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算***中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有***的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能***中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用***,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能***在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、智慧城市等。
本申请实施例涉及了大量神经网络的相关应用,为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如公式所示:
Figure BDA0003669766310000041
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层中间层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,中间层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是中间层,或者称为隐层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,其每一层可以表示为线性关系表达式:
Figure BDA0003669766310000042
其中,
Figure BDA0003669766310000043
是输入向量,
Figure BDA0003669766310000044
是输出向量,
Figure BDA0003669766310000045
是偏移向量或者称为偏置参数,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量
Figure BDA0003669766310000046
经过如此简单的操作得到输出向量
Figure BDA0003669766310000047
由于DNN层数多,系数W和偏移向量
Figure BDA0003669766310000048
的数量也比较多。这些参数在DNN中的定义如下所述:以系数w为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为
Figure BDA0003669766310000049
上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为
Figure BDA00036697663100000410
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的中间层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络。CNN具有局部感知、权值共享等优异特性,能大幅减少权重参数,同时大幅提升网络性能。其已在计算机视觉、图像分析等领域取得了众多突破性成果,并成为人工智能和深度学***面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)循环神经网络(recurrent neural networks,RNN),也称为递归神经网络,是用来处理序列数据的。在传统的神经网络模型中,是从输入层到中间层再到输出层,层与层之间是全连接的,而对于每一层层内之间的各个节点是无连接的。这种普通的神经网络虽然解决了很多难题,但是却仍然对很多问题无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即中间层本层之间的节点不再无连接而是有连接的,并且中间层的输入不仅包括输入层的输出还包括上一时刻中间层的输出。理论上,RNN能够对任何长度的序列数据进行处理。对于RNN的训练和对传统的CNN或DNN的训练一样。
(5)残差神经网络(ResNet)
残差神经网络是为例解决神经度神经网络的隐藏层过多时产生的退化(degradation)问题而提出。退化问题是指:当网络隐藏层变多时,网络的准确度达到饱和然后急剧退化,而且这个退化不是由于过拟合引起的,而是在进行反向传播时,传播到底层时各个梯度相关性不大,梯度更新不充分,从而使最终得到的模型的预测标签的准确度降低。当神经网络退化时,浅层网络能够达到比深层网络更好的训练效果,这时如果把低层的特征传到高层,那么效果应该至少不比浅层的网络效果差,因此可以通过一条恒等映射(Identity Mapping)来达到此效果。这条恒等映射称为残差连接(shortcut),优化这种残差映射要比优化原始的映射容易。
(6)乘法神经网络
针对前述的神经网络,如CNN、DNN、RNN或者ResNet等,可以采用乘法卷积方案,其核心在于采用卷积乘法运算提取滤波器和输入图像的相似度。
通常,乘法卷积核可以表示为:Y(m,n,t)=∑∑∑S[X(m+i,n+j,k),F(i,j,k,t)]
其中S(x,y)代表x和y的相似度,X代表输入图像,F代表卷积计算的滤波器,i和j代表一个卷积核的横向坐标和纵向坐标,k代表输入通道,t代表输出通道。
(7)加法神经网络
与前述乘法神经网络的区别在于,加法神经网络可以利用输入图像与特征提取器的减法运算提取两者的相似度。
例如,加法卷积核可以表示为:Y(m,n,t)=-∑∑∑|X(m+i,n+j,k)-F(i,j,k,t)|。
为便于理解,对乘法卷积核和加法卷积核的区别进行示例性介绍。示例性地,乘法卷积核和加法卷积核的区别可以如图2所示,以其中一个卷积核为例,卷积核可以对输入的矩阵进行卷积操作,得到卷积后的输出。当卷积核为乘法卷积核时,该乘法卷积核的卷积操作为乘法操作,当卷积核为加法卷积核时,其卷积操作为加法操作,或者称为减法操作,如图2中所示,对输入矩阵中当前待操作的矩阵包括
Figure BDA0003669766310000051
卷积核对应的矩阵为
Figure BDA0003669766310000052
当卷积核为乘法卷积核时,其操作包括对输入矩阵和卷积核中的各个元素进行乘法操作,如表示为:
(-1)*1+0*0+1*2
+(-1)*5+0*4+1*2
+(-1)*3+0*4+1*5
=0
当卷积核为加法卷积核时,其操作包括对输入矩阵和卷积核中的各个元素进行加法操作,如表示为:
-|(-1)-1|-|0-0|-|1-2|
-|(-1)-5|-|0-4|-|1-2|
-|(-1)-3|-|0-4|-|1-5|
=-26
(8)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(9)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
(10)模型量化:是一种由高比特转换为低比特的模型压缩方式。例如,将常规32位浮点运算转换为低bit整型运算的模型压缩技术,即可称为模型量化。如当低bit量化为8bit时,可以称之为int8量化,即原来表示一个权重需要float32表示,量化后只需要用int8表示,理论上能够获得4倍的网络加速,同时8位相较于32位能够减少4倍存储空间,减少了存储空间和运算时间,从而达到了压缩模型和加速的目的。
通常,CNN是一种常用的神经网络,本申请以下提及的神经网络即可包括设置了加法卷积核或者乘法卷积核的卷积神经网络。为便于理解,下面示例性地,对卷积神经网络的结构进行介绍。
下面结合图3示例性地对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
如图3所示,卷积神经网络(CNN)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络层230。在本申请以下实施方式中,为便于理解,将每一层称为一个stage。下面对这些层的相关内容做详细介绍。
卷积层/池化层220:
卷积层:
如图3所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现方式中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
下面将以卷积层221为例,介绍一层卷积层的内部工作原理。
卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络200进行正确的预测。
当卷积神经网络200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层/池化层220:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,池化层也可以称为下采样层。在如图3中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层230:
在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用神经网络层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层230中可以包括多层中间层(如图3所示的231、232至23n)以及输出层240,该输出层也可以称为全连接(fully connected,FC)层,该多层中间层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
在神经网络层230中的多层中间层之后,也就是整个卷积神经网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络200的前向传播(如图3由210至240方向的传播为前向传播)完成,反向传播(如图3由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络200的损失,及卷积神经网络200通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图3所示的卷积神经网络200仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。
本申请中,可以采用图3所示的卷积神经网络200对待处理图像进行处理,得到待处理图像的分类结果。如图3所示,待处理图像经过输入层210、卷积层/池化层220以及神经网络层230的处理后输出待处理图像的分类结果。
本申请实施例提供的神经网络参数量化方法可以在服务器上被执行,还可以在终端设备上被执行。其中该终端设备可以是具有图像处理功能的移动电话、平板个人电脑(tablet personal computer,TPC)、媒体播放器、智能电视、笔记本电脑(laptopcomputer,LC)、个人数字助理(personal digital assistant,PDA)、个人计算机(personalcomputer,PC)、照相机、摄像机、智能手表、可穿戴式设备(wearable device,WD)或者自动驾驶的车辆等,本申请实施例对此不作限定。
如图4所示,本申请实施例提供了一种***架构100。在图4中,数据采集设备160用于采集训练数据。在一些可选的实现中,针对于图像分类方法来说,训练数据可以包括训练图像以及训练图像对应的分类结果,其中,训练图像的分类结果可以是人工预先标注的结果。
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。可选地,在本申请以下实施方式中所提及的训练集,可以是从该数据库130中得到,也可以是通过用户的输入数据得到。
其中,目标模型/规则101可以为本申请实施例以下提及的神经网络。
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的原始图像进行处理,将输出的图像与原始图像进行对比,直到训练设备120输出的图像与原始图像的差值小于一定的阈值,从而完成目标模型/规则101的训练。
上述目标模型/规则101能够用于实现本申请实施例的神经网络参数量化方法得到的第一神经网络,即,将待处理数据(如图像)通过相关预处理后输入该目标模型/规则101,即可得到处理结果。本申请实施例中的目标模型/规则101具体可以为本申请以下所提及的第一神经网络,该第一神经网络可以是前述的CNN、DNN或者RNN等类型的神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则101可以应用于不同的***或设备中,如应用于图5所示的执行设备110,该执行设备110也可以称为计算设备,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端设备等。在图5中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理数据。
预处理模块113和预处理模块114用于根据I/O接口112接收到的输入数据(如待处理数据)进行预处理,在本申请实施例中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储***150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储***150中。
最后,I/O接口112将处理结果,则将处理结果返回给客户设备140,从而提供给用户,例如若第一神经网络用于进行图像分类,处理结果为分类结果,则I/O接口112将上述得到的分类结果返回给客户设备140,从而提供给用户。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。在一些场景中,执行设备110和训练设备120可以是相同的设备,或者位于相同的计算设备内部,为便于理解,本申请将执行设备和训练设备分别进行介绍,并不作为限定。
在图4所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的预测标签作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的预测标签,作为新的样本数据存入数据库130。
值得注意的是,图4仅是本申请实施例提供的一种***架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图4中,数据存储***150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储***150置于执行设备110中。
如图4所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本申请实施例中可以是本申请以下所提及的神经网络,具体的,本申请实施例提供的神经网络可以CNN,深度卷积神经网络(deep convolutional neural networks,DCNN),循环神经网络(recurrent neural network,RNN)等等。
参见附图5,本申请实施例还提供了一种***架构400。执行设备110由一个或多个服务器实现,可选的,与其它计算设备配合,例如:数据存储、路由器、负载均衡器等设备;执行设备110可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备110可以使用数据存储***150中的数据,或者调用数据存储***150中的程序代码实现本申请以下提及的神经网络参数量化方法的步骤。
用户可以操作各自的用户设备(例如本地设备401和本地设备402)与执行设备110进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备110进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。具体地,该通信网络可以包括无线网络、有线网络或者无线网络与有线网络的组合等。该无线网络包括但不限于:第五代移动通信技术(5th-Generation,5G)***,长期演进(long termevolution,LTE)***、全球移动通信***(global system for mobile communication,GSM)或码分多址(code division multiple access,CDMA)网络、宽带码分多址(widebandcode division multiple access,WCDMA)网络、无线保真(wireless fidelity,WiFi)、蓝牙(bluetooth)、紫蜂协议(Zigbee)、射频识别技术(radio frequency identification,RFID)、远程(Long Range,Lora)无线通信、近距离无线通信(near field communication,NFC)中的任意一种或多种的组合。该有线网络可以包括光纤通信网络或同轴电缆组成的网络等。
在另一种实现中,执行设备110的一个方面或多个方面可以由每个本地设备实现,例如,本地设备401可以为执行设备110提供本地数据或反馈计算结果。
需要注意的,执行设备110的所有功能也可以由本地设备实现。例如,本地设备401实现执行设备110的功能并为自己的用户提供服务,或者为本地设备402的用户提供服务。
随着神经网络模型的性能越来越强,其参数也越来越多。网络运行时对存储、计算、带宽、能量的需求和消耗越来越大,不利于人工智能算法在资源受限的硬件终端设备中进行部署。将神经网络通过剪枝、压缩等技术手段降低存储和计算需求,已成为神经网络算法在实际终端落地中的重要一环。
模型压缩是构筑轻量级神经网络的常用手段。神经网络中通常使用FP32(32位浮点数据)进行存储。通常,神经网络具有较好的鲁棒性,将大型神经网络的参数通过量化、编码等方式减小精度,其依然可以保有相对良好的性能。常用的低精度数据包括FP16(半精度浮点)、INT16(16位的定点整数)、INT8(8位的定点整数)、INT4(4位的定点整数)、1bit等等数值格式。从网络性能和模型压缩程度两方面综合考虑,将权重参数由32bit浮点型(FP32)转化为8bit定点整形(INT8),是常用的量化手段。
又例如,采用轻量级的卷积方案是构筑轻量级神经网络的另一种技术手段。常用的卷积神经网络大都采用乘法卷积方案,其核心在于采用卷积乘法运算提取滤波器和输入图像的相似度。针对加法神经网络,如可以共享型(share)的加法网络量化技术,权重和输入图像在相减后采用一个量化参数s来进行INT8量化,在INT8量化时取得了不错的效果。
例如,如图6所示,在常用的CNN量化技术中,权重和输入图像分别采取INT8量化,该方法将对应两个缩放系数s1、s2,其硬件需要2个FP32乘法器,1个INT8乘法器。然而,针对上述常用的量化方法,乘法网络量化时每层采用非共享的scale对权重数据和输入图像特征数据分别进行INT8量化,但当这种分立式的量化方式应用于加法网络时,所需的乘法运算会增加计算能耗。此外,由于因权重数据和输入特征图像数据的缩放系数不一定相等,最终结果可能会出现非INT8型的数值计算。
此外,只使用一个共享参数来量化加法网络的卷积核参数和特征,不可避免地会造成其表达能力的下降,且仅在8bit量化中验证了其基本无损的效果。在低比特(<8bit)量化中,量化后的加法网络精度损失较大。另一方面,随着bit数的减少,基础操作的能耗和所需芯片面积都会有不同程度的减少。
因此,本申请提供一种神经网络参数量化方法,可以应用于各种神经网络的量化场景中,实现了高效的低比特量化。
下面基于前述的介绍,对本申请提供的神经网络参数量化方法进行详细介绍。
参阅图7,本申请提供的一种神经网络参数量化方法的流程示意图,如下所述。
701、获取待量化模型中各个神经元的参数,得到参数集合。
其中,该待量化模型可以包括加法网络或者乘法网络等,该待量化模型可以包括多个神经元,可以读取每个神经元的参数,得到待量化模型的参数集合。
该各个神经元的参数可以包括神经元内的参数值,也可以包括各个中间层的神经元的输出所占的权重。因此,在进行后续量化时,可以对神经网络中的大部分参数进行量化,从而得到轻量化模型。
702、对参数集合进行聚类,得到多种分类数据。
在得到参数集合之后,即可对参数集合中的参数进行聚类,得到一种或者多种分类数据,可以理解为通过聚类将参数集合中的参数分为一类或者多类。
具体的聚类方式可以包括K-Means聚类、均值漂移聚类、基于密度的聚类方法(density-Based spatial clustering of applications with noise,DBSCAN)、基于高斯混合模型的最大期望聚类等,具体可以根据实际应用场景选择匹配的聚类方式,本申请对此不作限定。
可选地,得到多种分类数据的具体过程可以包括:对参数集合中的参数进行聚类,得到一种或者多种聚类数据,然后从该一种或者多种聚类数据中截取预设数量的参数,得到前述的多种分类数据。因此,本申请实施方式中,无需划定阈值,通过截取一定数量的方式,来减少针对阈值的计算量,提高本申请提供的方法的部署泛化性。
703、对多种分类数据中的每种数据进行量化,得到至少一种量化参数。
在进行聚类得到多种分类数据之后,即可对每种分类数据进行量化,即降低每种分类数据中的参数所占的比特,得到至少一种量化参数。该至少一种量化参数用于得到压缩模型,例如,若待量化模型中的参数的数据类型为FP16,可以将其数据类型转换为INT8,从而降低参数所占的比特,实现对参数的低比特量化,从而实现模型压缩,得到轻量化模型。
通常,参数集合中的参数可以分为神经元自身的参数值,如称为权重参数,以及神经元的输出特征值,如称为特征参数,该特征参数可以包括将输入图像输入至待量化模型后待量化模型中各个神经元输出的特征值,该输入图像可以是预先设定的图像,也可以是随机选取的图像。特征参数与权重参数通常互相影响,但通常这两种参数的范围大小可能不相同,若仅使用一种量化参数进行量化,则可能导致量化部分的参数被截断或者造成比特位的浪费。例如,如果使用激活值的范围来量化权重,大部分的权重会被截断,会极大损害量化模型的精度;如果使用权重的范围来量化激活值,只有少部分的bit位可以利用,造成bit位的浪费。本申请可以将权重的范围截断到特征的范围内,在不降低模型精度的情况下的尽可能有效利用比特位,避免比特位浪费。
因此,本申请实施方式中,对待量化模型中的参数进行了聚类,将参数分为多类后再进行量化,从而可以实现分类量化,提高量化后得到的模型的表达能力,尤其针对加法网络,相对于使用共享参数来进行量化,本申请提供的聚类后量化,可以显著提高模型表达能力,得到输出精度更高的轻量化模型。并且,本申请提供的方法,对参数进行聚类后量化,仅需增加较少的工作量,即可得到输出更准确的轻量化模型,可以适用更多需要部署轻量化模型的场景。
前述对本申请提供的方法流程进行了介绍,为便于理解,下面结合具体的应用场景,对本申请提供的神经网络参数量化方法的流程进行更详细介绍。
参阅图8,本申请提供的另一种神经网络参数量化方法的流程示意图,如下所述。
首先,获取待量化模型801,该待量化模型801可以包括乘法网络或者加法网络等。
本申请提供的方法可以部署于服务器,也可以部署于终端。例如,本申请提供的方法可以部署于服务器,服务器对待量化模型进行量化后,得到的轻量化模型可以部署于终端,从而在终端中可以运行轻量化的模型,提高终端的运行效率。
该待量化模型具体可以是CNN、ANN或者RNN等,该待量化模型可以包括多层网络层,如可以分为输入层、中间层和输出层,每层网络层中可以包括一个或者多个神经元,通常,上一层网络层中的神经元的输出可以作为下一层网络层的神经网络的输入。具体例如,该待量化模型可以用于进行图像识别、目标检测、分割任务、分类任务等一种或者多种任务。通常,为了降低运行神经网络所需的计算资源,可以对神经网络进行压缩,在保持神经网络的输出精度的情况下,降低运行神经网络所需的计算资源。
本申请提供的方法可以适用于多种类型的神经网络,其具体类型可以根据实际应用场景确定,本申请对此并不作限定。
然后,从待量化模型801中提取参数,得到参数集合802。
具体可以提取各个神经元内部的参数或者各个神经元的输出所占权重等参数,得到参数集合。以下为便于区分,将各个神经元输出的特征值称为特征参数(表示为w),将各个神经元的自身的卷积核参数称为权重参数(表示为x)。
例如,待量化模型801可以包括多个神经元,每个神经元内部具有参数,如每个神经元可以包括以下一项或多项:池化核大小为3×3的均值池化(avg_pool_3x3)、池化核大小为3×3的最大值池化(max_pool_3x3)、卷积核大小为3×3的分离卷积(sep_conv_3x3)、卷积核大小为5×5的分离卷积(sep_conv_5x5)、卷积核大小为3×3且空洞率为2的空洞卷积(dil_conv_3x3)、卷积核大小为5×5且空洞率为2的空洞卷积(dil_conv_5x5)、skip-connect操作或置零操作(相应位置所有神经元置零,简称Zero)等,即可从这些运算方式中提取参数,得到神经元内部的参数,即权重参数;上一层神经元的输出可以作为下一层神经元的输入,每个神经元的输出可能不相同,在输入图像输入至待量化模型后,提取各个神经元输出的特征值,即可得到特征参数。神经元内部的参数或者各个神经元的输出的特征值即可组成参数集合802。
随后,对参数集合802中的参数进行聚类,得到多种分类数据803。
如通过K-Means聚类、均值漂移聚类或者DBSCAN等聚类方式进行聚类,将参数分为多种类型,并从每种类型的参数中截取一定数量的参数,从而减少对异常参数的量化,提高模型的表达能力。例如,可以将权重参数和特征参数分别进行分类,从而避免特征参数和权重使用相同的量化参数。并且,相对于选取阈值来截断参数的方式,本申请从每种类型的参数中截取一定数量的参数,可以减少计算阈值的工作量。
通常,特征参数对于模型提取特征的影响很大,因此特征参数的离群值对于模型统计的特征的范围影响很大,进而对量化的缩放系数造成影响。例如,如图9所示,先对特征参数取绝对值,接着对绝对值按照升序进行排序,最后按照一定比例或者数量进行截断,进行后续的量化。
此外,针对加法网络,通常特征参数和权重参数使用了共享的量化参数,如图10所示,通常特征参数和权重参数的范围存在较大差异,因此如果使用激活值(特征)的范围来量化权重,大部分的权重会被截断,会极大损害量化模型的精度;如果使用权重的范围来量化激活值,只有少部分的bit位可以利用,造成bit位的浪费。而本申请提供的方法中,对参数集合进行了聚类,从而在截取参数时,即可避免权重参数和特征参数之间的截断影响,使后续对权重参数和特征参数的量化有效解耦。
可以理解为,本申请将权重参数的范围截断至特征参数覆盖的范围内,将截断后的权重参数值和特征参数值融入偏离率(bias)上,即在不影响模型精度的前提下,保留大部分权重参数和特征参数,提高量化后的轻量化模型的表达能力。
随后,对多种分类数据803进行量化,得到至少一种量化参数804。
例如,待量化模型的结构可以如图11所示,神经网络可以分为多层,每个神经远的内部的权重参数可以表示为x,特征参数表示为w。
其中,量化方式可以采用多种,如以采用对称型量化方法为例:首先,在每种分类数据中所有权重参数中找出绝对值最大项,记为max(|Xf|);其次,确定欲量化的比特数N和其数值表示范围:[-2n-1,2n-1],以INT8为例,其所能代表的数值范围为[-128,127];再次,确定权重参数的缩放系数,如表示为:scale=(2n-1-1)/max(|Xf|);最后,将该组分类数据所有参数乘以该系数后取其近似整数,这样即完成该层参数的量化。
由于scale=(2n-1-1)/max(|v|),v=x或w,即scale与max(|w|)相关,因此本申请首先提取max(|w|)作为卷积核的特征参数,接着使用k-means聚类的方式对卷积核参数进行聚类。本申请中多个共享scale的量化方案所引入的额外计算量非常少,因此不会带来功耗的提升。
随后,得到的该至少一种量化参数用于组成轻量化模型805。轻量化模型可以部署于各种设备中,如部署于手机、手环等算力较低的终端或者服务器等。
通常,随着神经网络的性能越强,神经网络的规模越大,参数也就越多,而对存储、带宽、能量以及计算资源的需求和消耗也就越大。通过本申请提供的神经网络量化方法,可以对模型进行量化,得到轻量化模型,从而可以部署于各种设备中,在降低对存储、带宽、能量以及计算资源的需求的情况下,得到输出准确的轻量化模型,适用于更多场景,泛化能力更强。
本申请提供的方法可以部署于各种终端或者服务器中,尤其在资源受限的设备中,通过本申请提供的方法可以在保障模型的表达能力的情况下,得到量化后的轻量化模型,从而在资源受限的设备中也可以得到更准确的输出结果。
例如,本申请提供的方法可以部署于神经网络加速器中,神经网络加速器即在硬件模块中通过采用并行计算等方式提升卷积网络的运行速度。本申请针对加法网络可以大幅降低硬件资源消耗,继而能更充分利用硬件资源构建更高并行度的卷积加速模块,进一步提升加速效果。
又例如,本申请提供的方法可以部署于低功耗AI芯片,在人工神经网络芯片的硬件终端部署上,功耗问题是核心问题。本申请针对加法卷积核可以有效降低电路的运行功耗,利于AI芯片在资源受限的终端设备进行部署。
为便于理解,在一些常用的数据集中部署本申请提供的方法的效果可以如表1所示。
Figure BDA0003669766310000141
表1
由表1可知,在较高bit量化时(如8、6、5),本申请所提出的分组共享scale的量化方案在仅使用后量化(PTQ)时,量化模型精度损失很小。在4bit量化时,通过训练量化(QAT),量化模型精度的损失也很小。
此外,在ImageNet中也进行了测试,如表2所示。
Figure BDA0003669766310000142
Figure BDA0003669766310000151
表2
由表2可知,在较高bit量化时(8、6、5),本发明所提出的分组共享scale的量化方案在仅使用后量化(PTQ)时,量化模型精度损失很小。在4bit量化时,通过训练量化(QAT),量化模型精度的损失也很小。
图12对比了本申请所提出的方案与常用的针对加法网络的量化方案的精度对比,可知,在4bit量化时,本申请提供的方法的量化精度更高。
前述对本申请提供的方法的流程进行了详细介绍,下面对执行前述方法的装置进行介绍。
参阅图13,本申请提供的一种神经网络参数量化装置的结构示意图,该神经网络参数量化装置包括:
获取模块1301,用于获取待量化模型中各个神经元的参数,得到参数集合;
聚类模块1302,用于对参数集合进行聚类,得到多种分类数据;
量化模块1303,用于对多种分类数据中的每种分类数据进行量化,得到至少一种量化参数,至少一种量化参数用于得到压缩模型,至少一种量化参数的精度低于待量化模型中的参数的精度。
在一种可能的实施方式中,聚类模块1302,具体用于:对参数集合进行聚类,得到至少一种聚类数据;从至少一种聚类数据中的每种聚类数据中截取预设数量的参数,得到多种分类数据。
在一种可能的实施方式中,待量化模型中的参数包括每个神经元的输出的特征中的参数或者每个神经元内的参数值。
在一种可能的实施方式中,待量化模型包括加法神经网络。
在一种可能的实施方式中,压缩模型用于进行图像识别、分类任务或者目标检测中的至少一种。
请参阅图14,本申请提供的另一种神经网络参数量化装置的结构示意图,如下所述。
该神经网络参数量化装置可以包括处理器1401和存储器1402。该处理器1401和存储器1402通过线路互联。其中,存储器1402中存储有程序指令和数据。
存储器1402中存储了前述图7-图12中的步骤对应的程序指令以及数据。
处理器1401用于执行前述图7-图12中任一实施例所示的神经网络参数量化装置执行的方法步骤。
可选地,该神经网络参数量化装置还可以包括收发器1403,用于接收或者发送数据。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上行驶时,使得计算机执行如前述图7-图12所示实施例描述的方法中的步骤。
可选地,前述的图14中所示的神经网络参数量化装置为芯片。
本申请实施例还提供了一种神经网络参数量化装置,该神经网络参数量化装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图7-图12中任一实施例所示的神经网络参数量化装置执行的方法步骤。
本申请实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1401,或者处理器1401的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中神经网络参数量化装置执行的动作。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上行驶时,使得计算机执行如前述图7-图12所示实施例描述的方法中神经网络参数量化装置所执行的步骤。
本申请实施例提供的神经网络参数量化装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图7-图12所示实施例描述的神经网络参数量化方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体地,前述的处理单元或者处理器可以是中央处理器(central processingunit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
示例性地,请参阅图15,图15为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 150,NPU 150作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路1503,通过控制器1504控制运算电路1503提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1503内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路1503是二维脉动阵列。运算电路1503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1508中。
统一存储器1506用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)1505,DMAC被搬运到权重存储器1502中。输入数据也通过DMAC被搬运到统一存储器1506中。
总线接口单元(bus interface unit,BIU)1510,用于AXI总线与DMAC和取指存储器(instruction fetch buffer,IFB)1509的交互。
总线接口单元1510(bus interface unit,BIU),用于取指存储器1509从外部存储器获取指令,还用于存储单元访问控制器1505从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1506或将权重数据搬运到权重存储器1502中或将输入数据数据搬运到输入存储器1501中。
向量计算单元1507包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如批归一化(batch normalization),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1507能将经处理的输出的向量存储到统一存储器1506。例如,向量计算单元1507可以将线性函数和/或非线性函数应用到运算电路1503的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1507生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1503的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1504连接的取指存储器(instruction fetch buffer)1509,用于存储控制器1504使用的指令;
统一存储器1506,输入存储器1501,权重存储器1502以及取指存储器1509均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,循环神经网络中各层的运算可以由运算电路1503或向量计算单元1507执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述图7-图12的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
最后应说明的是:以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (12)

1.一种神经网络参数量化方法,其特征在于,包括:
获取待量化模型中各个神经元的参数,得到参数集合;
对所述参数集合进行聚类,得到多种分类数据;
对所述多种分类数据中的每种分类数据进行量化,得到至少一种量化参数,所述至少一种量化参数用于得到压缩模型,所述至少一种量化参数的精度低于所述待量化模型中的参数的精度。
2.根据权利要求1所述的方法,其特征在于,所述对所述参数集合进行聚类,得到多种分类数据,包括:
对所述参数集合进行聚类,得到至少一种聚类数据;
从所述至少一种聚类数据中的每种聚类数据中截取预设数量的参数,得到所述多种分类数据。
3.根据权利要求1或2所述的方法,其特征在于,所述待量化模型中的参数包括每个神经元的输出的特征中的参数或者每个神经元内的参数值。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述待量化模型包括加法神经网络。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述压缩模型用于进行图像识别、分类任务或者目标检测中的至少一种。
6.一种神经网络参数量化装置,其特征在于,包括:
获取模块,用于获取待量化模型中各个神经元的参数,得到参数集合;
聚类模块,用于对所述参数集合进行聚类,得到多种分类数据;
量化模块,用于对所述多种分类数据中的每种分类数据进行量化,得到至少一种量化参数,所述至少一种量化参数用于得到压缩模型,所述至少一种量化参数的精度低于所述待量化模型中的参数的精度。
7.根据权利要求6所述的装置,其特征在于,所述聚类模块,具体用于:
对所述参数集合进行聚类,得到至少一种聚类数据;
从所述至少一种聚类数据中的每种聚类数据中截取预设数量的参数,得到所述多种分类数据。
8.根据权利要求6或7所述的装置,其特征在于,所述待量化模型中的参数包括每个神经元的输出的特征中的参数或者每个神经元内的参数值。
9.根据权利要求6-8中任一项所述的装置,其特征在于,所述待量化模型包括加法神经网络。
10.根据权利要求6-10中任一项所述的装置,其特征在于,所述压缩模型用于进行图像识别、分类任务或者目标检测中的至少一种。
11.一种神经网络参数量化装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,包括程序,当其被处理单元所执行时,执行如权利要求1至5中任一项所述的方法。
CN202210600648.7A 2022-05-30 2022-05-30 一种神经网络参数量化方法和装置 Pending CN115081588A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210600648.7A CN115081588A (zh) 2022-05-30 2022-05-30 一种神经网络参数量化方法和装置
PCT/CN2023/095019 WO2023231794A1 (zh) 2022-05-30 2023-05-18 一种神经网络参数量化方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210600648.7A CN115081588A (zh) 2022-05-30 2022-05-30 一种神经网络参数量化方法和装置

Publications (1)

Publication Number Publication Date
CN115081588A true CN115081588A (zh) 2022-09-20

Family

ID=83250263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210600648.7A Pending CN115081588A (zh) 2022-05-30 2022-05-30 一种神经网络参数量化方法和装置

Country Status (2)

Country Link
CN (1) CN115081588A (zh)
WO (1) WO2023231794A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115589436A (zh) * 2022-12-14 2023-01-10 三亚海兰寰宇海洋信息科技有限公司 一种数据处理方法、装置及设备
CN116579407A (zh) * 2023-05-19 2023-08-11 北京百度网讯科技有限公司 神经网络模型的压缩方法、训练方法、处理方法和装置
CN116702861A (zh) * 2023-06-19 2023-09-05 北京百度网讯科技有限公司 深度学习模型的压缩方法、训练方法、处理方法和装置
WO2023231794A1 (zh) * 2022-05-30 2023-12-07 华为技术有限公司 一种神经网络参数量化方法和装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114492779A (zh) * 2022-02-16 2022-05-13 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3627397B1 (en) * 2017-10-20 2022-07-27 Shanghai Cambricon Information Technology Co., Ltd Processing method and apparatus
CN110874627B (zh) * 2018-09-04 2024-06-28 华为技术有限公司 数据处理方法、数据处理装置及计算机可读介质
CN109859281B (zh) * 2019-01-25 2022-12-02 杭州国芯科技股份有限公司 一种稀疏神经网络的压缩编码方法
CN110309904B (zh) * 2019-01-29 2022-08-09 广州红贝科技有限公司 一种神经网络压缩方法
KR102152374B1 (ko) * 2019-02-25 2020-09-07 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
CN113222098A (zh) * 2020-01-21 2021-08-06 上海商汤智能科技有限公司 数据处理方法和相关产品
CN115081588A (zh) * 2022-05-30 2022-09-20 华为技术有限公司 一种神经网络参数量化方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023231794A1 (zh) * 2022-05-30 2023-12-07 华为技术有限公司 一种神经网络参数量化方法和装置
CN115589436A (zh) * 2022-12-14 2023-01-10 三亚海兰寰宇海洋信息科技有限公司 一种数据处理方法、装置及设备
CN116579407A (zh) * 2023-05-19 2023-08-11 北京百度网讯科技有限公司 神经网络模型的压缩方法、训练方法、处理方法和装置
CN116579407B (zh) * 2023-05-19 2024-02-13 北京百度网讯科技有限公司 神经网络模型的压缩方法、训练方法、处理方法和装置
CN116702861A (zh) * 2023-06-19 2023-09-05 北京百度网讯科技有限公司 深度学习模型的压缩方法、训练方法、处理方法和装置
CN116702861B (zh) * 2023-06-19 2024-03-01 北京百度网讯科技有限公司 深度学习模型的压缩方法、训练方法、处理方法和装置

Also Published As

Publication number Publication date
WO2023231794A1 (zh) 2023-12-07

Similar Documents

Publication Publication Date Title
WO2022083536A1 (zh) 一种神经网络构建方法以及装置
CN110084281B (zh) 图像生成方法、神经网络的压缩方法及相关装置、设备
CN110175671B (zh) 神经网络的构建方法、图像处理方法及装置
WO2022042713A1 (zh) 一种用于计算设备的深度学习训练方法和装置
CN113011575A (zh) 神经网络模型更新方法、图像处理方法及装置
CN115081588A (zh) 一种神经网络参数量化方法和装置
WO2022052601A1 (zh) 神经网络模型的训练方法、图像处理方法及装置
WO2022001805A1 (zh) 一种神经网络蒸馏方法及装置
CN113705769A (zh) 一种神经网络训练方法以及装置
CN111368972B (zh) 一种卷积层量化方法及其装置
CN110222718B (zh) 图像处理的方法及装置
WO2022111617A1 (zh) 一种模型训练方法及装置
CN113570029A (zh) 获取神经网络模型的方法、图像处理方法及装置
CN114997412A (zh) 一种推荐方法、训练方法以及装置
WO2022012668A1 (zh) 一种训练集处理方法和装置
WO2022161387A1 (zh) 一种神经网络的训练方法及相关设备
CN113592060A (zh) 一种神经网络优化方法以及装置
CN112257759A (zh) 一种图像处理的方法以及装置
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
CN114359289A (zh) 一种图像处理方法及相关装置
CN113627163A (zh) 一种注意力模型、特征提取方法及相关装置
CN114698395A (zh) 神经网络模型的量化方法和装置、数据处理的方法和装置
CN113536970A (zh) 一种视频分类模型的训练方法及相关装置
CN113066018A (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