CN115952855A - 神经网络量化方法、装置及设备 - Google Patents
神经网络量化方法、装置及设备 Download PDFInfo
- Publication number
- CN115952855A CN115952855A CN202211274626.2A CN202211274626A CN115952855A CN 115952855 A CN115952855 A CN 115952855A CN 202211274626 A CN202211274626 A CN 202211274626A CN 115952855 A CN115952855 A CN 115952855A
- Authority
- CN
- China
- Prior art keywords
- quantization
- model
- determining
- layer
- training
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Analysis (AREA)
Abstract
本申请提供一种神经网络量化方法、装置及设备,该方法包括:在预训练神经网络模型中,确定每层的权重和激活值的值域范围;根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法;基于备选量化算法训练初始量化参数,得到第一量化参数以及第一量化模型;若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。这样,通过综合各层的值域范围来选取至少一种预设量化算法进行组合优化,并在量化训练基于精度判断确定出目标量化模型,能够提高量化模型整体的精度,降低量化误差。
Description
技术领域
本申请涉及神经网络技术领域,尤其涉及一种神经网络量化方法、装置及设备。
背景技术
随着人工智能技术的不断发展,神经网络技术的应用越来越广泛。神经网络模型通常是采用浮点进行训练的,具有较大的参数量和计算量,并且内存占用也较大。而模型量化可以是指将信号的连续取值近似为有限多个离散值的过程。模型量化可以为神经网络模型压缩参数、提升速度以及降低内存占用,能够有效提升神经网络的性能。
相关技术通常采用训练后量化(Post Training Quantization,PTQ)等方式对神经网络进行量化,这种量化方式基于每层数值进行量化,量化后的神经网络模型整体精度不高,量化误差较大。
发明内容
本申请提供一种神经网络量化方法、装置及设备,能够提高神经网络量化后模型的整体精度,降低量化误差。
第一方面,本申请实施例提供一种神经网络量化方法,包括:
在预训练神经网络模型中,确定每层的权重和激活值的值域范围;
根据所述值域范围,确定备选量化算法以及初始量化参数;所述备选量化算法中包括至少一种预设量化算法;
基于所述备选量化算法训练所述初始量化参数,得到第一量化参数以及第一量化模型;
若所述第一量化模型的精度大于或者等于预设精度阈值,将所述第一量化参数确定为目标量化参数,并且将所述第一量化模型确定为目标量化模型。
在一种可能的实施方式中,所述确定每层的权重和激活值的值域范围,包括:
以预设校准数据集为输入,对所述预训练神经网络模型进行浮点推理,确定每层的第一数值分布;
根据所述第一数值分布,确定出每层的权重和激活值的值域范围。
在一种可能的实施方式中,所述基于所述备选量化算法训练所述初始量化参数,得到第一量化参数以及第一量化模型,包括:
确定训练数据集;
以所述训练数据集为输入,采用初始量化参数对所述预训练神经网络模型进行训练,得到所述第一量化参数以及所述第一量化模型。
在一种可能的实施方式中,所述方法还包括:
若所述第一量化模型的精度小于预设精度阈值,重新确定备选量化算法以及初始量化参数并进行训练,直至所述第一量化模型满足预设精度阈值。
在一种可能的实施方式中,所述方法还包括:
确定验证数据集,并以验证数据集为输入,统计所述目标量化模型每层的第二数值分布;
基于所述第二数值分布与所述第一数值分布,确定量化误差并生成误差分布表。
在一种可能的实施方式中,所述方法还包括:
以验证数据集为输入,对目标量化模型进行推理,获取推理结果;
确定推理结果错误时对应的错误样本,并确定所述错误样本在所述目标量化模型中的第一逐层计算结果;
获取所述错误样本在所述预训练神经网络模型中的第二逐层计算结果;
根据所述第一逐层计算结果以及所述第二逐层计算结果,生成结果比较表。
在一种可能的实施方式中,所述预设量化算法包括对称量化、非对称量化、按通道量化或者预设位数量化。
第二方面,本申请实施例提供一种神经网络量化装置,包括:
第一确定模块,用于在预训练神经网络模型中,确定每层的权重和激活值的值域范围;
第二确定模块,用于根据所述值域范围,确定备选量化算法以及初始量化参数;所述备选量化算法中包括至少一种预设量化算法;
训练模块,用于基于所述备选量化算法训练所述初始量化参数,得到第一量化参数以及第一量化模型;
第三确定模块,用于若所述第一量化模型的精度大于或者等于预设精度阈值,将所述第一量化参数确定为目标量化参数,并且将所述第一量化模型确定为目标量化模型。
在一种可能的实施方式中,所述第一确定模块,具体用于:
以预设校准数据集为输入,对所述预训练神经网络模型进行浮点推理,确定每层的第一数值分布;
根据所述第一数值分布,确定出每层的权重和激活值的值域范围。
在一种可能的实施方式中,所述训练模块,具体用于:
确定训练数据集;
以所述训练数据集为输入,采用初始量化参数对所述预训练神经网络模型进行训练,得到所述第一量化参数以及所述第一量化模型。
在一种可能的实施方式中,所述装置还用于:
若所述第一量化模型的精度小于预设精度阈值,重新确定备选量化算法以及初始量化参数并进行训练,直至所述第一量化模型满足预设精度阈值。
在一种可能的实施方式中,所述装置还用于:
确定验证数据集,并以验证数据集为输入,统计所述目标量化模型每层的第二数值分布;
基于所述第二数值分布与所述第一数值分布,确定量化误差并生成误差分布表。
在一种可能的实施方式中,所述装置还用于:
以验证数据集为输入,对目标量化模型进行推理,获取推理结果;
确定推理结果错误时对应的错误样本,并确定所述错误样本在所述目标量化模型中的第一逐层计算结果;
获取所述错误样本在所述预训练神经网络模型中的第二逐层计算结果;
根据所述第一逐层计算结果以及所述第二逐层计算结果,生成结果比较表。
在一种可能的实施方式中,所述预设量化算法包括对称量化、非对称量化、按通道量化或者预设位数量化。
第三方面,本申请实施例提供一种设备,包括:处理器、存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,实现如第一方面任一项所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被执行时用于实现第一方面任一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被执行时实现第一方面任一项所述的方法。
第六方面,本申请实施例提供一种芯片,所述芯片上存储有计算机程序,所述计算机程序被所述芯片执行时,实现如第一方面任一项所述的方法。
第七方面,本申请实施例提供一种芯片模组,所述芯片模组上存储有计算机程序,所述计算机程序被所述芯片执行时,实现如第一方面任一项所述的方法。
本申请实施例提供的神经网络量化方法、装置及设备,在预训练神经网络模型中,确定每层的权重和激活值的值域范围;根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法;基于备选量化算法训练初始量化参数,得到第一量化参数以及第一量化模型;若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。这样,通过综合各层的值域范围来选取至少一种预设量化算法进行组合优化,并在量化训练基于精度判断确定出目标量化模型,能够提高量化模型整体的精度,降低量化误差。
附图说明
图1为本申请实施例提供的应用场景示意图;
图2为一种训练后量化的示意图;
图3为一种量化感知训练的示意图;
图4为本申请实施例提供的一种神经网络量化方法的流程示意图;
图5为本申请实施例提供的另一种神经网络量化方法的流程示意图;
图6为本申请实施例提供的一种备选量化算法确定的处理逻辑示意图;
图7为本申请实施例提供的一种神经网络量化的处理逻辑示意图;
图8为本申请实施例提供的一种神经网络量化装置的结构示意图;
图9为本申请实施例提供的一种神经网络量化设备的结构示意图。
具体实施方式
为使本领域技术人员更好地理解本申请的技术方案,下面结合附图和实施例对本申请作进一步详细描述。应当理解的是,此处描述的具体实施例和附图仅仅用于解释本申请,而并非对本申请的限定。
图1为本申请实施例提供的应用场景示意图。请参见图1,包括预训练神经网络模型101以及目标量化模型102。对预训练神经网络模型101进行量化处理之后,即可得到目标量化模型102。
神经网络模型的种类多样,可以包括深度神经网络(Deep Neural Networks,DNN)、卷积神经网络(Convolutional Neural Network,CNN)等。神经网络模型一般是使用浮点训练的,具有较大的参数量和计算量,并且内存占用也较大,在一般的神经网络处理器(Neural-network Processing Units,NPU)中通常需量化后才能执行推理。量化可以是将浮点存储或者运算转换为整型存储或者运算的一种模型压缩技术,具体是将原本用浮点数表示的神经网络通过量化,调整为用定点数表示,来减小存储空间、提升速度。
应理解,浮点数中小数点的位置是不固定的,用阶码和尾数来表示。通常尾数为纯小数,阶码为整数,尾数和阶码均为带符号数。尾数的符号表示数的正负;阶码的符号则表明小数点的实际位置。定点数指小数点在数中的位置是固定不变的,通常有定点整数和定点小数。在对小数点位置作出选择之后,运算中的所有数均应统一为定点整数或定点小数,在运算中不再考虑小数问题。
在相关技术中,在对神经网络进行量化处理时,通常采用训练后量化(PostTraining Quantization,PTQ)方式或者量化感知训练(Quantization Aware Training,QAT)等方式。具体介绍如下:
图2为一种训练后量化的示意图。如图2中所示出的,在PTQ量化方式中,针对神经网络的浮点模型,用户自主选择一种量化方法进行量化处理得到量化模型,之后进行量化推理,若精度符合预期,则量化完成;若精度不符合预期,则重新选择量化方法进行量化处理,直至精度符合预期。
训练后量化PTQ的量化方式存在如下缺点:PTQ量化方式只通过每层数值统计后进行截断量化的方式得到量化参数,无法得到全局最优的量化参数;并且,随着量化算法的增多,用户针对一个神经网络模型需要多次尝试各种量化方法并需要多次测试来确定最佳量化算法,用户工作量大,操作繁琐。
图3示出了一种量化感知训练的示意图。如图3中所示出的,在QAT量化方式中,针对神经网络的浮点模型,基于训练数据集进行量化感知训练,若满足收敛条件则可以得到定点量化模型,若不满足收敛条件,则继续进行量化感知训练。
量化感知训练QAT的量化方式存在如下缺点:需要有用户的所有训练数据,以及训练工程,改造成QAT方式进行训练,工作量增加较多,对于有些无法获取到训练数据的模型,无法工作;QAT训练框架约束较大,支持所有的框架QAT比较困难;训练时间长,且量化训练可能存在不收敛的风险,整体量化精度不高。
由此可见,相关技术中的量化方法,整体精度不高,量化误差也较大。
在本申请实施例中,在预训练神经网络模型中,确定每层的权重和激活值的值域范围;根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法;基于备选量化算法训练初始量化参数,得到第一量化参数以及第一量化模型;若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。这样,通过综合各层的值域范围来选取至少一种预设量化算法进行组合优化,并在量化训练基于精度判断确定出目标量化模型,能够提高量化模型整体的精度,降低量化误差。
以下通过具体实施例对本申请所示的方案进行详细说明。需要说明的是,下面几个实施例可以独立存在,也可以相互结合,对于相同或相似的内容,在不同的实施例中不再重复说明。
以下结合图4所示的实施例,对神经网络量化的过程进行说明。
图4为本申请实施例提供的一种神经网络量化方法的流程示意图。请参见图4,该方法可以包括:
S401、在预训练神经网络模型中,确定每层的权重和激活值的值域范围。
本申请实施例中,神经网络量化的过程可以由终端设备执行,该终端设备具体可以为电脑或者移动终端等,本申请实施例对此不作限定。
本申请实施例中,预训练神经网络模型可以是指待量化处理的神经网络模型,预训练神经网络模型可以是浮点模型。权重(weight)和激活值(activation)是神经网络每层的内部参数,值域范围可以是指这两个参数的取值区间。
S402、根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法。
本申请实施例中,备选量化算法可以是指一种预设量化算法,也可以是指多种预设量化算法的组合,该预设量化算法可以是指预先设置的量化算法。初始量化参数可以是指量化参数的初始值。
具体的,在确定出每层的权重和激活值的值域范围之后,终端设备可以综合各层的值域范围,确定备选量化算法,并基于值域范围来计算初始量化参数。示例性地,终端设备可以将进行各层的值域范围进行合并处理,例如可以取交集等。这样,可以避免仅根据每层的值域范围进行截断处理造成的整体精度不高的情况,减少量化误差。
S403、基于备选量化算法训练初始量化参数,得到第一量化参数以及第一量化模型。
本申请实施例中,第一量化参数可以是指基于备选量化参数进行训练后得到的量化参数。第一量化模型可以是指基于备选量化参数进行训练后得到的量化模型。具体训练过程可以参照神经网络的训练过程,本申请实施例在此不再展开描述。
S404、若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。
本申请实施例中,预设精度阈值可以是指预先设置的量化模型的准确度临界值,具体可以用百分数等形式表示,例如95%等,本申请实施例对此不作限制。当基于第一量化模型进行推理时,若第一量化模型的精度大于或者等于预设精度阈值,此时可以确定第一量化模型的整体精度满足预期,可以将该第一量化模型作为目标量化模型,将第一量化参数作为目标量化参数。
本申请实施例提供的神经网络量化方法,在预训练神经网络模型中,确定每层的权重和激活值的值域范围;根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法;基于备选量化算法训练初始量化参数,得到第一量化参数以及第一量化模型;若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。这样,通过综合各层的值域范围来选取至少一种预设量化算法进行组合优化,并在量化训练基于精度判断确定出目标量化模型,能够提高量化模型整体的精度,降低量化误差。
在上述任意一个实施例的基础上,下面,结合图5所示的实施例,对神经网络量化的过程进行详细说明。
图5为本申请实施例提供的又一种神经网络量化方法的流程示意图。请参见图5,该方法可以包括:
S501、以预设校准数据集为输入,对预训练神经网络模型进行浮点推理,确定每层的第一数值分布;根据数值分布情况,确定出每层的权重和激活值的值域范围。
本申请实施例中,预设校准数据集可以是指人工标注的数据集。第一数值分布可以是指预训练神经网络模型中每层的数据分布情况。
具体的,终端设备可以使用校准数据集作为预训练神经网络网络模型的输入,在前向浮点推理过程中,统计出每层的数值分布情况,得到第一数值分布,之后可以根据第一数值分布来确定出每层的权重和激活值的值域范围。
S502、根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法。
本申请实施例中,终端设备可以基于每层的权重和激活值的值域范围,确定出备选量化算法,并对量化参数进行初始化,得到初始量化参数。
在一种可能的实施方式中,预设量化算法包括对称量化、非对称量化、按通道量化或者预设位数量化。
本申请实施例中,预设位数量化可以是指8位(bit)量化或者16位量化。需要说明的是,上述预设量化算法仅仅为示例,预设量化算法也可以包括其他量化算法,本申请实施例对此不作限定。
S503、确定训练数据集;以训练数据集为输入,采用初始量化参数对预训练神经网络模型进行训练,得到第一量化参数以及第一量化模型。
本申请实施例中,训练数据集可以人工标注的数据集。在确定出备选量化方法以及初始量化参数之后,可以对预训练神经网络模型进行量化训练,得到第一量化参数以及第一量化模型。
具体的,采用随机梯度下降法进行量化训练。损失函数则通过任务是否失败分段加权后的量化误差计算得到。示例性地,损失函数的形式具体可以如下:
QLoss=f(taskerr)*abs(float(x)-int(x))
其中,QLoss为损失值,taskerr用于表示任务是否失败,即精度是否满足预期要求,取值为1,表明满足预期要求,取值为0,表明不满足预期要求。分段函数f(taskerr)在taskerr取值为1时,f(taskerr)为1;取值为0时,f(taskerr)为0.1,这样可以提升错误样本的损失权重。abs为取绝对值,float为浮点数据,int为整形数据,x可以为具体的训练值。当然,损失函数也可以采用其他形式,本申请实施例对此不作限定。
本申请实施例中,量化训练的具体过程可以参照常规神经网络的训练过程,在此不再展开描述。
S504、若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。
S505、若第一量化模型的精度小于预设精度阈值,重新确定备选量化算法以及初始量化参数并进行训练,直至第一量化模型满足预设精度阈值。
本申请实施例中,若第一量化模型的精度满足不小于预设精度阈值,此时终端设备可以确定第一量化模型满足预期要求,量化过程已经完成,可以将第一量化模型作为目标量化模型并将第一量化参数作为目标量化参数。
若第一量化模型的精度小于预设精度阈值,此时终端设备可以确定第一量化模型不满足预期要求,可以基于值域范围重新确定备选量化算法以及初始量化参数,重新进行训练得到新的第一量化模型,并将新的第一量化模型的精度与预设精度阈值作对比,若满足预期要求,则量化完成,否则再次确定备选量化算法以及初始量化参数并执行上述过程,直至训练出的第一量化模型的精度不小于预设精度阈值为止。这样,通过精度判断的方式来确定目标量化模型,能够提高量化模型的整体精度,进一步降低量化误差。
示例性地,图6为本申请实施例提供的一种备选量化算法确定的处理逻辑示意图。如图6所示出的,在确定出每层权重和激活值的值域范围之后,终端设备首先可以选择8位对称量化方法作为备选量化方法,在进行量化训练后得到第一量化模型,若精度满足要求,即第一量化模型的精度不小于预设精度阈值,则量化完成;若精度不满足要求,终端设备可以将8位非对称量化方法作为备选量化方法,进行量化训练,依次类推,终端设备后续可以分别将8位按通道量化方法、16位对称量化方法、16位非对称量化方法以及16位按通道量化方法进行量化训练,直至第一量化模型的精度满足预期要求为止。这样,对支持的量化算法进行按照组合优化方式进行分段训练,可以帮助用户找到推理速度、误差综合评估最佳的量化算法组合,简化用户的操作。
S506、确定验证数据集,并以验证数据集为输入,统计目标量化模型每层的第二数值分布。
S507、基于第二数值分布与第一数值分布,确定量化误差并生成误差分布表。
本申请实施例中,验证数据集可以是指人工标注的数据集。该验证数据集和训练数据集可以是从预设校准数据集中划分得到的,也可以是除预设校准数据集之外的其他人工标注数据等,本申请实施例对此不作限定。在得到目标量化模型之后,终端设备可以根据验证数据集确定出目标量化模型每层的数值分布情况,得到第二数值分布。之后将预训练神经网络模型的第一数值分布与目标量化模型的第二数值分布进行对比,确定出量化误差并输出误差分布表。
具体的,终端设备根据验证集逐层统计量化误差并输出误差分布表,该误差分布表中包括目标量化模型相比于浮点模型每层数值的量化误差,可以用于指导用户优化模型。用户通过查看每层的量化误差,可以找到目标量化模型在哪层有效响应的动态范围过大(输出结果的范围过大)导致的误差过大,从而指导用户通过正则化等方式来减少该层动态范围,进一步提升神经网络模型的量化友好性,减小量化误差。
S508、以验证数据集为输入,对目标量化模型进行推理,获取推理结果;确定推理结果错误时对应的错误样本,并确定错误样本在目标量化模型中的第一逐层计算结果。
S509、获取错误样本在预训练神经网络模型中的第二逐层计算结果;根据第一逐层计算结果以及第二逐层计算结果,生成结果比较表。
本申请实施例中,错误样本可以是指目标量化模型推理结果错误的样本,也可以称为失效样本等。对于目标量化模型在验证数据集上推理结果错误的错误样本,终端设备可以确定出该错误样本在目标量化模型的第一逐层计算结果,同时确定出错误样本在预训练神经网络模型中的第二逐层计算结果(浮点结果),输出结果比较表,能够方便用户分析模型错误或者失效的原因。
针对每个推理结果错误的样本,用户通过逐层结果比较,可以明确失效的原因。例如,失效原因可以是响应较小量化后不过门限,还是某一层的动态范围过大导致量化误差过大导致的失效。针对不同的失效原因,可以指导用户采取不同的优化策略对模型进行重训优化,进一步提高模型的精度。
示例性地,图7为本申请实施例提供的一种神经网络量化的处理逻辑示意图。如图7所示出的,针对预训练神经网络模型,可以先将预设校准数据集作为输入,进行前向浮点推理,确定出各层的第一数值分布,并进一步确定出各层的权重和激活值的值域范围;之后根据该值域范围来确定备选量化算法和初始量化参数。之后,基于训练数据集以及备选量化算法,进行量化参数的训练,得到第一量化参数和第一量化模型;然后确定第一量化模型的精度是否大于或者等于预设精度阈值,若是,则将第一量化模型作为目标量化模型;若否,则重新选择备选量化参数进行训练,直至精度满足预期为止。
在确定出目标量化模型之后,终端设备可以基于验证数据集,逐层统计目标量化模型的量化误差并输出误差分析表,能够直观地展示每层的量化误差,辅助用户对目标量化模型进行优化调整;终端设备也可以基于验证集中推理结果错误的错误样本,输出目标量化模型与浮点模型(预训练神经网络模型)的逐层计算结果对比表,方便用户分析目标量化模型失效的原因,进一步提高模型的整体精度和性能。
图8为本申请实施例提供的一种神经网络量化装置的结构示意图。请参见图8,该神经网络量化装置10可以包括:
第一确定模块11,用于在预训练神经网络模型中,确定每层的权重和激活值的值域范围;
第二确定模块12,用于根据值域范围,确定备选量化算法以及初始量化参数;备选量化算法中包括至少一种预设量化算法;
训练模块13,用于基于备选量化算法训练初始量化参数,得到第一量化参数以及第一量化模型;
第三确定模块14,用于若第一量化模型的精度大于或者等于预设精度阈值,将第一量化参数确定为目标量化参数,并且将第一量化模型确定为目标量化模型。
在一种可能的实施方式中,第一确定模块11,具体用于:
以预设校准数据集为输入,对预训练神经网络模型进行浮点推理,确定每层的第一数值分布;
根据第一数值分布,确定出每层的权重和激活值的值域范围。
在一种可能的实施方式中,训练模块12,具体用于:
确定训练数据集;
以训练数据集为输入,采用初始量化参数对预训练神经网络模型进行训练,得到第一量化参数以及第一量化模型。
在一种可能的实施方式中,装置10还用于:
若第一量化模型的精度小于预设精度阈值,重新确定备选量化算法以及初始量化参数并进行训练,直至第一量化模型满足预设精度阈值。
在一种可能的实施方式中,装置10还用于:
确定验证数据集,并以验证数据集为输入,统计目标量化模型每层的第二数值分布;
基于第二数值分布与第一数值分布,确定量化误差并生成误差分布表。
在一种可能的实施方式中,装置10还用于:
以验证数据集为输入,对目标量化模型进行推理,获取推理结果;
确定推理结果错误时对应的错误样本,并确定错误样本在目标量化模型中的第一逐层计算结果;
获取错误样本在预训练神经网络模型中的第二逐层计算结果;
根据第一逐层计算结果以及第二逐层计算结果,生成结果比较表。
在一种可能的实施方式中,预设量化算法包括对称量化、非对称量化、按通道量化或者预设位数量化。
本申请实施例提供的神经网络量化装置10可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。神经网络量化装置10具体可以为芯片、芯片模组等,本申请实施例对此不作限定。
图9为本申请实施例提供的一种神经网络量化设备的结构示意图。请参见图9,神经网络量化设备20可以包括:存储器21、处理器22。示例性地,存储器21、处理器22,各部分之间通过总线23相互连接。
存储器21用于存储程序指令;
处理器22用于执行该存储器所存储的程序指令,实现上述实施例所示的神经网络量化方法。
图9实施例所示的神经网络量化设备可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当计算机执行指令被处理器执行时用于实现上述神经网络量化方法。
本申请实施例还可提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现上述神经网络量化方法。
本申请实施例提供一种芯片,该芯片上存储有计算机程序,当计算机程序被该芯片执行时,实现上述神经网络量化方法。
本申请实施例提供一种芯片模组,该芯片模组上存储有计算机程序,当计算机程序被该芯片模组执行时,实现上述神经网络量化方法。
需要说明的是,本申请实施例中提及的处理器可以是中央处理器(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(directram bus RAM,DR RAM)。需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。各个装置、产品可以应用于或者集成于芯片、芯片模组或终端设备中。示例性地,对于应用于或者集成于芯片的各个装置、产品,其包含的各个模块/芯片可以是都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的部分模块/单元可以采用电路等硬件方式实现。
在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
以上仅是本申请的部分实施例,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应当视为本申请的保护范围。
Claims (12)
1.一种神经网络量化方法,其特征在于,包括:
在预训练神经网络模型中,确定每层的权重和激活值的值域范围;
根据所述值域范围,确定备选量化算法以及初始量化参数;所述备选量化算法中包括至少一种预设量化算法;
基于所述备选量化算法训练所述初始量化参数,得到第一量化参数以及第一量化模型;
若所述第一量化模型的精度大于或者等于预设精度阈值,将所述第一量化参数确定为目标量化参数,并且将所述第一量化模型确定为目标量化模型。
2.根据权利要求1所述的方法,其特征在于,所述确定每层的权重和激活值的值域范围,包括:
以预设校准数据集为输入,对所述预训练神经网络模型进行浮点推理,确定每层的第一数值分布;
根据所述第一数值分布,确定出每层的权重和激活值的值域范围。
3.根据权利要求1所述的方法,其特征在于,所述基于所述备选量化算法训练所述初始量化参数,得到第一量化参数以及第一量化模型,包括:
确定训练数据集;
以所述训练数据集为输入,采用初始量化参数对所述预训练神经网络模型进行训练,得到所述第一量化参数以及所述第一量化模型。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一量化模型的精度小于预设精度阈值,重新确定备选量化算法以及初始量化参数并进行训练,直至所述第一量化模型满足预设精度阈值。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定验证数据集,并以验证数据集为输入,统计所述目标量化模型每层的第二数值分布;
基于所述第二数值分布与所述第一数值分布,确定量化误差并生成误差分布表。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
以验证数据集为输入,对目标量化模型进行推理,获取推理结果;
确定推理结果错误时对应的错误样本,并确定所述错误样本在所述目标量化模型中的第一逐层计算结果;
获取所述错误样本在所述预训练神经网络模型中的第二逐层计算结果;
根据所述第一逐层计算结果以及所述第二逐层计算结果,生成结果比较表。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述预设量化算法包括对称量化、非对称量化、按通道量化或者预设位数量化。
8.一种神经网络量化装置,其特征在于,包括:
第一确定模块,用于在预训练神经网络模型中,确定每层的权重和激活值的值域范围;
第二确定模块,用于根据所述值域范围,确定备选量化算法以及初始量化参数;所述备选量化算法中包括至少一种预设量化算法;
训练模块,用于基于所述备选量化算法训练所述初始量化参数,得到第一量化参数以及第一量化模型;
第三确定模块,用于若所述第一量化模型的精度大于或者等于预设精度阈值,将所述第一量化参数确定为目标量化参数,并且将所述第一量化模型确定为目标量化模型。
9.一种神经网络量化设备,其特征在于,包括:处理器、存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被执行时用于实现权利要求1至7任一项所述的方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被执行时实现权利要求1至7任一项所述的方法。
12.一种芯片,其特征在于,所述芯片上存储有计算机程序,所述计算机程序被所述芯片执行时,实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211274626.2A CN115952855A (zh) | 2022-10-18 | 2022-10-18 | 神经网络量化方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211274626.2A CN115952855A (zh) | 2022-10-18 | 2022-10-18 | 神经网络量化方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952855A true CN115952855A (zh) | 2023-04-11 |
Family
ID=87281231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211274626.2A Pending CN115952855A (zh) | 2022-10-18 | 2022-10-18 | 神经网络量化方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952855A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116153389A (zh) * | 2023-04-21 | 2023-05-23 | 之江实验室 | 蛋白质语言模型的量化方法、装置、设备和存储介质 |
CN116611495A (zh) * | 2023-06-19 | 2023-08-18 | 北京百度网讯科技有限公司 | 深度学习模型的压缩方法、训练方法、处理方法及装置 |
-
2022
- 2022-10-18 CN CN202211274626.2A patent/CN115952855A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116153389A (zh) * | 2023-04-21 | 2023-05-23 | 之江实验室 | 蛋白质语言模型的量化方法、装置、设备和存储介质 |
CN116611495A (zh) * | 2023-06-19 | 2023-08-18 | 北京百度网讯科技有限公司 | 深度学习模型的压缩方法、训练方法、处理方法及装置 |
CN116611495B (zh) * | 2023-06-19 | 2024-03-01 | 北京百度网讯科技有限公司 | 深度学习模型的压缩方法、训练方法、处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115952855A (zh) | 神经网络量化方法、装置及设备 | |
CN109840589B (zh) | 一种在fpga上运行卷积神经网络的方法和装置 | |
CN109754066B (zh) | 用于生成定点型神经网络的方法和装置 | |
US10229356B1 (en) | Error tolerant neural network model compression | |
US11741339B2 (en) | Deep neural network-based method and device for quantifying activation amount | |
CN110717585B (zh) | 神经网络模型的训练方法、数据处理方法和相关产品 | |
CN112955907A (zh) | 量化训练的长短期记忆神经网络 | |
WO2022062828A1 (zh) | 图像模型训练、图像处理方法、芯片、设备及介质 | |
CN106855952B (zh) | 基于神经网络的计算方法及装置 | |
CN111126668A (zh) | 基于图卷积网络的Spark作业时间预测方法和装置 | |
US20210049513A1 (en) | Unsupervised model evaluation method, apparatus, server, and computer-readable storage medium | |
CN111723901A (zh) | 神经网络模型的训练方法及装置 | |
CN111160531A (zh) | 神经网络模型的分布式训练方法、装置及电子设备 | |
Lee et al. | Parameter change test for nonlinear time series models with GARCH type errors | |
CN114547917A (zh) | 仿真预测方法、装置、设备及存储介质 | |
CN111260056A (zh) | 一种网络模型蒸馏方法及装置 | |
CN112561050A (zh) | 一种神经网络模型训练方法及装置 | |
CN117829149A (zh) | 一种语言模型混合训练方法、装置、电子设备和存储介质 | |
CN113610709A (zh) | 模型量化方法、装置、电子设备和计算机可读存储介质 | |
CN111598233A (zh) | 深度学习模型的压缩方法、装置及设备 | |
US12099915B2 (en) | Method and apparatus for quantizing deep neural network | |
CN114830137A (zh) | 用于生成预测模型的方法和系统 | |
CN112446461A (zh) | 一种神经网络模型训练方法及装置 | |
CN112800813A (zh) | 一种目标识别方法及装置 | |
Appolloni et al. | The binomial interpolated lattice method for step double barrier options |
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 |