CN117540778A - 用于量化神经网络模型的方法、装置、计算设备和介质 - Google Patents

用于量化神经网络模型的方法、装置、计算设备和介质 Download PDF

Info

Publication number
CN117540778A
CN117540778A CN202210910943.2A CN202210910943A CN117540778A CN 117540778 A CN117540778 A CN 117540778A CN 202210910943 A CN202210910943 A CN 202210910943A CN 117540778 A CN117540778 A CN 117540778A
Authority
CN
China
Prior art keywords
parameters
neural network
network model
range
quantized
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
CN202210910943.2A
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.)
Douyin Vision Co Ltd
Original Assignee
Douyin Vision Co Ltd
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 Douyin Vision Co Ltd filed Critical Douyin Vision Co Ltd
Priority to CN202210910943.2A priority Critical patent/CN117540778A/zh
Priority to PCT/CN2022/130432 priority patent/WO2024021361A1/zh
Priority to US17/928,713 priority patent/US20240220782A1/en
Priority to EP22808581.7A priority patent/EP4336412A4/en
Publication of CN117540778A publication Critical patent/CN117540778A/zh
Pending legal-status Critical Current

Links

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
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • 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
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • 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
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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/088Non-supervised learning, e.g. competitive learning
    • 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/0895Weakly supervised learning, e.g. semi-supervised or self-supervised learning
    • 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/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本公开的实施例涉及用于量化神经网络模型的方法、装置、计算设备和介质。方法包括基于训练数据集对神经网络模型进行更新,将经更新的神经网络模型的第一部分的第一组参数调整到第一范围内,并且将经更新的神经网络模型的第二部分的第二组参数调整到第二范围内,第二范围的大小超过第一范围的大小。方法还包括使用第一数目的位来量化经调整的第一组参数。方法还包括使用第二数目的位来量化经调整的第二组参数,第二数目大于第一数目。基于这种方式,结合训练过程对神经网络模型的参数进行差异化的量化,在保持参数精度和模型性能的情况下,提高了神经网络模型的压缩效率和执行效率。

Description

