CN117540780A - 一种神经网络模型的压缩方法和相关装置 - Google Patents

一种神经网络模型的压缩方法和相关装置 Download PDF

Info

Publication number
CN117540780A
CN117540780A CN202410031004.XA CN202410031004A CN117540780A CN 117540780 A CN117540780 A CN 117540780A CN 202410031004 A CN202410031004 A CN 202410031004A CN 117540780 A CN117540780 A CN 117540780A
Authority
CN
China
Prior art keywords
model
compressed
network model
compression
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.)
Granted
Application number
CN202410031004.XA
Other languages
English (en)
Other versions
CN117540780B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410031004.XA priority Critical patent/CN117540780B/zh
Publication of CN117540780A publication Critical patent/CN117540780A/zh
Application granted granted Critical
Publication of CN117540780B publication Critical patent/CN117540780B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed 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/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/096Transfer learning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

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

本申请公开一种神经网络模型的压缩方法和相关装置,可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。在得到待压缩网络模型后,从待压缩网络模型的多个参数维度依次进行压缩。在压缩过程中,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n‑1,n为多个参数维度的数量,n为大于1的正整数;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。在完成从第n个参数维度对第n‑1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。由此提高模型压缩率和应用效果。

Description

一种神经网络模型的压缩方法和相关装置
技术领域
本申请涉及计算机领域,特别是涉及一种神经网络模型的压缩方法和相关装置。
背景技术
神经网络模型使得很多人工智能任务的性能达到了一个前所未有的高度,不过,复杂的神经网络模型固然具有更好的性能,但是高额的存储空间、计算资源消耗是使其难以有效地应用在各硬件平台的重要原因。
为此,可以通过模型压缩降低参数冗余,对神经网络模型进行精简,进而得到一个轻量且准确率相当的网络,压缩后的网络具有更小的结构和更少的参数,可以有效降低计算和存储开销,便于部署在受限的硬件环境中。
相关技术中提供的压缩方式可以是模型剪枝,从而剔除神经网络模型中 不重要的权重,使得神经网络模型减少参数量和计算量。然而这种方式中模型压缩率比较容易受到限制,从而导致模型压缩率可能不够,进而影响其在硬件平台的应用效果。
发明内容
为了解决上述技术问题,本申请提供了一种神经网络模型的压缩方法和相关装置,由于从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,因此,待压缩网络模型的模型压缩率将是多个参数维度的模型压缩率的叠加,从而提高待压缩网络模型的模型压缩率,提高其在硬件平台的应用效果。
本申请实施例公开了如下技术方案:
一方面,本申请实施例提供一种神经网络模型的压缩方法,所述方法包括:
获取待压缩网络模型;
对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩;在对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩的过程中,第i+1次压缩为从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为所述多个参数维度的数量,n为大于1的正整数;当i=0时,所述第i个模型是所述待压缩网络模型,当i大于0时,所述第i个模型是从所述待压缩网络模型的第i个参数维度进行压缩得到的;
在完成从所述待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
一方面,本申请实施例提供一种神经网络模型的压缩装置,所述装置包括获取单元和压缩单元:
所述获取单元,用于获取待压缩网络模型;
所述压缩单元,用于对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩;在对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩的过程中,第i+1次压缩为从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为所述多个参数维度的数量,n为大于1的正整数;当i=0时,所述第i个模型是所述待压缩网络模型,当i大于0时,所述第i个模型是从所述待压缩网络模型的第i个参数维度进行压缩得到的;
所述压缩单元,还用于在完成从所述待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
在一种可能的实现方式中,所述压缩单元,用于:
获取所述多个参数维度分别对应的优先级;
按照所述优先级从高到低的顺序,对所述待压缩网络模型,从所述多个参数维度依次进行压缩。
在一种可能的实现方式中,所述多个参数维度包括模型宽度、模型深度和通道数量中至少两种参数维度,其中,通道数量的优先级高于模型宽度的优先级,且模型宽度的优先级高于模型深度的优先级。
在一种可能的实现方式中,所述多个参数维度包括模型宽度、模型深度和通道数量,所述压缩单元,用于:
对所述待压缩网络模型的通道数量进行压缩,得到第1个模型;
对所述第1个模型的模型宽度进行压缩,得到第2个模型;
对所述第2个模型的模型深度进行压缩,得到第3个模型。
在一种可能的实现方式中,所述待压缩网络模型为转换器模型,所述转换器模型包括编码器,所述编码器包括多头注意力层和前馈网络层,所述压缩单元,用于:
确定所述多头注意力层的每个通道的第一通道重要度,以及确定所述前馈网络层的每个通道的第二通道重要度;
将所述多头注意力层中所述第一通道重要度达到第一剪枝条件的通道进行剪枝,以及将所述前馈网络层中所述第二通道重要度达到第二剪枝条件的通道进行剪枝,得到所述第1个模型。
在一种可能的实现方式中,所述压缩单元,用于:
获取所述多头注意力层所包括的权重;
针对所述多头注意力层的每个通道,基于属于所述通道的每个权重与数值零之间的差距进行重要度计算,得到所述通道的第一通道重要度。
在一种可能的实现方式中,所述压缩单元,用于:
针对所述前馈网络层的每个权重,确定裁剪掉所述权重产生的损失函数扰动;
基于所述损失函数扰动确定所述权重的重要度;
针对所述多头注意力层的每个通道,基于属于所述通道的每个权重的重要度进行重要度计算,得到所述通道的第二通道重要度。
在一种可能的实现方式中,所述待压缩网络模型为转换器模型,所述转换器模型包括嵌入层,所述嵌入层的维度是M×N,M为词汇表中词汇数量,N为权重矩阵的维度,所述压缩单元,用于:
缩减所述词汇表中出现频率低于预设阈值的词汇,并通过删除所述词汇对应的嵌入向量减小所述第1模型中M的大小;
通过主成分分析法对所述第1模型中权重矩阵的维度进行降维;
基于降维后的嵌入层得到所述第2模型。
在一种可能的实现方式中,所述压缩单元,用于:
通过奇异值分解法对所述降维后的嵌入层进行分解,得到所述第2模型。
在一种可能的实现方式中,所述待压缩网络模型为转换器模型,所述转换器模型包括多层编码器,所述模型深度为所述多层编码器的层数,所述压缩单元,用于:
基于所述第2个模型中多层编码器的层数和目标模型深度之间的比值得到压缩间隔;
按照所述多层编码器的排列顺序,每次对所述压缩间隔内的编码器进行蒸馏得到目标编码器,直到蒸馏得到的目标编码器的层数满足所述目标模型深度;
基于所述蒸馏得到的目标编码器确定所述第3个模型。
在一种可能的实现方式中,所述压缩单元,用于:
从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到初始压缩模型;
利用所述第i个模型对所述初始压缩模型进行蒸馏,得到所述第i+1个模型。
在一种可能的实现方式中,所述获取单元,用于:
获取训练好的多个神经网络模型;
对所述多个神经网络模型分别进行预测结果检测,得到所述多个神经网络模型中每个神经网络模型的检测指标值;
将所述检测指标值满足预设条件的神经网络模型确定为所述待压缩网络模型。
一方面,本申请实施例提供一种计算机设备,所述计算机设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行前述任一方面所述的方法。
一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序当被处理器执行时使所述处理器执行前述任一方面所述的方法。
一方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现前述任一方面所述的方法。
由上述技术方案可以看出,在训练得到神经网络模型后,由于神经网络模型可能具有比较复杂的结构,以保证神经网络模型具有更好的性能,因此,可以将训练得到的神经网络模型作为待压缩网络模型,从而对待压缩网络模型进行压缩。在对待压缩网络模型进行压缩时,由于待压缩网络模型可能具有多个参数维度的参数,故可以从待压缩网络模型的多个参数维度依次进行压缩。在对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的过程中,可以将前一次压缩得到的模型作为后一次压缩的基础,即针对任一次压缩例如第i+1次压缩,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为多个参数维度的数量,n为大于1的正整数;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。在完成从待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。由于从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,因此,待压缩网络模型的模型压缩率将是多个参数维度的模型压缩率的叠加,从而提高待压缩网络模型的模型压缩率,提高其在硬件平台的应用效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术成员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种神经网络模型的压缩方法的应用场景架构图;
图2为本申请实施例提供的一种神经网络模型的压缩方法的流程图;
图3为本申请实施例提供的一种混淆矩阵的示例图;
图4为本申请实施例提供的一种Transformer模型的结构示例图;
图5为本申请实施例提供的一种多头注意力层的结构示例图;
图6为本申请实施例提供的一种按层蒸馏的方式示意图;
图7为本申请实施例提供的一种PCA示意图;
图8为本申请实施例提供的一种SVD分解示意图;
图9为本申请实施例提供的一种自适应蒸馏的示意图;
图10为本申请实施例提供的一种多步自适应蒸馏过程的示例图;
图11为本申请实施例提供的一种神经网络模型的压缩装置的结构图;
图12为本申请实施例提供的一种终端的结构图;
图13为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
神经网络模型使得很多人工智能任务的性能达到了一个前所未有的高度。神经网络模型可以是预训练模型,预训练模型可以是通过自监督学习从大规模数据中训练得到的与具体任务无关的模型。由于在预训练过程中学习到了丰富的信息,预训练模型可以在下游任务中经过简单精调后即可得到不错的效果。
复杂的神经网络模型固然具有更好的性能,但是高额的存储空间、计算资源消耗是使其难以有效地应用在各硬件平台的重要原因。为此,可以通过模型压缩降低参数冗余。模型压缩是指利用数据集对已经训练好的神经网络模型进行精简,进而得到一个轻量且准确率相当的网络,压缩后的网络模型具有更小的结构和更少的参数,可以有效降低计算和存储开销,便于部署在受限的硬件环境中。
相关技术主要通过模型剪枝进行模型压缩,模型剪枝的原理是通过剔除神经网络模型中“不重要”的权重,使得神经网络模型减少参数量和计算量,同时尽量保证模型的精度不受影响。相关技术提供的模型剪枝方法通常是一维的,对模型压缩率存在理论上限,从而导致模型压缩率可能不够,进而影响其在硬件平台的应用效果。
为了解决上述技术问题,本申请实施例提供一种神经网络模型的压缩方法,该方法可以对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩。由于从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,因此,待压缩网络模型的模型压缩率将是多个参数维度的模型压缩率的叠加,从而提高待压缩网络模型的模型压缩率,提高其在硬件平台的应用效果。
需要说明的是,本申请实施例提供的神经网络模型的压缩方法可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,在这些场景中可能会使用神经网络模型。通过本申请实施例提供的方法对神经网络模型进行压缩得到压缩后的网络模型,压缩后的网络模型可以部署在硬件平台上,硬件平台例如可以是小程序、公众号、应用程序等。压缩后的网络模型可以用在小程序电商商品分类、召回、排序,公众号视频内容分类、检索等各类涉及推理的下游业务,没有特定的产品场景。
其中,公众号可以是开发者或商家在即时通信应用上申请的应用账号,平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动。形成了一种主流的线上线下互动销售方式。小程序是一种不需要下载安装即可在即时通信应用上使用的应用程序,可以在即时通信应用内被便捷地获取和传播,主要提供给企业、媒体、其他组织或个人的开发者在即时通信应用平台上提供服务。
本申请实施例提供的神经网络模型的压缩方法可以由计算机设备执行,该计算机设备例如可以是服务器,也可以是终端。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端包括但不限于智能手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。
如图1所示,图1示出了一种神经网络模型的压缩方法的应用场景架构图,该应用场景以计算机设备是服务器为例进行介绍,在该应用场景中可以包括服务器100。
在训练得到神经网络模型后,由于神经网络模型可能具有比较复杂的结构,以保证神经网络模型具有更好的性能,因此,可以将训练得到的神经网络模型作为待压缩网络模型,从而由服务器100对待压缩网络模型进行压缩。
其中,神经网络模型可以是由服务器100训练得到的,也可以是由其他计算机设备训练得到的,本申请实施例对此不做限定。神经网络模型可以是任意网络结构的神经网络模型,本申请实施例对神经网络模型的网络结构不做限定。
待压缩网络模型可以具有大量的参数,而这些参数可能是从不同维度体现待压缩网络模型的结构,故可以将这些参数划分为多个参数维度。参数维度可以是体现待压缩网络模型结构的参数所属的维度。在一种可能的实现方式中,多个参数维度可以是模型宽度、模型深度和通道数量中至少两种参数维度。
在对待压缩网络模型进行压缩时,由于待压缩网络模型可能具有多个参数维度的参数,故服务器100可以从待压缩网络模型的多个参数维度依次进行压缩。在对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的过程中,服务器100可以将前一次压缩得到的模型作为后一次压缩的基础,即针对任一次压缩例如第i+1次压缩,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为多个参数维度的数量;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。在完成从待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
例如图1所示,第1次压缩是从待压缩网络模型的第1个参数维度,对待压缩网络模型进行压缩得到第1个模型,第2次压缩是从待压缩网络模型的第2个参数维度,对第1个模型进行压缩得到第2个模型,第3次压缩是从待压缩网络模型的第3个参数维度,对第2个模型进行压缩得到第3个模型,依次类推,第n次压缩是从待压缩网络模型的第n个参数维度,对第n-1个模型进行压缩得到第n个模型。
由于从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,因此,待压缩网络模型的模型压缩率将是多个参数维度的模型压缩率的叠加,从而提高待压缩网络模型的模型压缩率,提高其在硬件平台的应用效果。
需要说明的是,本申请实施例还可以涉及人工智能技术,通过人工智能技术自动化实现神经网络模型的压缩。人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、预训练模型技术、操作/交互系统、机电一体化等。其中,预训练模型又称大模型、基础模型,经过微调后可以广泛应用于人工智能各大方向下游任务。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本申请实施例还可以涉及人工智能技术中的机器学习,机器学习(MachineLearning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。预训练模型是深度学习的最新发展成果,融合了以上技术。在本申请实施例中,在进行精度恢复时,可以使用机器学习进行精度恢复。
需要说明的是,在本申请的具体实施方式中,整个过程中有可能会涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户单独同意或者单独许可,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
接下来,将以计算机设备是服务器,结合附图对本申请实施例提供的神经网络模型的压缩方法进行介绍。参见图2,图2示出了一种神经网络模型的压缩方法的流程图,所述方法包括:
S201、获取待压缩网络模型。
在本申请实施例中,待压缩网络模型可以是预先训练好的神经网络模型。神经网络模型可以是任意网络结构的神经网络模型,本申请实施例对神经网络模型的网络结构不做限定。在一种可能的实现方式中,神经网络模型可以是文本分类模型,具体可以是基于转换器的双向编码(Bidirectional Encoder Representations from Transformer,BERT)模型,由于BERT模型的主要结构是Transformer,故BERT模型也可以称为转换器(Transformer)模型。
本申请实施例对神经网络模型的训练方式不做限定,在一种可能的实现方式可以采用预训练-精调范式得到神经网络模型,以文本分类模型为例,即在下游任务数据集上,对开源中文语料上预训练好的预训练模型进行精调,从而得到可以应用于下游任务的神经网络模型。
在采用预训练-精调范式得到神经网络模型的情况下,上述过程可以称为模型训练与精调步骤,该步骤可以作为神经网络模型的压缩方法的第一个步骤。
在训练得到神经网络模型后,由于神经网络模型可能具有比较复杂的结构,以保证神经网络模型具有更好的性能,因此,可以将训练得到的神经网络模型作为待压缩网络模型,从而由服务器对待压缩网络模型进行压缩。
需要说明的是,训练得到的拥有下游任务的神经网络模型可以包括多个,为此可以从多个神经网络模型中选择一个神经网络模型作为压缩的基座模型,即待压缩网络模型。由于对待压缩网络模型进行压缩后,得到的压缩后的网络模型将用于下游任务,压缩后的网络模型执行下游任务时,预测性能与待压缩网络模型的预测性能直接相关,因此,为了尽可能保证压缩后的网络模型的预测性能,待压缩网络模型可以是多个神经网络模型中预测性能较高的神经网络模型。
在一种可能的实现方式中,预测性能可以通过检测指标值进行评估,因此,获取待压缩网络模型的方式可以是获取训练好的多个神经网络模型,然后对多个神经网络模型分别进行预测结果检测,得到多个神经网络模型中每个神经网络模型的检测指标值。进而将检测指标值满足预设条件的神经网络模型确定为待压缩网络模型。
其中,预设条件可以是检测指标值所指示的预测性能最大的条件。在一种可能的实现方式中,对于某些类型的检测指标值来说,检测指标值越大,检测指标值所指示的预测性能越高,此时,预设条件可以是检测指标值最大。而对于另一些类型的检测指标值来说,检测指标值越大,检测指标值所指示的预测性能越低,此时,预设条件可以是检测指标值最小。
通过检测指标值可以选择预测性能最好的神经网络模型作为待压缩网络模型,进而尽可能提高压缩后的网络模型的预测性能。
在本申请实施例中,检测指标可以是准确率(Accuracy)、精确率(Precision)、召回率(Recall)、准确率和召回率的调和指标等,其中,调和指标可以用F1表示。相应的,检测指标值可以是准确率的值、精确率的值、召回率的值和F1值。本申请实施例主要以检测指标值是F1值为例进行介绍。
调和指标综合考虑了精确率和召回率两方面的因素,做到了对于两者的调和,即既要“求精”也要“求全”,保证精确率和召回率二者之间的平衡,避免出现精确率或召回率过大的极端情况。
在一种可能的实现方式中,F1值的计算公式如下所示:
F1 = 2 * precision * recall / (precision + recall)
= 2 * TP / (2*TP + FP + FN) (1)
其中,precision为精确率的值,recall为召回率的值,TP表示神经网络模型将Positive的样本预测为Positive的样本数量,FP表示神经网络模型将Negative的样本预测为Positive的样本数量,FN表示神经网络模型将Positive的样本预测为Negative的样本数量。
在一种可能的实现方式中,TP、FP、FN等值的定义与计算可以是基于混淆矩阵实现的。混淆矩阵本身是对于预测结果的一个粗略评价,混淆矩阵可以参见图3所示,实际情况下,所有样本不是Positive,就是Negative,在进行二分类预测时,针对任一个样本得到的预测结果不是Positive,就是Negative。而针对任一个样本,神经网络模型既可能预测正确,也可能预测错误,故混淆矩阵里面有四个格子,包含了神经网络模型在进行一个二分类预测的时候,预测结果所有可能出现的情况。也就是说,对于任何一个样本进行预测以后,预测结果一定属于这四个格子的其中一个:
①所示的格子中为True Positive(TP),表示实际上这个样本为Positive,神经网络模型也将这个样本预测为Positive的情况。这是神经网络模型预测正确的部分。
②所示的格子中为False Positive(FP),表示实际上这个样本为Negative,但是神经网络模型将其预测为Positive的情况。这是预测错误的部分,也是统计学上的第一类错误(Type I Error)。
③所示的格子中为False Negative(FN),表示实际上这个样本为Positive,但是神经网络模型将其预测为Negative的情况。这是预测错误的部分,也是统计学上的第二类错误(Type II Error)。
④所示的格子中为True Negative(TN),表示实际上这个样本为Negative,神经网络模型也将这个样本预测为Negative的情况。这是神经网络模型预测正确的部分。
根据数据集中每个样本预测的正确与否,将整个数据集的全部样本,一个一个地分别放到这四个格子的对应位置中,并求出每个格子分别共有多少个样本。①所示的格子中共有的样本数量即为TP的值,②所示的格子中共有的样本数量即为FP的值,③所示的格子中共有的样本数量即为FN的值,④所示的格子中共有的样本数量即为TN的值。由此得到TP、FP、FN的值,进而代入上述公式(1)得到F1的值。
S202、对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩;在对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的过程中,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为多个参数维度的数量,n为大于1的正整数;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。
待压缩网络模型可以具有大量的参数,而这些参数可能是从不同维度体现待压缩网络模型的结构,故可以将这些参数划分为多个参数维度。参数维度可以是体现待压缩网络模型结构的参数所属的维度。
在对待压缩网络模型进行压缩时,由于待压缩网络模型可能具有多个参数维度的参数,故服务器可以从待压缩网络模型的多个参数维度依次进行压缩。在对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的过程中,服务器可以将前一次压缩得到的模型作为后一次压缩的基础,即针对任一次压缩例如第i+1次压缩,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为多个参数维度的数量;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。在完成从待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
可以理解的是,对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩,也就是说,从多个参数维度进行压缩是具有一定压缩顺序的,这个压缩顺序可以是随意选择的顺序。例如,多个参数维度是三个参数维度,分别是参数维度1、参数维度2、参数维度3,则可以先进行参数维度1的压缩,再进行参数维度2的压缩,最后进行参数维度3的压缩,或者,先进行参数维度1的压缩,再进行参数维度3的压缩,最后进行参数维度2的压缩,等等。
在一些情况下,不同的压缩顺序可能会影响压缩的复杂度、压缩效率等,例如有些参数维度对应的参数量比较大,先从参数量比较大的参数维度进行压缩,可能会更快完成压缩。又如,有些参数维度的压缩可能会影响其他参数维度,故可以先从不会影响其他参数维度的参数维度进行压缩,从而简化压缩的复杂度。在这种情况下,对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的方式可以是获取多个参数维度分别对应的优先级,优先级越高,可以表示从该参数维度进行压缩更能够简化压缩的复杂度、提高压缩效率,故可以压缩顺序可以是按照优先级从高到低的顺序,即按照优先级从高到低的顺序,对待压缩网络模型,从多个参数维度依次进行压缩。
通过按照优先级从高到低的顺序从多个参数维度依次进行压缩,更能够简化压缩的复杂度、提高压缩效率。
在一种可能的实现方式中,多个参数维度可以包括模型宽度、模型深度和通道数量中至少两种参数维度,其中,通道数量的优先级高于模型宽度的优先级,且模型宽度的优先级高于模型深度的优先级。也就是说,当多个参数维度可以包括模型宽度、模型深度和通道数量时,压缩顺序是先从通道数量这一参数维度进行压缩,再从模型宽度这一个参数维度进行压缩,最后从模型深度这一参数维度进行压缩。
其中,模型宽度可以是指每层的神经元数量,模型宽度可以表示神经网络模型的表示能力。例如神经网络模型是Transformer模型,Transformer模型的表示能力主要体现在嵌入(embedding)层的维度,维度越大,其表示能力越强,维度越小,其表示能力越弱。在这种情况下,模型宽度可以是指嵌入层的维度。
模型深度可以是指模型层数,模型深度越大的神经网络模型可以提取更复杂的特征。例如神经网络模型是Transformer模型,Transformer模型的主要结构是编码器(encoder),在这种情况下,模型深度可以是指编码器堆叠的层数。
在本申请实施例中,针对不同类型的神经网络模型,通道的定义有所不同。若神经网络模型是文本分类模型,尤其是Transformer模型,则通道可以是指Transformer模型中多头注意力(Multi-Head Attention)层的头(header)数。若神经网络模型是图像分类模型,则通道(channel)可以是指图像所具有的基础色彩,例如彩色图像具有标准的红-绿-蓝(Red-Green-Blue,RGB)通道,则每个彩色图像具有3×h×w的形状,这个大小为3的轴称为通道(channel)维度。其中,h为彩色图像的高度,w为彩色图像的宽度。
当多个参数维度包括模型宽度、模型深度和通道数量时,由于通道数量的优先级高于模型宽度的优先级,且模型宽度的优先级高于模型深度的优先级,故对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的方式可以是对待压缩网络模型的通道数量进行压缩,得到第1个模型。在得到第1个模型后,对第1个模型的模型宽度进行压缩,得到第2个模型。在得到第2个模型后,对第2个模型的模型深度进行压缩,得到第3个模型。
需要说明的是,本申请实施例中,从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,也就是说,本申请实施例提供的方法并非一次性压缩到位,而是将对待压缩网络模型的压缩分为多个压缩阶段,从一个参数维度进行压缩可以作为一个压缩阶段。而每次压缩之后,都会带来一定的精度损失,为了避免精度损失过高,在一种可能的实现方式中,可以每完成一次压缩,便紧接着进行一次精度恢复,从而提高下一次进行压缩所针对的网络模型的精度,进而提高下一次压缩后的网络模型的精度。
其中,精度恢复的方式可以是蒸馏的方式,蒸馏可以是指从大模型中通过一定的技术手段,将大模型中的知识提取出来,学习小模型的过程。大模型通常称为老师模型(teacher model),小模型通常称为学生模型(student model)。具体的,从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型的方式可以是从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到初始压缩模型。然后,将第i个模型作为teacher model,将初始压缩模型作为student model,从而利用第i个模型对初始压缩模型进行蒸馏,得到第i+1个模型。
当多个参数维度包括模型宽度、模型深度和通道数量时,若在完成一次压缩后,紧接着进行精度恢复。那么,对待压缩网络模型的通道数量进行压缩,得到第1个模型的过程可以称为通道层压缩与恢复;对第1个模型的模型宽度进行压缩,得到第2个模型的过程可以称为宽度压缩与恢复;对第2个模型的模型深度进行压缩,得到第3个模型的过程可以称为深度压缩与恢复。
通过将对待压缩网络模型的压缩分为多个压缩阶段,并且每个压缩阶段的压缩完成后,紧接着进行精度恢复,从而提高下一次进行压缩所针对的网络模型的精度,进而提高下一次压缩后的网络模型的精度,大大降低压缩带来的精度损失。同时,通过压缩和精度恢复,可以较好地平衡压缩率和精度损失,同时实现较高压缩率和较低精度损失。
S203、在完成从待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
在完成从第n个参数维度对第n-1个模型进行压缩后,从而完成全部参数维度的压缩,将最后一次压缩得到的网络模型(即基于第n次压缩得到的第n个模型)确定压缩后的网络模型。
在得到压缩后的网络模型后,压缩后的网络模型可以直接用于下游任务,也可以存储该压缩后的网络模型的模型参数,以便后续在需要用于下游任务时,基于存储的模型参数得到该压缩后的网络模型,从而进行使用。
在存储该压缩后的网络模型的模型参数时,为了进一步压缩模型的大小,可以对压缩后的网络模型的模型参数进行后处理压缩,即量化存储模型参数。量化存储模型参数可以是指将高位数的模型参数映射到更低位数,从而通过更低位数的数据表示模型参数。通常情况下,高位数的模型参数可以是指32位浮点数,低位数可以是指半精度浮点数(Half-precision floating-point)、8位有符号整数类型(int8)、int4等,本申请实施例对此不做限定,半精度浮点数可以称为float16或FP16。本申请实施例主要是采用FP16或int8量化存储模型参数。
当采用FP16存储时,即采用FP16半精度浮点数的格式保存FP32的模型参数,可进一步将压缩后的网络模型的尺寸缩小一半。
当采用int8量化时,即采用-128到127之间的定点整数保存FP32的模型参数,可进一步将压缩后的网络模型的尺寸缩小至1/4大小。
以Transformer模型的压缩在公开的文本分类数据集上的评估结果为例,如表1所示,对于具有94.68M模型参数的待压缩网络模型,依次经过三个参数维度的压缩后可以实现85.31%的模型压缩率,同时模型的精度仅损失3.6%,从84.95%下降到81.35%,可以较好地平衡压缩率和精度损失,同时实现较高压缩率和较低精度损失。
表1 依次经过三个参数维度的压缩后的效果
在将压缩后的网络模型用于下游任务时,压缩后的网络模型可以用在小程序电商商品分类、召回、排序,公众号视频内容分类、检索等各类涉及推理的下游业务,没有特定的产品场景。当待压缩网络模型是Transformer模型时,压缩后的网络模型仍然是Transformer模型,此时,Transformer模型在下游任务中的主要作用是进行多种模态信息的处理。其中,模态可以是指信息的组织形式或来源,常见模态包括视觉、听觉、文本等。同时对多种模态信息进行处理称为多模态内容理解。
由上述技术方案可以看出,在训练得到神经网络模型后,由于神经网络模型可能具有比较复杂的结构,以保证神经网络模型具有更好的性能,因此,可以将训练得到的神经网络模型作为待压缩网络模型,从而对待压缩网络模型进行压缩。在对待压缩网络模型进行压缩时,由于待压缩网络模型可能具有多个参数维度的参数,故可以从待压缩网络模型的多个参数维度依次进行压缩。在对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的过程中,可以将前一次压缩得到的模型作为后一次压缩的基础,即针对任一次压缩例如第i+1次压缩,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为多个参数维度的数量,n为大于1的正整数;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。在完成从待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。由于从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,因此,待压缩网络模型的模型压缩率将是多个参数维度的模型压缩率的叠加,从而提高待压缩网络模型的模型压缩率,提高其在硬件平台的应用效果。
图2对应的实施例对本申请实施例提供的神经网络模型的压缩方法进行了基本介绍。待压缩网络模型可能具有不同的网络结构,本申请实施例还可以针对不同网络结构的待压缩网络模型单独设计对应的压缩方案。
在一种可能的实现方式中,待压缩网络模型的网络结构可以是Transformer的网络结构,即待压缩网络模型为Transformer模型,Transformer模型是一种特征提取器,最初主要应用于自然语言处理(Natural Language Processing,NLP)任务中,近来也在 计算机视觉(Computer Vision,CV)任务中逐步推广开来,并逐渐成为各类任务的标配。Transformer模型的结构包括一个encoder和一个解码器(decoder),如图4所示。
在图4中,Transformer模型的结构包括编码器401、解码器402和嵌入层403,Transformer模型中常用的是编码器,编码器401包括N个模块,一个模块中包括一个多头注意力层4011、一个残差链接的前馈网络层(Feed-forward Network,FFN)4012,以及两个求和与归一化(Add&Norm)层,分别是4013和4014。多头注意力层4011后面接求和与归一化层4013,前馈网络层4012后面接求和与归一化层4014。
解码器402也可以由N个相同的模块堆叠而成,每个模块包括两个多头注意力层、一个前馈网络层,当然还可以包括其他层,例如求和与归一化层。其中,两个多头注意力层分别是多头注意力层4021和多头注意力层4022,前馈网络层参见4023所示,三个求和与归一化层分别是4024、4025和4026,多头注意力层4021后面接求和与归一化层4024,多头注意力层4022后面接求和与归一化层4025,前馈网络层4023后面接求和与归一化层4026。
多头注意力层的结构可以参见图5所示,多头注意力就是在多个不同的投影空间中建立不同的投影信息。将输入矩阵,进行不同的投影,得到许多输出矩阵后,再将其拼接在一起。从图5中可以看出值(Value,V)、键(Key,K)、查询(Query,Q) 是固定的单个值,而多头注意力层中包括3个线性(Linear)层和多个缩放点积注意力(Scaled Dot-ProductAttention)层501,多个Scaled Dot-Product Attention层例如包括3个Scaled Dot-Product Attention层,即3个头(header)。3个线性层分别是线性层502、线性层503和线性层504。再通过拼接(cancat)层505拼接在一起,然后接一个线性层506,从而输出向单头一样的输出值。
在上述Transformer模型中,模型参数主要位于embedding层、encoder和可选的分类层。其中embedding层和encoder的模型参数的结构如下介绍所示。embedding层主要包括词嵌入(word_embeddings)、位置嵌入(position_embeddings)、词类型嵌入(token_type_embeddings)、归一化层(LayerNorm)和丢失部分(dropout)。其中,word_embeddings的embedding维度可以是(18000,768),18000可以是词汇数量,768可以为权重矩阵的维度。position_embeddings的embedding维度可以是(513,768),513可以表示位置的数量。token_type_embeddings的embedding维度可以是(2,768),2可以表示类型的数量,例如是问句和答句。
encoder主要包括注意力层、中间层和输出层,注意力层包括多头注意力层和多头注意力层对应的输出层,多头注意力层中包括query、key、value和dropout,query、key、value分别对应一个Liner层,Liner层的输入大小可以为768,输出大小也可以是768。多头注意力层对应的输出层包括全连接网络 (Dense)、LayerNorm层和dropout,Dense的实质可以是Liner层,其输入大小可以为768,输出大小也可以是768,LayerNorm层的大小可以为768。中间层可以包括Dense,Dense的实质可以是Liner层,其输入大小可以为768,输出大小可以是3072。输出层可以包括Dense、LayerNorm层和dropout,Dense的实质可以是Liner层,其输入大小可以为3072,输出大小可以是768。LayerNorm层的大小可以为768。
基于上述介绍的模型参数的结构,Transformer模型的模型参数量分别可以参见表2所示。
表2 模型参数量分布
从表2可以看出,Transformer模型的模型参数的总数是95兆,在全量95M参数中,嵌入层包括的模型参数的数量是13M,占比13.68%,维度为18000*768。单个编码器包括的模型参数的数量是6.76M,占比7.11%,12层编码器包括的模型参数的数量是81M,占比85.26%。而单编码器中,多头注意力层包括的模型参数的数量是2.25M,前馈网络层包括的模型参数的数量是4.5M。分类层包括的模型参数的数量是0.56M,占比0.59%。由此可见,Transformer模型中编码器所包括的模型参数的数量最多,对编码器进行压缩将带来较大的模型压缩率,其次是嵌入层,分类层所包括的模型参数的数量非常少,几乎可以忽略,故在进行压缩时,可以无需针对分类层设计特殊的压缩方案甚至无需针对分类层进行压缩。
基于上述Transformer模型的模型参数量分布,在待压缩网络模型为Transformer模型时,若多个参数维度包括模型宽度、模型深度和通道数量,由于通道数量这一参数维度的模型参数集中在编码器,模型宽度这一参数维度的模型参数集中在嵌入层,故在从通道数量这一参数维度进行压缩时,主要是对编码器进行压缩,在从模型宽度这一参数维度进行压缩时,主要是对嵌入层进行压缩。
基于上述对从通道数量这一参数维度进行压缩的介绍,在一种可能的实现方式中,待压缩网络模型为转换器模型,转换器模型包括编码器,编码器包括多头注意力层和前馈网络层,在这种情况下,对待压缩网络模型的通道数量进行压缩,得到第1个模型的方式可以是确定多头注意力层的每个通道的第一通道重要度,以及确定前馈网络层的每个通道的第二通道重要度;将多头注意力层中第一通道重要度达到第一剪枝条件的通道进行剪枝,以及将前馈网络层中第二通道重要度达到第二剪枝条件的通道进行剪枝,得到第1个模型。
在得到第一通道重要度后,可以对所有的第一通道重要度进行排序,例如可以按照第一通道重要度从大到小的顺序排序,也可以按照第一通道重要度从小到大的顺序排序。通道的第一通道重要度达到第一剪枝条件,说明第一通道重要度比较低,通道不重要。当按照第一通道重要度从大到小的顺序排序时,第一剪枝条件可以是第一通道重要度排序在后k个;当按照第一通道重要度从小到大的顺序排序时,第一剪枝条件可以是第一通道重要度排序在前k个。
在本申请实施例中,对第二通道重要度的处理与对第一通道重要度的处理类似。相应的,当按照第二通道重要度从大到小的顺序排序时,第二剪枝条件可以是第二通道重要度排序在后L个;当按照第二通道重要度从小到大的顺序排序时,第二剪枝条件可以是第二通道重要度排序在前L个。
由于通道数量独立于模型宽度和模型深度,即通道数量的变化不会改变模型宽度和模型深度,因此在对通道进行剪枝时,可以采用结构化剪枝法实现。
基于前述介绍的多头注意力层的结构,通道数量即多头注意力层的header数量,因此对通道进行剪枝实际上是对header数量进行剪枝。通过对多头注意力层的压缩,可以实现剪枝后header数量从12层到1层之间任意比例的压缩。通过对前馈网络层的压缩,可以实现通道数量从12到1之间任意比例的压缩。
可以理解的是,由于多头注意力层的实现是通过三个线性层计算输入向量的注意力机制,注意力数值的大小影响该层输出结果,因此可以采用绝对量级、L1/L2范数衡量参数重要度,本申请实施例将主要以采用绝对量级衡量参数重要度为例进行介绍。在训练过程中,当权重这一参数的数值越接近于数值0表明该权重的重要度越低。可以根据归一化的参数重要度指标,对不重要的参数取TOP k进行剪枝。在这种情况下,确定多头注意力层的每个通道的第一通道重要度的方式可以是获取多头注意力层所包括的权重;针对多头注意力层的每个通道,基于属于通道的每个权重与数值零之间的差距进行重要度计算,得到通道的第一通道重要度。
基于多头注意力层的特性,采用绝对量级衡量参数重要度,对通道数量进行剪枝,可以提高第一通道重要度的准确性,进而提高压缩后的网络模型的精度。
在一种可能的实现方式中,通道重要度的计算公式可以如下所示:
(2)
其中,F(w)为通道重要度,在本申请实施例中,通道重要度可以是第一通道重要度或第二通道重要度,取决于wi是属于多头注意力层的权重,还是前馈网络层的权重。wi是通道所包括的第i个权重,wi-0表示权重与数值0之间的差距,差距越小,通道重要度越低。
可以理解的是,训练过程可能是进行多次训练,每次训练需要在训练数据集上进行前向反向梯度计算,前向计算可以是指多头注意力层基于输入得到输出结果,反向梯度计算可以是指基于输出结果与真实结果的比较调整多头注意力层的模型参数,即得到各个权重更新后的数值。在每次训练后,可以得到该次训练结束对应的第一通道重要度,进而基于该第一通道重要度实现剪枝。剪枝后剩余的模型参数的系数度可能满足模型参数的稀疏度要求,也可能不满足,当剪枝后剩余的模型参数的系数度满足模型参数的稀疏度要求时,则可以完成对多头注意力层的压缩,当剪枝后剩余的模型参数的系数度不满足模型参数的稀疏度要求时,则继续进行下一次训练和剪枝,直至满足系数度要求。
基于上述介绍,对多头注意力层进行压缩的详细步骤如下:
(1)对训练数据集进行前向反向梯度计算;
(2)根据梯度计算多头注意力层各权重更新后的数值;
(3)将权重更新后的数值按照通道聚合(即基于属于同一通道的权重更新后的数值)计算第一通道重要度并排序;
(4)将排序后第一通道重要度最低的k个通道mask后不计入后续梯度计算;
(5)重复步骤(1)-(4),直至模型参数的系数度满足稀疏度要求为止;
(6)继续训练剩余数量(remaining_step)个批量(batch)数据以稳定模型效果。
需要说明的是,稀疏度可以表示为atten_sparsity,稀疏度默认为0.5,稀疏度的计算方式为剪枝后的模型参数的数量/剪枝前的模型参数的数量)。
可以理解的是,在本申请实施例中,从通道数量这一参数维度进行的压缩也可以分别两个阶段,分别是多头注意力层的压缩和前馈网络层的压缩,而为了进一步保证压缩率与精确率之间的平衡,在多头注意力层的压缩完成后,也可以进行精度恢复。
在一种可能的实现方式中,可以采用蒸馏的方式进行精度恢复,具体可以是对剪枝后的编码器采用按层蒸馏的方式快速恢复精度,按层蒸馏的方式示意图如图6所示。在图6中,teacher model为此次压缩前的编码器,student model为此次压缩后的编码器,编码器各层间的蒸馏方式采用中间层特征(feature based)蒸馏法,损失函数采用均方误差(Mean Squared Error,MSE),MSE越小表示模型性能越接近;分类层采用输出层特征(response based)蒸馏法,损失函数采用KL散度(Kullback-Leibler Divergence),KL散度可以用来衡量两个分布之间的差异程度, KL散度越小,分布越相似,模型性能越接近,反之亦反,当两分布一致时,其KL散度为0。通过蒸馏的方式进行精度恢复时,旨在最小化teacher model和student model在各层间的差异。
在一种可能的实现方式中,MSE和KL散度计算方式如下式:
(3)
(4)
其中,为student model与teacher model之间所有层的均方误差,pi为student model中第i层的输出embedding,qi为teacher mode中第i层的输出embedding。为student model与teacher model之间分类层的KL散度,p(x) ϵ P表示student model在被蒸馏层的输出embedding,q(x) ϵ Q表示teacher model在被蒸馏层的输出embedding。
可以理解的是,前馈网络层是对多头注意力层的输出结果的计算,在本申请实施例中可以采用绝对量级衡量参数重要度。在一些情况下,为了提高压缩后的网络模型的精度,可以根据前馈网络层在样本梯度上的变化来衡量参数重要度,对通道数量进行剪枝。前馈网络层在样本梯度上的变化可以通过裁剪掉一个权重产生的损失函数扰动体现。在这种情况下,确定前馈网络层的每个通道的第二通道重要度的方式可以是针对前馈网络层的每个权重,确定裁剪掉权重产生的损失函数扰动;基于损失函数扰动确定权重的重要度;针对多头注意力层的每个通道,基于属于通道的每个权重的重要度进行重要度计算,得到通道的第二通道重要度。
基于前馈网络层的特性,采用前馈网络层在样本梯度上的变化来衡量参数重要度,对通道数量进行剪枝,可以提高第二通道重要度的准确性,进而提高压缩后的网络模型的精度。
下面对裁剪掉权重产生的损失函数扰动的计算方式进行介绍。设训练过程的损失函数如下:
(5)
其中,L(w)为损失函数,w表示权重,xi表示模型输入(即一个样本),yi表示对应标签,N为样本数量。
当对权重进行裁剪后,以∆w表示权重的变化量,∆L为剪枝后的损失函数扰动。当待压缩网络模型已经训练完成并收敛至一个局部最优时,此时模型梯度为0(即▽wL(w) =0),且权重的海森矩阵为半正定矩阵。该损失函数扰动可以以幂级数形式表示如下:
(6)
其中,∆w表示权重的变化量,∆L为剪枝后的损失函数扰动,L(w+∆w)表示对权重w剪枝后的损失函数,L(w)表示对权重w剪枝前的损失函数,gT为权重矩阵w的雅克比矩阵,H为海森矩阵。由于此时梯度为0,故公式(6)中第一项结果为0,最后一项是∆w的高阶无穷小,相比第二项在数值上可以忽略。将第二项中的海森矩阵展开后可以表示为下式:
(7)
(8)
其中,wl表示保留的权重,wp表示被剪枝的权重,∆wp表示保留的权重对应的扰动,∆wl表示被剪枝掉的权重对应的扰动。Hp,p表示针对海森矩阵,对剪枝的权重求二阶偏导得到的矩阵;Hp,l表示针对海森矩阵,对剪枝的权重求一次偏导,再对保留的权重求一次偏导得到的矩阵;Hl,p表示针对海森矩阵,对保留的权重求一次偏导,再对剪枝的权重求一次偏导得到的矩阵;Hl,l表示针对海森矩阵,对保留的权重求二阶偏导得到的矩阵。同时,该式存在上述式(6)的约束条件。采用拉格朗日数乘法求解该带约束的问题解,即:
(9)
其中,L为采用拉格朗日数乘法求解得到的解,λ为常数。对公式(9)求偏导,令偏导数值为0:
(10)
亦即
(11)
公式(11)等价于:
(12)
(13)
代入公式(13)可得:
(14)
(15)
将公式(14)和公式(15)代入公式(7)可得:
(16)
因为在本申请实施例中每个模型参数是相互独立的,故可以忽略所有交叉项,也就是既包含p也包含l的海森矩阵,对角矩阵Hp,p的迹(矩阵的迹是其特征值的和,也是对角阵对角线上值的和)的平均就可以反映裁剪掉某些权重后对损失函数的扰动情况,即损失函数扰动:
(17)
其中,Diag()表示对角矩阵,Trace()表示矩阵的迹,H-1表示海森矩阵的逆矩阵,||wp||表示被剪枝的权重的范数。根据Hp,p的迹的平均与wp的2次方求得了最终权重的重要程度,也就是裁剪掉该权重的损失函数扰动,那些损失函数扰动较小的权重认为可以进行裁剪。
基于上述介绍,对前馈网络层进行压缩的详细步骤如下:
(1)对训练数据集进行前向反向梯度计算;
(2)根据公式(17)计算权重的重要度;
(3)将权重的重要度按照通道聚合(即基于属于同一通道的权重)计算第二通道重要度并排序;
(4)将排序后第二通道重要度最低的L个通道mask后不计入后续梯度计算;
(5)重复步骤(1)-(4),直至模型参数的系数度满足稀疏度要求为止;
(6)继续训练remaining_step个batch数据以稳定模型效果。
可以理解的是,为了进一步保证压缩率与精确率之间的平衡,在前馈网络层的压缩完成后,也可以进行精度恢复。在一种可能的实现方式中,可以采用蒸馏的方式进行精度恢复,具体可以是对剪枝后的编码器采用按层蒸馏的方式快速恢复精度,按层蒸馏的方式可以参见图6所示,此处不再赘述。
基于上述对模型宽度这一参数维度进行压缩的介绍,在一种可能的实现方式中,待压缩网络模型为转换器模型,转换器模型包括嵌入层,嵌入层的维度是M×N,M为词汇表中词汇数量,N为权重矩阵的维度,在这种情况下,对第1个模型的模型宽度进行压缩,得到第2个模型的方式可以包括多种。一种方式是直接训练更低维度的嵌入层替换原嵌入层,以实现在模型宽度这一参数维度的压缩。
另一种方式可以是缩减词汇表中出现频率低于预设阈值的词汇,并通过删除词汇对应的嵌入向量减小第1模型中M的大小;通过主成分分析法对第1模型中权重矩阵的维度进行降维;基于降维后的嵌入层得到第2模型。
模型宽度包括嵌入层和编码器隐含层的维度嵌入层代表的是待压缩网络模型输入token的分布式词表征,对该嵌入层的剪枝应使得embedding的维度可以满足语义的表示。
其中,主成分分析方法(Principal Component Analysis,PCA)是一种使用最广泛的数据降维算法。PCA的主要思想是将a维特征映射到d维上,这d维是全新的正交特征也被称为主成分,是在原有a维特征的基础上重新构造出来的d维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1、2个轴正交的平面中方差最大的。依次类推,可以得到a个这样的坐标轴。通过这种方式获得的新的坐标轴,此时大部分方差都包含在前面d个坐标轴中,后面的坐标轴所含的方差几乎为0。于是可以忽略余下的坐标轴,只保留前面d个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。PCA示意图如图7所示。在图7中,基于两个坐标轴(即图7中实线坐标轴)可以找一组相互正交的坐标轴(即图7中虚线坐标轴),依次类推,可以得到a个这样的坐标轴。
设有c条 a维数据。PCA 的算法步骤如下:
(1)将减小M后的数据按列组成a行c列矩阵X;
(2)将 X 的每一行进行零均值化,即减去这一行的均值;
(3)求出协方差矩阵 C = 1 /cXXT
(4)求出协方差矩阵的特征值及对应的特征向量;
(5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵P;
(6)Y = PX即为降维到d维后的数据。
在减小M和N后得到降维后的嵌入层之后,可以基于降维后的嵌入层得到第2模型。需要说明的是,基于降维后的嵌入层得到第2模型的方式可以包括多种,一种方式可以是将降维后的嵌入层作为第2模型的嵌入层,从而得到第2模型。
另一种方式可以是通过奇异值分解法对降维后的嵌入层进行分解,得到第2模型。通过这种方式可以进一步缩减模型参数的数量,提高模型压缩率。
奇异值分解(Singular Value Decomposition,SVD)法可以将任意矩阵A分解成一个正交矩阵U、一个对角矩阵∑以及另一个正交矩阵VT的乘积。对角矩阵的对角元称为矩阵的奇异值,可以证明,奇异值总是大于等于0的,当对角矩阵的奇异值按从大到小排列时,SVD分解是唯一的,如图8中(a)所标识的图所示。奇异值的分布通常非常不均,在很多情况下前10%甚至1%的奇异值之和就占了全部奇异值之和的99%以上,因此可以用前r个大的奇异值来近似地描述矩阵,如图8中(b)所标识的图所示。假设e = 10000,f= 8000,原来存储矩阵A需要存储e*f = 8000万个浮点数字,如果经过奇异值分解发现前100个奇异值贡献了99%的奇异值之和,于是可以近似只保留这100个奇异值及对应的左右奇异向量,那么只需要保留100+100×10000+100×8000 = 180.01万个数字,只有原来的不到2.3%。本申请实施例对嵌入层中的卷积层和全连接层的权重矩阵采用SVD分解为3个小卷积,以实现压缩。
设待分解矩阵为A,SVD分解步骤如下:
(1)计算AT*A;
(2)计算AT*A的特征向量及其特征值;
(3)将特征值按从大到小的顺序排列,选择top r个最大的特征值及其对应的特征向量组成矩阵V’;
(4)对选择的非0特征值求平方根,对应V’中特征向量的顺序填入∑’的对角线;
(5)根据AV’ = U’∑’求解得到U’。
在完成从模型宽度这一参数维度进行的压缩后,为了进一步保证压缩率与精确率之间的平衡,可以进一步在数据集上精调以恢复精度,从而得到精度较高的第2模型。
在进行精度恢复时,嵌入层压缩后对应的输出维度及编码器输入、输出维度都有改变,因此采用自适应蒸馏法对压缩后的模型再次蒸馏以恢复精度,并实现编码层的宽度压缩。此时,自适应蒸馏的示意图如图9所示,在teacher model和student model在蒸馏时对应的层之间需要加入一个维度为I的中间层,实现蒸馏的自适应。各层间的损失函数仍采用MSE,分类层的损失函数仍然采用KL散度,参见公式(3)-公式(4)。
基于上述对模型深度这一参数维度进行压缩的介绍,在一种可能的实现方式中,待压缩网络模型为转换器模型,转换器模型包括多层编码器,模型深度为多层编码器的层数,对第2个模型的模型深度进行压缩,得到第3个模型的方式可以包括多种。一种方式可以是直接对目标模型深度的Transfomer模型进行自适应蒸馏。
在一种情况下,不同模型深度的网络结构关注的语义层级不同(例如浅层网络关注细粒度语义,深层网络关注全局、长距离依赖的语义)。在这种情况下,另一种方式可以是通过多步自适应蒸馏法,压缩模型深度。具体的,可以基于第2个模型中多层编码器的层数和目标模型深度之间的比值得到压缩间隔;按照多层编码器的排列顺序,每次对压缩间隔内的编码器进行蒸馏得到目标编码器,直到蒸馏得到的目标编码器的层数满足目标模型深度;基于蒸馏得到的目标编码器确定第3个模型。
其中,多层编码器的排列顺序可以是从浅层(下)到深层(上)的顺序,也可以是从深层(上)到浅层(下)的顺序。通常情况下,由于浅层网络关注细粒度语义,深层网络关注全局、长距离依赖的语义,故浅层网络的精度越高,那么深层网络的精度也会越高。在这种情况下,本申请实施例进行模型深度的压缩所依据的排列顺序可以是从上到下的顺序。通过这种方式,可以在每步蒸馏时尽可能保证浅层网络保持较高的精度,从而提高蒸馏得到的第3模型的精度。
设目标模型深度为J,若J为多层编码器的层数I(I=12)的约数,则压缩间隔T=I/J,否则T=2。按照自上而下的顺序,每次对T层进行自适应蒸馏,至损失函数稳定后进入下一个T层自适应蒸馏,直至满足目标模型深度。多步自适应蒸馏过程如图10所示。
在从模型深度这一参数维度进行压缩时,通过自适应蒸馏的方式进行压缩,既实现模型深度的压缩,又实现精度恢复,从而得到精度较高的第3模型。
需要说明的是,本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
基于图2对应实施例提供的神经网络模型的压缩方法,本申请实施例还提供一种神经网络模型的压缩装置1100。参见图11所示,所述神经网络模型的压缩装置1100包括获取单元1101和压缩单元1102:
所述获取单元1101,用于获取待压缩网络模型;
所述压缩单元1102,用于对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩;在对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩的过程中,第i+1次压缩为从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为所述多个参数维度的数量,n为大于1的正整数;当i=0时,所述第i个模型是所述待压缩网络模型,当i大于0时,所述第i个模型是从所述待压缩网络模型的第i个参数维度进行压缩得到的;
所述压缩单元1102,还用于在完成从所述待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
在一种可能的实现方式中,所述压缩单元1102,用于:
获取所述多个参数维度分别对应的优先级;
按照所述优先级从高到低的顺序,对所述待压缩网络模型,从所述多个参数维度依次进行压缩。
在一种可能的实现方式中,所述多个参数维度包括模型宽度、模型深度和通道数量中至少两种参数维度,其中,通道数量的优先级高于模型宽度的优先级,且模型宽度的优先级高于模型深度的优先级。
在一种可能的实现方式中,所述多个参数维度包括模型宽度、模型深度和通道数量,所述压缩单元1102,用于:
对所述待压缩网络模型的通道数量进行压缩,得到第1个模型;
对所述第1个模型的模型宽度进行压缩,得到第2个模型;
对所述第2个模型的模型深度进行压缩,得到第3个模型。
在一种可能的实现方式中,所述待压缩网络模型为转换器模型,所述转换器模型包括编码器,所述编码器包括多头注意力层和前馈网络层,所述压缩单元1102,用于:
确定所述多头注意力层的每个通道的第一通道重要度,以及确定所述前馈网络层的每个通道的第二通道重要度;
将所述多头注意力层中所述第一通道重要度达到第一剪枝条件的通道进行剪枝,以及将所述前馈网络层中所述第二通道重要度达到第二剪枝条件的通道进行剪枝,得到所述第1个模型。
在一种可能的实现方式中,所述压缩单元1102,用于:
获取所述多头注意力层所包括的权重;
针对所述多头注意力层的每个通道,基于属于所述通道的每个权重与数值零之间的差距进行重要度计算,得到所述通道的第一通道重要度。
在一种可能的实现方式中,所述压缩单元1102,用于:
针对所述前馈网络层的每个权重,确定裁剪掉所述权重产生的损失函数扰动;
基于所述损失函数扰动确定所述权重的重要度;
针对所述多头注意力层的每个通道,基于属于所述通道的每个权重的重要度进行重要度计算,得到所述通道的第二通道重要度。
在一种可能的实现方式中,所述待压缩网络模型为转换器模型,所述转换器模型包括嵌入层,所述嵌入层的维度是M×N,M为词汇表中词汇数量,N为权重矩阵的维度,所述压缩单元1102,用于:
缩减所述词汇表中出现频率低于预设阈值的词汇,并通过删除所述词汇对应的嵌入向量减小所述第1模型中M的大小;
通过主成分分析法对所述第1模型中权重矩阵的维度进行降维;
基于降维后的嵌入层得到所述第2模型。
在一种可能的实现方式中,所述压缩单元1102,用于:
通过奇异值分解法对所述降维后的嵌入层进行分解,得到所述第2模型。
在一种可能的实现方式中,所述待压缩网络模型为转换器模型,所述转换器模型包括多层编码器,所述模型深度为所述多层编码器的层数,所述压缩单元1102,用于:
基于所述第2个模型中多层编码器的层数和目标模型深度之间的比值得到压缩间隔;
按照所述多层编码器的排列顺序,每次对所述压缩间隔内的编码器进行蒸馏得到目标编码器,直到蒸馏得到的目标编码器的层数满足所述目标模型深度;
基于所述蒸馏得到的目标编码器确定所述第3个模型。
在一种可能的实现方式中,所述压缩单元1102,用于:
从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到初始压缩模型;
利用所述第i个模型对所述初始压缩模型进行蒸馏,得到所述第i+1个模型。
在一种可能的实现方式中,所述获取单元1101,用于:
获取训练好的多个神经网络模型;
对所述多个神经网络模型分别进行预测结果检测,得到所述多个神经网络模型中每个神经网络模型的检测指标值;
将所述检测指标值满足预设条件的神经网络模型确定为所述待压缩网络模型。
由上述技术方案可以看出,在训练得到神经网络模型后,由于神经网络模型可能具有比较复杂的结构,以保证神经网络模型具有更好的性能,因此,可以将训练得到的神经网络模型作为待压缩网络模型,从而对待压缩网络模型进行压缩。在对待压缩网络模型进行压缩时,由于待压缩网络模型可能具有多个参数维度的参数,故可以从待压缩网络模型的多个参数维度依次进行压缩。在对待压缩网络模型,从待压缩网络模型的多个参数维度依次进行压缩的过程中,可以将前一次压缩得到的模型作为后一次压缩的基础,即针对任一次压缩例如第i+1次压缩,第i+1次压缩为从待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为多个参数维度的数量,n为大于1的正整数;当i=0时,第i个模型是待压缩网络模型,当i大于0时,第i个模型是从待压缩网络模型的第i个参数维度进行压缩得到的。在完成从待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。由于从每个参数维度进行压缩是依次进行的,并且后一次压缩是在前一次压缩得到的模型的基础上进行的,因此,待压缩网络模型的模型压缩率将是多个参数维度的模型压缩率的叠加,从而提高待压缩网络模型的模型压缩率,提高其在硬件平台的应用效果。
本申请实施例还提供了一种计算机设备,该计算机设备可以执行神经网络模型的压缩方法。该计算机设备可以是终端,以终端为智能手机为例:
图12示出的是与本申请实施例提供的智能手机的部分结构的框图。参考图12,智能手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1210、存储器1220、输入单元1230、显示单元1240、传感器1250、音频电路1260、无线保真(英文缩写:WiFi)模块1270、处理器1280、以及电源1290等部件。输入单元1230可包括触控面板1231以及其他输入设备1232,显示单元1240可包括显示面板1241,音频电路1260可以包括扬声器1261和传声器1262。可以理解的是,图12中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器1220可用于存储软件程序以及模块,处理器1280通过运行存储在存储器1220的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器1220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1280是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器1220内的软件程序和/或模块,以及调用存储在存储器1220内的数据,执行智能手机的各种功能和处理数据。可选的,处理器1280可包括一个或多个处理单元;优选的,处理器1280可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1280中。
在本实施例中,智能手机中的处理器1280可以执行本申请各实施例提供的神经网络模型的压缩方法。
本申请实施例提供的计算机设备还可以是服务器,请参见图13所示,图13为本申请实施例提供的服务器1300的结构图,服务器1300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器,例如中央处理器(Central Processing Units,简称CPU)1322,以及存储器1332,一个或一个以上存储应用程序1342或数据1344的存储介质1330(例如一个或一个以上海量存储设备)。其中,存储器1332和存储介质1330可以是短暂存储或持久存储。存储在存储介质1330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1322可以设置为与存储介质1330通信,在服务器1300上执行存储介质1330中的一系列指令操作。
服务器1300还可以包括一个或一个以上电源1326,一个或一个以上有线或无线网络接口1350,一个或一个以上输入输出接口1358,和/或,一个或一个以上操作系统1341,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
在本实施例中,服务器1300中的中央处理器1322可以执行本申请各实施例提供的神经网络模型的压缩方法。
根据本申请的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行前述各个实施例所述的神经网络模型的压缩方法。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述实施例各种可选实现方式中提供的方法。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术成员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (15)

1.一种神经网络模型的压缩方法,其特征在于,所述方法包括:
获取待压缩网络模型;
对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩;在对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩的过程中,第i+1次压缩为从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为所述多个参数维度的数量,n为大于1的正整数;当i=0时,所述第i个模型是所述待压缩网络模型,当i大于0时,所述第i个模型是从所述待压缩网络模型的第i个参数维度进行压缩得到的;
在完成从所述待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
2.根据权利要求1所述的方法,其特征在于,所述对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩,包括:
获取所述多个参数维度分别对应的优先级;
按照所述优先级从高到低的顺序,对所述待压缩网络模型,从所述多个参数维度依次进行压缩。
3.根据权利要求2所述的方法,其特征在于,所述多个参数维度包括模型宽度、模型深度和通道数量中至少两种参数维度,其中,通道数量的优先级高于模型宽度的优先级,且模型宽度的优先级高于模型深度的优先级。
4.根据权利要求1所述的方法,其特征在于,所述多个参数维度包括模型宽度、模型深度和通道数量,所述对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩,包括:
对所述待压缩网络模型的通道数量进行压缩,得到第1个模型;
对所述第1个模型的模型宽度进行压缩,得到第2个模型;
对所述第2个模型的模型深度进行压缩,得到第3个模型。
5.根据权利要求4所述的方法,其特征在于,所述待压缩网络模型为转换器模型,所述转换器模型包括编码器,所述编码器包括多头注意力层和前馈网络层,所述对所述待压缩网络模型的通道数量进行压缩,得到第1个模型,包括:
确定所述多头注意力层的每个通道的第一通道重要度,以及确定所述前馈网络层的每个通道的第二通道重要度;
将所述多头注意力层中所述第一通道重要度达到第一剪枝条件的通道进行剪枝,以及将所述前馈网络层中所述第二通道重要度达到第二剪枝条件的通道进行剪枝,得到所述第1个模型。
6.根据权利要求5所述的方法,其特征在于,所述确定所述多头注意力层的每个通道的第一通道重要度,包括:
获取所述多头注意力层所包括的权重;
针对所述多头注意力层的每个通道,基于属于所述通道的每个权重与数值零之间的差距进行重要度计算,得到所述通道的第一通道重要度。
7.根据权利要求5所述的方法,其特征在于,所述确定所述前馈网络层的每个通道的第二通道重要度,包括:
针对所述前馈网络层的每个权重,确定裁剪掉所述权重产生的损失函数扰动;
基于所述损失函数扰动确定所述权重的重要度;
针对所述多头注意力层的每个通道,基于属于所述通道的每个权重的重要度进行重要度计算,得到所述通道的第二通道重要度。
8.根据权利要求4所述的方法,其特征在于,所述待压缩网络模型为转换器模型,所述转换器模型包括嵌入层,所述嵌入层的维度是M×N,M为词汇表中词汇数量,N为权重矩阵的维度,所述对所述第1个模型的模型宽度进行压缩,得到第2个模型,包括:
缩减所述词汇表中出现频率低于预设阈值的词汇,并通过删除所述词汇对应的嵌入向量减小所述第1模型中M的大小;
通过主成分分析法对所述第1模型中权重矩阵的维度进行降维;
基于降维后的嵌入层得到所述第2模型。
9.根据权利要求8所述的方法,其特征在于,所述基于降维后的嵌入层得到所述第2模型,包括:
通过奇异值分解法对所述降维后的嵌入层进行分解,得到所述第2模型。
10.根据权利要求4所述的方法,其特征在于,所述待压缩网络模型为转换器模型,所述转换器模型包括多层编码器,所述模型深度为所述多层编码器的层数,所述对所述第2个模型的模型深度进行压缩,得到第3个模型,包括:
基于所述第2个模型中多层编码器的层数和目标模型深度之间的比值得到压缩间隔;
按照所述多层编码器的排列顺序,每次对所述压缩间隔内的编码器进行蒸馏得到目标编码器,直到蒸馏得到的目标编码器的层数满足所述目标模型深度;
基于所述蒸馏得到的目标编码器确定所述第3个模型。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,包括:
从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到初始压缩模型;
利用所述第i个模型对所述初始压缩模型进行蒸馏,得到所述第i+1个模型。
12.根据权利要求1-10任一项所述的方法,其特征在于,所述获取待压缩网络模型,包括:
获取训练好的多个神经网络模型;
对所述多个神经网络模型分别进行预测结果检测,得到所述多个神经网络模型中每个神经网络模型的检测指标值;
将所述检测指标值满足预设条件的神经网络模型确定为所述待压缩网络模型。
13.一种神经网络模型的压缩装置,其特征在于,所述装置包括获取单元和压缩单元:
所述获取单元,用于获取待压缩网络模型;
所述压缩单元,用于对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩;在对所述待压缩网络模型,从所述待压缩网络模型的多个参数维度依次进行压缩的过程中,第i+1次压缩为从所述待压缩网络模型的第i+1个参数维度对第i个模型进行压缩,得到第i+1个模型,i=0、1、2、……、n-1,n为所述多个参数维度的数量,n为大于1的正整数;当i=0时,所述第i个模型是所述待压缩网络模型,当i大于0时,所述第i个模型是从所述待压缩网络模型的第i个参数维度进行压缩得到的;
所述压缩单元,还用于在完成从所述待压缩网络模型的第n个参数维度对第n-1个模型进行压缩后,基于第n次压缩得到的第n个模型确定压缩后的网络模型。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序当被处理器执行时使所述处理器执行权利要求1-12任一项所述的方法。
CN202410031004.XA 2024-01-09 2024-01-09 一种神经网络模型的压缩方法和相关装置 Active CN117540780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410031004.XA CN117540780B (zh) 2024-01-09 2024-01-09 一种神经网络模型的压缩方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410031004.XA CN117540780B (zh) 2024-01-09 2024-01-09 一种神经网络模型的压缩方法和相关装置

Publications (2)

Publication Number Publication Date
CN117540780A true CN117540780A (zh) 2024-02-09
CN117540780B CN117540780B (zh) 2024-06-25

Family

ID=89788479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410031004.XA Active CN117540780B (zh) 2024-01-09 2024-01-09 一种神经网络模型的压缩方法和相关装置

Country Status (1)

Country Link
CN (1) CN117540780B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032951A (zh) * 2019-03-25 2019-07-19 西安交通大学 一种基于塔克分解与主成分分析的卷积神经网络压缩方法
WO2020233130A1 (zh) * 2019-05-23 2020-11-26 深圳先进技术研究院 一种深度神经网络压缩方法及相关设备
CN114239799A (zh) * 2021-12-03 2022-03-25 上海交通大学 一种高效目标检测方法、设备、介质和系统
WO2022068314A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 神经网络训练的方法、神经网络的压缩方法以及相关设备
WO2022262660A1 (zh) * 2021-06-15 2022-12-22 华南理工大学 针对超分辨率网络的剪枝量化压缩方法、系统及介质
CN115564030A (zh) * 2022-11-24 2023-01-03 中国平安财产保险股份有限公司 目标检测模型的压缩方法、检测方法、装置及相关设备
CN116090543A (zh) * 2023-01-09 2023-05-09 西安欧珀通信科技有限公司 模型压缩方法及装置、计算机可读介质和电子设备
CN116992946A (zh) * 2023-09-27 2023-11-03 荣耀终端有限公司 模型压缩方法、装置、存储介质和程序产品

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032951A (zh) * 2019-03-25 2019-07-19 西安交通大学 一种基于塔克分解与主成分分析的卷积神经网络压缩方法
WO2020233130A1 (zh) * 2019-05-23 2020-11-26 深圳先进技术研究院 一种深度神经网络压缩方法及相关设备
WO2022068314A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 神经网络训练的方法、神经网络的压缩方法以及相关设备
WO2022262660A1 (zh) * 2021-06-15 2022-12-22 华南理工大学 针对超分辨率网络的剪枝量化压缩方法、系统及介质
CN114239799A (zh) * 2021-12-03 2022-03-25 上海交通大学 一种高效目标检测方法、设备、介质和系统
CN115564030A (zh) * 2022-11-24 2023-01-03 中国平安财产保险股份有限公司 目标检测模型的压缩方法、检测方法、装置及相关设备
CN116090543A (zh) * 2023-01-09 2023-05-09 西安欧珀通信科技有限公司 模型压缩方法及装置、计算机可读介质和电子设备
CN116992946A (zh) * 2023-09-27 2023-11-03 荣耀终端有限公司 模型压缩方法、装置、存储介质和程序产品

Also Published As

Publication number Publication date
CN117540780B (zh) 2024-06-25

Similar Documents

Publication Publication Date Title
US12033077B2 (en) Learning compressible features
CN111079532A (zh) 一种基于文本自编码器的视频内容描述方法
US11177823B2 (en) Data compression by local entropy encoding
CN110969251A (zh) 基于无标签数据的神经网络模型量化方法及装置
KR20180007657A (ko) 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
US11775589B2 (en) Systems and methods for weighted quantization
CN112200296A (zh) 网络模型量化方法、装置、存储介质及电子设备
CN111782826A (zh) 知识图谱的信息处理方法、装置、设备及存储介质
CN113837308A (zh) 基于知识蒸馏的模型训练方法、装置、电子设备
CN114897160A (zh) 模型训练方法、系统及计算机存储介质
CN114861907A (zh) 数据计算方法、装置、存储介质和设备
CN112101543A (zh) 神经网络模型确定方法、装置、电子设备及可读存储介质
CN113159419A (zh) 一种群体特征画像分析方法、装置、设备及可读存储介质
Ullah et al. L2L: A highly accurate Log_2_Lead quantization of pre-trained neural networks
CN114911778A (zh) 数据处理方法、装置、计算机设备及存储介质
CN117540780B (zh) 一种神经网络模型的压缩方法和相关装置
WO2023185209A1 (zh) 模型剪枝
CN117236384A (zh) 终端换机预测模型的训练及预测方法、装置和存储介质
CN116561540B (zh) 业务数据校正方法、装置及ai数字人的训练方法、装置
CN109871487B (zh) 一种新闻召回方法和系统
CN118672594B (zh) 一种软件缺陷预测方法及系统
CN113298248B (zh) 一种针对神经网络模型的处理方法、装置以及电子设备
Zhou et al. Iqnn: Training quantized neural networks with iterative optimizations
Roman From Hand-crafted to Self-attention-No-reference or Blind Image Quality Assessment
KR20230062008A (ko) 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치

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
GR01 Patent grant
GR01 Patent grant