1.本技术涉及机器学习技术领域,特别是涉及一种模型量化方法、装置、电子设备和计算机可读存储介质。
背景技术:2.随着人工智能技术的发展,可以采用超分辨率模型对图像的分辨率进行处理提升。但是,现有的超分辨率模型结构大而复杂,导致超分辨率模型的运算速度受到计算机设备存储能力的限制。因此,为了减少计算机存储的压力同时提高模型的运算速度,需要对超分辨率模型的各卷积层进行定点量化。
3.传统技术中,主要是将超分辨率模型整个网络层的权重和激活值固定量化到某个固定的位宽,得到量化后的超分辨率模型。然而,传统的模型量化方法,存在量化后的超分辨率模型的运算精度和量化后的模型的占用存储空间难以平衡的问题。
技术实现要素:4.本技术实施例提供了一种模型量化方法、装置、电子设备、计算机可读存储介质,可以平衡量化后的超分辨率模型的运算精度和量化后的模型的占用存储空间。
5.第一方面,提供了一种模型量化方法,包括:
6.将图像输入深度学习模型中,获取所述深度学习模型对所述图像的分辨率进行处理所需的时延和功耗;
7.根据所述时延、所述功耗、所述深度学习模型的原始网络参数和预设的强化学习算法训练所述深度学习模型,得到所述深度学习模型的各网络层的目标量化位宽;
8.根据各所述网络层的目标量化位宽,对所述目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到分辨率模型。
9.第二方面,提供了一种模型量化装置,包括:
10.第一获取模块,用于将图像输入深度学习模型中,获取所述深度学习模型对所述图像的分辨率进行处理所需的时延和功耗;
11.第二获取模块,用于根据所述时延、所述功耗、所述深度学习模型的原始网络参数和预设的强化学习算法训练所述深度学习模型,得到所述深度学习模型的各网络层的目标量化位宽;
12.量化模块,用于根据各所述网络层的目标量化位宽,对所述目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到分辨率模型。
13.第三方面,提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如第一方面所述的模型量化方法的步骤。
14.第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的模型量化方法的步骤。
15.上述模型量化方法、装置、电子设备和计算机可读存储介质,通过将图像输入深度学习模型中,能够获取该深度学习模型对图像的分辨率进行处理所需的时延和功耗,从而可以根据得到的时延、功耗、深度学习模型的原始网络参数和预设的强化学习算法训练深度学习模型,得到该深度学习模型的各网络层的目标量化位宽,进而可以根据得到的各网络层的目标量化位宽,对目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到分辨率模型,由于该方法得到的是深度学习模型的各网络层的目标量化位宽,而不同的网络层采用不同的量化位宽能够有效的减少计算机存储的压力同时提高模型的运算速度,这样根据深度学习模型的各网络层的目标量化位宽,对该目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,平衡了得到的分辨率模型的运算精度和分辨率模型的占用存储空间。
附图说明
16.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为一个实施例中模型量化方法的应用环境图;
18.图2为一个实施例中模型量化方法的流程图;
19.图3为一个实施例中模型量化方法的流程图;
20.图4为一个实施例中模型量化方法的流程图;
21.图5为一个实施例中模型量化方法的流程图;
22.图6为一个实施例中模型量化方法的流程图;
23.图7为一个实施例中模型量化方法的流程图;
24.图8为一个实施例提供的模型量化方法的整体结构示意图;
25.图9为一个实施例中模型量化装置的结构框图;
26.图10为一个实施例中电子设备的结构框图。
具体实施方式
27.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
28.可以理解,本技术所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本技术的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。
29.图1为一个实施例中模型量化方法的应用环境示意图。如图1所示,该应用环境包括计算机设备。该计算机设备包括通过系统总线连接的处理器、存储器,该存储器中存储有计算机程序,处理器执行该计算机程序时可以执行下述方法实施例的步骤。可选的,该计算
机设备还可以包括网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器,该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。可选的,该计算机设备可以是服务器,可以是个人计算机,还可以是个人数字助理,还可以是其他的终端设备,例如平板电脑、手机等等,还可以是云端或者远程服务器,本技术实施例对计算机设备的具体形式并不做限定。
30.图2为一个实施例中模型量化方法的流程图。本实施例中的模型量化方法,以运行于图1中的计算机设备上为例进行描述。如图2所示,上述模型量化方法包括以下步骤:
31.s201,将图像输入深度学习模型中,获取深度学习模型对图像的分辨率进行处理所需的时延和功耗。
32.其中,深度学习模型对图像的分辨率进行处理所需的时延是指将上述图像输入深度学习模型,得到输出图像的时长;深度学习模型对图像的分辨率进行处理所需的功耗是指计算机设备运行上述深度学习模型所消耗的电流与计算机设备未运行上述深度学习没模型所消耗的电流的差值。在本实施例中,计算机设备将图像输入深度学习模型中,获取深度学习模型对该图像的分辨率进行处理所需的时延和功耗。可以理解的是,上述图像为低分辨率的图像,深度学习模型对上述图像的分辨率进行处理即为提高该图像的分辨率的过程。
33.s202,根据时延、功耗、深度学习模型的原始网络参数和预设的强化学习算法训练深度学习模型,得到深度学习模型的各网络层的目标量化位宽。
34.其中,深度学习模型的原始网络参数是指该深度学习模型中每一层的原始参数,例如,上述深度学习模型的原始权重、原始激活值等等。预设的强化学习算法是一种可以让计算机设备通过已有的数据不断学习从而找到规律,以更新自己的行为的一种算法。在本实施例中,该强化学习算法可以参考深度学习模型的功耗和时延对深度学习模型每一层的量化位宽进行学习,不断的优化深度学习模型的各网络层的量化位宽。
35.在本实施例中,计算机设备根据深度学习模型对上述图像的分辨率进行处理所需的时延、功耗、深度学习模型的原始网络参数和强化学习算法训练上述深度学习模型,得到深度学习模型的各网络层的目标量化位宽。这里需要说明的是,上述深度学习模型的原始网络参数是指上述深度学习模型各网络层的网络参数。可选的,计算机设备可以根据深度学习模型对上述图像的分辨率进行处理所需的时延、功耗、深度学习模型的原始网络参数和强化学习算法,得到上述深度学习模型的各网络层的初始量化位宽,根据深度学习模型的各网络层的初始量化位宽,对深度学习模型的各网络层的初始量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到量化模型,再获取得到的量化模型对上述图像的分辨率进行处理所需的时延和功耗,根据得到的量化模型对上述图像的分辨率进行处理所需的时延、功耗、得到的量化模型各层的网络参数和强化学习算法,得到上述深度学习模型的各网络层的目标量化位宽。可以理解的是,在本实施例中,由于计算机设备是根据深度学习模型对上述图像的分辨率进行处理所需的时延、功耗、深度学习模型各网络层的网络参数和强化学习算法训练的深度学习模型,这样可以参考深度学习模型的功耗和时延对深度学习模型每一层的量化位宽分别进行学习,从而能够得到深度学习模型的各网络层的
目标量化位宽更加精确。
36.s203,根据各网络层的目标量化位宽,对目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到分辨率模型。
37.在本实施例中,计算机设备根据得到的深度学习模型的各网络层的目标量化位宽,对该目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到分辨率模型。示例性地,如上述深度学习模型包括三层网络层,若得到的第一层网络层的目标量化位宽为4bit,第二层网络层的目标量化位宽为8bit,第三次网络层的目标量化位宽为4bit,则计算机设备将这三层对应的权值和激活值量化为对应的bit,即第一层网络层的权值和激活值对应的量化为4bit,第二层网络层的权值和激活值对应的量化为8bit,第三层网络层的权值和激活值对应的量化为4bit,得到上述分辨率模型。可选的,作为一种可实现的实施方式,上述根据得到的深度学习模型的各网络层的目标量化位宽,对深度学习模型各网络层的权重和激活值进行量化,得到的分辨率模型其输出的图像的分辨率应为上述深度学习模型输出的图像的分辨率的90%。
38.本实施例中的模型量化方法,由于得到的是深度学习模型的各网络层的目标量化位宽,而不同的网络层采用不同的量化位宽能够有效的减少计算机存储的压力同时提高模型的运算速度,这样根据深度学习模型的各网络层的目标量化位宽,对该目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,平衡了得到的分辨率模型的运算精度和分辨率模型的占用存储空间。
39.在上述根据深度学习模型对图像的分辨率进行处理所需的时延、功耗、深度学习模型的原始网络参数和预设的强化学习算法训练上述深度学习模型,得到深度学习模型的各网络层的目标量化位宽的场景中,在一个实施例中,如图3所示,上述s202,包括:
40.s301,将时延、功耗和原始网络参数输入强化学习算法中,得到各网络层的初始量化位宽,根据初始量化位宽、预设的精度调整策略对深度学习模型进行迭代训练,得到深度学习模型的各网络层的目标量化位宽;精度调整策略用于对初始量化位宽的精度进行调整。
41.在本实施例中,计算机设备将深度学习模型对上述图像的分辨率进行处理所需的时延、功耗和上述深度学习模型的原始参数输入强化学习算法中,得到深度学习模型各网络层的初始量化位宽,根据深度学习模型各网络层的初始量化位宽、预设的精度调整策略对上述深度学习模型进行迭代训练,得到上述深度学习模型的各网络层的目标量化位宽;其中,上述预设的精度调整策略用于对深度学习模型各网络层的初始量化位宽的精度进行调整。
42.可以理解的是,计算机设备将深度学习模型对上述图像的分辨率进行处理所需的时延、功耗和上述深度学习模型的原始参数输入强化学习算法后,强化学习算法中的agent会制定深度学习模型的各网络层的量化策略,从而得到深度学习模型的各网络层的初始量化位宽。可选的,计算机设备可以根据上述预设的精度调整策略对上述深度学习模型各网络层的初始量化位宽进行调整,得到各网络层的调整后量化位宽,根据各网络层的调整后的量化位宽,对深度学习模型各网络层的权重和激活值进行量化,得到量化后的模型,将上述图片输入量化后的模型中,得到量化后的模型对上述图像的分辨率进行处理所需的时延和功耗,进而根据量化后的模型对上述图像的分辨率进行处理所需的时延、功耗和量化后
的模型的网络参数对上述深度学习模型进行迭代训练,得到上述深度学习模型的各网络层的目标量化位宽。
43.本实施例中,计算机设备将深度学习模型对上述图像的分辨率进行处理所需的时延、功耗和深度学习模型的原始网络参数输入强化学习算法中,能够快速地得到深度学习模型各网络层的初始量化位宽,进而可以根据得到的初始量化位宽、预设的精度调整策略对深度学习模型进行迭代训练,得到深度学习模型的各网络层的目标量化位宽,由于在该过程中,得到深度学习模型各网络层的初始量化位宽的效率得到了提高,从而也提高了根据深度学习模型各网络层的初始量化位宽、预设的精度调整策略对深度学习模型进行迭代训练,得到深度学习模型的各网络层的目标量化位宽的效率。
44.在上述根据深度学习模型各网络层的初始量化位宽、预设的精度调整策略对深度学习模型进行迭代训练,得到深度学习模型的各网络层的目标量化位宽的场景中,在一个实施例中,上述s301,包括:根据精度调整策略对初始量化位宽进行调整,得到各网络层的调整后的量化位宽,执行迭代操作,直到满足预设的迭代终止条件,得到各网络层的目标量化位宽;其中,迭代操作包括:根据各网络层的调整后的量化位宽,对各网络层的权重和激活值进行量化,得到中间量化模型,将图像输入中间量化模型,获取中间量化模型处理图像所需的中间时延和中间功耗,将中间时延、中间功耗和中间量化模型的各网络层的网络参数输入强化学习算法中,得到中间量化模型各网络层的量化位宽,根据精度调整策略对中间量化模型各网络层的量化位宽进行调整,并返回执行迭代操作。
45.在本实施例中,计算机设备根据上述精度调整策略对上述得到的初始量化位宽进行调整,得到深度学习模型各网络层的调整后的量化位宽,根据深度学习模型各网络层的调整后的量化位宽,对深度学习模型各网络层的权重和激活值进行量化,得到中间量化模型,将上述图像输入该中间量化模型,获取中间量化模型处理上述图像所需的中间时延和中间功耗,将该中间时延、中间功耗和中间量化模型的各网络层的网络参数输入上述强化学习算法中,得到上述中间量化模型各网络层的量化位宽,再根据上述精度调整策略对中间量化模型各网络层的量化位宽进行调整,重复执行上述操作直到满足预设的迭代终止条件,得到上述深度学习模型各网络层的目标量化位宽。
46.可选的,上述预设的迭代终止条件包括:执行上述迭代操作的次数达到预设的迭代次数,和/或,训练得到的深度学习模型输出的第一图像的分辨率与上述深度学习模型输出的第二图像的分辨率的比值大于预设阈值,示例性地,上述预设的迭代终止条件可以包括:执行上述迭代操作的次数达到6次,和/或,训练得到的深度学习模型输出的第一图像的分辨率为上述深度学习模型输出的第二图像的分辨率的90%。
47.本实施例中,计算机设备根据预设的精度调整策略对上述得到的初始量化位宽进行调整,得到深度学习模型各网络层的调整后的量化位宽,再根据深度学习模型各网络层的调整后的量化位宽,对深度学习模型各网络层的权重和激活值进行量化,得到中间量化模型,将图像输入该中间量化模型,获取该中间量化模型处理图像所需的中间时延和中间功耗,将中间时延、中间功耗和中间量化模型的各网络层的网络参数输入强化学习算法中,得到中间量化模型各网络层的量化位宽,再根据精度调整策略对中间量化模型各网络层的量化位宽进行调整,重复执行该操作,直到满足预设的迭代终止条件,得到深度学习模型各网络层的目标量化位宽,由于得到的深度学习模型各网络的目标量化位宽是通过重复执行
上述操作得到的,通过该操作确保了得到的深度学习模型各网络层的目标量化位宽的准确度;另外,根据预设的精度调整策略对得到的初始量化位宽进行调整,能够进一步地增加得到的初始量化位宽的准确地,即提高了得到的深度学习模型各网络层的调整后的量化位宽的准确度,这样再根据深度学习模型各网络层的调整后的量化位宽,对深度学习模型各网络层的权重和激活值进行量化,确保了得到的中间量化模型的准确度,从而能够更加准确地得到中间量化模型处理图像所需的中间时延和中间功耗,进而将中间时延、中间功耗和中间量化模型的各网络层的网络参数输入强化学习算法中,能够准确地得到中间量化模型各网络层的量化位宽,这样再根据精度调整策略对中间量化模型各网络层的量化位宽进行调整,重复执行该操作,直到满足预设的迭代终止条件,进一步地确保了得到深度学习模型各网络层的目标量化位宽的准确度。
48.在上述根据深度学习模型各网络层的初始量化位宽、预设的精度调整策略对上述深度学习模型进行迭代训练的场景中,在一个实施例中,如图4所示,上述精度调整策略包括:
49.s401,获取深度学习模型各网络层的权重和激活值的标准差。
50.在本实施例中,计算机设备获取上述深度学习模型各网络层的权重和激活值的标准差。这里需要说明的是,上述深度学习模型各网络层的权重和激活值的标准差σ可以反映深度学习模型当前网络层的数据的量化敏感度,可以根据深度学习模型各网络层的权重和激活值的标准差对得到的深度学习模型各网络层的初始量化位宽进行调整,可选的,计算机设备可以根据深度学习模型各网络层的权重和激活值的标准差与量化阈值之间的关系,对得到的深度学习模型各网络层的初始量化位宽进行调整。
51.s402,若标准差大于第一量化阈值,则根据预设的调整量,增大各网络层的初始量化位宽。
52.在本实施例中,若深度学习模型各网络层的权重和激活值的标准差大于第一量化阈值,则计算机设备根据预设的调整量,增大上述深度学习模型各网络层的初始量化位宽。可选的,预设的调整量可以是一个超参数,可以默认为1。
53.s403,若标准差小于第二量化阈值,则根据预设的调整量,减小各网络层的初始量化位宽。
54.在本实施例中,若深度学习模型各网络层的权重和激活值的标准差小于第二量化阈值,则计算机设备根据上述预设的调整量,减小上述深度学习模型各网络层的初始量化位宽。示例性地,下边以一个具体实例对上述精度调整策略进行说明:以σ
h
表示第一量化阈值,σ
l
表示第二量化阈值为例,计算机设备可以通过下述策略,对深度学习模型各网络层的初始量化位宽进行调整:其中,n表示深度学习模型各网络层的初始量化位宽,m表示预设的调整量,σ表示深度学习模型各网络层的权重和激活值的标准差。
55.本实施例中,计算机设备利用强化学习算法得到深度学习模型各网络层的初始量化位宽后,由于深度学习模型每一层的数据分布可能不同,而卷积的参数量和每一层数据的分布没有直接关系,可能会存在得到的初始量化位宽不够精确的问题,通过获取深度学
习模型各网络层的权重和激活值的标准差,若标准差大于第一量化阈值,则根据预设的调整量,增大深度学习模型各网络层的初始量化位宽,若标准差小于第二量化阈值,则根据预设的调整量,减小深度学习模型各网络层的初始量化位宽,对初始量化位宽进行微调,确保了得到深度学习模型各网络层的初始量化位宽的准确度。
56.在上述若深度学习模型各网络层的权重和激活值的标准差大于第一量化阈值,根据预设的调整量增大各网络层的初始量化位宽,若深度学习模型各网络层的权重和激活值的标准差小于第二量化阈值,根据预设的调整量减小各网络层的初始量化位宽的场景中,需要首先确定出上述第一量化阈值和上述第二量化阈值,在一个实施例中,如图5所示,上述方法还包括:
57.s501,获取深度学习模型各网络层的权重和激活值的标准差,以及深度学习模型各网络层的权重和激活值的均值。
58.在本实施例中,计算机设备获取上述深度学习模型各网络层的权重和激活值的标准差,以及上述深度学习模型各网络层的权重和激活值的均值。可以理解的是,计算机设备可以先计算出深度学习模型各网络层的权重和激活值的方差,根据深度学习模型各网络层的权重和激活值的方差,得到标准差。可选的,计算机设备可以将深度学习模型各网络层的权重和激活值相加除以各网络层的权重和激活值的个数,得到深度学习模型各网络层的权重和激活值的均值,即深度学习模型各网络层的权重和激活值的平均数,再将深度学习模型各网络层的权重和激活值减去上述平均数再平方,再将这些平方相加除以各网络层的权重和激活值的个数,得到深度学习模型各网络层的权重和激活值的方差,再对方差开平方,得到深度学习模型各网络层的权重和激活值的标准差。
59.s502,根据标准差和均值,得到第一量化阈值和第二量化阈值。
60.在本实施例中,计算机设备根据深度学习模型各网络层的权重和激活值的标准差,以及深度学习模型各网络层的权重和激活值的均值,得到上述第一量化阈值和上述第二量化阈值。可选的,计算机设备可以根据上述标准差、上述均值和预设的第一映射关系,得到上述第一量化阈值,根据上述标准差、上述均值和预设的第二映射关系,得到上述第二量化阈值;其中,第一量化阈值越大,第二量化阈值越小。示例性地,第一映射关系可以为第二映射关系可以为式中,σ
l
表示第一量化阈值,σ
h
表示第二量化阈值,φ为一个累积分布函数,σ表示深度学习模型各网络层的权重和激活值的标准差,μ表示深度学习模型各网络层的权重和激活值的方差。
61.本实施例中,计算机设备获取深度学习模型各网络层的权重和激活值的标准差,以及深度学习模型各网络层的权重和激活值的均值的过程十分简单,提高了得到深度学习模型各网络层的权重和激活值的标准差,以及深度学习模型各网络层的权重和激活值的均值的效率,进而提高了根据深度学习模型各网络的权重和激活值的标准差和均值,得到第一量化阈值和第二量化阈值的效率。
62.在上述根据深度学习模型对图像的分辨率进行处理所需的时延、功耗、深度学习模型的原始网络参数和强化学习算法训练深度学习模型,得到深度学习模型的各网络层的目标量化位宽的场景中,可以首先对深度学习模型各网络层的原始网络参数进行量化,再进行归一化,根据深度学习模型对图像的分辨率进行处理所需的时延、功耗、归一化后的参
数向量和强化学习算法训练深度学习模型,在一个实施例中,如图6所示,上述方法还包括:
63.s601,对深度学习模型各网络层的原始网络参数进行量化,得到深度学习模型的参数向量。
64.在本实施例中,计算机设备对上述深度学习模型各网络层的原始网络参数进行量化,得到深度学习模型的参数向量。可选的,计算机设备可以将上述深度学习模型各网络层的原始网络参数写为向量的形式,得到该深度学习模型的参数向量。
65.s602,对参数向量进行归一化,得到归一化后的参数向量。
66.在本实施例中,计算机设备对得到的上述参数向量进行归一化,得到归一化后的参数向量,上述s202,包括:根据时延、功耗、归一化后的参数向量和强化学习算法训练深度学习模型,得到深度学习模型的各网络层的目标量化位宽。也就是说,计算机设备可以将得到的参数向量归一化到[0,1],然后根据深度学习模型对图像的分辨率进行处理所需的时延、功耗、归一化后的参数向量和强化学习算法训练上述深度学习模型,得到深度学习模型的各网络层的目标量化位宽。
[0067]
本实施例中,计算机设备对深度学习模型各网络层的原始网络参数进行量化,得到深度学习模型的参数向量,进而对得到的参数向量进行归一化,得到归一化后的参数向量,这样计算机设备可以根据深度学习模型对图像的分辨率进行处理所需的时延、功耗、归一化后的参数向量和强化学习算法快速地训练深度学习模型,从而提高了得到深度学习模型的各网络层的目标量化位宽的效率。
[0068]
为了便于本领域技术人员的理解,以下对本技术提供的模型量化方法进行详细介绍,如图7所示,该方法可以包括:
[0069]
s701,将图像输入深度学习模型中,获取深度学习模型对图像的分辨率进行处理所需的时延和功耗。
[0070]
s702,对深度学习模型各网络层的原始网络参数进行量化,得到深度学习模型的参数向量。
[0071]
s703,对参数向量进行归一化,得到归一化后的参数向量。
[0072]
s704,将时延、功耗、归一化后的参数向量输入强化学习算法中,得到深度学习模型的各网络层的初始量化位宽。
[0073]
s705,获取深度学习模型各网络层的权重和激活值的标准差,以及深度学习模型各网络层的权重和激活值的均值。
[0074]
s706,根据标准差、均值和预设的第一映射关系,得到第一量化阈值。
[0075]
s707,根据标准差、均值和预设的第二映射关系,得到第二量化阈值;其中,第一量化阈值越大,第二量化阈值越小。
[0076]
s708,根据精度调整策略对初始量化位宽进行调整,得到各网络层的调整后的量化位宽,执行迭代操作,直到满足预设的迭代终止条件,得到各网络层的目标量化位宽;
[0077]
其中,迭代操作包括:
[0078]
根据各网络层的调整后的量化位宽,对各网络层的权重和激活值进行量化,得到中间量化模型,将图像输入中间量化模型,获取中间量化模型处理图像所需的中间时延和中间功耗,将中间时延、中间功耗和中间量化模型的各网络层的网络参数输入强化学习算法中,得到中间量化模型各网络层的量化位宽,根据精度调整策略对中间量化模型各网络
层的量化位宽进行调整,并返回执行迭代操作;
[0079]
预设的迭代终止条件包括:执行迭代操作的次数达到预设的迭代次数,和/或,训练得到的深度学习模型输出的第一图像的分辨率与深度学习模型输出的第二图像的分辨率的比值大于预设阈值;
[0080]
精度调整策略包括:若标准差大于第一量化阈值,则根据预设的调整量,增大各网络层的初始量化位宽;
[0081]
若标准差小于第二量化阈值,则根据预设的调整量,减小各网络层的初始量化位宽。
[0082]
示例性地,如图8所示,图8为本技术提供的模型量化方法的整体结构示意图,由图8可以看出,本技术提供的模型量化方法的整体构思为采用强化学习的方案去决定深度学习模型每一层网络结构量化时的位宽,在给定目标硬件上网络的推理时延和功耗等信息的情况下,强化学习算法的agent依赖硬件加速器的直接反馈(延迟和功耗信息),然后按层处理给定的深度学习模型,接收相应信息作为observation,给出每层的action即每层的量化位宽(bits),并将准确率作为reward反馈给critic,从而确定深度学习模型每一次的最佳位宽分配策略,示例性地,如图8所示,得出的深度学习模型的量化策略为深度学习模型第三层的量化位宽为3bit/5bit,深度学习模型第四层的量化位宽为4bit/8bit,深度学习模型第五层的量化位宽为1bit/6bit,深度学习模型第六层的量化位宽为3bit/7bit。
[0083]
应该理解的是,虽然图2
‑
图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2
‑
图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0084]
在一个实施例中,如图9所示,提供了一种模型量化装置,包括:第一获取模块、第二获取模块和量化模块,其中:
[0085]
第一获取模块,用于将图像输入深度学习模型中,获取深度学习模型对图像的分辨率进行处理所需的时延和功耗。
[0086]
第二获取模块,用于根据时延、功耗、深度学习模型的原始网络参数和预设的强化学习算法训练深度学习模型,得到深度学习模型的各网络层的目标量化位宽。
[0087]
量化模块,用于根据各网络层的目标量化位宽,对目标量化位宽对应的深度学习模型各网络层的权重和激活值进行量化,得到分辨率模型。
[0088]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0089]
在上述实施例的基础上,可选的,上述第二获取模块,包括:第一获取单元,其中:
[0090]
第一获取单元,用于将时延、功耗和原始网络参数输入强化学习算法中,得到各网络层的初始量化位宽,根据初始量化位宽、预设的精度调整策略对深度学习模型进行迭代训练,得到深度学习模型的各网络层的目标量化位宽;精度调整策略用于对初始量化位宽的精度进行调整。
[0091]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0092]
在上述实施例的基础上,可选的,上述第一获取单元,用于根据精度调整策略对初始量化位宽进行调整,得到各网络层的调整后的量化位宽,执行迭代操作,直到满足预设的迭代终止条件,得到各网络层的目标量化位宽;其中,迭代操作包括:根据各网络层的调整后的量化位宽,对各网络层的权重和激活值进行量化,得到中间量化模型,将图像输入中间量化模型,获取中间量化模型处理图像所需的中间时延和中间功耗,将中间时延、中间功耗和中间量化模型的各网络层的网络参数输入强化学习算法中,得到中间量化模型各网络层的量化位宽,根据精度调整策略对中间量化模型各网络层的量化位宽进行调整,并返回执行迭代操作。
[0093]
可选的,预设的迭代终止条件包括:执行迭代操作的次数达到预设的迭代次数,和/或,训练得到的深度学习模型输出的第一图像的分辨率与深度学习模型输出的第二图像的分辨率的比值大于预设阈值。
[0094]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0095]
在上述实施例的基础上,可选的,上述装置还包括:第三获取模块、第一调整模块和第二调整模块,其中:
[0096]
第三获取模块,用于获取深度学习模型各网络层的权重和激活值的标准差。
[0097]
第一调整模块,用于若标准差大于第一量化阈值,则根据预设的调整量,增大各网络层的初始量化位宽。
[0098]
第二调整模块,用于若标准差小于第二量化阈值,则根据预设的调整量,减小各网络层的初始量化位宽。
[0099]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0100]
在上述实施例的基础上,可选的,上述装置还包括:第四获取模块和第五获取模块,其中:
[0101]
第四获取模块,用于获取深度学习模型各网络层的权重和激活值的标准差,以及深度学习模型各网络层的权重和激活值的均值。
[0102]
第五获取模块,用于根据标准差和均值,得到第一量化阈值和第二量化阈值。
[0103]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0104]
在上述实施例的基础上,可选的,上述第五获取模块,包括:第二获取单元和第三获取单元,其中:
[0105]
第二获取单元,用于根据标准差、均值和预设的第一映射关系,得到第一量化阈值。
[0106]
第三获取单元,用于根据标准差、均值和预设的第二映射关系,得到第二量化阈值;其中,第一量化阈值越大,第二量化阈值越小。
[0107]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0108]
在上述实施例的基础上,可选的,上述装置还包括:量化模块和归一化模块,其中:
[0109]
量化模块,用于对深度学习模型各网络层的原始网络参数进行量化,得到深度学习模型的参数向量。
[0110]
归一化模块,用于对参数向量进行归一化,得到归一化后的参数向量;
[0111]
上述第二获取模块,用于根据时延、功耗、归一化后的参数向量和强化学习算法训练深度学习模型,得到深度学习模型的各网络层的目标量化位宽。
[0112]
本实施例提供的模型量化装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0113]
上述模型量化装置中各个模块的划分仅仅用于举例说明,在其他实施例中,可将模型量化装置按照需要划分为不同的模块,以完成上述模型量化装置的全部或部分功能。
[0114]
关于模型量化装置的具体限定可以参见上文中对于模型量化方法的限定,在此不再赘述。上述模型量化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0115]
图10为一个实施例中电子设备的内部结构示意图。该电子设备可以是手机、平板电脑、笔记本电脑、台式电脑、pda(personal digital assistant,个人数字助理)、pos(point of sales,销售终端)、车载电脑、穿戴式设备等任意终端设备。该电子设备包括通过系统总线连接的处理器和存储器。其中,该处理器可以包括一个或多个处理单元。处理器可为cpu(central processing unit,中央处理单元)或dsp(digital signal processing,数字信号处理器)等。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统和计算机程序。该计算机程序可被处理器所执行,以用于实现以下各个实施例所提供的一种模型量化方法。内存储器为非易失性存储介质中的操作系统计算机程序提供高速缓存的运行环境。
[0116]
本技术实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当所述计算机可执行指令被一个或多个处理器执行时,使得所述处理器执行模型量化方法的步骤。
[0117]
本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行模型量化方法。
[0118]
本技术所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器可包括rom(read
‑
only memory,只读存储器)、prom(programmable read
‑
only memory,可编程只读存储器)、eprom(erasable programmable read
‑
only memory,可擦除可编程只读存储器)、eeprom(electrically erasable programmable read
‑
only memory,电可擦除可编程只读存储器)或闪存。易失性存储器可包括ram(random access memory,随机存取存储器),它用作外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如sram(static random access memory,静态随机存取存储器)、dram(dynamic random access memory,动态随机存取存储器)、sdram(synchronous dynamic random access memory,同步动态随机存取存储器)、双数据率ddr sdram(double data rate synchronous dynamic random access memory,双数据率同步动态随机存取存储器)、esdram(enhanced synchronous dynamic random access memory,
增强型同步动态随机存取存储器)、sldram(sync link dynamic random access memory,同步链路动态随机存取存储器)、rdram(rambus dynamic random access memory,总线式动态随机存储器)、drdram(direct rambus dynamic random access memory,接口动态随机存储器)。
[0119]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。