用于量化神经网络模型的方法、装置、计算设备和介质
技术领域
本公开的实施例涉及计算机科学技术领域,并且更具体地,涉及用于量化神经网络模型的方法、装置、计算设备、计算机可读存储介质和计算机程序产品。
背景技术
随着计算机科学技术的发展,神经网络模型被广泛地应用于图像处理、语音识别、文本处理等应用。音频、图像及文本可以被提供给经过训练的神经网络模型,由模型产生相应的处理结果,例如,将语音转换为文本,或识别图像中的物体等。
神经网络模型可以部署于在线系统和离线系统。对于在线系统,神经网络模型位于服务器处,终端设备将待处理数据上传到服务器,由服务器执行任务。而离线系统是模型被下发到终端设备处(比如手机、嵌入式系统等),由终端设备来运行模型。然而这类设备的硬件性能通常比较弱,并且如果模型很大,会导致模型下发的失败率增大。通常使用量化技术来降低模型大小,然而现有的量化技术难以在满足模型性能要求的同时对模型进行有效压缩。
发明内容
有鉴于此,本公开的实施例提出了用于量化神经网络模型的方法、装置、计算设备、计算机可读存储介质和计算机程序产品。
根据本公开的第一方面,提供了一种用于量化神经网络模型的方法。方法包括:基于训练数据集对神经网络模型进行更新,将经更新的神经网络模型的第一部分的第一组参数调整到第一范围内,并且将经更新的神经网络模型的第二部分的第二组参数调整到第二范围内,第二范围的大小超过第一范围的大小。方法还包括使用第一数目的位来量化经调整的第一组参数。方法还包括使用第二数目的位来量化经调整的第二组参数,第二数目大于第一数目。基于这种方式,结合训练过程对神经网络模型的参数进行差异化的量化,在保持参数精度和模型性能的情况下,提高了神经网络模型的压缩效率和执行效率。
在第一方面的一些实施例中,方法还可以包括:在使用第二数目的位来量化经调整的第二组参数之前,基于练数据集以及经量化的第一组参数来迭代更新第二组参数。基于这种方式,可以对神经网络模型进行微调,改善神经网络模型的性能。
在第一方面的一些实施例中,基于经量化的第一组参数来迭代更新经调整的第二组参数可以包括:在保持经量化的第一组参数不变的情况下,基于训练数据集对神经网络模型进行迭代更新,其中,经迭代更新的神经网络模型包括经迭代更新的第二组参数。基于这种方式,可以对神经网络模型进行重训练,以补偿一部分参数的量化带来的性能损失。
在第一方面的一些实施例中,将经更新的神经网络模型的第一部分的第一组参数调整到第一范围内可以包括:将第一组参数中的大于第一范围的上限值的参数调整为上限值,并且将第一组参数中的小于第一范围的下限值的参数调整为下限值。基于这种方式,可以将神经网络模型的参数限制在指定范围内,使得量化后的参数仍具有较高的精度。
在第一方面的一些实施例中,使用第一数目的位来量化经调整的第一组参数可以包括:基于第一数目,将第一范围划分为多个子范围;以及基于多个子范围和第一组参数中的每个参数的值,确定每个参数的量化值。基于这种方式,可以有效地将参数量化,以实现神经网络模型的高效压缩。
在第一方面的一些实施例中,方法还可以包括:基于经量化的第一组参数和经量化的第二组参数,生成经量化的神经网络模型,并且将经量化的神经网络模型传输至终端设备。基于这种方式,可以生成并在终端设备处部署轻量级神经网络模型来实现离线系统。
在第一方面的一些实施例中,训练数据集可以包括音频数据、图像数据、视频数据、文本数据中的至少一项。基于这种方式,神经网络模型可以被应用于音频处理、图像处理、视频处理、文本处理等应用领域和完成特定的任务。
在第一方面的一些实施例中,第一数目为4,并且第二数目为8。基于这种的方式,第一组参数可以具有比第二组参数更高的压缩率。
在第一方面的一些实施例中,第一部分包括基于线性变换的网络,第一组参数包括用于线性变换的权重,第二部分包括卷积神经网络,第二组参数包括卷积神经网络的卷积核的参数。基于这种方式,可以对总数更多的权重参数进行更高的压缩,而对总数较少的卷积参数进行较少的压缩,由此神经网络模型整体上实现了更高的压缩率,而性能影响较小。
在第一方面的一些实施例中,神经网络模型包括用于语音识别,并且包括基于变换器(transformer)的模型。
在第一方面的一些实施例中,对神经网络模型进行更新包括基于浮点数格式来更新神经网络模型。基于这样的方式,可以用较高的精度进行神经网络模型的训练。
根据本公开的第二方面,提供了一种用于量化神经网络模型的装置。装置包括训练单元、第一调整单元、第二调整单元、第一量化单元和第二量化单元。训练单元被配置为使用训练数据集来更新神经网络模型。第一调整单元被配置为将经更新的〃神经网络模型的第一部分的第一组参数调整到第一范围内。第二调整单元被配置为将经更新的神经网络模型的第二部分的第二组参数调整到第二范围内,第二范围的大小超过第一范围的大小。第一量化单元被配置为使用第一数目的位来量化经调整的第一组参数。第二量化单元被配置为使用第二数目的位来量化经调整的第二组参数,第二数目大于第一数目。
第二方面的一些实施例可以具有实现第一方面所述的动作或功能的单元,其所能达到的有益效果与第一方面也类似。为了简洁起见,这里不再重复。
根据本公开的第三方面,提供了一种计算设备,包括至少一个处理单元和至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令,指令当由至少一个处理单元执行时,使计算设备执行根据本公开的第一方面所述的方法。
根据本公开的第四方面,提供了一种计算机可读存储介质,包括机器可执行指令,机器可执行指令在由设备执行时使设备执行根据本公开的第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括机器可执行指令,机器可执行指令在由设备执行时使设备执行根据本公开的第一方面所述的方法。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的实施例的用于量化神经网络模型的过程的示意流程图;
图3示出了根据本公开的实施例的神经网络模型的示例结构的示意图;
图4示出了根据本公开的实施例的参数量化方法的示意图;
图5示出了根据本公开的实施例的用于微调神经网络模型的过程的示意流程图;
图6示出了根据本公开的实施例的用于量化神经网络模型的装置的示意框图;以及
图7示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。
具体实施方式
可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
需要注意的是,本文中使用的数字或数值均是为了方便理解本公开的技术,而非限制本公开的范围。
在本公开的实施例中,术语“模型”能够处理输入并且提供相应输出。以神经网络模型为例,其通常包括输入层、输出层以及在输入层与输出层之间的一个或多个隐藏层。在深度学习应用中使用的模型(也称为“深度学习模型”)通常包括许多隐藏层,从而延长网络的深度。各个层相连以使得前一层的输出被用作后一层的输入或者可以将在后层的输出反馈作为前面的层的输入。输入层接收针对神经网络模型的输入,而输出层的输出作为神经网络模型的最终输出。神经网络模型的每个层包括一个或多个节点(也称为节点或神经元),每个节点接收输入并根据模型参数并产生相应的输出,输出又可以通过模型的参数组合而形成自身或其他节点的输入。模型可以通过训练来更新其参数,经过训练的模型能够学习到通过其参数来体现的知识,从而能够用于各类任务,例如,语音识别、图像识别、文本处理等。在本文中,术语“神经网络”、“模型”、“网络”和“神经网络模型”可互换使用。
如上所提及的,在离线系统中神经网络模型被部署在移动设备处,当需要部署或更新神经网络模型时,将模型(包含其参数)下发到移动设备处,如果模型很大可能导致下发失败率增大。另一方面移动设备的硬件性能也不适合执行较大的模型。传统上,通过量化技术将来减少每个模型参数所需存储空间,从而降低模型本身的大小。一些方法通过将参数从浮点数形式(例如32位)改变为8位整数形式来减小模型大小。然而,这依然难以满足实际需要。并且通过进一步降低参数的位数(例如,4位、2位等)会导致模型的性能明显下降,这是所不期望的。
有鉴于此,本公开的实施例提供了一种改进的量化技术,其与模型的训练过程相结合,能够显著降低神经网络模型的大小,并且由此得到的神经网络模型的性能几乎不受影响。根据本公开的实施例的方法包括,使用训练数据集来训练神经网络模型以更新神经网络模型的参数。然后,将神经网络模型的第一部分的第一组参数调整到第一范围内并且将第二部分的第二组参数调整到第二范围内,第二范围大于第一范围。然后,将第一组参数量化为使用第一数目的位来表示。方法还包括将第二组参数量化为使用第二数目的位来表示,第二数目大于第一数目。基于这种方式,可以对神经网络模型的参数进行差异化的量化,在保持参数精度和模型性能的情况下,提高了神经网络模型的压缩效率和执行效率。
以下参考图1至7详细描述本公开的实施例的实现细节。
图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。环境100包括计算设备110。计算设备110可以是具有计算能力的任何设备,例如个人计算机、平板计算机、可穿戴设备、云服务器、大型机和分布式计算系统等。计算设备110可以是单个设备,或者是由多个设备组成的集群。
根据本公开的实施例,计算设备110可以用于训练和量化神经网络模型130。如图所示,计算设备110获取训练数据集120。训练数据集120可以包括图像、视频、音频、文本、和/或多媒体文件等。在有监督或半监督训练的情况下,训练数据集120可以包括标签信息。在无监督训练的情况下,计算设备110可以不包括标签信息。
神经网络模型130可以包括但不限于:语音识别模型、文本处理模型、光学字符识别(OCR)模型、图像分类模型、语义分割模型、目标检测模型,或者其他模型。可以利用任何合适的网络结构来实现神经网络模型130,包括但不限于支持向量机(SVM)模型,贝叶斯模型,随机森林模型,各种深度学习/神经网络模型,诸如深度前馈神经网络、卷积神经网络(CNN)、循环神经网络(RNN)、基于注意力机制的transformer模型等以及它们的组合,本公开的范围在此方面不受限制。
计算设备110可以将训练数据集120应用于神经网络模型130来更新神经网络模型130的参数,例如通过梯度下降法或其他训练方法。在训练过程中,被更新的参数可以具有较高的精度,例如,通过32位浮点数来表示。计算设备110还可以对神经网络模型130的参数进行量化,经量化后的参数可以占据更少的存储空间,例如16位、8位、4位或更少,本公开对经量化得到参数的位数不做限制。由此,从而生成经量化的神经网络模型140。经量化的神经网络模型140相比于原始的神经网络模型130减小。在本文中,经量化的神经网络模型140也可以被称为轻量级神经网络模型或轻量级模型。在一些实施例中,经量化的神经网络模型140可以从计算设备110处被下发到移动设备(未示出)。在新部署神经网络模型140的情况下,计算设备110可以将包括模型结构信息和模型参数在内的完整模型下发至移动设备。在已经部署过而需要更新的情况下,计算设备110可以仅传输发生变化的模型参数。
应当理解,图1所示的环境100仅仅是本公开的实施例可以实现于其中的一种示例,不旨在限制本公开的范围。本公开的实施例同样适用于其他系统或架构。
以下结合图2至图5进一步描述本公开的实施例的用于量化神经网络模型的示例性过程。为方便说明,首先描述适用于本公开的实施例的示例性神经网络模型130的结构。
图2示出了根据本公开的实施例的神经网络模型130的示例结构的示意图。神经网络模型130包括第一部分210和第二部分220。输入201被提供至神经网络模型130,经处理后得到输出202。
输入201可以是如图1所示的测试数据集120中的一部分数据,输出202可以是针对该输入201的预测结果。如上所述,训练数据集120可以包括音频、视频、文本等各种类型的数据,为了方便说明,下文将以音频数据来为例进行说明。例如,在神经网络模型130是语音识别模型的情况下,输入201可以是语音数据经过声学特征提取得到的声学特征(例如基于梅尔频谱)。例如,可以从一个语音帧(10毫秒)提取出向量(例如,40维、80维)形式的声学特征,由此一系列声学特征可以形成多维数据作为神经网络模型130的输入。输出202可以是针对语音的音素预测或文字预测结果。预测结果可以被表示为向量的形式,向量的分量指示语音被识别为相应的音素或文字的概率。由此可以将语音转换为文字。应理解,输入201可以是替他类型的特征,例如图像的像素表示、文本嵌入表示等,相应的输出202可以是例如图像识别结果或与语义分析结果。由此将本申请的实施例用于图像分类等任务。
被取决于神经网络模型130的具体实现,第一部分210和第二部分220可以包括不同类型的网络结构。
作为示例而非限制,第一部分210可以包括至少一个基于线性变换的网络215,第二部分220可以包括至少一个卷积神经网络225。并且为了简洁期间,这里仅示出了一个基于线性变换的网络215和一个卷积神经网络225,应理解,神经网络模型130可以包含任意数目的卷积神经网络和基于线性变换的网络,并且它们可以以与所示不同的方式组合在一起。另外,第一部分210和第二部分220可以包括其他不同类型的网络。
如图所示,卷积神经网络225的输入可以具有矩阵221的形式。作为示例,可以将时长1秒语音数据划分为100帧,每一帧(10毫秒)用一个80维的向量来表示,由此,时长1秒的语音可以表示为一个100×80的矩阵。针对矩阵211,使用至少一个卷积核222来执行卷积操作,由此得到对应的至少一个卷积结果223。每个卷积核212可以具有卷积参数,例如,大小为2×2的卷积核包括4个参数,大小为3×3的卷积核具有9个参数。
从卷积神经网络225得到的卷积结果223可以拼接在一起,得到向量211,向量211可以通过线性变换转换为另一个向量212。线性变换可以通过权重矩阵W来表示。作为神经网络模型130的参数,权重矩阵W包括从向量211变换到向量212的权重。
如上所述,神经网络模型130的第一部分210和第二部分220的参数数量可能存在较大的差异。在一些实施例中,神经网络模型130可以是或者包括基于变换器(transformer)的网络。以transformer网络为例,其包括两种类型的基本结构:卷积神经网络和基于线性变换的网络,卷积神经网络一般出现在前端下采样的模块中,参数量较少,而基于线性变换的网络出现在每一层的注意力(attention)结构中以及最后的全连接中,占参数量的主要部分。另一方面,第一部分和第二部分的参数分布情况不同,对模型性能的影响力也不同。
有鉴于此,本公开的实施例将结合神经网络模型130的训练过程对第一部分210和第二部分220的参数分别采用合适的量化级别。下文参考图3描述该过程。
图3示出了根据本公开的实施例的用于量化神经网络模型的过程300的示意流程图。过程300可以由图1中的计算设备110来实施。为了方便描述,将参考图1和图2来描述过程300。
在图3的框310,计算设备110基于训练数据集120对神经网络模型130进行更新。在本文中,更新神经网络模型130可以指代更新神经网络模型130的参数,包括第一部分210的第一组参数和第二部分的第二组参数。可以利用梯度下降法,通过最小化神经网络模型130产生的损失来更新其参数。
在框320,计算设备110将经更新的神经网络模型130的第一部分210的第一组参数调整到第一范围内。第一组参数可以包括例如至少一个线性变换的权重矩阵W中的权重。
在框330,计算设备110将经更新的神经网络模型130的第二部分220的第二组参数调整到第二范围内,第一范围的大小小于第二范围的大小。第二组参数可以包括例如至少一个卷积核的参数。
需要说明的是,框320和330中的动作可以同时执行或者以不同顺序来执行,本公开对此不做限制。
在训练过程中,神经网络模型130的参数被表示为例如32位浮点数并且被更新。32位浮点数可以表示相当大的范围,然而在多数情况下,参数均为分布在小得多的范围内,例如基本在0附近,如[0.25,0.25]、[-0.5,0.5]、[-1,1]或其他范围。可以将第一组参数和第二组参数调整到各自的范围内,即,第一组参数被调整到第一范围内,第二组参数被调整到第二范围内。
应理解,参数量化后的位数反映参数被压缩的级别。位数越少,可能的量化值越少,压缩程度越高。例如,在量化的位数为2位的情况下,参数一共有4个可能的量化值,在位数为4位的情况下,参数一共有最多16个可能值,在位数为8位的情况下,参数一共有最多256个可能值。为了保证参数的精度(即,两个相邻量化值所对应的实际参数值之间的差,也可以被称为“分辨率”),对于量化位数较少的参数,可以预先将其调整到更小的数值范围内,将分辨率控制在预期精度内。
如框320和330,第一组参数和第二组参数被调整到大小的不同的范围内,并且针对第一组参数的第一范围的大小可以小于针对第二组参数的范围的大小。作为示例而非限制,第一范围可以是[-0.25,025],第二范围可以是[-1,1]。
具体地,对于第一组参数中的参数,如果大于第一范围的上限值(例如,0.25),则该参数被调整为上限值。如果参数小于第一范围的下限值(例如,-0.25),则该参数被调整为下限值。如果参数在第一范围之内,则该参数保持原样。类似地,对于第二组参数中的参数,如果其大于第二范围的上限值(例如,1.0),则该参数被调整为上限值。如果参数小于第一范围的下限值,则该参数被调整为下限值(-1.0)。如果参数在第二范围之内,则该参数保持原样。
通过控制参数的范围,即时最大第一组参数和第二组参数被量化之后依然能够具有令人满意的精度。
在框340,确定是否停止训练。例如,可以通过确定是否满足收敛条件(考虑训练时间或训练结果)来确定是否停止训练。如果不停止训练,则回到框310,使用下一个批次(batch)的训练数据重复执行上述框310至框330的动作。如果确定停止训练,在方法300前进到框340。也就是说,上述框310至框330中的动作可以基于训练时所使用的训练数据集120的批次而被迭代地执行,直到模型收敛而结束训练,或者手动停止训练。换句话说,每使用一个批次的训练数据来训练神经网络模型130,更新其参数之后,可以调整神经网络模型130的第一部分210的参数和第二部分220的参数到指定的范围内。如果训练尚未结束,则使用下一个批次的训练数据重复执行上述框310至框330的动作,直到训练结束。
接下来,在框350,计算设备110使用第一数目的位来量化经调整的第一组参数。作为示例,第一数目可以是4,即,将第一组参数量化为4个位的量化值(也称为4位整数型INT4),从而一共有16(24)个可能的量化值。应理解,第一数目还可以是其他值,例如2。
参考图4说明示例的参数量化方法。如图4所示,中间的数轴40表示在训练过程中或训练后得到的参数及其范围,数轴40上的参数具有浮点数类型,例如32位浮点数。第一组参数的第一范围是[r1min,r1max],第二组参数的第二范围是[r2min,r2max],第一范围的大小小于第二范围的大小。
位于顶部的数轴41表示第一组参数被量化后的值。使用4个位来量化第一组参数的情况下,数值41上最小值Pmin可以是例如-8,最大值可以是例如7。在一些实施例中,可以将第一范围划分为多个子范围,并且根据多个子范围和第一组参数中的每个参数的值,确定每个参数的量化值。
例如,可以将第一范围平均划分为15(24-1)个子范围,即插入14个分隔点,连同两个最大值和最小值,得到16个点。这些点从小到大依次对应于-8至7的量化值。针对每个参数,将其距离最近的点所对应的量化值确定为该参数的量化值。备选地,还可以将第一范围平均划分为16(24)个子范围,根据每个参数所在子范围来确定其量化值。如图所示,数轴40上的第一组参数的最小值r1min被量化为Pmin,最大值r1max被量化为Pmax,第一范围中间的参数401被量化为数轴41上的值402。在第一范围是[-0.25,0.25]的情况下,第一组参数被量化后的分辨率为1/32。
继续参考图3,在框360,计算设备110使用第二数目的位来量化经调整的第二组参数,第二数目大于第一数目作为示例,第二数目可以是8,即,将第二组参数量化为8个位的量化值(也称为8位整数型INT8),从而一共有256(28)个可能的量化值。应理解,第二数目还可以是大于第一数目的其他值。
再次参考图4,底部的数轴42表示第二组参数被量化后的值。使用8个位来量化第一组参数的情况下,数值42上最小值Qmin可以是例如-128,最大值可以是例如127。类似地,可以将第二范围划分为多个子范围,并根据多个子范围和第二组参数中的每个参数的值,确定每个参数的量化值。具体过程与第一组参数类似,不再赘述。如图所示,数轴40上的第二组参数的最小值r2min被量化为Qmin,最大值r2max被量化为Qmax,第二范围中间的参数403被量化为数轴42上的值404。在第二范围是[-1,1]的情况下,第一组参数被量化后的分辨率为1/128。
为了更好理解本公开的实施例,通过如下试验例进一步说明。假设神经网络模型130的第一部分为基于线性变换的网络,其参数量为10M,第二部分为卷积神经网络,其参数量为200k。在没有量化的情况下每个参数均为32位浮点数,因此模型总大小约为40.8MByte。在统一使用传统8位量化方案时,每个参数都量化为8位,因此模型总大小降低为原来的25%,即10.2MByte。根据本公开的实施例,线性变换网络的大小降为原来的1/8(4位),卷积神经网络变为原来的1/4,因此模型总大小约为5.2Mbyte。相比于传统量化方案,显著降低了模型的大小,而且模型的实际性能几乎没有收到影响。另一方面,根据本公开的实施例的神经网络模型的运行速度也能够得到明显提高。
在一些实施例中,为了进一步保证量化后的神经网络模型140的性能,还可以在第一组参数被量化之后,基于量化后的第一组参数进行重训练,实现对神经网络模型130的微调。
图5示出了根据本公开的实施例的用于微调神经网络模型的过程500的示意流程图。过程500可以在图3的框350之后,框360之前被执行。
在框510,计算模型110在保持经量化的第一组参数不变的情况下,使用训练数据集来更新第二组参数。例如,计算设备130使用一个批次的训练数据更新第二组参数。通过这种方式来补偿第一组参数的量化带来的一部分性能损失。
在框520,计算设备110将第二组参数调整到第二范围内。这与图3中框330的动作类似,不再赘述。
在框530,计算设备110确定训练是否完成。如果未完成,则返回到框510,继续训练进行更新第二组参数。如果完成,则前进到图3中的框360,执行对第二组参数的量化。
然后,计算设备110可以基于经量化的第一组参数和经量化的第二组参数,生成经量化的神经网络模型140,并且将经量化的神经网络模型140传输至终端设备。由于模型终端设备部署这种轻量化的神经网络模型来实现离线系统,在没有网络的情况下执行推理任务。
以上参照图1至图5描述了根据本公开的实施例的用于量化神经网络模型的方法或过程。相比于现有的方案,本公开的实施例结合训练过程对神经网络模型的参数进行差异化的量化,在保持参数精度和模型性能的情况下,提高了神经网络模型的压缩效率和执行效率。
图6示出了根据本公开的实施例的用于量化神经网络模型的装置600的示意框图。装置600可以被布置在在计算设备110处。
如图所示,装置600包括训练单元610、第一调整单元620、第二调整单元630、第一量化单元640和第二量化单元650。训练单元610被配置为基于训练数据集对神经网络模型进行更新。第一调整单元620被配置为将经更新的神经网络模型的第一部分的第一组参数调整到第一范围内。第二调整单元630被配置为将经更新的神经网络模型的第二部分的第二组参数调整到第二范围内,第二范围的大小超过第一范围的大小。第一量化单元640被配置为使用第一数目的位来量化经调整的第一组参数。第二量化单元650被配置为使用第二数目的位来量化经调整的第二组参数,第二数目大于第一数目。
在一些实施例中,装置600还可以包括微调单元(未示出)。微调单元可以被配置为:在量化经调整的第二组参数之前,使用训练数据集,基于经量化的第一组参数来更新第二组参数。在一些实施例中,微调单元还可以被配置为在保持经量化的第一组参数不变的情况下,使用训练数据集来更新第二组参数。
在一些实施例中,第一调整单元620还可以被配置为将第一组参数中的大于第一范围的上限值的参数调整为上限值。第一调整单元620还可以被配置为将第一组参数中的小于第一范围的下限值的参数调整为下限值。
在一些实施例中,第一量化单元640还可以被配置为基于所述第一数目,将所述第一范围划分为多个子范围,以及基于多个子范围和第一组参数中的每个参数的值,确定每个参数的量化值。
在一些实施例中,装置600还可以包括模型下发单元(未示出)。模型下发单元可以被配置为基于经量化的第一组参数和经量化的第二组参数,生成经量化的神经网络模型,以及将经量化的神经网络模型传输至终端设备。
在一些实施例中,第一数目可以为4,并且第二数目可以为8。
在一些实施例中,第二部分可以包括基于线性变换的网络,第二组参数包括用于线性变换的权重。第一部分可以包括卷积神经网络,第一组参数包括卷积神经网络的卷积核的参数。
在一些实施例中,神经网络模型可以用于语音识别并且包括基于变换器的模型。
图7示出了可以用来实施本公开内容的实施例的示例设备700的示意性框图。例如,根据本公开实施例的计算设备110可以由设备700来实施。如图所示,设备700包括中央处理单元(CPU)或图形处理单元(GPU)701,其可以根据存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU/GPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如过程300和/或500,可由处理单元701执行。例如,在一些实施例中,方法过程300和/或500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到RAM703并由CPU/GPU 701执行时,可以执行上文描述的过程300和/或500的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。

