CN112906294A - 用于深度学习模型的量化方法和量化装置 - Google Patents
用于深度学习模型的量化方法和量化装置 Download PDFInfo
- Publication number
- CN112906294A CN112906294A CN202110120437.9A CN202110120437A CN112906294A CN 112906294 A CN112906294 A CN 112906294A CN 202110120437 A CN202110120437 A CN 202110120437A CN 112906294 A CN112906294 A CN 112906294A
- Authority
- CN
- China
- Prior art keywords
- quantization
- model
- parameters
- parameter
- optimization
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/04—Constraint-based CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/02—Reliability analysis or reliability optimisation; Failure analysis, e.g. worst case scenario performance, failure mode and effects analysis [FMEA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Analysis (AREA)
Abstract
公开一种用于深度学习模型的量化方法和量化装置,包括:循环执行以下操作步骤,直到满足预设条件为止:基于量化参数对第一模型执行量化,获得第二模型;对第二模型进行测试获得多个优化目标参数的实际值;基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数;基于计算出的损失函数,对量化参数进行更新,并将第二模型作为第一模型;响应于循环执行的操作步骤满足预设条件,获取最优量化参数,并将基于该最优的量化参数执行量化的第一模型作为最终量化后的模型。利用本公开量化得到的模型收敛速度更快、模型的压缩效果良好、高精度量化与低精度量化混合,可以保证模型精确度且不需要微调。
Description
技术领域
本公开涉及深度学习模型的量化,更具体地讲,涉及用于深度学习模型的量化方法和量化装置。
背景技术
随着人工智能(Artificial Intelligence,AI)技术的发展,其已经可以在多种领域中应用。其中,深度学习作为AI的一个重要分支,已经在计算机视觉、语言处理以及文本处理等方面取得了突破。目前,移动端和数据中心业务都有深度学习技术的应用,但是现阶段,深度学习技术在应用阶段,对相关硬件设备的计算能力要求较高、占用的内存较多以及功耗需求大,因此造成移动端应用或者数据中心业务的负载很重。
相关技术中,利用量化深度学习模型(例如,神经网络模型)技术,以利用低精度、低功耗的神经网络芯片(例如,神经网络处理单元(Neural network Processing Unit,NPU)、张量处理单元(Tensor Processing Unit,TPU)、可编程门阵列(Field ProgrammableGate Array,FPGA)等)来降低能耗和减少推断时延,以适用于移动端应用或者数据中心的业务。
但是,相关技术中的量化深度学习模型技术方案至少具有以下缺点:(1)训练感知量化技术的量化模型训练收敛较慢;(2)将模型量化到固定精度,导致量化模型的压缩效果有限;(3)低精度量化精确度损失较大,需进行微调来恢复精度。
发明内容
本公开提供了用于深度学习模型的量化方法和量化装置,以至少解决上述相关技术中的问题,也可不解决任何上述问题。
根据本公开示例性实施方式的一个方面,提供一种用于深度学习模型的量化方法,包括:循环执行以下操作步骤,直到满足预设条件为止:基于量化参数对第一模型执行量化,获得第二模型;对第二模型进行测试获得多个优化目标参数的实际值;基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数;基于计算出的损失函数,对所述量化参数进行更新,并将第二模型作为第一模型;响应于循环执行的操作步骤满足所述预设条件,获取最优量化参数,并将基于该最优的量化参数执行量化的第一模型作为最终量化后的模型。
通过本实施例,基于量化参数执行量化,使得可以针对不同的量化参数的精度类型进行量化,避免了将模型量化到固定精度,压缩效果不好的问题,并且,也可以保证高精度量化和低精度量化的混合;再有,综合多个优化目标参数的实际值、期望值、约束值获取优化过程中的损失函数,使得能够充分考虑到各优化目标之间的冲突关系,对其进行统一优化;还有,本公开直接对预训练模型进行量化,不在训练阶段完成量化,避免了在训练阶段完成量化,量化模型训练收敛较慢的问题。因此,本公开量化后的模型相对于现有技术量化的模型,收敛速度更快、模型的压缩效果良好、高精度量化与低精度量化混合,可以保证模型精确度且不需要微调。
可选地,所述基于量化参数对第一模型执行量化,获得第二模型,包括:对所述第一模型中的每个待量化算子执行量化标注,得到仿真量化模型;基于量化参数,对所述仿真量化模型执行量化配置;基于量化配置后的仿真量化模型,计算量化系数;基于量化系数对所述仿真量化模型执行模型重写,以得到所述第二模型。通过本实施例,可以给模型的每一层配置相适应的量化参数,从而可以根据量化参数使用对应的精度类型,保证了高精度量化与低精度量化混合,综合利用各个精度量化的优势以达到较好的量化效果。
可选地,对所述第一模型中的每个待量化算子执行量化标注,包括:对每个待量化的算子插入仿真量化算子,其中,所述仿真量化算子包括量化权重的仿真量化算子和量化激活值的仿真量化算子。通过本实施例,可以方便、快速进行量化标注。
可选地,基于量化参数,对所述仿真量化模型执行量化配置,包括:分析所述量化参数与仿真量化模型中算子的层级顺序的对应关系;依据所述对应关系,将所述量化参数配置到对应的算子中。通过本实施例,根据量化参数与仿真量化模型中算子的层级顺序的对应关系,完成高精度量化和低精度量化的配置,防止后续优化过程中各算子的量化参数的混乱。
可选地,基于量化配置后的仿真量化模型,计算量化系数,包括:确定仿真量化模型中插入的每个仿真量化算子被量化配置的量化参数对应的数据的精度类型;基于浮点型数据与所述精度类型的数据之间映射关系,模拟从浮点数到整数的截取误差和取整误差,然后计算出每个仿真量化算子的量化系数。通过本实施例获取的量化系数,可以使得模型量化的更好。
可选地,基于量化系数对所述仿真量化模型执行模型重写,以得到所述第二模型,包括:针对仿真量化模型中的每个仿真量化算子,确定该仿真量化算子被量化配置的量化参数以及对应的量化系数;利用支持所述量化参数以及量化系数的低精度算子替换所述仿真量化算子。通过本实施例,实现了模型的量化。
可选地,所述目标参数包括精确度和以下参数中的至少一项:量化模型的尺寸、能耗和推断时延。通过本实施例,给出部分可以优化的目标参数。
可选地,基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数,包括:基于所述多个优化目标参数的期望值与对应的实际值之间的差值以及所述多个优化目标参数的约束值与对应的实际值之间的差值,计算损失函数。通过本实施例,根据期望值、约束值与实际值的差值计算损失函数,可以方便的获取损失函数,减少计算的复杂度。
可选地,所述损失函数的函数表达式为:
其中,t:期望值,t∈R+:对单个优化目标参数的期望值;c:约束值,c∈R+:对单个优化目标参数的限制;o:实际值,o∈R+:当前量化模型的某一优化目标参数的实际值;Δtj=tj-oj:实际值到期望值的差值;Δcj=cj-oj:实际值到约束值的差值;wj:权重因子,w∈R+,△tj 2:优化项,最小化loss时即使每一个优化目标参数向期望值靠近,每个优化目标参数的重要性由权重因子调节;wj×Δtj 2项使得最终结果权衡了各个优化目标参数;λj:惩罚因子,λ∈R+;(max(0,Δcj))2:惩罚项:当第二模型的某一项优化目标参数的实际值超过限制时会被惩罚,以使每一项优化目标参数都能到达约束要求;M:所述优化目标参数的总个数。通过本实施例,提供了一种优选的损失函数算法。
可选地,基于计算出的损失函数,对所述量化参数进行更新,包括:基于输入的函数值以及目标算法,确定并记录所述第二模型的一组新的量化参数;利用该组新的量化参数替换所述第二模型当前的量化参数;其中,所述目标算法包括贝叶斯优化算法。通过本实施例,可以快速对量化参数进行更新。
可选地,响应于循环执行的操作步骤满足所述预设条件,获取最优量化参数,包括:在满足预设条件时,筛选记录的多组量化参数中,能够使得所述损失函数的输出函数值最小的一组,作为最优量化参数;其中,所述预设条件包括迭代次数满足预设迭代次数或者迭代时长满足预设迭代时长。通过本实施例,选取损失函数的输出函数值最小的一组作为最有量化参数,保证了最优量化参数的准确度。
可选地,所述量化参数对应的精度类型包括以下至少一类:INT4、INT8和INT16。
可选地,所述量化方法还包括在初始化阶段,针对第一模型,设定一组初始量化参数,其精度类型包括以下至少一类:INT4、INT8和INT16。
根据本公开示例性实施方式的另一个方面,提供一种用于深度学习模型的量化装置,包括:混合精度量化模块,被配置为基于量化参数对第一模型执行量化,获得第二模型;对第二模型进行测试获得多个优化目标参数的实际值;多目标优化模块,被配置为基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数;自动优化器模块,被配置为基于计算出的损失函数,对所述量化参数进行更新,并将第二模型作为第一模型;响应于所述更新操作满足预设条件,获取最优的量化参数,并将基于该最优的量化参数执行量化的第一模型作为最终量化后的模型。
可选地,所述混合精度量化模块被配置为对所述第一模型中的每个待量化算子执行量化标注,得到仿真量化模型;基于量化参数,对所述仿真量化模型执行量化配置;基于量化配置后的仿真量化模型,计算量化系数;基于量化系数对所述仿真量化模型执行模型重写,以得到所述第二模型。
可选地,所述混合精度量化模块被配置为:对每个待量化的算子插入仿真量化算子,其中,所述仿真量化算子包括量化权重的仿真量化算子和量化激活值的仿真量化算子。
可选地,所述混合精度量化模块被配置为:分析所述量化参数与仿真量化模型中算子的层级顺序的对应关系;依据所述对应关系,将所述量化参数配置到对应的算子中。
可选地,所述混合精度量化模块被配置为:确定仿真量化模型中插入的每个仿真量化算子被量化配置的量化参数对应的数据的精度类型;基于浮点型数据与所述精度类型的数据之间映射关系,模拟从浮点数到整数的截取误差和取整误差,然后计算出每个仿真量化算子的量化系数。
可选地,所述混合精度量化模块被配置为:针对仿真量化模型中的每个仿真量化算子,确定该仿真量化算子被量化配置的量化参数以及对应的量化系数;利用支持所述量化参数以及量化系数的低精度算子替换所述仿真量化算子。
可选地,所述目标参数包括精确度和以下参数中的至少一项:量化模型的尺寸、能耗和推断时延。
可选地,所述多目标优化模块被配置为:基于所述多个优化目标参数的期望值与对应的实际值之间的差值以及所述多个优化目标参数的约束值与对应的实际值之间的差值,计算损失函数。
可选地,所述损失函数的函数表达式为:
其中,t:期望值,t∈R+:对单个优化目标参数的期望值;c:约束值,c∈R+:对单个优化目标参数的限制;o:实际值,o∈R+:当前量化模型的某一优化目标参数的实际值;Δtj=tj-oj:实际值到期望值的差值;Δcj=cj-oj:实际值到约束值的差值;wj:权重因子,w∈R+,△tj 2:优化项,最小化loss时即使每一个优化目标参数向期望值靠近,每个优化目标参数的重要性由权重因子调节;wj×Δtj 2项使得最终结果权衡了各个优化目标参数;λj:惩罚因子,λ∈R+;(max(0,Δcj))2:惩罚项:当第二模型的某一项优化目标参数的实际值超过限制时会被惩罚,以使每一项优化目标参数都能到达约束要求;M:所述优化目标参数的总个数。
可选地,所述自动优化器模块被配置为:基于所述损失函数的输出的函数值以及目标算法,确定并记录所述第二模型的一组新的量化参数;利用该组新的量化参数替换所述第二模型当前的量化参数;其中,所述目标算法包括贝叶斯优化算法。
可选地,所述自动优化器模块被配置为:在满足预设条件时,筛选记录的多组量化参数中,能够使得所述损失函数的输出函数值最小的一组,作为最优量化参数;其中,所述预设条件包括迭代次数满足预设迭代次数或者迭代时长满足预设迭代时长。
可选地,所述量化参数对应的精度类型包括以下至少一类:INT4、INT8和INT16。
可选地,所述量化装置还包括:初始化模块,被配置为:在初始化阶段,针对第一模型,设定一组初始量化参数,其精度类型包括INT4、INT8和/或INT16。
根据本公开示例性实施方式的再一个方面,提供一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时,实现本公开所述的用于深度学习模型的量化方法。
根据本公开示例性实施方式的又一个方面,提供一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行本公开所述的用于深度学习模型的量化方法。
利用本公开的技术方案,通过对第一模型循环执行量化后测试得到多个优化目标参数的实际值,然后根据多个优化目标参数的实际值、期望值、约束值计算损失函数以及根据确定的损失函数进行量化参数更新,最终获取最优量化参数,进而可以根据最终量化参数配置得到最终量化后模型。在此过程中,基于量化参数执行量化,使得可以针对不同的量化参数的精度类型进行量化,避免了将模型量化到固定精度,压缩效果不好的问题,并且,也可以保证高精度量化和低精度量化的混合;再有,综合多个优化目标参数的实际值、期望值、约束值获取优化过程中的损失函数,使得能够充分考虑到各优化目标之间的冲突关系,对其进行统一优化;还有,本公开直接对预训练模型进行量化,不在训练阶段完成量化,避免了在训练阶段完成量化,量化模型训练收敛较慢的问题。因此,本公开量化后的模型相对于现有技术量化的模型,收敛速度更快、模型的压缩效果良好、高精度量化与低精度量化混合,可以保证模型精确度且不需要微调。
将在接下来的描述中部分阐述本公开总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本公开总体构思的实施而得知。
附图说明
通过下面结合示例性地示出实施例的附图进行的描述,本公开的示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:
图1是示出根据本公开的示例性实施方式的用于深度学习模型的量化方法的流程图;
图2是示出根据本公开的示例性实施方式的用于深度学习模型的量化装置的框图;
图3是示出根据本公开的示例性实施方式的用于深度学习模型的量化方法的多目标自动量化流程图;
图4是示出根据本公开的示例性实施方式的卷积算子量化流程示意图;
图5是示出根据本公开的示例性实施方式的量化执行示意图;
图6是示出根据本公开的示例性实施方式的量化配置示意图;
图7是示出根据本公开的示例性实施方式的用于深度学习模型的量化方法,对初始模型量化后模型表达式片段示意图。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,本领域已知的特征的描述可被省略。
在此描述的特征可以以不同的形式来实现,而不应被解释为限于在此描述的示例。相反,已提供在此描述的示例,以仅示出实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式,所述许多可行方式在理解本申请的公开之后将是清楚的。
在此使用的术语仅用于描述各种示例,并不将用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在叙述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员在理解本公开之后通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本公开中的含义一致的含义,并且不应被理想化或过于形式化地解释。
此外,在示例的描述中,当认为公知的相关结构或功能的详细描述将引起对本公开的模糊解释时,将省略这样的详细描述。
根据本公开示例性实施方式的一个方面,提供一种用于深度学习模型的量化方法。图1是示出根据本公开的示例性实施方式的用于深度学习模型的量化方法的流程图。参照图1,所述量化方法包括循环执行的步骤S110至步骤S160,直到满足预设条件为止。
在步骤S110中,基于量化参数对第一模型执行量化,获得第二模型。
可以理解,可以通过以下方式执行上述步骤S110。
例如,按照图5,步骤S110可以细化为以下四个步骤A~D。步骤A为量化标注,步骤B为量化配置,步骤C为量化系数计算,步骤D为模型重写。
具体地,步骤A可对所述第一模型中的每个待量化算子执行量化标注,得到仿真量化模型;步骤B可基于量化参数,对所述仿真量化模型执行量化配置;步骤C可基于量化配置后的仿真量化模型,计算量化系数;步骤D可基于量化系数对所述仿真量化模型执行模型重写,以得到所述第二模型。
需要说明的是,第一模型可以为预训练的模型,即例如图3至图5示出的Pre-Trained Model。所述量化参数对应的精度类型包括INT4、INT8和/或INT16,其中,INT为整型数据Integer。
进一步地,对于步骤A可采用以下方式实现,例如,对每个待量化的算子插入仿真量化算子,其中,所述仿真量化算子包括量化权重的仿真量化算子和量化激活值的仿真量化算子。
具体地,参照图4,以卷积算子conv2d为例,插入的simQ算子(权重weight)即为量化权重的仿真量化算子,simQ(输入input)算子即为量化激活值的仿真量化算子。
可选择地,在具体执行量化时,可以进行均匀量化,即量化权重的仿真量化算子可采用非对称量化,量化激活值的仿真量化算子可采用对称量化,需要说明的是,上述量化权重的仿真量化算子也可以采用对称量化,量化激活值的仿真量化算子也可采用非对称量化。
对于步骤B可采用以下方式实现,例如,分析所述量化参数与仿真量化模型中算子的层级顺序的对应关系;依据所述对应关系,将所述量化参数配置到对应的算子中。
所述量化参数可由优化器基于损失函数生成(具体将在后文描述),可选择地,仿真量化模型内算子层级与量化参数数组中参数之间的对应关系可为一一映射。具体地,参照图6,Layers数组表示量化参数,将对应的量化参数配置到对应的算子中,其中,参数4、8、16表示将对应的仿真量化算子的计算数据的精度类型分别配置为INT4、INT8以及INT16。
例如,参照图4,预训练模型中某个卷积层conv2d原本执行FP32运算,通过仿真量化算子的量化,实现FP32到INT8转换,从而使得该conv2d可执行INT8计算,其中,FP为浮点型数据Floating Point。实际上,这一步骤B的作用就是确定模型中执行计算的多个算子(例如,卷积层)中的每一个,应该以什么样的精度执行计算。
对于步骤C,可采用以下方式实现,例如,确定仿真量化模型中插入的每个仿真量化算子被量化配置的量化参数对应的数据的精度类型;基于浮点型数据与所述精度类型的数据之间映射关系,模拟从浮点数到整数的截取误差和取整误差,然后计算出每个仿真量化算子的量化系数。
参照图6,配置的量化参数例如可为[8,4,……16,…4,8,……,4,16,…],其中,数值4表示配置的量化参数对应的数据的精度类型为INT4,类似地,数值8对应INT8,数值16对应INT16。
需说明的是,浮点型数据与所述精度类型的数据之间映射关系可以预先获取,并非本公开的重点,因此不赘述。
可以理解,可通过以下方式实现上述“模拟”截取误差和取整误差。例如,可采用KLD、Min/Max方法对激活值进行截取以及取整;采用Max/Min方法对权重值进行截取以及取整。然后基于截取值、取整值与原始的浮点型数据对比,以确定所述截取误差和取整误差。
之后,可基于“映射关系”、“截取误差”以及“取整误差”确定出每个仿真量化算子的量化系数,所述量化系数可使得数据量化后尽可能接近原始数据分布,其中所述量化系数例如可包括缩放因子(Scale Factor)和零点(Zero Point)。
对于步骤D,可采用以下方式实现,例如针对仿真量化模型中的每个仿真量化算子,确定该仿真量化算子被量化配置的量化参数以及对应的量化系数;利用支持所述量化参数以及量化系数的低精度算子替换所述仿真量化算子。
可以理解,可通过多种可用的方式执行上述“替换”。例如,参照图4示例,可以采用Mul、Round、Clip以及Cast函数,对仿真算子进行处理,得到所述低精度算子。其中,Mul函数的含义是:FP32*1/scale,即将浮点数除scale;Round函数以如下为例进行说明,Round(Mul(FP32/scale))的含义是:对数据进行取整;Clip函数以如下为例进行说明,Clip(Round(Mul(FP32/scale)),-2^(bit-1),+2^(bit-1)-1)的含义是:将小于-2^(bit-1)的数置位-2^(bit-1),例如当算子选择为INT4时,即4bit,则-2^(bit-1)为-8,将大于+2^(bit-1)的数置位+2^(bit-1)-1,当算子选择精度INT4时,即4bit,+2^(bit-1)-1为+7,即将大于+7的数置位+7;Cast函数的含义为转换FP32为INT型,(FP32)+7–>(INT4)+7)
在上述执行量化的过程中,为保证低精度量化精确度,根据量化参数对模型执行量化,使得可以根据不同的量化参数的精度类型采用不同的量化模式,如INT8、INT16采用了层级的量化模式,INT4采用了信道级量化模式,高精度的算子帮助保证精确度,低精度的算子帮助压缩模型大小和推断延时,避免了将模型量化到固定精度,压缩效果不好的问题,也实现了高精度量化和低精度量化的混合,可以保证模型精确度且不需要微调。在步骤S120中,对第二模型进行测试获得多个优化目标参数的实际值。
这里需要说明的是,参照图3、图5,其中的Val.Data为测试数据集,利用Val.Data对第二模型执行测试,具体地,对量化后模型(即第二模型)执行编译和预测,得到多个优化目标参数的实际值。
其中所述目标参数包括:所述量化模型的尺寸(Size)、精确度(Accuracy)、能耗(Power)和/或推断时延(Latency)。需要说明的是,上述目标参数包括但不限于以上参数,还可以包括其它能够表征模型性能的其它指标。
在步骤S130中,基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数。
可以理解,可通过以下方式计算损失函数。例如,可基于所述多个优化目标参数的期望值与对应的实际值之间的差值以及所述多个优化目标参数的约束值与对应的实际值之间的差值,计算损失函数,其中,所述损失函数的函数表达式为:
其中,t:期望值,t∈R+:对单个优化目标参数的期望值;c:约束值,c∈R+:对单个优化目标参数的限制;o:实际值,o∈R+:当前量化模型的某一优化目标参数的实际值;Δtj=tj-oj:实际值到期望值的差值;Δcj=cj-oj:实际值到约束值的差值;wj:权重因子,w∈R+,△tj 2:优化项,最小化loss时即使每一个优化目标参数向期望值靠近,每个优化目标参数的重要性由权重因子调节;wj×Δtj 2项使得最终结果权衡了各个优化目标参数;λj:惩罚因子,λ∈R+;(max(0,Δcj))2:惩罚项:当第二模型的某一项优化目标参数的实际值超过限制时会被惩罚,以使每一项优化目标参数都能到达约束要求;M:所述优化目标参数的总个数。
如上所述,通过将多目标期望值与约束值整合在一起,得到最终的综合代理损失函数,当损失函数值loss越小,量化模型越接近帕累托最优解。
在步骤S140中,基于计算出的损失函数,对所述量化参数进行更新,并将第二模型作为第一模型。
具体地,可通过以下方式实现更新。例如可将所述损失函数的输出的函数值输入优化器,所述优化器基于输入的函数值以及目标算法(也可以称为优化算法)执行计算,确定所述第二模型的一组新的量化参数,并记录;利用该组新的量化参数替换所述第二模型当前的量化参数;其中,所述目标算法包括贝叶斯优化算法,需要说明的是,上述目标算法不限于贝叶斯优化,还可以是强化学习(Reinforcement Learning,简称为RL),遗传算法等。
在步骤S150中,响应于循环执行的操作步骤满足所述预设条件,获取最优量化参数,并将基于该最优的量化参数执行量化的第一模型作为最终量化后的模型。
在步骤S150之前,还可以判断循环执行的操作步骤是否满足所述预设条件。
这里,所述循环执行的操作步骤为上述步骤S110至步骤S140。具体地,满足预设条件时,筛选记录的多组量化参数中,能够使得所述损失函数的输出函数值最小的一组,作为最优量化参数;其中,所述预设条件包括迭代次数满足预设迭代次数或者迭代时长满足预设迭代时长。
在一个实施例中,所述量化方法还包括在初始化阶段,针对第一模型,设定一组初始量化参数,其精度类型包括INT4、INT8和/或INT16。
可以理解,初始阶段给预训练模型一组初始量化参数,可以触发上述步骤S110至步骤S140循环执行,直至满足预设条件为止。可选择地,初始量化参数的精度类型可都设置为INT8。
下面结合图3和图7对本公开上述用于深度学习模型的量化方法进行描述:
参照图3,混合精度量化模块(MP-Quant)执行步骤S110至S120。具体地,该模块主要将原浮点数模型中每一层对应的FP32算子转化为量化配置模块设定精度的整型算子,利用NPU或GPU等的低精度计算单元加快计算执行速度。对每一层(Convolution层或Dense层)对应的激活值及权重同时进行量化,并针对量化后的模型进行编译和评估得到(ModelSize,Acc.等)信息,具体的根据不同精度量化有不同的方式(请参见发明实施例中的相关内容)。
多目标优化模块(MOO),主要用于执行步骤S130,具体地,该模块负责综合量化多个目标值,将该优化任务转换为一个综合代理损失函数。神经网络模型在实际应用的时候需要考虑多个方面,除模型的精确度外,模型的大小、推断延时和能量消耗等同样影响神经网络模型在实际场景的应用,实际应用中,多个目标之间存在冲突情况,如精确度与模型大小:模型小一般导致模型量化精确度低,综合最优解需要权衡模型的各个目标。本模块设计了一个综合代理损失函数作为量化模型的输出反馈给优化器,来同时综合优化多个目标(精确度,模型尺寸,推断时间等)。
自动优化器模块(Auto-Opt),主要用于执行步骤S140至S160。具体地,该自动优化器模块负责优选出综合最佳结果(最优帕累托解)。优化器将待量化模型作为一个黑盒函数进行优化,对模型每一层的精度量化配置当作超参数,优化器通过迭代优化的方式寻找最优帕累托解。在每一轮迭代中,优化器接受上一轮超参数作用于模型的结果作为输入,调整优化器后验概率分布,随后产生出新的超参数给下一轮迭代。当迭代次数达到预选设定的目标,或者预先设置优化时长耗尽优化器即停止继续优化,输出最优帕累托解的策略,即最佳混合精度配置(最佳量化参数)。其中,图3中示出的Config Space主要用于为优化器提供筛选数据集。
如图3所述,当循环优化迭代至预设条件情况下,从中筛选出最优的一组量化参数,作为最优量化策略(Best QStrategy),然后基于最优量化策略对模型进行量化,得到最终的量化模型。
结合图7示出的量化后模型表达式片段,针对卷积算子conv2d,由对应的FP3浮点型算子转换为INT4、INT8精度的整型算子。具体转换过程步骤参见前述的步骤S110中的步骤A~D,这里不赘述。
根据本公开示例性实施方式的另一个方面,提供一种用于深度学习模型的量化装置。其中,参照图2,量化装置200包括混合精度量化模块210、多目标优化模块220、自动优化器模块230以及初始化模块240,并且各单元之间可通行信地耦合。
混合精度量化模块210可以被配置为基于量化参数对第一模型执行量化,获得第二模型;对第二模型进行测试获得多个优化目标参数的实际值;多目标优化模块220被配置为基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数;自动优化器模块230,被配置为基于计算出的损失函数,对所述量化参数进行更新,并将第二模型作为第一模型;响应于所述更新操作满足所述预设条件,获取最优的量化参数,并将基于该最优的量化参数执行量化的第一模型作为最终量化后的模型。
应理解,本公开前述用于深度学习模型的量化方法所描述的具体特征也可类似地应用于深度学习模型的量化装置中进行类似扩展。为简化起见,未对其进行详细描述。
可选地,所述混合精度量化模块被配置为对所述第一模型中的每个待量化算子执行量化标注,得到仿真量化模型;基于量化参数,对所述仿真量化模型执行量化配置;基于量化配置后的仿真量化模型,计算量化系数;基于量化系数对所述仿真量化模型执行模型重写,以得到所述第二模型。
可选地,所述混合精度量化模块被配置为对每个待量化的算子插入仿真量化算子,其中,所述仿真量化算子包括量化权重的仿真量化算子和量化激活值的仿真量化算子。
可选地,所述混合精度量化模块被配置为分析所述量化参数与仿真量化模型中算子的层级顺序的对应关系;依据所述对应关系,将所述量化参数配置到对应的算子中。
可选地,所述混合精度量化模块被配置为确定仿真量化模型中插入的每个仿真量化算子被量化配置的量化参数对应的数据的精度类型;基于浮点型数据与所述精度类型的数据之间映射关系,模拟从浮点数到整数的截取误差和取整误差,然后计算出每个仿真量化算子的量化系数。
可选地,所述混合精度量化模块被配置为针对仿真量化模型中的每个仿真量化算子,确定该仿真量化算子被量化配置的量化参数以及对应的量化系数;利用支持所述量化参数以及量化系数的低精度算子替换所述仿真量化算子。
可选地,所述目标参数包括精确度和以下参数中的至少一项:所述量化模型的尺寸、能耗和推断时延。
可选地,所述多目标优化模块被配置为:基于所述多个优化目标参数的期望值与对应的实际值之间的差值以及所述多个优化目标参数的约束值与对应的实际值之间的差值,计算损失函数。其中,所述损失函数的函数表达式为:
其中,t:期望值,t∈R+:对单个优化目标参数的期望值;c:约束值,c∈R+:对单个优化目标参数的限制;o:实际值,o∈R+:当前量化模型的某一优化目标参数的实际值;Δtj=tj-oj:实际值到期望值的差值;Δcj=cj-oj:实际值到约束值的差值;wj:权重因子,w∈R+,△tj 2:优化项,最小化loss时即使每一个优化目标参数向期望值靠近,每个优化目标参数的重要性由权重因子调节;wj×Δtj 2项使得最终结果权衡了各个优化目标参数;λj:惩罚因子,λ∈R+;(max(0,Δcj))2:惩罚项:当第二模型的某一项优化目标参数的实际值超过限制时会被惩罚,以使每一项优化目标参数都能到达约束要求;M:所述优化目标参数的总个数。
可选地,所述自动优化器模块被配置为基于所述损失函数的输出的函数值以及目标算法,确定并记录所述第二模型的一组新的量化参数;利用该组新的量化参数替换所述第二模型当前的量化参数;其中,所述目标算法包括贝叶斯优化算法。
可选地,所述自动优化器模块被配置为在满足预设条件时,筛选记录的多组量化参数中,能够使得所述损失函数的输出函数值最小的一组,作为最优量化参数;其中,所述预设条件包括迭代次数满足预设迭代次数或者迭代时长满足预设迭代时长。
可选地,所述量化参数对应的精度类型包括以下至少一类:INT4、INT8和INT16。
可选地,所述量化装置还包括:初始化模块240,被配置为在初始化阶段,针对第一模型,设定一组初始量化参数,其精度类型包括INT4、INT8和/或INT16。
应该理解,根据本公开的示例性实施方式的用于深度学习模型的量化系统中的各个单元/模块可被实现为硬件组件和/或软件组件。本领域技术人员根据限定的各个单元/模块所执行的处理,可以例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现各个单元/模块。
根据本公开示例性实施例的再一个方面,提供一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时,实现本公开所述的用于深度学习模型的量化方法。
具体地,根据本公开的示例性实施例的用于深度学习模型的量化方法可被编写为计算机程序、代码段、指令或它们的任何组合,并被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或一个或多个非暂时性计算机可读存储介质上。所述计算机可读存储介质是可存储由计算机系统读出的数据的任意数据存储装置。计算机可读存储介质的示例包括:只读存储器、随机存取存储器、只读光盘、磁带、软盘、光数据存储装置和载波(诸如经有线或无线传输路径通过互联网的数据传输)。
根据本公开示例性实施例的又一个方面,提供一种电子设备,其中,所述电子设备包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行本公开所述的用于深度学习模型的量化方法。
具体地,所述电子设备可以广义地为平板电脑、智能手机、智能手表,或任何其他具有必要的计算和/或处理能力的电子设备。在一个实施例中,该电子设备可包括通过系统总线连接的处理器、存储器、网络接口、通信接口等。该电子设备的处理器可用于提供必要的计算、处理和/或控制能力。该电子设备的存储器可包括非易失性存储介质和内存储器。该非易失性存储介质中或上可存储有操作系统、计算机程序等。该内存储器可为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口和通信接口可用于与外部的设备通过网络连接和通信。
Claims (11)
1.一种用于深度学习模型的量化方法,包括:
循环执行以下操作步骤,直到满足预设条件为止:
基于量化参数对第一模型执行量化,获得第二模型;
对所述第二模型进行测试获得多个优化目标参数的实际值;
基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数;
基于计算出的损失函数,对所述量化参数进行更新,并将第二模型作为第一模型;
响应于循环执行的操作步骤满足所述预设条件,获取最优量化参数,并将基于该最优量化参数执行量化的第一模型作为最终量化后的模型。
2.根据权利要求1所述的量化方法,其特征在于,所述基于量化参数对第一模型执行量化,获得第二模型,包括:
对所述第一模型中的每个待量化算子执行量化标注,得到仿真量化模型;
基于量化参数,对所述仿真量化模型执行量化配置;
基于量化配置后的仿真量化模型,计算量化系数;
基于所述量化系数对所述仿真量化模型执行模型重写,以得到所述第二模型。
3.根据权利要求1所述的量化方法,其特征在于,所述目标参数包括精确度和以下参数中的至少一项:量化模型的尺寸、能耗和推断时延。
4.根据权利要求1所述的量化方法,其特征在于,基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数,包括:
基于所述多个优化目标参数的期望值与对应的实际值之间的差值以及所述多个优化目标参数的约束值与对应的实际值之间的差值,计算损失函数。
5.根据权利要求4所述的量化方法,其特征在于,所述损失函数的函数表达式为:
其中,t:期望值,t∈R+:对单个优化目标参数的期望值;
c:约束值,c∈R+:对单个优化目标参数的限制;
o:实际值,o∈R+:当前量化模型的某一优化目标参数的实际值;
Δtj=tj-oj:实际值到期望值的差值;
Δcj=cj-oj:实际值到约束值的差值;
wj:权重因子,w∈R+,△tj 2:优化项,最小化loss时即使每一个优化目标参数向期望值靠近,每个优化目标参数的重要性由权重因子调节;
wj×Δtj 2项使得最终结果权衡了各个优化目标参数;
λj:惩罚因子,λ∈R+;
(max(0,Δcj))2:惩罚项:当第二模型的某一项优化目标参数的实际值超过限制时会被惩罚,以使每一项优化目标参数都能到达约束要求;
M:所述优化目标参数的总个数。
6.根据权利要求1所述的量化方法,其特征在于,基于计算出的损失函数,对所述量化参数进行更新,包括:
基于输入的函数值以及目标算法,确定并记录所述第二模型的一组新的量化参数;
利用该组新的量化参数替换所述第二模型当前的量化参数;其中,所述目标算法包括贝叶斯优化算法。
7.根据权利要求6所述的量化方法,其特征在于,响应于循环执行的操作步骤满足所述预设条件,获取最优量化参数,包括:
在满足预设条件时,筛选记录的多组量化参数中,能够使得所述损失函数的输出函数值最小的一组,作为最优量化参数;
其中,所述预设条件包括迭代次数满足预设迭代次数或者迭代时长满足预设迭代时长。
8.根据权利要求1所述的量化方法,其特征在于,所述量化参数对应的精度类型包括以下至少一类:INT4、INT8和INT16。
9.一种用于深度学习模型的量化装置,包括:
混合精度量化模块,被配置为:
基于量化参数对第一模型执行量化,获得第二模型;
对所述第二模型进行测试获得多个优化目标参数的实际值;
多目标优化模块,被配置为:
基于多个优化目标参数的实际值与多个优化目标参数的期望值、多个优化目标参数的约束值,计算损失函数;
自动优化器模块,被配置为:
基于计算出的损失函数,对所述量化参数进行更新,并将第二模型作为第一模型;
响应于所述更新操作满足预设条件,获取最优量化参数,并将基于该最优的量化参数执行量化的第一模型作为最终量化后的模型。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,实现如权利要求1至8中任一项所述的用于深度学习模型的量化方法。
11.一种电子设备,其特征在于,包括:
至少一个处理器;
至少一个存储计算机可执行指令的存储器,
其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到8中的任一权利要求所述的用于深度学习模型的量化方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110120437.9A CN112906294A (zh) | 2021-01-28 | 2021-01-28 | 用于深度学习模型的量化方法和量化装置 |
KR1020210156647A KR20220109301A (ko) | 2021-01-28 | 2021-11-15 | 딥 러닝 모델용 양자화 방법 및 양자화 장치 |
US17/587,291 US20220237513A1 (en) | 2021-01-28 | 2022-01-28 | Method and apparatus with optimization for deep learning model |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110120437.9A CN112906294A (zh) | 2021-01-28 | 2021-01-28 | 用于深度学习模型的量化方法和量化装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112906294A true CN112906294A (zh) | 2021-06-04 |
Family
ID=76119820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110120437.9A Pending CN112906294A (zh) | 2021-01-28 | 2021-01-28 | 用于深度学习模型的量化方法和量化装置 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20220109301A (zh) |
CN (1) | CN112906294A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610709A (zh) * | 2021-07-30 | 2021-11-05 | Oppo广东移动通信有限公司 | 模型量化方法、装置、电子设备和计算机可读存储介质 |
CN113673532A (zh) * | 2021-10-21 | 2021-11-19 | 北京科技大学 | 量化模型的优化方法及装置 |
CN113673684A (zh) * | 2021-08-24 | 2021-11-19 | 东北大学 | 基于输入修剪的边缘端dnn模型加载系统及方法 |
CN114444658A (zh) * | 2021-12-31 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种深度学习模型推理方法、系统、设备及计算机介质 |
CN114462592A (zh) * | 2021-12-24 | 2022-05-10 | 光子算数(北京)科技有限责任公司 | 模型训练方法、装置、电子设备及计算机可读存储介质 |
CN116974922A (zh) * | 2023-07-25 | 2023-10-31 | 摩尔线程智能科技(北京)有限责任公司 | 深度学习模型的性能分析方法、装置、设备和存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240059283A (ko) | 2022-10-27 | 2024-05-07 | 주식회사 모빌린트 | 신경망의 양자화를 위한 데이터 증강 장치 및 방법 |
CN116485273B (zh) * | 2023-05-06 | 2024-01-23 | 中国人民解放军总医院 | 基于数据分析的诊断质量评估系统 |
CN116630632B (zh) * | 2023-07-25 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 图像分割模型的量化方法、装置和设备及计算机存储介质 |
-
2021
- 2021-01-28 CN CN202110120437.9A patent/CN112906294A/zh active Pending
- 2021-11-15 KR KR1020210156647A patent/KR20220109301A/ko unknown
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610709A (zh) * | 2021-07-30 | 2021-11-05 | Oppo广东移动通信有限公司 | 模型量化方法、装置、电子设备和计算机可读存储介质 |
CN113610709B (zh) * | 2021-07-30 | 2023-12-05 | Oppo广东移动通信有限公司 | 模型量化方法、装置、电子设备和计算机可读存储介质 |
CN113673684A (zh) * | 2021-08-24 | 2021-11-19 | 东北大学 | 基于输入修剪的边缘端dnn模型加载系统及方法 |
CN113673532A (zh) * | 2021-10-21 | 2021-11-19 | 北京科技大学 | 量化模型的优化方法及装置 |
CN114462592A (zh) * | 2021-12-24 | 2022-05-10 | 光子算数(北京)科技有限责任公司 | 模型训练方法、装置、电子设备及计算机可读存储介质 |
CN114444658A (zh) * | 2021-12-31 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种深度学习模型推理方法、系统、设备及计算机介质 |
CN116974922A (zh) * | 2023-07-25 | 2023-10-31 | 摩尔线程智能科技(北京)有限责任公司 | 深度学习模型的性能分析方法、装置、设备和存储介质 |
CN116974922B (zh) * | 2023-07-25 | 2024-05-17 | 摩尔线程智能科技(北京)有限责任公司 | 深度学习模型的性能分析方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20220109301A (ko) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112906294A (zh) | 用于深度学习模型的量化方法和量化装置 | |
CN111652368B (zh) | 一种数据处理方法及相关产品 | |
US11436019B2 (en) | Data parallelism in distributed training of artificial intelligence models | |
US20220164666A1 (en) | Efficient mixed-precision search for quantizers in artificial neural networks | |
US11354579B2 (en) | Dynamic multi-layer execution for artificial intelligence modeling | |
US11520592B2 (en) | Executing large artificial intelligence models on memory-constrained devices | |
US20220237513A1 (en) | Method and apparatus with optimization for deep learning model | |
CN112463189B (zh) | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 | |
CN112101524A (zh) | 可在线切换比特位宽的量化神经网络的方法及系统 | |
EP4280107A1 (en) | Data processing method and apparatus, device, and medium | |
CN112257751A (zh) | 神经网络剪枝方法 | |
CN111832693B (zh) | 神经网络层运算、模型训练方法、装置及设备 | |
CN117196000A (zh) | 一种容器化部署的边缘侧模型推理加速方法 | |
WO2021213649A1 (en) | Method and system for generating a predictive model | |
CN116362287A (zh) | 一种支持多种硬件平台的神经网络模型量化部署方法 | |
CN113554097B (zh) | 模型量化方法、装置、电子设备和存储介质 | |
Conrady et al. | LCS-based automatic configuration of approximate computing parameters for fpga system designs | |
CN115392441A (zh) | 量化神经网络模型的片内适配方法、装置、设备及介质 | |
CN111931930A (zh) | 模型剪枝方法、装置及电子设备 | |
KR102539643B1 (ko) | 하드웨어 특성을 이용하여 뉴럴 네트워크 모델을 경량화하는 방법 및 장치 | |
CN117035123B (zh) | 一种并行训练中的节点通信方法、存储介质、设备 | |
US20230169240A1 (en) | Computing device and method generating optimal input data | |
CN117313823B (zh) | 一种卷积循环神经网络混合分布式并行训练方法及系统 | |
EP4345692A1 (en) | Methods and systems for online selection of number formats for network parameters of a neural network | |
US20230376725A1 (en) | Model customization of transformers for improved efficiency |
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 |