CN114418098A - 一种神经网络差量压缩方法、装置、电子设备及存储介质 - Google Patents

一种神经网络差量压缩方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114418098A
CN114418098A CN202210255131.9A CN202210255131A CN114418098A CN 114418098 A CN114418098 A CN 114418098A CN 202210255131 A CN202210255131 A CN 202210255131A CN 114418098 A CN114418098 A CN 114418098A
Authority
CN
China
Prior art keywords
model
integer
floating point
quantization
network layer
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
CN202210255131.9A
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.)
Shenzhen Graduate School Harbin Institute of Technology
Original Assignee
Shenzhen Graduate School Harbin Institute of Technology
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 Shenzhen Graduate School Harbin Institute of Technology filed Critical Shenzhen Graduate School Harbin Institute of Technology
Priority to CN202210255131.9A priority Critical patent/CN114418098A/zh
Publication of CN114418098A publication Critical patent/CN114418098A/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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供一种神经网络差量压缩方法、装置、电子设备及存储介质,该方法在获取到神经网络的两个相邻训练版本时,可为这些版本所包含的各网络层生成专用的量化参数,并利用这些量化参数为对应的网络层进行浮点参数量化处理,得到训练版本对应的整数版本,再利用这些整数版本替代训练版本进行差量数据计算及差量压缩。换而言之,本发明为神经网络模型的每一网络层设置了生成的专用的量化参数,可采用不同力度对每一网络层进行针对性量化,相较于全局量化策略额外考虑了神经网络模型不同网络层之间的参数取值差异,能够有效避免将整个网络的浮点数参数看作一个集合来确定全局的量化参数所导致的量化误差增大及模型的精度下降问题。

Description