Claims (14)

1.一种用于量化神经网络模型的方法,包括:
基于训练数据集,对神经网络模型进行更新;
将经更新的神经网络模型的第一部分的第一组参数调整到第一范围内;
将所述神经网络模型的第二部分的第二组参数调整到第二范围内,所述第二范围的大小超过所述第一范围的大小;
使用第一数目的位来量化经调整的第一组参数;以及
使用第二数目的位来量化经调整的第二组参数,所述第二数目大于所述第一数目。
2.根据权利要求1所述的方法,还包括:在使用第二数目的位来量化经调整的第二组参数之前,
基于所述训练数据集以及经量化的第一组参数来迭代更新经调整的第二组参数。
3.根据权利要求2所述的方法,其中,所述基于所述训练数据集以及经量化的第一组参数来迭代更新经调整的第二组参数包括:
在保持经量化的第一组参数不变的情况下,基于所述训练数据集对所述神经网络模型进行迭代更新,其中,经迭代更新的神经网络模型包括经迭代更新的第二组参数。
4.根据权利要求1所述的方法,其中,所述将经更新的所述神经网络模型的第一部分的第一组参数调整到第一范围内包括:
将所述第一组参数中的大于所述第一范围的上限值的参数调整为所述上限值;以及
将所述第一组参数中的小于所述第一范围的下限值的参数调整为所述下限值。
5.根据权利要求1所述的方法,其中,所述使用第一数目的位来量化经调整的所述第一组参数包括:
基于所述第一数目,将所述第一范围划分为多个子范围;以及
基于所述多个子范围和所述第一组参数中的每个参数的值,确定每个参数的量化值。
6.根据权利要求1所述的方法,还包括:
基于经量化的第一组参数和经量化的第二组参数,生成经量化的神经网络模型;以及
将所述经量化的神经网络模型传输至终端设备。
7.根据权利要求1至6中任一项所述的方法,其中,所述第一数目为4,并且所述第二数目为8。
8.根据权利要求1至6中任一项所述的方法,其中,
所述第一部分包括基于线性变换的网络,所述第一组参数包括用于线性变换的权重;以及
所述第二部分包括卷积神经网络,所述第二组参数包括所述卷积神经网络的卷积核的参数。
9.根据权利要求1至6中任一项所述的方法,其中,所述神经网络模型用于语音识别,并且包括基于变换器的模型。
10.根据权利要求1所述的方法,其中对神经网络模型进行更新包括:
基于浮点数格式来更新所述神经网络模型。
11.一种用于量化神经网络模型的装置,包括:
训练单元,被配置为基于训练数据集对神经网络模型进行更新;
第一调整单元,被配置为将经更新的所述神经网络模型的第一部分的第一组参数调整到第一范围内;
第二调整单元,被配置为将经更新的所述神经网络模型的第二部分的第二组参数调整到第二范围内,所述第二范围的大小超过所述第一范围的大小;
第一量化单元,被配置为使用第一数目的位来量化经调整的所述第一组参数;以及
第二量化单元,被配置为使用第二数目的位来量化经调整的所述第二组参数,所述第二数目大于所述第一数目。
12.一种计算设备,包括:
至少一个处理单元;和
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使所述计算设备执行根据权利要求1至10中任一项所述的方法。
13.一种计算机可读存储介质,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1至10中的任一项所述的方法。
14.一种计算机程序产品,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1至10中的任一项所述的方法。
CN202210910943.2A 2022-07-29 2022-07-29 用于量化神经网络模型的方法、装置、计算设备和介质 Pending CN117540778A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202210910943.2A CN117540778A (zh) 2022-07-29 2022-07-29 用于量化神经网络模型的方法、装置、计算设备和介质
PCT/CN2022/130432 WO2024021361A1 (zh) 2022-07-29 2022-11-07 用于量化神经网络模型的方法、装置、计算设备和介质
US17/928,713 US20240220782A1 (en) 2022-07-29 2022-11-07 Method, apparatus, computing device and medium for quantizing neutral network model
EP22808581.7A EP4336412A4 (en) 2022-07-29 2022-11-07 METHOD, DEVICE, COMPUTER DEVICE AND MEDIUM FOR QUANTIZING A NEUTRAL NETWORK MODEL

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210910943.2A CN117540778A (zh) 2022-07-29 2022-07-29 用于量化神经网络模型的方法、装置、计算设备和介质

