CN114861934A - 用于机器学习模型的模型量化方法、装置及设备 - Google Patents
用于机器学习模型的模型量化方法、装置及设备 Download PDFInfo
- Publication number
- CN114861934A CN114861934A CN202210466759.3A CN202210466759A CN114861934A CN 114861934 A CN114861934 A CN 114861934A CN 202210466759 A CN202210466759 A CN 202210466759A CN 114861934 A CN114861934 A CN 114861934A
- Authority
- CN
- China
- Prior art keywords
- operator
- precision
- model
- quantization
- machine learning
- 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
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Medical Informatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Feedback Control In General (AREA)
Abstract
本申请实施例提供了一种用于机器学习模型的模型量化方法、装置及设备。方法包括:确定待量化的初始机器学习模型中各算子的类别;类别包括:危险算子、依赖算子及中性算子;基于各算子的类别,确定初始机器学习模型中的危险链路;危险链路以危险算子为起点,途径依赖算子或中性算子,并以危险算子或依赖算子为终点;对初始机器学习模型中除危险算子和危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;若第一量化模型的精度满足预设精度要求,确定第一量化模型为量化结果。本申请实施例可以在满足精度要求的同时,尽可能地提升量化后模型的性能,另外,上述过程为全自动化过程,无需人工参与,因此,模型量化的效率较高。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种用于机器学习模型的模型量化方法、装置及设备。
背景技术
随着人工智能技术的快速发展,机器学习模型已被广泛应用于诸多领域。但是,由于尺寸通常较大,机器学习模型运行速度受限,并且需要占用较大的内存空间。
模型量化是一种重要的模型加速手段,主要通过将机器学习模型各算子中的高精度(高比特位)浮点格式参数转换为低精度(低比特位)浮点格式参数,也即低精度格式转换,来减少模型尺寸。进而减少对计算设备内存资源的消耗,同时,提高模型的运行速度。而进行低精度格式转换,在减少内存消耗、提升运行速度的同时,也会带来一定的精度损失。
为了在不对计算精度造成较大影响的基础上,尽可能地提升计算性能(降低内存消耗,提升运行速度),相关技术通常从模型中手动选择部分计算量比较大的算子进行低精度格式转换的反复尝试,以得到量化结果。因此,模型量化的效率较低。
发明内容
有鉴于此,本申请实施例提供一种用于机器学习模型的模型量化方法、装置、设备及存储介质,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种用于机器学习模型的模型量化方法,包括:
确定待量化的初始机器学习模型中各算子的类别;所述类别包括:危险算子、依赖算子及中性算子;其中,所述危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;所述依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;所述中性算子为进行低精度格式转换后精度损失值小于所述精度损失阈值但运行速度提升量小于速度提升阈值的算子;
基于各算子的类别,确定所述初始机器学习模型中的危险链路;所述危险链路以所述危险算子为起点,途径所述依赖算子或所述中性算子,并以所述危险算子或所述依赖算子为终点;
对所述初始机器学习模型中除所述危险算子和所述危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;
若所述第一量化模型的精度满足预设精度要求,确定所述第一量化模型为量化结果。
根据本申请实施例的第二方面,提供了一种用于机器学习模型的模型量化装置,包括:
类别确定模块,用于确定待量化的初始机器学习模型中各算子的类别;所述类别包括:危险算子、依赖算子及中性算子;其中,所述危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;所述依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;所述中性算子为进行低精度格式转换后精度损失值小于所述精度损失阈值但运行速度提升量小于速度提升阈值的算子;
危险链路确定模块,用于基于各算子的类别,确定所述初始机器学习模型中的危险链路;所述危险链路以所述危险算子为起点,途径所述依赖算子或所述中性算子,并以所述危险算子或所述依赖算子为终点;
第一量化模型得到模块,用于对所述初始机器学习模型中除所述危险算子和所述危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;
量化结果得到模块,用于若所述第一量化模型的精度满足预设精度要求,确定所述第一量化模型为量化结果。
根据本申请实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的用于机器学习模型的模型量化方法对应的操作。
根据本申请实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的用于机器学习模型的模型量化方法。
根据本申请实施例提供的用于机器学习模型的模型量化方法,根据低精度格式转换后算子的精度损失值以及运行速度提升量,从精度损失和性能提升两方面出发,对算子进行了类别划分;进而基于各算子的类别,从待量化模型中确定出了低精度格式转换后精度损失较大的算子(危险算子和危险链路中的算子)。进而,在进行模型量化时,排除了上述精度损失较大的算子,对除上述精度损失较大算子之外的、精度损失不大的算子进行低精度格式转换。因此,本申请实施例可以在满足精度要求的同时,尽可能地提升量化后模型的性能,另外,上述过程为全自动过程,无需人工参与,因此,模型量化的效率较高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为混合精度的机器学习模型结构示意图;
图2为根据本申请实施例一的一种用于机器学习模型的模型量化方法的步骤流程图;
图3为根据本申请实施例二提供的用于机器学习模型的模型量化流程的示意图;
图4为根据本申请实施例二的一种用于机器学习模型的模型量化方法的步骤流程图;
图5为安全链路和危险链路的示意图;
图6为图3所示步骤流程图中激进算法的细化流程图;
图7为根据本申请实施例三的一种用于机器学习模型的模型量化装置的结构框图;
图8为根据本申请实施例四的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
背景概述
模型量化是一种重要的模型加速手段,主要通过将机器学习模型各算子中的高精度浮点格式参数转换为低精度浮点格式参数,也即低精度格式转换,来减少模型尺寸。
相关技术中,一种量化方式是:将所有算子均进行低精度格式转换,也即统一低精度量化策略。但是,由于低精度格式转换,在减少内存消耗、提升运行速度的同时,也会带来一定的精度损失,因此,上述量化方式,很大可能会导致量化后模型的精度损失过大。
为避免上述问题,另一种量化方式是:采用混合精度的方式进行模型量化,即,对模型中的部分算子进行低精度格式转换,而其余算子中仍保留原始的高精度浮点格式参数。参见图1,图1为混合精度的机器学习模型结构示意图,其中,图1左侧部分为待量化的初始机器学习模型,该模型共包含6个算子,分别为op1、op2、op3、op4、op5以及op6,在初始机器学习模型中,每个算子中的参数数据均为高精度浮点数格式(例如FP32等),图1右侧部分为对初始机器学习模型进行部分算子的低精度格式转换之后得到的混合精度的模型,具体地,对算子op2、op3、op4以及op5进行了低精度格式(如BF16、FP16、TF32等,图1中仅以BF16进行举例说明,并不构成对低精度格式的具体限定)转换,从FP32转换为了BF16,而其余算子则保留原始的高精度浮点数格式。另外,由于算子op2、op3、op4以及op5的数据格式发生了改变,因此,需要在发生改变的算子及其上下游算子之间添加用于进行数据类型转化的cast算子(图1中共增加了4个cast算子)。
但是,相关的混合精度量化方式中,通常是从初始机器学习模型中手动选择部分计算量比较大的算子进行低精度格式转换的反复尝试,以得到量化结果,因此,模型量化的效率较低。
本申请总体概述
为解决上述相关技术中存在的精度损失过大,以及,量化效率较低的问题,本申请实施例中提供了另一种混合精度量化方式,具体地:根据低精度格式转换后算子的精度损失值以及运行速度提升量,从精度损失和性能提升两方面出发,对算子进行了类别划分;进而基于各算子的类别,从待量化的初始机器学习模型中确定出了低精度格式转换后精度损失较大的算子。进而,在进行模型量化时,排除了上述精度损失较大的算子,对除上述精度损失较大算子之外的、精度损失不大的算子进行低精度格式转换。因此,本申请实施例可以在满足精度要求的同时,尽可能地提升量化后模型的性能;另外,上述过程为全自动过程,无需人工参与,模型量化的效率较高。
本申请实施例的详细实现过程
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
实施例一
参照图2,图2为根据本申请实施例一的一种用于机器学习模型的模型量化方法的步骤流程图。具体地,本实施例提供的用于机器学习模型的模型量化方法包括以下步骤:
步骤202,确定待量化的初始机器学习模型中各算子的类别;类别包括:危险算子、依赖算子及中性算子。
本申请实施例中,对于机器学习模型的具体应用场景不做限定,对于任意场景中使用的机器学习模型,均可采用本申请实施例提供的模型量化方法进行量化。
例如,本申请实施例中的初始机器学习模型可以为应用于以下任一场景的机器学习模型:图像处理场景、自然语言处理场景、电商场景、在线医疗场景、在线问答场景,等等。
其中,危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;中性算子为进行低精度格式转换后精度损失值小于精度损失阈值但运行速度提升量小于速度提升阈值的算子。
针对一个具体的算子而言,其精度损失值,可以为原始精度值和转换后精度值之间的差值,其中,原始精度值指在该算子中采用原始的高精度浮点数格式进行计算时得到的计算结果的精度值,转换后精度值指采用低精度浮点数格式进行计算时得到的计算结果的精度值。
对应地,针对一个具体的算子而言,其运行速度提升量,可以为转换后运行速度值与原始运行速度值之间的差值,其中,原始运行速度值指采用原始的高精度浮点数格式进行计算时该算子的运行速度值,转换后运行速度值指采用低精度浮点数格式进行计算时该算子的运行速度值。
本申请实施例中,对于精度损失阈值以及运行速度提升量的具体取值不做限定,可以根据经验或者具体场景进行自定义设定。
步骤204,基于各算子的类别,确定初始机器学习模型中的危险链路。
其中,危险链路以危险算子为起点,途径依赖算子或中性算子,并以危险算子或依赖算子为终点。
具体地,可以遍历初始机器学习模型中包含的每条路径,并基于上述危险链路的定义,确定存在于各路径中的危险链路。本领域技术人员可以理解,危险链路有可能为量化模型中的一条完整路径,也可能为某条路径中的一个子路径。
步骤206,对初始机器学习模型中除危险算子和危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型。
在确定出危险链路以及所有的危险算子之后,则可以从初始机器学习模型中确定进行低精度格式转换的算子,确定原则可以为:排除掉精度损失值较大的算子(尽可能降低精度损失);另外,由于当上游算子使用不同的精度浮点数格式时,则要添加cast算子,而添加cast算子则会增加计算量,进而一定程度上又会降低运行速度,因此,确定原则还可以包括:在尽量多地增加低精度格式转换算子的同时,还需尽可能少的添加cast算子。
遵循上述确定原则,本步骤中将初始机器学习模型中除了危险算子和危险链路中的算子之外的其余算子确定为进行低精度格式转换的算子,进而执行低精度格式转换操作以及添加cast算子操作,得到第一量化模型。
步骤208,若第一量化模型的精度满足预设精度要求,确定第一量化模型为量化结果。
通过步骤206得到第一量化模型之后,还需要对模型进行精度测试,并基于测试结果判断上述第一量化模型是否为最终的量化模型。具体地:当第一量化模型的精度满足预设精度要求时,则确定第一量化模型为量化结果。
本申请实施例中的精度要求可以为:当第一量化模型的精度值,与初始机器学习模型的精度值之间的差值,小于预设的某个精度损失阈值时,则确定满足精度要求,此时,可以将第一量化模型作为最终的量化结果。本申请实施例中,对于精度损失阈值的具体设定方式以及具体取值不做限定,可以根据具体场景、设备算力等进行自定义设置。
本申请实施例中,根据低精度格式转换后算子的精度损失值以及运行速度提升量,从精度损失和性能提升两方面出发,对算子进行了类别划分;进而基于各算子的类别,从待量化模型中确定出了低精度格式转换后精度损失较大的算子(危险算子和危险链路中的算子)。进而,在进行模型量化时,排除了上述精度损失较大的算子,对除上述精度损失较大算子之外的、精度损失不大的算子进行低精度格式转换。因此,本申请实施例可以在满足精度要求的同时,尽可能地提升量化后模型的性能,另外,上述过程为全自动化过程,无需人工参与,因此,模型量化的效率较高。
本实施例的用于机器学习模型的模型量化方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器和PC机等。
实施例二
本申请实施例二提供的用于机器学习模型的模型量化方法,是在实施例一的用于机器学习模型的模型量化方法基础上,进行了多种量化策略的融合。
图3为根据本申请实施例二提供的用于机器学习模型的模型量化流程的示意图,在进行具体模型量化方案说明之前,先结合图3从整体框架层面对实施例二的量化方法进行简要说明,具体地:
为了尽快搜索到在满足精度要求、且性能提升较为明显的量化模型,本实施例中,采用了三种不同量化策略的融合:统一低精度量化策略、激进量化策略以及保守量化策略的融合。其中,统一低精度量化策略是指:将初始机器学习模型中所有的算子均进行低精度格式转换;激进量化策略是指:排除掉精度损失值较大的算子,尽量转换除了上述精度损失值较大算子之外的其余算子;保守量化策略是指:首先将所有精度损失较小的算子作为转换算子进行低精度格式转换,并且,基于转换后的模型精度,逐步地从上述转换算子中进行转换算子的剔除,直至最终的模型精度满足要求。
具体融合策略为:先采用统一低精度量化策略进行模型量化,并进行精度测试得到量化后模型精度,若精度能达到精度要求(精度损失值<精度损失阈值),则全部算子均采用低精度格式,进行模型量化,并在得到量化模型后结束模型量化流程;若精度未能达到精度要求(精度损失值≥精度损失阈值),则转用激进量化策略进行模型量化,并测试精度,若精度能达到精度要求(精度损失值<精度损失阈值),则按照激进量化策略量化,并在得到量化模型后结束模型量化流程;若精度还没能达到精度要求,最后再使用保守量化策略进行模型量化,并测试精度,直至精度达到精度要求。
参照图4,图4为根据本申请实施例二的一种用于机器学习模型的模型量化方法的步骤流程图。其中,具体地,本实施例提供的用于机器学习模型的模型量化方法包括以下步骤:
步骤402,对待量化的初始机器学习模型中各算子均进行低精度格式转换,得到初始量化模型。
若初始量化模型的精度满足预设精度要求,确定初始量化模型为量化结果,并结束量化流程;若初始量化模型的精度不满足预设精度要求,则执行步骤404。
步骤402即对应图3中的统一低精度量化策略。
步骤404,确定待量化的初始机器学习模型中各算子的类别,类别包括:危险算子、依赖算子、中性算子以及安全算子。
其中,危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;中性算子为进行低精度格式转换后精度损失值小于精度损失阈值但运行速度提升量小于速度提升阈值的算子;安全算子,安全算子为进行低精度格式转换后,精度损失值小于精度损失阈值且运行速度提升量大于速度提升阈值的算子。
步骤406,基于各算子的类别,确定初始机器学习模型中的危险链路。
危险链路以危险算子为起点,途径依赖算子或中性算子,并以危险算子或依赖算子为终点。
步骤408,对初始机器学习模型中除危险算子和危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型。若第一量化模型的精度满足预设精度要求,确定第一量化模型为量化结果,并结束量化流程;若第一量化模型的精度不满足预设精度要求,则执行步骤410。
可选地,在其中一些实施例中,具体可以通过如下方式得到第一量化模型:
基于各算子的类别,确定所述初始机器学习模型的安全链路;所述安全链路以所述安全算子为起点,途径所述依赖算子或所述中性算子,并以所述安全算子为终点;
对所述安全链路中的算子、所述安全算子以及未处于所述危险链路中的中性算子均进行低精度格式转换,得到第一量化模型。
进一步地,在确定危险路径和安全路径时,可以基于DFS(Depth First Search,深度优先搜索)算法来进行,即:基于各算子的类别,采用深度优先搜索算法确定所述量化模型中的危险链路;基于各算子的类别,采用深度优先搜索算法确定所述量化模型中的安全链路。
DFS算法是,假定给定图G的初始状态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作:(1)访问搜索到的未被访问的邻接点;(2)将此顶点标记为已访问节点;(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。
具体到本申请实施例中,可以先采用DFS算法(包括正向DFS算法和反向DFS算法)对初始机器学习模型中的各算子进行遍历,确定出所有的路径,然后再基于上述危险链路以及安全链路的定义,确定存在于各路径中的危险链路以及安全链路。本领域技术人员可以理解,危险链路或者安全链路有可能为模型中的一条完整路径,也可能为某条路径中的一个子路径。如图5所示,左侧部分和右侧部分分别为采用DFS算法从待量化的初始机器学习模型中确定出的两条路径,其中,左侧路径中包含有由安全算子1、中性算子1、依赖算子2、中性算子2以及安全算子2组成的安全链路,该安全链路为整个路径的一部分;右侧路径中包含有由危险算子1、依赖算子1、中性算子1以及依赖算子2组成的危险链路,该危险链路亦为整个路径的一部分。
上述步骤404至步骤408即对应于图3中的激进量化策略的具体步骤。
参见图6,图6为图3所示步骤流程图中激进算法的细化流程图。具体的量化流程为:第一步,设置转换算子集合allow_set和非转换算子集合deny_set,并置空上述两个集合;第二步,把安全算子加入allow_set;第三步,把危险算子加入deny_set;第四步,把所有危险链路上的算子加入deny_set;第五步,把所有安全链路上的算子加入allow_set;第六步,吸收待量化模型中所有剩余的中性算子,也即:将所有剩余的中性算子加入allow_set;第七步,在参数类型不一致的上下游算子之间增加cast算子。
步骤410,构建目标算子集合,并将初始机器学习模型中的所有安全算子添加至目标算子集合。
步骤412,对目标算子集合中的各算子进行低精度格式转换,得到第二量化模型。
若第二量化模型的精度满足预设精度要求,则确定第二量化模型为量化结果,并结束量化流程;若第二量化模型的精度不满足预设精度要求,执行步骤414。
步骤414,按照预设规则从目标算子集合中删除预设数量个安全算子,以更新目标算子集合。之后,返回步骤412以更新第二量化模型,直至更新后第二量化模型的精度满足预设精度要求,则确定更新后第二量化模型为量化结果,并结束量化流程。
上述步骤410至步骤414即对应于图3中的保守量化策略的具体步骤。
本申请实施例中,对于从目标算子集合中删除安全算子时所采用的具体删除规则,以及上述预设数量均不做限定,可以根据需要设定。例如:可以采用随机方式从中删除预设数量个全算子;也可以按照安全算子在模型中位置的前后关系,按照从前到后的顺序进行删除;还可以基于安全算子的某些属性(如精度损失值、运行速度提升量,等等),按照预设顺序进行逐步删除,等等。
可选地,在其中一些实施例中,所述按照预设规则从所述目标算子集合中删除预设数量个安全算子,可以包括:
按照预设规则从所述目标算子集合中删除1个安全算子。
可选地,在其中一些实施例中,按照预设规则从所述目标算子集合中删除1个安全算子,包括:
基于所述目标算子集合中各安全算子的精度损失值的大小关系,从所述目标算子集合中删除所述精度损失值最大的安全算子;其中,所述精度损失值为对各安全算子分别进行低精度格式转换后,各安全算子的精度损失值。
上述方式中,每次删除操作均是对各安全算子中的精度损失值最大的算子进行删除(不对该算子进行低精度格式转换),这样,则可以尽可能地:在执行最小删除次数的情况下,最快地得到满足精度要求的量化模型。因此,可以进一步提升模型量化的效率。
根据本申请实施例提供的用于机器学习模型的模型量化方法,融合了三种不同的量化策略:统一低精度量化策略、激进量化策略以及保守量化策略。按照转换数量从多至少的顺序,先执行统一低精度量化策略,若无法满足精度要求,则改用激进量化策略,若还无法满足精度要求,则最后执行保守量化策略直至满足精度要求。这样,可以在保证模型精度的前提下,快速高效地搜索到性能提升较大(运行速度低,且内存占用量小)的量化模型。
实施例三
参见图7,图7为根据本申请实施例三的一种用于机器学习模型的模型量化装置的结构框图。本申请实施例提供的用于机器学习模型的模型量化装置包括:
类别确定模块702,用于确定待量化的初始机器学习模型中各算子的类别;类别包括:危险算子、依赖算子及中性算子;其中,危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;中性算子为进行低精度格式转换后精度损失值小于精度损失阈值但运行速度提升量小于速度提升阈值的算子;
危险链路确定模块704,用于基于各算子的类别,确定初始机器学习模型中的危险链路;危险链路以危险算子为起点,途径依赖算子或中性算子,并以危险算子或依赖算子为终点;
第一量化模型得到模块706,用于对初始机器学习模型中除危险算子和危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;
量化结果得到模块708,用于若第一量化模型的精度满足预设精度要求,确定第一量化模型为量化结果。
可选地,在其中一些实施例中,装置还包括:
初始量化模型得到模块,用于对待量化的初始机器学习模型中各算子均进行低精度格式转换,得到初始量化模型;若初始量化模型的精度满足预设精度要求,确定初始量化模型为量化结果;
类别确定模块702,具体用于若初始量化模型的精度不满足预设精度要求,确定待量化的初始机器学习模型中各算子的类别。
可选地,在其中一些实施例中,类别还包括:安全算子,安全算子为进行低精度格式转换后,精度损失值小于精度损失阈值且运行速度提升量大于速度提升阈值的算子;
装置还包括:
第一量化模型得到模块,用于:
若第一量化模型的精度不满足预设精度要求,构建目标算子集合;将待量化的初始机器学习模型中的所有安全算子添加至目标算子集合;并对目标算子集合中的各算子进行低精度格式转换,得到第二量化模型;若第二量化模型的精度满足预设精度要求,确定第二量化模型为量化结果;若第二量化模型的精度不满足预设精度要求,则按照预设规则从目标算子集合中删除预设数量个安全算子,以更新目标算子集合;返回对目标算子集合中的各算子进行低精度格式转换的步骤以更新第二量化模型,直至更新后第二量化模型的精度满足预设精度要求;确定更新后第二量化模型为量化结果。
可选地,在其中一些实施例中,第一量化模型得到模块,在执行按照预设规则从目标算子集合中删除预设数量个安全算子的步骤时,具体用于:按照预设规则从目标算子集合中删除1个安全算子。
可选地,在其中一些实施例中,第一量化模型得到模块,在执行按照预设规则从目标算子集合中删除1个安全算子的步骤时,具体用于:基于目标算子集合中各安全算子的精度损失值的大小关系,从目标算子集合中删除精度损失值最大的安全算子;其中,精度损失值为对各安全算子分别进行低精度格式转换后,各安全算子的精度损失值。
可选地,在其中一些实施例中,类别还包括:安全算子,安全算子为进行低精度格式转换后,精度损失值小于精度损失阈值且运行速度提升量大于速度提升阈值的算子;
第一量化模型得到模块706,具体用于基于初始机器学习模型中各算子的类别,确定初始机器学习模型的安全链路;安全链路以安全算子为起点,途径依赖算子或中性算子,并以安全算子为终点;对安全链路中的算子、安全算子以及未处于危险链路中的中性算子均进行低精度格式转换,得到第一量化模型。
可选地,在其中一些实施例中,危险链路确定模块704,具体用于:基于各算子的类别,采用深度优先搜索算法确定量化模型中的危险链路;
第一量化模型得到模块706,在执行基于各算子的类别,确定待量化模型的安全链路的步骤时,具体用于:基于各算子的类别,采用深度优先搜索算法确定量化模型中的安全链路。
可选地,在其中一些实施例中,初始机器学习模型为应用于以下任一场景的机器学习模型:图像处理场景、自然语言处理场景、电商场景、在线医疗场景、在线问答场景。
本申请实施例的用于机器学习模型的模型量化装置用于实现前述方法实施例一或实施例二中相应的用于机器学习模型的模型量化方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本申请实施例的用于机器学习模型的模型量化装置中的各个模块的功能实现均可参照前述方法实施例一或实施例二中的相应部分的描述,在此亦不再赘述。
实施例四
参照图8,示出了根据本申请实施例六的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图8所示,该电子设备可以包括:处理器(processor)802、通信接口(Communications Interface)804、存储器(memory)806、以及通信总线808。
其中:
处理器802、通信接口804、以及存储器806通过通信总线808完成相互间的通信。
通信接口804,用于与其它电子设备或服务器进行通信。
处理器802,用于执行程序810,具体可以执行上述用于机器学习模型的模型量化方法实施例中的相关步骤。
具体地,程序810可以包括程序代码,该程序代码包括计算机操作指令。
处理器802可能是CPU,或者是特定集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器806,用于存放程序810。存储器806可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序810具体可以用于使得处理器802执行以下操作:确定待量化的初始机器学习模型中各算子的类别;类别包括:危险算子、依赖算子及中性算子;其中,危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;中性算子为进行低精度格式转换后精度损失值小于精度损失阈值但运行速度提升量小于速度提升阈值的算子;基于各算子的类别,确定初始机器学习模型中的危险链路;危险链路以危险算子为起点,途径依赖算子或中性算子,并以危险算子或依赖算子为终点;对初始机器学习模型中除危险算子和危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;若第一量化模型的精度满足预设精度要求,确定第一量化模型为量化结果。
程序810中各步骤的具体实现可以参见上述用于机器学习模型的模型量化方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例的电子设备,根据低精度格式转换后算子的精度损失值以及运行速度提升量,从精度损失和性能提升两方面出发,对算子进行了类别划分;进而基于各算子的类别,从待量化模型中确定出了低精度格式转换后精度损失较大的算子(危险算子和危险链路中的算子)。进而,在进行模型量化时,排除了上述精度损失较大的算子,对除上述精度损失较大算子之外的、精度损失不大的算子进行低精度格式转换。因此,本申请实施例可以在满足精度要求的同时,尽可能地提升量化后模型的性能,另外,上述过程为全自动化过程,无需人工参与,因此,模型量化的效率较高。
本申请实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的任一用于机器学习模型的模型量化方法对应的操作。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的用于机器学习模型的模型量化方法。此外,当通用计算机访问用于实现在此示出的用于机器学习模型的模型量化方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的用于机器学习模型的模型量化方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (12)
1.一种用于机器学习模型的模型量化方法,包括:
确定待量化的初始机器学习模型中各算子的类别;所述类别包括:危险算子、依赖算子及中性算子;其中,所述危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;所述依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;所述中性算子为进行低精度格式转换后精度损失值小于所述精度损失阈值但运行速度提升量小于速度提升阈值的算子;
基于各算子的类别,确定所述初始机器学习模型中的危险链路;所述危险链路以所述危险算子为起点,途径所述依赖算子或所述中性算子,并以所述危险算子或所述依赖算子为终点;
对所述初始机器学习模型中除所述危险算子和所述危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;
若所述第一量化模型的精度满足预设精度要求,确定所述第一量化模型为量化结果。
2.根据权利要求1所述的方法,其中,在所述确定待量化的初始机器学习模型中各算子的类别之前,所述方法还包括:
对所述待量化的初始机器学习模型中各算子均进行低精度格式转换,得到初始量化模型;
若所述初始量化模型的精度满足所述预设精度要求,确定所述初始量化模型为量化结果;
所述确定待量化的初始机器学习模型中各算子的类别,包括:
若所述初始量化模型的精度不满足所述预设精度要求,确定待量化的初始机器学习模型中各算子的类别。
3.根据权利要求1或2所述的方法,其中,所述类别还包括:安全算子,所述安全算子为进行低精度格式转换后,精度损失值小于所述精度损失阈值且运行速度提升量大于所述速度提升阈值的算子;
若所述第一量化模型的精度不满足预设精度要求,所述方法还包括:
构建目标算子集合;
将所述待量化的初始机器学习模型中的所有安全算子添加至所述目标算子集合;并对所述目标算子集合中的各算子进行低精度格式转换,得到第二量化模型;
若所述第二量化模型的精度满足所述预设精度要求,确定所述第二量化模型为量化结果;
若所述第二量化模型的精度不满足所述预设精度要求,则按照预设规则从所述目标算子集合中删除预设数量个安全算子,以更新所述目标算子集合;
返回所述对所述目标算子集合中的各算子进行低精度格式转换的步骤以更新所述第二量化模型,直至更新后第二量化模型的精度满足预设精度要求;
确定所述更新后第二量化模型为量化结果。
4.根据权利要求3所述的方法,其中,所述按照预设规则从所述目标算子集合中删除预设数量个安全算子,包括:
按照预设规则从所述目标算子集合中删除1个安全算子。
5.根据权利要求4所述的方法,其中,所述按照预设规则从所述目标算子集合中删除1个安全算子,包括:
基于所述目标算子集合中各安全算子的精度损失值的大小关系,从所述目标算子集合中删除所述精度损失值最大的安全算子;其中,所述精度损失值为对各安全算子分别进行低精度格式转换后,各安全算子的精度损失值。
6.根据权利要求1所述的方法,其中,所述类别还包括:安全算子,所述安全算子为进行低精度格式转换后,精度损失值小于所述精度损失阈值且运行速度提升量大于所述速度提升阈值的算子;
所述对所述初始机器学习模型中除所述危险算子和所述危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型,包括:
基于所述初始机器学习模型中各算子的类别,确定所述初始机器学习模型的安全链路;所述安全链路以所述安全算子为起点,途径所述依赖算子或所述中性算子,并以所述安全算子为终点;
对所述安全链路中的算子、所述安全算子以及未处于所述危险链路中的中性算子均进行低精度格式转换,得到第一量化模型。
7.根据权利要求6所述的方法,其中,所述基于各算子的类别,确定所述待量化模型中的危险链路,包括:
基于各算子的类别,采用深度优先搜索算法确定所述量化模型中的危险链路;
所述基于各算子的类别,确定所述待量化模型的安全链路,包括:
基于各算子的类别,采用深度优先搜索算法确定所述量化模型中的安全链路。
8.根据权利要求1所述的方法,其中,所述初始机器学习模型为应用于以下任一场景的机器学习模型:图像处理场景、自然语言处理场景、电商场景、在线医疗场景、在线问答场景。
9.一种用于机器学习模型的模型量化装置,包括:
类别确定模块,用于确定待量化的初始机器学习模型中各算子的类别;所述类别包括:危险算子、依赖算子及中性算子;其中,所述危险算子为进行低精度格式转换后,精度损失值大于精度损失阈值的算子;所述依赖算子为进行低精度格式转换后精度损失值依赖于上游算子的算子;所述中性算子为进行低精度格式转换后精度损失值小于所述精度损失阈值但运行速度提升量小于速度提升阈值的算子;
危险链路确定模块,用于基于各算子的类别,确定所述初始机器学习模型中的危险链路;所述危险链路以所述危险算子为起点,途径所述依赖算子或所述中性算子,并以所述危险算子或所述依赖算子为终点;
第一量化模型得到模块,用于对所述初始机器学习模型中除所述危险算子和所述危险链路中的算子之外的其余算子进行低精度格式转换,得到第一量化模型;
量化结果得到模块,用于若所述第一量化模型的精度满足预设精度要求,确定所述第一量化模型为量化结果。
10.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-8中任一项所述的用于机器学习模型的模型量化方法对应的操作。
11.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-8中任一所述的用于机器学习模型的模型量化方法。
12.一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如权利要求1-8中任一所述的用于机器学习模型的模型量化方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210466759.3A CN114861934A (zh) | 2022-04-29 | 2022-04-29 | 用于机器学习模型的模型量化方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210466759.3A CN114861934A (zh) | 2022-04-29 | 2022-04-29 | 用于机器学习模型的模型量化方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114861934A true CN114861934A (zh) | 2022-08-05 |
Family
ID=82636137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210466759.3A Pending CN114861934A (zh) | 2022-04-29 | 2022-04-29 | 用于机器学习模型的模型量化方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114861934A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116579400A (zh) * | 2023-05-19 | 2023-08-11 | 北京百度网讯科技有限公司 | 深度学习模型的量化方法、数据处理方法和装置 |
-
2022
- 2022-04-29 CN CN202210466759.3A patent/CN114861934A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116579400A (zh) * | 2023-05-19 | 2023-08-11 | 北京百度网讯科技有限公司 | 深度学习模型的量化方法、数据处理方法和装置 |
CN116579400B (zh) * | 2023-05-19 | 2024-02-23 | 北京百度网讯科技有限公司 | 深度学习模型的量化方法、数据处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113536081B (zh) | 基于人工智能的数据中心数据管理方法及系统 | |
CN108021982A (zh) | 数据传输方法和系统、电子设备 | |
CN111369430B (zh) | 基于移动深度学习引擎的移动端人像智能背景替换方法 | |
CN115860128B (zh) | 量子电路运行方法、装置及电子设备 | |
CN114861934A (zh) | 用于机器学习模型的模型量化方法、装置及设备 | |
CN114896395A (zh) | 语言模型微调方法、文本分类方法、装置及设备 | |
CN115473841A (zh) | 网络路径的确定方法、装置及存储介质 | |
CN115270500A (zh) | 一种布尔求差运算方法、装置及电子设备 | |
CN117454495A (zh) | 一种基于建筑草图轮廓序列的cad矢量模型生成方法及装置 | |
CN113127357B (zh) | 单元测试方法、装置、设备、存储介质及程序产品 | |
CN114741085A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113641829A (zh) | 图神经网络的训练与知识图谱的补全方法、装置 | |
CN115809688B (zh) | 一种模型调试方法、装置、电子设备及存储介质 | |
CN115170917B (zh) | 图像处理方法、电子设备及存储介质 | |
CN115688917A (zh) | 神经网络模型的训练方法、装置、电子设备及存储介质 | |
CN110610140A (zh) | 人脸识别模型的训练方法、装置、设备及可读存储介质 | |
CN116306879A (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
CN115759209A (zh) | 神经网络模型的量化方法、装置、电子设备及介质 | |
CN115330971A (zh) | 一种面向渲染性能优化的几何模型轻量化方法 | |
CN114462571A (zh) | 训练深度学习模型的方法、数据处理方法及装置 | |
CN114091271A (zh) | 一种设备模型的简化方法、装置、电子设备及存储介质 | |
CN113592085A (zh) | 一种基于高秩卷积图的核剪枝方法、装置、设备及介质 | |
CN112346916A (zh) | 测试方法、装置及相关产品 | |
CN111401555A (zh) | 模型训练方法、装置、服务器及存储介质 | |
CN116341633B (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 |