一种神经网络差量压缩方法、装置、电子设备及存储介质
技术领域
本发明涉及神经网络领域,特别涉及一种神经网络差量压缩方法、装置、电子设备及存储介质。
背景技术
在神经网络压缩领域中,通常会对神经网络两个相邻版本间的浮点参数差量进行统一的全局量化并进行后续压缩,然而全局量化策略并没有考虑神经网络不同层之间参数分布和取值的差异性。例如,利用较大的参数的取值范围来确定量化器可以得到较高的压缩比,因为在相同的量化值个数的情况下,量化范围越大对应单个量化值代表的聚类范围也就越大,因此会导致更大的量化误差。而细粒度的量化则会有与之相反的结果,量化误差会更小但是压缩比会相应的与之减小。
因此,如何为整个神经网络选择合适的量化力度,以尽可能平衡量化误差和压缩比是本技术方案所要解决的问题。
发明内容
本发明的目的是提供一种神经网络差量压缩方法、装置、电子设备及存储介质,可对神经网络模型的每一网络层进行专门量化,进而可避免将整个网络的浮点数参数看作一个集合来确定全局的量化参数所导致的量化误差增大及模型的精度下降问题。
为解决上述技术问题,本发明提供一种神经网络差量压缩方法,包括:
获取神经网络的当前训练模型,并对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数;
利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型;
对所述当前训练模型进行训练得到新模型,并对所述新模型中的各新网络层执行所述量化参数生成操作,得到所述新网络层对应的第二量化参数;
利用所述第二量化参数对所述新网络层中的浮点参数进行所述量化处理,得到所述新模型对应的第二整数模型;
利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,并对所述差量数据进行压缩。
可选地,所述对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数,包括:
将所述当前网络层包含的所有浮点参数添加至浮点集,并确定所述浮点集的浮点集取值范围;
利用预设量化比特数生成整数集取值范围,并利用所述浮点集取值范围和所述整数集取值范围生成缩放因子;
提取所述整数集取值范围中的最小整数值,以及提取所述浮点集取值范围中的最小浮点值,并利用所述缩放因子、所述最小整数值和所述最小浮点值生成偏移因子;
将所述缩放因子及所述偏移因子添加至所述第一量化参数。
可选地,所述利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型,包括:
利用所述缩放因子和所述偏移因子采取如下方式对所述当前网络层中的浮点参数进行所述量化处理,得到所述当前网络层对应的整数集:
Figure 906058DEST_PATH_IMAGE001
其中,所述
Figure 387855DEST_PATH_IMAGE002
表示所述浮点参数,
Figure 67098DEST_PATH_IMAGE003
表示所述缩放因子,
Figure 950741DEST_PATH_IMAGE004
表示所述偏移因子,
Figure 925912DEST_PATH_IMAGE005
表示取整函数,
Figure 629426DEST_PATH_IMAGE006
表示浮点参数对应的整数参数,所述整数集用于包含所述整数参数;
将所述当前训练模型对应的所有整数集进行整合,得到所述第一整数模型。
可选地,所述对所述当前训练模型进行训练得到新模型,包括:
利用所述第一量化参数对所述第一整数模型中对应的整数集进行浮点参数还原,得到所述第一整数模型对应的浮点数模型;
利用所述浮点数模型计算损失值及梯度值,并利用所述损失值和所述梯度值对所述当前训练模型进行更新,得到所述新模型。
可选地,所述利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,包括:
利用所述第一整数模型中的每一参数与所述第二整数模型中的对应参数采取如下方式计算所述差量数据:
Figure 581201DEST_PATH_IMAGE007
其中,
Figure 319350DEST_PATH_IMAGE008
表示所述第二整数模型中的第
Figure 963958DEST_PATH_IMAGE009
个参数,
Figure 420347DEST_PATH_IMAGE010
表示所述第一整数模型中的第
Figure 175814DEST_PATH_IMAGE011
个参数,
Figure 768469DEST_PATH_IMAGE012
表示第
Figure 318399DEST_PATH_IMAGE009
个差量数据,
Figure 262084DEST_PATH_IMAGE013
表示取模运算,
Figure 54198DEST_PATH_IMAGE014
表示预设量化比特数。
本发明还提供一种神经网络差量压缩装置,包括:
第一量化参数生成模块,用于获取神经网络的当前训练模型,并对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数;
第一量化处理模块,用于利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型;
第二量化参数生成模块,用于对所述当前训练模型进行训练得到新模型,并对所述新模型中的各新网络层执行所述量化参数生成操作,得到所述新网络层对应的第二量化参数;
第二量化处理模块,用于利用所述第二量化参数对所述新网络层中的浮点参数进行所述量化处理,得到所述新模型对应的第二整数模型;
差量运算及压缩模块,用于利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,并对所述差量数据进行压缩。
可选地,所述第一量化参数生成模块,包括:
浮点集生成子模块,用于将所述当前网络层包含的所有浮点参数添加至浮点集,并确定所述浮点集的浮点集取值范围;
缩放因子生成子模块,用于利用预设量化比特数生成整数集取值范围,并利用所述浮点集取值范围和所述整数集取值范围生成缩放因子;
偏移因子生成子模块,用于提取所述整数集取值范围中的最小整数值,以及提取所述浮点集取值范围中的最小浮点值,并利用所述缩放因子、所述最小整数值和所述最小浮点值生成偏移因子;
添加子模块,用于将所述缩放因子及所述偏移因子添加至所述第一量化参数。
可选地,所述第一量化处理模块,包括:
量化处理子模块,用于利用所述缩放因子和所述偏移因子采取如下方式对所述当前网络层中的浮点参数进行所述量化处理,得到所述当前网络层对应的整数集:
Figure 766939DEST_PATH_IMAGE001
其中,所述
Figure 222191DEST_PATH_IMAGE002
表示所述浮点参数,
Figure 653172DEST_PATH_IMAGE003
表示所述缩放因子,
Figure 484862DEST_PATH_IMAGE004
表示所述偏移因子,
Figure 52109DEST_PATH_IMAGE015
表示取整函数,
Figure 943842DEST_PATH_IMAGE016
表示浮点参数对应的整数参数,所述整数集用于包含所述整数参数;
整合子模块,用于将所述当前训练模型对应的所有整数集进行整合,得到所述第一整数模型。
本发明还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述的神经网络差量压缩方法的步骤。
本发明还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的神经网络差量压缩方法的步骤。
本发明提供一种神经网络差量压缩方法,包括:获取神经网络的当前训练模型,并对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数;利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型;对所述当前训练模型进行训练得到新模型,并对所述新模型中的各新网络层执行所述量化参数生成操作,得到所述新网络层对应的第二量化参数;利用所述第二量化参数对所述新网络层中的浮点参数进行所述量化处理,得到所述新模型对应的第二整数模型;利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,并对所述差量数据进行压缩。
可见,本发明在获取到神经网络的两个相邻版本,即当前训练模型和新训练模型时,并未对这两个模型之间的浮点参数差量进行统一的全局量化,而是为这些模型所包含的各网络层生成专用的量化参数,并利用这些量化参数为对应的网络层进行浮点参数量化处理,得到当前训练模型对应的第一整数模型以及新训练模型对应的第二整数模型,再利用这两个整数模型进行差量数据计算及差量压缩。换而言之,本发明为神经网络模型的每一网络层设置了生成的专用的量化参数,可采用不同力度对每一网络层进行针对性量化,相较于全局量化策略额外考虑了神经网络模型不同网络层之间的参数取值差异,能够有效避免将整个网络的浮点数参数看作一个集合来确定全局的量化参数所导致的量化误差增大及模型的精度下降问题。本发明还提供一种神经网络差量压缩装置、电子设备及存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种神经网络差量压缩方法的流程图;
图2为本发明实施例所提供的两种训练模式的对比图;
图3为本发明实施例所提供的一种环形差量计算方式的示意图;
图4为本发明实施例所提供的一种神经网络差量压缩方法的整体框架图;
图5为本发明实施例所提供的一种神经网络差量压缩装置的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为减小神经网络训练文件的体积,通常会对神经网络两个相邻版本间的浮点参数差量进行统一的全局量化并进行后续压缩,然而全局量化策略并没有考虑神经网络不同层之间参数分布和取值的差异性,进而容易导致量化误差增加,并导致模型精度下降。有鉴于此,本发明提供一种神经网络差量压缩方法,可对神经网络模型的每一网络层进行专门量化,进而可避免将整个网络的浮点数参数看作一个集合来确定全局的量化参数所导致的量化误差增大及模型的精度下降问题。请参考图1,图1为本发明实施例所提供的一种神经网络差量压缩方法的流程图,该方法可以包括:
S101、获取神经网络的当前训练模型,并对当前训练模型中的各当前网络层执行量化参数生成操作,得到当前网络层对应的第一量化参数。
首先需要说明的是,为了寻找神经网络在相邻训练版本间的相似性,需要一个基准网络及一个目标网络。通常情况下,基准网络即为相邻训练版本中的前一版本,在本发明实施例中由当前训练模型表示;而目标网络则为相邻训练版本中的后一版本,在本发明实施例中由新模型表示。需要说明的是,本发明实施例并不限定具体的神经网络类型,也不限定该网络具体的训练内容,可根据实际应用需求进行设置及调整。
进一步,在神经网络领域中,神经网络通常为多层结构,且各网络层所使用的浮点参数在取值范围方面存在较大差异,进而由这些浮点参数计算得到的差量数据所对应的取值范围差异也很大。这导致全局量化策略难以取得理想的压缩比,且容易增加量化误差,难以有效平衡压缩比及误差率。而本发明实施例则是采用局部敏感的量化方案,可为神经网络的不同层确定专用的量化参数,相较于全局量化策略额外考虑了神经网络模型不同网络层之间的参数取值差异,能够有效提升神经网络差量压缩的精度和可压缩性。
下面对量化处理及量化参数进行介绍。量化处理是将取值范围为
Figure 596540DEST_PATH_IMAGE017
的浮点集F映射到取值范围为
Figure 497500DEST_PATH_IMAGE018
的整数集Q,其中每一网络层设置有对应的浮点集,用于存储该层中的所有浮点参数,而与浮点集相对应的整数集则用于存储由浮点参数经过量化处理后得到的整数参数,
Figure 653675DEST_PATH_IMAGE019
Figure 981888DEST_PATH_IMAGE020
分别表示最小浮点数和最大浮点数,
Figure 357768DEST_PATH_IMAGE021
Figure 62419DEST_PATH_IMAGE022
分别表示量化后可以表示的最小整数和最大整数。整数集的取值范围由预设的量化比特数q生成,量化比特数所确定的量化范围为
Figure 338679DEST_PATH_IMAGE023
,例如,当采用无符号8bit量化时,量化值的取值范围时0-255,即
Figure 572215DEST_PATH_IMAGE024
为0,
Figure 199505DEST_PATH_IMAGE022
为255。可以理解的是,量化比特数越小,则压缩强度越高,但损失越大,因此为有效平衡压缩比和损失率,通常可对量化比特数进行试验调整。需要说明的是,当前训练模型和新模型使用的量化比特数相等,各网络层对应的量化比特数均相等。为了更好地利用浮点参数在值域上的高相似性并尽可能减少尾数不确定性的影响,本发明实施例可使用线性量化方式将浮点集F中的原始浮点参数f映射到整数集Q中的量化整数值h,具体的,线性量化使用缩放因子来放缩取值范围的大小,并使用偏移因子对放缩后的范围进行偏移,计算方式如下所示:
Figure 176688DEST_PATH_IMAGE001
(式一)
其中,
Figure 573035DEST_PATH_IMAGE025
表示浮点参数,
Figure 977471DEST_PATH_IMAGE003
表示缩放因子,
Figure 92058DEST_PATH_IMAGE026
表示偏移因子,
Figure 607353DEST_PATH_IMAGE015
表示取整函数,
Figure 123785DEST_PATH_IMAGE016
表示浮点参数对应的整数参数。缩放因子S为用于缩放原取值范围的正实数,偏移因子Z为用于将缩放后的取值范围转换的偏移量,这两个因子的计算方式如下所示:
Figure 221095DEST_PATH_IMAGE027
(式二)
Figure 822978DEST_PATH_IMAGE028
(式三)
可见,量化的关键在于确定量化浮点参数集合F的量化参数S和Z。由于神经网络中每一层参数的取值范围存在显著差异,差距甚至可达几十倍,因此若将整个网络的浮点数参数纳入一个集合来确定全局的量化参数,必然导致量化误差增大,进而导致模型精度下降的问题。也正是如此,本发明实施例可为神经网络的每一网络层单独计算量化参数。此外,为每一层单独计算量化参数的方式还可将各层不同的浮点值取值范围量化为相同的整数取值范围,进而增大了各层不同的浮点参数量化为相同整数值的可能性,可在一定程度上增加单一版本中不同层之间量化参数的冗余性,为后续的压缩提供更大的可压缩性。在计算相邻版本之间的差量后,本来不同层中绝对值不同的差量也有可能被量化成相同的量化差值,而这都是采用全局量化所不能得到的。
在一种可能的情况中,对当前训练模型中的各当前网络层执行量化参数生成操作,得到当前网络层对应的第一量化参数,可以包括:
步骤11:将当前网络层包含的所有浮点参数添加至浮点集,并确定浮点集的浮点集取值范围。
步骤12:利用预设量化比特数生成整数集取值范围,并利用浮点集取值范围和整数集取值范围生成缩放因子。
步骤13:提取整数集取值范围中的最小整数值,以及提取浮点集取值范围中的最小浮点值,并利用缩放因子、最小整数值和最小浮点值生成偏移因子。
步骤14:将缩放因子及偏移因子添加至第一量化参数。
S102、利用第一量化参数对当前网络层中的浮点参数进行量化处理,得到当前训练模型对应的第一整数模型。
量化处理的具体过程请参考上述实施例,此处不再具体描述。
在一种可能的情况中,利用第一量化参数对当前网络层中的浮点参数进行量化处理,得到当前训练模型对应的第一整数模型,包括:
步骤21:利用缩放因子和偏移因子采取如下方式对当前网络层中的浮点参数进行量化处理,得到当前网络层对应的整数集:
Figure 141964DEST_PATH_IMAGE029
其中,
Figure 512902DEST_PATH_IMAGE002
表示浮点参数,
Figure 259141DEST_PATH_IMAGE003
表示缩放因子,
Figure 82741DEST_PATH_IMAGE004
表示偏移因子,
Figure 205418DEST_PATH_IMAGE015
表示取整函数,
Figure 165283DEST_PATH_IMAGE016
表示浮点参数对应的整数参数,整数集用于包含整数参数。
步骤22:将当前训练模型对应的所有整数集进行整合,得到第一整数模型。
S103、对当前训练模型进行训练得到新模型,并对新模型中的各新网络层执行量化参数生成操作,得到新网络层对应的第二量化参数。
为适应不同的训练需求,本发明实施例可提供两种训练方式。第一种训练方式称为离线训练模式(Off-line quantization)。在该模式中,训练过程中的目标函数和梯度信息都是直接利用当前训练模型进行计算的,即整个完整的训练过程与常规过程是完全一样的。这也意味着在该模式中,当前训练模型的量化过程可独立于训练过程,即可在训练之前进行量化,也可在训练之后进行量化,量化操作并不会改变原有的参数值和训练过程。这正是如此,该模式的好处在于整个压缩过程并不会对训练过程有任何的影响,属于非侵入式设计,即不需要介入及修改训练系统。但由于此时量化过程是离线的,并没有给予网络训练任何的反馈,因此将无法修正量化误差对推理精度带来的影响。
然而在实际使用时,神经网络最重要的性能指标正是模型的推理精度。相关技术中,为降低量化误差对神经网络推理精度的影响,通常采用对量化后的网络模型进行后处理操作的方式来尽可能减少量化误差(如Delta-DNN网络中通过对多个误差因子进行测试选择)。然而,这种后处理操作在选择最佳配置的误差因子时,需要对多种配置进行遍历,并对每个配置进行完整的网络推理精度结果测试,这容易增加耗时并带来较大的测试开销。因此,为了减少模型推理精度的丢失,最大可能地减少和修正对神经网络量化压缩所带来的误差,本发明实施例还提供了另一种训练更新的模式,即在线训练模式(On-linequantization),可让网络在训练过程中动态调整量化误差,避免了后处理过程所带来的时间开销和计算开销。
下面对在线训练模式的具体过程进行介绍。该模式的主要思想在于将量化损失融入到神经网络的训练过程中。具体的,在得到当前训练模型对应的整数模型后,本发明实施例会对该整数模型进行浮点参数还原,得到对应的浮点数模型,并利用浮点数模型替代当前训练模型进行目标函数和梯度信息计算。这首先是因为整数版本仅用于量化浮点数,无法直接参与训练,因此需利用还原后的浮点数模型进行训练;更重要的是,由于量化是一个有损的压缩过程,无法避免信息丢失,因此浮点数模型实际为与当前训练模型相对应的、带有量化损失的模型,利用浮点数模型替代当前训练模型进行计算,并利用计算结果对当前训练模型进行更新,即能够将量化损失融入到当前训练模型的梯度下降中,达到神经网络自适应修正量化误差的效果。可以理解的是,整数模型的浮点参数还原过程即为量化过程的逆过程,具体可用如下公式进行表示:
Figure 348003DEST_PATH_IMAGE030
(式四)
其中,
Figure 924478DEST_PATH_IMAGE031
表示由整数参数
Figure 585266DEST_PATH_IMAGE016
还原而来的浮点参数。在得到浮点数模型后,仅需利用该模型替代当前训练模型进行训练,并将训练结果用于对当前训练模型的更新即可。
为便于理解,请参考图2,图2为本发明实施例所提供的两种训练模式的对比图。
在一种可能的情况中,对当前训练模型进行训练得到新模型,可以包括:
步骤31:利用第一量化参数对第一整数模型中对应的整数集进行浮点参数还原,得到第一整数模型对应的浮点数模型;
步骤32:利用浮点数模型计算损失值及梯度值,并利用损失值和梯度值对当前训练模型进行更新,得到新模型。
需要说明的是,本发明实施例并不限定损失值及梯度值的计算方式,也不限定利用这两个数值对当前训练模型进行参数更新的具体过程,可参考神经网络的相关技术。
S104、利用第二量化参数对新网络层中的浮点参数进行量化处理,得到新模型对应的第二整数模型。
需要说明的是,针对步骤S103中的“对新模型中的各新网络层执行量化参数生成操作,得到新网络层对应的第二量化参数”以及步骤S104的限定说明,与针对步骤S101和步骤S102的限定说明相同,可参考上述实施例,此处不再赘述。
S105、利用第一整数模型和第二整数模型计算当前训练模型与新模型之间的差量数据,并对差量数据进行压缩。
在得到第一整数模型和第二整数模型之后,便可利用这两个整数模型确定当前训练模型与新模型之间的差量数据,进而对差量数据进行压缩。具体的,可将新模型的第二整数模型标记为A,当前训练版本的第一整数模型标记为B,第二整数模型的参数标记为
Figure 901103DEST_PATH_IMAGE008
,第二整数模型中的参数标记为
Figure 520304DEST_PATH_IMAGE010
,差量数据
Figure 52916DEST_PATH_IMAGE012
可表示如下:
Figure 782975DEST_PATH_IMAGE032
(式五)
在q比特量化下,此时
Figure 451853DEST_PATH_IMAGE008
Figure 241955DEST_PATH_IMAGE010
的取值范围均为
Figure 261864DEST_PATH_IMAGE033
,其中
Figure 530034DEST_PATH_IMAGE034
。因此,若直接计算差量,则差量
Figure 318998DEST_PATH_IMAGE012
的取值范围为
Figure 14422DEST_PATH_IMAGE035
,进而
Figure 521627DEST_PATH_IMAGE012
取值范围大小为
Figure 826444DEST_PATH_IMAGE036
,此时需要
Figure 1073DEST_PATH_IMAGE037
个比特才能表示差量。
为了避免这额外的一比特的浪费,可以将量化后参数的取值范围看成一个环状链,差量的方向总是从
Figure 132977DEST_PATH_IMAGE038
指向
Figure 393057DEST_PATH_IMAGE022
,从当前值出发向
Figure 737451DEST_PATH_IMAGE022
增加,增加到
Figure 766587DEST_PATH_IMAGE022
时继续增加就回到
Figure 538234DEST_PATH_IMAGE038
处,此时计算差量的方式如图3,图3为本发明实施例所提供的一种环形差量计算方式的示意图。当
Figure 285610DEST_PATH_IMAGE039
时,计算差量的方式与式五相同,直接等于二者量化值的差值;当
Figure 433694DEST_PATH_IMAGE040
时,可将量化范围看作一个环,此时差量
Figure 818802DEST_PATH_IMAGE012
为沿着环正向走到
Figure 26929DEST_PATH_IMAGE008
的距离,即
Figure 996022DEST_PATH_IMAGE010
到量化范围最大值的距离加上
Figure 682218DEST_PATH_IMAGE008
到量化范围最小值的距离再加上1,计算方式如式七。
Figure 685946DEST_PATH_IMAGE041
(式六)
Figure 799396DEST_PATH_IMAGE042
(式七)
Figure 255785DEST_PATH_IMAGE043
(式八)
又因为在q比特量化中,
Figure 745672DEST_PATH_IMAGE044
,因此,式七可以统一变成式八。在该式中,当
Figure 603907DEST_PATH_IMAGE040
时,
Figure 153837DEST_PATH_IMAGE012
为负数,则加上
Figure 97522DEST_PATH_IMAGE023
。因此,两者情况下可以统一用取余运算来表示,即如式九所示
Figure 889635DEST_PATH_IMAGE007
(式九)
在式九的计算方式下,由于第二整数模型中的量化值在与第一整数模型的量化值相减后,都需要再对
Figure 336797DEST_PATH_IMAGE023
取余才得到差量数据,因此在基于第一整数模型和差量数据对第二整数模型进行还原时,若
Figure 57629DEST_PATH_IMAGE008
的还原值在
Figure 488610DEST_PATH_IMAGE045
范围内,则该还原值为正确值;若
Figure 320300DEST_PATH_IMAGE008
的还原值大于
Figure 887547DEST_PATH_IMAGE023
,则说明计算差量前
Figure 779280DEST_PATH_IMAGE008
Figure 697557DEST_PATH_IMAGE010
的关系对应于式八中的情况。此时只需要对还原值也对
Figure 67359DEST_PATH_IMAGE023
取余即可。
Figure 754692DEST_PATH_IMAGE008
的还原过程可统一利用式十表示:
Figure 817326DEST_PATH_IMAGE046
(式十)
在一种可能的情况中,利用第一整数模型和第二整数模型计算当前训练模型与新模型之间的差量数据,可以包括:
步骤41:利用第一整数模型中的每一参数与第二整数模型中的对应参数采取如下方式计算差量数据:
Figure 458785DEST_PATH_IMAGE047
其中,
Figure 897857DEST_PATH_IMAGE008
表示第二整数模型中的第
Figure 439696DEST_PATH_IMAGE009
个参数,
Figure 673232DEST_PATH_IMAGE010
表示第一整数模型中的第
Figure 300522DEST_PATH_IMAGE009
个参数,
Figure 12126DEST_PATH_IMAGE048
表示第
Figure 674052DEST_PATH_IMAGE049
个差量数据,
Figure 78488DEST_PATH_IMAGE050
表示取模运算,
Figure 193075DEST_PATH_IMAGE014
表示预设量化比特数。
由于神经网络的参数在不同版本之间实际存在较高的相似性,因此量化后的参数也具有较高的相似性。显然,每一对相似的量化参数在相减之后,得到的差量会出现显著地分布在 0 附近,因此通过计算差量,可以将相邻版本间参数的相似性转变为差量序列中每一个差量之间的相似性,可为后续压缩过程提供更大的可压缩空间。
在得到差量数据后,便可对差量数据进行压缩,得到最终的压缩文件。需要说明的是,本发明实施例并不限定压缩所使用的具体方式,可参考压缩的相关技术;本发明实施例也不限定压缩文件的具体形式,例如可以为一个二进制文件。可以理解的是,在进行模型还原时时,仅需执行上述过程的逆过程即可,即首先将压缩后的二进制文件解压得到差量数据,然后将解压后的差量数据添加至基准网络(第一整数模型)中得到目标网络的量化版本(第二整数模型),最后使用已存的量化参数对目标网络量化版本中对应的网络层进行浮点数还原即可。
最后,为便于理解,本发明实施例还提供图4,图4为本发明实施例所提供的一种神经网络差量压缩方法的整体框架图。
基于上述实施例,本发明在获取到神经网络的两个相邻版本,即当前训练模型和新训练模型时,并未对这两个模型之间的浮点参数差量进行统一的全局量化,而是为这些模型所包含的各网络层生成专用的量化参数,并利用这些量化参数为对应的网络层进行浮点参数量化处理,得到当前训练模型对应的第一整数模型以及新训练模型对应的第二整数模型,再利用这两个整数模型进行差量数据计算及差量压缩。换而言之,本发明为神经网络模型的每一网络层设置了生成的专用的量化参数,可采用不同力度对每一网络层进行针对性量化,相较于全局量化策略额外考虑了神经网络模型不同网络层之间的参数取值差异,能够有效避免将整个网络的浮点数参数看作一个集合来确定全局的量化参数所导致的量化误差增大及模型的精度下降问题。
下面对本发明实施例提供的神经网络差量压缩装置、电子设备及存储介质进行介绍,下文描述的神经网络差量压缩装置、电子设备及存储介质与上文描述的神经网络差量压缩方法可相互对应参照。
请参考图5,图5为本发明实施例所提供的一种神经网络差量压缩装置的结构框图,该装置可以包括:
第一量化参数生成模块501,用于获取神经网络的当前训练模型,并对当前训练模型中的各当前网络层执行量化参数生成操作,得到当前网络层对应的第一量化参数;
第一量化处理模块502,用于利用第一量化参数对当前网络层中的浮点参数进行量化处理,得到当前训练模型对应的第一整数模型;
第二量化参数生成模块503,用于对当前训练模型进行训练得到新模型,并对新模型中的各新网络层执行量化参数生成操作,得到新网络层对应的第二量化参数;
第二量化处理模块504,用于利用第二量化参数对新网络层中的浮点参数进行量化处理,得到新模型对应的第二整数模型;
差量运算及压缩模块505,用于利用第一整数模型和第二整数模型计算当前训练模型与新模型之间的差量数据,并对差量数据进行压缩。
可选地,第一量化参数生成模块501,可以包括:
浮点集生成子模块,用于将当前网络层包含的所有浮点参数添加至浮点集,并确定浮点集的浮点集取值范围;
缩放因子生成子模块,用于利用预设量化比特数生成整数集取值范围,并利用浮点集取值范围和整数集取值范围生成缩放因子;
偏移因子生成子模块,用于提取整数集取值范围中的最小整数值,以及提取浮点集取值范围中的最小浮点值,并利用缩放因子、最小整数值和最小浮点值生成偏移因子;
添加子模块,用于将缩放因子及偏移因子添加至第一量化参数。
可选地,第一量化处理模块502,可以包括:
量化处理子模块,用于利用缩放因子和偏移因子采取如下方式对当前网络层中的浮点参数进行量化处理,得到当前网络层对应的整数集:
Figure 708370DEST_PATH_IMAGE001
其中,
Figure 988916DEST_PATH_IMAGE002
表示浮点参数,
Figure 829833DEST_PATH_IMAGE003
表示缩放因子,
Figure 431716DEST_PATH_IMAGE026
表示偏移因子,
Figure 16281DEST_PATH_IMAGE015
表示取整函数,
Figure 121640DEST_PATH_IMAGE016
表示浮点参数对应的整数参数,整数集用于包含整数参数;
整合子模块,用于将当前训练模型对应的所有整数集进行整合,得到第一整数模型。
可选地,第二量化参数生成模块503,可以包括:
还原子模块,用于利用第一量化参数对第一整数模型中对应的整数集进行浮点参数还原,得到第一整数模型对应的浮点数模型;
训练子模块,用于利用浮点数模型计算损失值及梯度值,并利用损失值和梯度值对当前训练模型进行更新,得到新模型。
可选地,差量运算及压缩模块505,可以包括:
差量运算子模块,用于利用第一整数模型中的每一参数与第二整数模型中的对应参数采取如下方式计算差量数据:
Figure 133458DEST_PATH_IMAGE007
其中,
Figure 957058DEST_PATH_IMAGE008
表示第二整数模型中的第
Figure 79735DEST_PATH_IMAGE009
个参数,
Figure 305180DEST_PATH_IMAGE010
表示第一整数模型中的第
Figure 723785DEST_PATH_IMAGE009
个参数,
Figure 300260DEST_PATH_IMAGE051
表示第
Figure 961048DEST_PATH_IMAGE049
个差量数据,
Figure 41000DEST_PATH_IMAGE052
表示取模运算,
Figure 394621DEST_PATH_IMAGE014
表示预设量化比特数。
本发明实施例还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述的神经网络差量压缩方法的步骤。
由于电子设备部分的实施例与神经网络差量压缩方法部分的实施例相互对应,因此电子设备部分的实施例请参见神经网络差量压缩方法部分的实施例的描述,这里暂不赘述。
本发明实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的神经网络差量压缩方法的步骤。
由于存储介质部分的实施例与神经网络差量压缩方法部分的实施例相互对应,因此存储介质部分的实施例请参见神经网络差量压缩方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种神经网络差量压缩方法、装置、电子设备及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种神经网络差量压缩方法,其特征在于,包括:
获取神经网络的当前训练模型,并对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数;
利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型;
对所述当前训练模型进行训练得到新模型,并对所述新模型中的各新网络层执行所述量化参数生成操作,得到所述新网络层对应的第二量化参数;
利用所述第二量化参数对所述新网络层中的浮点参数进行所述量化处理,得到所述新模型对应的第二整数模型;
利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,并对所述差量数据进行压缩。
2.根据权利要求1所述的神经网络差量压缩方法,其特征在于,所述对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数,包括:
将所述当前网络层包含的所有浮点参数添加至浮点集,并确定所述浮点集的浮点集取值范围;
利用预设量化比特数生成整数集取值范围,并利用所述浮点集取值范围和所述整数集取值范围生成缩放因子;
提取所述整数集取值范围中的最小整数值,以及提取所述浮点集取值范围中的最小浮点值,并利用所述缩放因子、所述最小整数值和所述最小浮点值生成偏移因子;
将所述缩放因子及所述偏移因子添加至所述第一量化参数。
3.根据权利要求2所述的神经网络差量压缩方法,其特征在于,所述利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型,包括:
利用所述缩放因子和所述偏移因子采取如下方式对所述当前网络层中的浮点参数进行所述量化处理,得到所述当前网络层对应的整数集:
Figure 573437DEST_PATH_IMAGE001
其中,所述
Figure 959419DEST_PATH_IMAGE002
表示所述浮点参数,
Figure 473577DEST_PATH_IMAGE003
表示所述缩放因子,
Figure 337628DEST_PATH_IMAGE004
表示所述偏移因子,
Figure 119377DEST_PATH_IMAGE005
表示取整函数,
Figure 676260DEST_PATH_IMAGE006
表示浮点参数对应的整数参数,所述整数集用于包含所述整数参数;
将所述当前训练模型对应的所有整数集进行整合,得到所述第一整数模型。
4.根据权利要求1所述的神经网络差量压缩方法,其特征在于,所述对所述当前训练模型进行训练得到新模型,包括:
利用所述第一量化参数对所述第一整数模型中对应的整数集进行浮点参数还原,得到所述第一整数模型对应的浮点数模型;
利用所述浮点数模型计算损失值及梯度值,并利用所述损失值和所述梯度值对所述当前训练模型进行更新,得到所述新模型。
5.根据权利要求1至4任一项所述的神经网络差量压缩方法,其特征在于,所述利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,包括:
利用所述第一整数模型中的每一参数与所述第二整数模型中的对应参数采取如下方式计算所述差量数据:
Figure 412135DEST_PATH_IMAGE007
其中,
Figure 79876DEST_PATH_IMAGE008
表示所述第二整数模型中的第
Figure 217597DEST_PATH_IMAGE009
个参数,
Figure 945381DEST_PATH_IMAGE010
表示所述第一整数模型中的第
Figure 168552DEST_PATH_IMAGE009
个参数,
Figure 639985DEST_PATH_IMAGE011
表示第
Figure 632212DEST_PATH_IMAGE009
个差量数据,
Figure 530897DEST_PATH_IMAGE012
表示取模运算,
Figure 5479DEST_PATH_IMAGE013
表示预设量化比特数。
6.一种神经网络差量压缩装置,其特征在于,包括:
第一量化参数生成模块,用于获取神经网络的当前训练模型,并对所述当前训练模型中的各当前网络层执行量化参数生成操作,得到所述当前网络层对应的第一量化参数;
第一量化处理模块,用于利用所述第一量化参数对所述当前网络层中的浮点参数进行量化处理,得到所述当前训练模型对应的第一整数模型;
第二量化参数生成模块,用于对所述当前训练模型进行训练得到新模型,并对所述新模型中的各新网络层执行所述量化参数生成操作,得到所述新网络层对应的第二量化参数;
第二量化处理模块,用于利用所述第二量化参数对所述新网络层中的浮点参数进行所述量化处理,得到所述新模型对应的第二整数模型;
差量运算及压缩模块,用于利用所述第一整数模型和所述第二整数模型计算所述当前训练模型与新模型之间的差量数据,并对所述差量数据进行压缩。
7.根据权利要求6所述的神经网络差量压缩装置,其特征在于,所述第一量化参数生成模块,包括:
浮点集生成子模块,用于将所述当前网络层包含的所有浮点参数添加至浮点集,并确定所述浮点集的浮点集取值范围;
缩放因子生成子模块,用于利用预设量化比特数生成整数集取值范围,并利用所述浮点集取值范围和所述整数集取值范围生成缩放因子;
偏移因子生成子模块,用于提取所述整数集取值范围中的最小整数值,以及提取所述浮点集取值范围中的最小浮点值,并利用所述缩放因子、所述最小整数值和所述最小浮点值生成偏移因子;
添加子模块,用于将所述缩放因子及所述偏移因子添加至所述第一量化参数。
8.根据权利要求7所述的神经网络差量压缩装置,其特征在于,所述第一量化处理模块,包括:
量化处理子模块,用于利用所述缩放因子和所述偏移因子采取如下方式对所述当前网络层中的浮点参数进行所述量化处理,得到所述当前网络层对应的整数集:
Figure 749444DEST_PATH_IMAGE001
其中,所述
Figure 861757DEST_PATH_IMAGE002
表示所述浮点参数,
Figure 931344DEST_PATH_IMAGE003
表示所述缩放因子,
Figure 129107DEST_PATH_IMAGE004
表示所述偏移因子,
Figure 676763DEST_PATH_IMAGE005
表示取整函数,
Figure 846844DEST_PATH_IMAGE014
表示浮点参数对应的整数参数,所述整数集用于包含所述整数参数;
整合子模块,用于将所述当前训练模型对应的所有整数集进行整合,得到所述第一整数模型。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的神经网络差量压缩方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的神经网络差量压缩方法的步骤。
CN202210255131.9A 2022-03-16 2022-03-16 一种神经网络差量压缩方法、装置、电子设备及存储介质 Pending CN114418098A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210255131.9A CN114418098A (zh) 2022-03-16 2022-03-16 一种神经网络差量压缩方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210255131.9A CN114418098A (zh) 2022-03-16 2022-03-16 一种神经网络差量压缩方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114418098A true CN114418098A (zh) 2022-04-29