Publications (1)

Publication Number Publication Date
CN117540778A true CN117540778A (zh) 2024-02-09

Family

ID=86732572

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210910943.2A Pending CN117540778A (zh) 2022-07-29 2022-07-29 用于量化神经网络模型的方法、装置、计算设备和介质

Country Status (4)

Country Link
US (1) US20240220782A1 (zh)
EP (1) EP4336412A4 (zh)
CN (1) CN117540778A (zh)
WO (1) WO2024021361A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190050710A1 (en) * 2017-08-14 2019-02-14 Midea Group Co., Ltd. Adaptive bit-width reduction for neural networks
US11645493B2 (en) * 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
CN111582432B (zh) * 2019-02-19 2023-09-12 嘉楠明芯(北京)科技有限公司 一种网络参数处理方法及装置
CN110717585B (zh) * 2019-09-30 2020-08-25 上海寒武纪信息科技有限公司 神经网络模型的训练方法、数据处理方法和相关产品
CN113610709B (zh) * 2021-07-30 2023-12-05 Oppo广东移动通信有限公司 模型量化方法、装置、电子设备和计算机可读存储介质
CN114139683A (zh) * 2021-12-02 2022-03-04 之江实验室 一种神经网络加速器模型量化方法

Also Published As

Publication number Publication date
WO2024021361A1 (zh) 2024-02-01
US20240220782A1 (en) 2024-07-04
EP4336412A4 (en) 2024-05-01
EP4336412A1 (en) 2024-03-13