Family

ID=81262735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210255131.9A Pending CN114418098A (zh) 2022-03-16 2022-03-16 一种神经网络差量压缩方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114418098A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2739956A1 (en) * 2010-05-11 2011-11-11 Dassault Systemes Compression and decompression of numerical data
CN108734266A (zh) * 2017-04-21 2018-11-02 展讯通信(上海)有限公司 深度神经网络模型的压缩方法及装置、终端、存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2739956A1 (en) * 2010-05-11 2011-11-11 Dassault Systemes Compression and decompression of numerical data
CN108734266A (zh) * 2017-04-21 2018-11-02 展讯通信(上海)有限公司 深度神经网络模型的压缩方法及装置、终端、存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHUYU ZHANG ET.AL: "QD-Compressor: a Quantization-based Delta Compression Framework for Deep Neural Networks", 《2021 IEEE 39TH INTERNATIONAL CONFERENCE ON COMPUTER DESIGN (ICCD)》, 20 December 2021 (2021-12-20), pages 542 - 550 *

Similar Documents

Publication Publication Date Title
Dettmers et al. The case for 4-bit precision: k-bit inference scaling laws
CN110222821B (zh) 基于权重分布的卷积神经网络低位宽量化方法
Drumond et al. Training dnns with hybrid block floating point
Köster et al. Flexpoint: An adaptive numerical format for efficient training of deep neural networks
KR20180043172A (ko) 뉴럴 네트워크 양자화(neural network quantization) 방법 및 장치
KR20180043154A (ko) 뉴럴 네트워크 양자화(neural network quantization) 방법 및 장치
CN109635935B (zh) 基于模长聚类的深度卷积神经网络模型自适应量化方法
Liu et al. Improving neural network efficiency via post-training quantization with adaptive floating-point
Kuzmin et al. Fp8 quantization: The power of the exponent
CN109859281B (zh) 一种稀疏神经网络的压缩编码方法
EP2441049A2 (en) Method for encoding/decoding a 3d mesh model that comprises one or more components
CN110036384B (zh) 信息处理设备和信息处理方法
CN111147862B (zh) 一种基于目标编码的端到端图像压缩方法
CN109740737B (zh) 卷积神经网络量化处理方法、装置及计算机设备
US11531884B2 (en) Separate quantization method of forming combination of 4-bit and 8-bit data of neural network
Tomić et al. Performance of Post‐Training Two‐Bits Uniform and Layer‐Wise Uniform Quantization for MNIST Dataset from the Perspective of Support Region Choice
US20240080038A1 (en) Compression of Data that Exhibits Mixed Compressibility
TW202013261A (zh) 算數框架系統及操作浮點至定點算數框架的方法
CN114418098A (zh) 一种神经网络差量压缩方法、装置、电子设备及存储介质
CN113537474A (zh) 多精度量化元神经网络训练及精度选取方法
WO2021247840A2 (en) Systems and methods for improved machine-learned compression
CN112702600A (zh) 一种图像编解码神经网络分层定点化方法
Sun et al. Efficient vector quantization using genetic algorithm
WO2022247368A1 (en) Methods, systems, and mediafor low-bit neural networks using bit shift operations
Sakthi et al. Speech Recognition model compression

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20220429