Similar Documents

Publication Publication Date Title
US11671110B2 (en) Method and apparatus for neural network model compression/decompression
US20210326710A1 (en) Neural network model compression
US20230401382A1 (en) Dynamic Language Models for Continuously Evolving Content
US20210374529A1 (en) End-to-end learning in communication systems
CN117980915A (zh) 用于端到端自监督预训练的对比学习和掩蔽建模
US11366984B1 (en) Verifying a target object based on confidence coefficients generated by trained models
CN117540778A (zh) 用于量化神经网络模型的方法、装置、计算设备和介质
EP4176385A1 (en) Multi-stage machine learning model synthesis for efficient inference
CN113761834A (zh) 自然语言处理模型的获取词向量的方法、装置和存储介质
CN113361677A (zh) 神经网络模型的量化方法和装置
US20230306239A1 (en) Online training-based encoder tuning in neural image compression
US20240371362A1 (en) Fly parameter compression and decompression to facilitate forward and/or back propagation at clients during federated learning
US20230316588A1 (en) Online training-based encoder tuning with multi model selection in neural image compression
US20230112862A1 (en) Leveraging Redundancy in Attention with Reuse Transformers
CN118364275B (zh) 大模型微调方法、装置、电子设备、存储介质和程序产品
CN117808083B (zh) 一种分布式训练通信方法、装置、系统、设备及存储介质
US20230334718A1 (en) Online training computer vision task models in compression domain
EP3770825A1 (en) Electronic device and control method thereof
WO2024215729A1 (en) Conditional adapter models for parameter-efficient transfer learning with fast inference
CN118364879A (zh) 一种量化训练方法、装置、设备以及存储介质
CN117557822A (zh) 图像分类方法、装置、电子设备和计算机可读介质
CN115329952A (zh) 一种模型压缩方法、装置和可读存储介质
CN118627567A (zh) 查找表量化的处理方法、装置、电子设备和存储介质
CN117934944A (zh) 一种基于裁剪量化的图像分类方法、装置及设备
CN116524046A (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