神经网络模型的压缩方法、训练方法、处理方法和装置与流程

未命名 07-23 阅读:91 评论:0


1.本公开涉及人工智能领域,尤其涉及深度学习、自然语言处理(natural language processing,nlp)、计算机视觉和语音处理等技术领域。


背景技术:

2.随着计算机技术和电子技术的发展,深度学习技术在计算机视觉、自然语言处理和智能语音等多个领域得到了广泛应用。预训练模型从大规模数据学习普适性的表征,可以在应用于不同下游应用时仅进行微调,而无需大量训练,提高了深度学习技术的应用便利性。
3.预训练模型的尺寸通常较大,应用时需要占用大量内容,且具有庞大的计算开销。因此,限制了预训练模型在计算能力有限的设备上的应用。


技术实现要素:

4.本公开提供了一种神经网络模型的压缩方法、压缩模型的训练方法、多媒体数据的处理方法、装置、设备、存储介质以及程序产品。
5.根据本公开的一方面,提供了一种神经网络模型的压缩方法,包括:通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,多个平滑参数组中每个平滑参数组包括与多个初始参数对应的多个平滑参数,多个平滑参数组分别与多个缩放值一一对应;通过处理器分别对多个平滑参数组进行量化,得到多个压缩后的神经网络模型;通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,确定多个压缩后的神经网络模型的多个量化损失;以及根据多个量化损失,更新多个缩放值,并返回通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作,直到确定目标神经网络模型;其中,更新目标神经网络模型对应的缩放值,并返回通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作得到的神经网络模型的量化损失均大于目标神经网络模型的量化损失。
6.根据本公开的另一方面,提供了一种压缩模型的训练方法,包括:将作为样本数据的多媒体数据输入压缩模型,得到针对多个预定类别的概率向量,多媒体数据标注有类别信息;根据类别信息和概率向量,确定压缩模型的损失值;以及根据损失值,对压缩模型进行训练;其中,压缩模型是采用本公开提供的神经网络模型的压缩方法得到的压缩后的神经网络模型。
7.根据本公开的另一方面,提供了一种多媒体数据的处理方法,包括:将待处理的多媒体数据输入压缩模型,得到表示多媒体数据所属类别的概率向量,概率向量包括多媒体数据属于多个预定类别中每个预定类别的概率值;以及根据概率向量,确定多个预定类别中多媒体数据所属的目标类别;其中,压缩模型包括采用本公开提供的训练方法训练得到的模型。
8.根据本公开的另一方面,提供了一种神经网络模型的压缩装置,包括:平滑模块,用于通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,多个平滑参数组中每个平滑参数组包括与多个初始参数对应的多个平滑参数,多个平滑参数组分别与多个缩放值一一对应;量化模块,用于通过处理器分别对多个平滑参数组进行量化,得到多个压缩后的神经网络模型;第一确定模块,用于通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,确定多个压缩后的神经网络模型的多个量化损失;以及更新模块,用于根据多个量化损失,更新多个缩放值;其中,更新模块执行完成操作后,返回平滑模块执行操作,直到确定目标神经网络模型;更新目标神经网络模型对应的缩放值,并返回通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作得到的神经网络模型的量化损失均大于目标神经网络模型的量化损失。
9.根据本公开的另一方面,提供了一种压缩模型的训练装置,包括:第一输入模块,用于将作为样本数据的多媒体数据输入压缩模型,得到针对多个预定类别的概率向量,多媒体数据标注有类别信息;第四确定模块,用于根据类别信息和概率向量,确定压缩模型的损失值;以及训练模块,用于根据损失值,对压缩模型进行训练;其中,压缩模型是采用本公开提供的压缩装置得到的压缩后的神经网络模型。
10.根据本公开的另一方面,提供了一种多媒体数据的处理装置,包括:第二输入模块,用于将待处理的多媒体数据输入压缩模型,得到表示多媒体数据所属类别的概率向量,概率向量包括多媒体数据属于多个预定类别中每个预定类别的概率值;以及第五确定模块,用于根据概率向量,确定多个预定类别中多媒体数据所属的目标类别;其中,压缩模型包括采用本公开提供的训练装置训练得到的模型。
11.本公开的另一个方面提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开提供的以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法。
12.根据本公开实施例的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开提供的以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法。
13.根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开提供的以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法。
14.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
15.附图用于更好地理解本方案,不构成对本公开的限定。其中:
16.图1是根据本公开实施例的神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法和装置的应用场景示意图;
17.图2是根据本公开实施例的神经网络模型的压缩方法的流程示意图;
18.图3是根据本公开实施例的缩放初始参数的原理示意图;
19.图4是根据本公开实施例的更新缩放值的原理示意图;
20.图5是根据本公开实施例的压缩模型的训练方法的流程示意图;
21.图6是根据本公开提供的多媒体数据的处理方法的流程示意图;
22.图7是根据本公开实施例的神经网络模型的压缩装置的结构框图;
23.图8是根据本公开实施例的压缩模型的训练装置的结构框图;
24.图9是根据本公开实施例的多媒体数据的处理装置的结构框图以及
25.图10是用来实施本公开的实施例的示例电子设备的框图。
具体实施方式
26.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
27.在自然语言处理领域,几乎每项任务中都能看见预训练语言模型成功的身影。预训练语言模型例如可以包括基于transformer等构建的模型,例如,生成式预训练transformer(generative pre-trained transformer,gpt)模型和开放式预训练transformer(open pre-trained transformer,opt)模型。该预训练语言模型可以使用自监督学习的方法来从大规模文本数据中学习普适性的语言表征。然后将学习到的知识迁移到下游任务中,为下游任务提供优质的背景知识。另外,在计算机视觉领域、语音处理领域和多模态领域中,预训练模型也具有巨大潜力,并已经研发出了一系列的用于对图像和视频等进行精确处理的模型。
28.预训练模型的计算成本和存储成本是提高预训练模型可用性的主要障碍。例如,性能较好的模型变体gpt3-175b包括大约1750亿个参数。需要数十到数百个gpu来训练gpt3-175b,这使得执行简单的预训练模型推理任务也存在挑战性。例如,将gpt3-175b的参数存储在紧凑型文件中时将会占用326gb内存,内存占用量超过了最高端的单个gpu的容量,这导致需要使用更复杂和昂贵的设备(例如多gpu部署)来执行模型训练的推理任务。
29.为了使得预训练模型可以应用于计算能力弱的设备中或时延要求较高的应用中,可以对预训练模型进行压缩,以减小模型的尺寸大小和模型推理时间。模型量化方法为压缩模型的方法之一。模型量化方法主要是通过对模型内的权重参数和/或激活值进行类型转换(例如将部分或全部的浮点型数据转化为低位整型数据),来加快模型推理速度,降低对硬件的要求。但由于量化过程是将模型的权值、激活值等从高精度转化成低精度的操作过程,例如将float32类型的数据转化成int8类型的数据,因此该种方法会影响模型的精度。
30.例如,通过模型量化方法压缩模型后模型精度下降明显的原因包括有:因信息容量减少导致信息嵌入同质化(例如词嵌入同质化,homogeneous word embeddings)、不同层的权重分布差异较大、较大的异常值等。为了避免模型量化方法对模型精度的影响,可以对模型量化算法进行优化。现有的优化方法大部分依赖蒸馏算法和优化量化算法。其中,蒸馏算法要求采用教师模型和学生模型同时进行计算,这无疑会增加模型训练过程中对资源的
需求量。优化量化算法通常采用按层量化、按行量化或非对称量化等方法来对模型的参数进行量化,这在工程推理上不易实施推广。
31.为了解决该问题,本公开提供了一种神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法、装置、设备、介质。以下先结合图1对本公开提供的方法和装置的应用场景进行描述。
32.图1是根据本公开实施例的神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法和装置的应用场景示意图。
33.如图1所示,该实施例的应用场景100可以包括终端设备110,该终端设备110可以为具有处理功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机和智能可穿戴设备等等。
34.终端设备110例如可以对获取的多媒体数据120进行处理,以得到多媒体数据的类别130。例如多媒体数据120可以为文本数据、图像或视频等任一模态或多模态的数据。在一实施例中,终端设备110中可以安装有各种客户端应用,例如即时通信类应用、多媒体数据处理类应用、浏览器类应用等。在该实施例中,可以采用多媒体数据处理类应用对多媒体数据120进行处理。
35.在一实施例中,终端设备110可以加载有压缩模型140,以根据加载的压缩模型140对多媒体数据120进行处理。该压缩模型140可以是采用模型量化方法对预训练模型进行压缩后得到的模型。
36.如图1所示,在一实施例中,该应用场景100中还可以包括服务器150,该服务器150可以为向终端设备中安装的多媒体数据处理类应用的运行提供支持的后台管理服务器,也可以为云服务器或者区块链服务器等,本公开对此不做限定。终端设备110可以通过网络与服务器150通信连接。网络可以包括有线或无线通信链路。
37.例如,该服务器150可以采用模型量化方法对预训练得到的神经网络模型进行压缩,得到压缩后的模型。该服务器150例如还可以对压缩后的模型进行训练,具体可以是对压缩后的模型中的权重参数等进行微调,得到训练好的压缩模型140,以供终端设备110加载。
38.需要说明的是,本公开提供的神经网络模型的压缩方法和/或压缩模型的训练方法可以由服务器1 50执行,也可以由与服务器150通信连接的其他服务器执行。相应地,本公开提供的神经网络模型的压缩装置和/或压缩模型的训练装置可以设置在服务器150中,也可以设置在与服务器150通信连接的其他服务器中。本公开提供的多媒体数据的处理方法可以由终端设备110执行。相应地,本公开提供的多媒体数据的处理装置可以设置在终端设备110中。
39.应该理解,图1中的终端设备110和服务器150的数目和类型仅仅是示意性的。根据实现需要,可以具有任意数目和类型的终端设备110和服务器150。
40.以下将结合图2~图4对本公开提供的神经网络模型的压缩方法进行详细描述。
41.图2是根据本公开实施例的神经网络模型的压缩方法的流程示意图。
42.如图2所示,该实施例的神经网络模型的压缩方法200可以包括操作s210~操作s240。
43.在操作s210,通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数
进行平滑,得到多个平滑参数组。
44.在本公开实施例中,处理器包括中央处理器(central processing unit,cpu)和图像处理器(graphics processing unit,gpu)。神经网络模型可以包括依次连接的多个处理层。例如神经网络模型可以包括依次连接的嵌入层、编码层、解码层、全连接层和逻辑回归层等。
45.例如,神经网络模型包括的多个处理层可以与神经网络模型的类型相对应。例如,神经网络模型为文心模型,则依次连接的多个处理层可以包括transformer编码器中第一个编码器包括的多头自注意力层、叠加&归一化层、前向反馈神经网络层、叠加&归一化层;第二个编码器包括的多头自注意力层、叠加&归一化层、前向反馈神经网络层、叠加&归一化层;...;第六个编码器包括的多头自注意力层、叠加&归一化层、前向反馈神经网络层、叠加&归一化层和逻辑回归层等。
46.例如,通过将多媒体数据输入神经网络模型,可以从神经网络模型的处理层的算子中获取多个初始参数。例如,处理层包括全连接层,全连接层的算子为a*b,从算子a*b中获取初始参数a和初始参数b。
47.例如,多媒体数据可以包括图片数据、音频数据、视频数据和文本数据等。神经网络模型可以运行在cpu和/或gpu中。例如,神经网络模型可以包括上亿个初始参数,可以通过上百或上千个gpu运行神经网络模型。例如,通过gpu运行神经网络模型,将音频数据输入神经网络模型,可以对音频数据进行语义识别。
48.在本公开实施例中,多个平滑参数组中每个平滑参数组包括与多个初始参数对应的多个平滑参数。例如,利用缩放值分别对多个初始参数进行缩放操作,得到多个平滑参数,平滑参数为经过平滑操作后的初始参数。
49.在本公开实施例中,多个平滑参数组分别与多个缩放值一一对应。例如,针对多个初始参数,均利用同一个缩放值进行平滑操作,得到一个平滑参数组。通过利用多个缩放值对多个初始参数进行多次平滑操作,可以得到多个平滑参数组。
50.在本公开实施例中,多个缩放值可以是随机生成的。例如,多个缩放值可以是通过随机数生成器得到的。例如,多个缩放值也可以是在运行神经网络模型的硬件的运行参数的约束下生成的。例如,运行参数可以为硬件内存的容量大小、gpu的线程数量和显卡的显存速度等。在硬件的运行资源有限的情况下,可以采用较大的缩放值对初始参数进行平滑操作,较大程度的缩小异常参数和正常参数之间的差距。这使得在资源有限的条件下也可以确保量化效率。
51.本公开对多个缩放值的数值大小不做限定。
52.在本公开实施例中,通过对初始参数进行平滑操作,可以缩小多个初始参数中存在的异常参数的数值,从而减少异常值对模型量化的影响。例如,异常参数可以为与多个初始参数的平均值的差值大于差值阈值的参数。或者,可以计算多个初始参数的平均值,将每个初始参数中与该平均值的差值大于差值阈值的初始参数,作为异常参数。
53.在操作s220,通过处理器分别对多个平滑参数组进行量化,得到多个压缩后的神经网络模型。
54.在本公开实施例中,量化方式可以为离线量化。例如,可以通过gpu对多个平滑参进行离线量化。平滑后初始参数的量化过程对gpu资源的需求降低,可以在较低的gpu资源
的支持下,实现较高精度的量化和确保量化速度。
55.例如,平滑参数可以均为float32类型的数据,该实施例可以通过将平滑参数转化为int8等类型的数据,实现对平滑参数的量化。即,可以将表示平滑参数的32位浮点数转换位8位整型数。如此,压缩得到的神经网络模型的参数量可以变为原来的1/4,从而可以使得压缩后的神经网络模型可以在计算资源有限的终端上运行,并提高模型的推理速度。
56.在操作s230,通过确定多个压缩后的神经网络模型的多个量化损失。
57.在本公开实施例中,通过计算每个压缩后的神经网络模型的量化损失,确定每个压缩后的神经网络模型的精度损失。通过量化损失可以评估对神经网络模型的压缩质量。
58.在操作s240,根据多个量化损失,更新多个缩放值,并返回执行操作s210,直到确定目标神经网络模型。
59.在本公开实施例中,根据多个量化损失的数值,可以确定每个压缩后神经网络模型的精度,并调整对应的缩放值,提高压缩后的神经网络模型精度。
60.例如,可以根据多个量化损失的分布情况,确定生成较小量化损失的缩放值的范围。例如,根据多个量化损失的数值变化,确定缩放值越小,量化损失越小,可以将多个缩放值减小,并重新对初始参数进行平滑操作和量化操作,得到新的压缩后的神经网络模型。例如,根据多个量化损失的数值变化,确定缩放值越大,量化损失越大,可以将多个缩放值增大,并重新对初始参数进行平滑操作和量化操作,得到新的压缩后的神经网络模型。
61.例如,还可以根据多个量化损失的分布情况,确定压缩质量较高的神经网络模型对应的多个目标缩放值。对多个目标缩放值进行更新后,重新对初始参数进行平滑操作和量化操作,得到新的压缩后的神经网络模型。
62.在本公开实施例中,更新目标神经网络模型对应的缩放值,并返回分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作得到的神经网络模型的量化损失大于目标神经网络模型的量化损失。
63.在经过多次更新缩放值的情况下,更新量化损失均大于量化损失的情况下,认为缩放值已经是最优缩放值,进而可以从多个压缩后的神经网络模型中确定最小量化损失对应的压缩后的神经网络模型为目标神经网络模型。例如,目标神经网络模型为最终确定具有最小量化损失的神经网络模型。
64.在本公开实施例中,在通过更新缩放值不断优化神经网络模型的过程中,通过神经网络模型的量化损失,确定更新价值。在确定量化损失无法再减少的情况下,可以从优化过程中产生的历史神经网络模型中确定量化损失最小的神经网络模型为目标神经网络模型。
65.本公开实施例通过根据多个量化损失的分布情况,确定对缩放值的更新方向,并可以根据量化损失的变化,迭代更新缩放值,从而确定具有最优精度的压缩后的神经网络模型,保证压缩后模型可以部署在终端,以用于对线上数据进行处理。通过对缩放值进行迭代更新,可以实现对缩放值数值的全局搜索,尽可能的穷举多种缩放值的数值,尽可能多的采用多种缩放值对初始参数进行平滑操作。缩放值的数值可以是随机生成的,并根据量化损失进行更新,这使得缩放值不受初始参数的数值影响。再者,通过对平滑后的参数进行量化,可以在运行压缩后模型时减低对硬件终端数量和运行性能的需求,并提高终端部署的压缩后模型的推理效率,降低对终端资源的占用量。
66.图3是根据本公开实施例的缩放初始参数的原理示意图。
67.如图3所示,在一实施例300中,多个初始参数310可以包括多个激活值311和与多个激活值分别对应的多个权重值312。例如,在神经网络模型中采样多个初始激活值,多个初始激活值与一个权重值对应。可以以多个初始激活值的绝对值的最大值作为最终的激活值。此时,一个激活值与一个权重值对应,因此多个初始参数可以包括多个激活值和分别与多个激活值对应的多个权重值。
68.在本公开实施例中,可以分别利用多个缩放值320对多个初始参数进行缩放操作。例如,多个缩放值320包括y个缩放值,y个缩放值可以包括缩放值320_1、......、缩放值320_y。
69.在本公开实施例中,分别利用多个缩放值320缩小多个激活值311,得到与多个缩放值320对应的多个平滑激活值组,多个平滑激活值组的每个平滑激活值组包括与多个激活值311对应的多个平滑激活值。分别利用多个缩放值320,放大多个权重值312,得到与多个缩放值320对应的多个平滑权重值组,多个平滑权重值组的每个平滑权重值组包括与多个权重值312对应的多个平滑权重值。多个平滑参数组的每个平滑参数组包括平滑激活值组和对应的平滑权重值组。
70.例如,利用缩放值320_1缩小多个激活值311和放大多个权重值312,可以得到平滑参数组330_1。利用缩放值320_y缩小多个激活值311和放大多个权重值312,可以得到平滑参数组330_y。
71.在一些实施例中,还可以基于多个平滑系数,分别对多个初始参数进行平滑操作。例如,根据激活值、与激活值对应的权重值和平滑系数确定缩放值,再利用缩放值,对多个初始参数进行缩放,得到多个平滑参数。
72.例如,可以采用以下公式(1)来确定缩放值s。
[0073][0074]
s为缩放值,a为激活值,w为权重值,α为平滑系数。α为一个超参数,当α越大时,缩放值s也越大,对初始参数的缩放程度越大,即平滑程度越大。例如,α的数值范围为0.1-0.9,例如,α可以默认为0.5。
[0075]
例如,可以采用以下公式(2)来对激活值进行缩小。
[0076][0077]
a’为平滑激活值。当缩放值s越大时,经过平滑处理后激活值会越小,激活值中的异常值会越小。
[0078]
例如,可以采用以下公式(3)来对权重值进行放大。
[0079]
w’=w*s
ꢀꢀꢀꢀ
公式(3)
[0080]
w’为平滑激活值。当缩放值s越大时,经过平滑处理后权重值会越大,权重值中的异常值会越大。
[0081]
例如,对多个平滑参数组中每个平滑参数组的平滑激活值和平滑权重值进行量化,可以得到多个压缩后的神经网络模型。例如,可以利用gpu对平滑激活值和平滑权重值进行量化。对初始参数进行平滑操作可以降低量化过程对硬件中显卡和内存资源的需求。
此外,根据量化损失不断更新缩放值,可以确定最小量化损失对应的缩放值,从而可以提高量化精度,确保压缩后神经网络模型的精度。
[0082]
在激活值中存在异常激活值时,通过较大的缩放值,可以较大程度地缩小异常激活值,从而减轻异常激活值对模型精度的影像。但是,在确定权重值中也存在异常权重值的情况下,采用较大的缩放值会导致异常缩放值被放大,从而影响模型精度。
[0083]
例如,假设正常激活值的均值为1,正常权重值的均值为0.01,激活值和权重值都存在异常,异常激活值为100,异常权重值为1,平滑系数α默认为0.5,此时缩放值s为10。通过缩放值s对异常激活值和异常权重值进行平滑操作后,平滑后异常激活值为10,平滑后的异常权重值为10。
[0084]
此时,平滑后的异常激活值与正常激活值的均值大幅度缩小,可以提高模型的精度。但平滑后的权重值呈现为巨大的异常点,这导致平滑后的权重值出现量化不友好现象,会严重影响模型的精度。
[0085]
通过本公开实施例,采取多个不同的缩放值对激活值和权重值进行平滑操作,可以确定多个缩放值对神经网络模型精度的影响,从而可以确定最优缩放值,可以在达到压缩模型的基础上,降低由于平滑后的异常权重值而造成的模型精度损失。
[0086]
图4是根据本公开实施例的更新缩放值的原理示意图。
[0087]
如图4所示,在一实施例400中,多个量化损失410包括y个量化损失,y个量化损失包括量化损失1、......、量化损失y。根据多个量化损失410的从小到大顺序,从多个量化损失410中确定前k个量化损失420,k为预设值,k为正整数。例如,可以假设前k个量化损失包括量化损失1、......、量化损失k。
[0088]
例如,多个量化损失410包括10个量化损失。根据10个量化损失从小到大的顺序,确定前5个量化损失。
[0089]
根据前k个量化损失420,确定与前k个量化损失对应的k个缩放值430,k个缩放值430包括缩放值1、......、缩放值k。即,分别通过该k个缩放值进行平滑操作后,量化得到的神经网络模型的k个量化损失为前k个量化损失420。
[0090]
对前k个量化损失420对应的k个缩放值430进行更新,得到k个更新缩放值440。k个更新缩放值440包括更新缩放值1、......、更新缩放值k。
[0091]
在本公开实施例中,可以通过k个更新缩放值440对神经网络模型的初始参数进行平滑操作和量化操作,得到重新压缩后的k个神经网络模型。计算重新压缩后的k个神经网络模型的量化损失,得到k个更新量化损失450。k个更新量化损失450包括更新量化损失1、......、更新量化损失k。
[0092]
在本公开实施例中,将k个量化损失420与k个更新量化损失450进行比较,可以确定更新缩放值前后量化损失的变化,从而确定缩放值的更新方向。
[0093]
在一些实施例中,在确定基于k个更新缩放值440得到的k个更新量化损失450均小于k个量化损失420的情况下,根据k个更新量化损失450的从小到大顺序,对k个更新量化损失中的前n个更新量化损失对应的n个更新缩放值进行更新,n为预设值,n为正整数,n≤k。
[0094]
例如,在k个更新量化损失450均小于k个量化损失420,认为k个更新缩放值440均优于k个缩放值430。可以进一步缩小缩放值的范围,以确定最优缩放值。
[0095]
例如,在确定5个更新量化损失均小于5个量化损失的情况下,可以根据5个更新量
化损失从小到大的顺序,确定前3个更新量化损失,并对该前3个更新量化损失对应的3个更新缩放值进行更新,以利用更新后的缩放值再次对神经网络模型的初始参数进行平滑操作,并量化神经网络模型,确定量化损失。
[0096]
在每次更新缩放值后,更新量化损失均小于量化损失的情况下,可以不断缩小缩放值的范围,直至确定一个最优缩放值。
[0097]
在一些实施例中,根据k个量化损失420和基于k个更新缩放值440得到的k个更新量化损失450,从k个更新量化损失450中确定m个更新量化损失,并更新m个更新量化损失。m个更新量化损失均小于k个量化损失420中与m个更新量化损失对应的m个量化损失,m为正整数,m≤k。
[0098]
例如,m个更新量化损失小于对应的m个量化损失,认为m个更新量化损失对应的m个更新缩放值优于m个量化损失对应的m个缩放值。k个量化损失420中除该m个量化损失以外的k-m个量化损失对应的缩放值优于或等于k个更新量化损失450中除该m个更量化损失以外的k-m个更新量化损失对应的更新缩放值。由此可以进一步缩小缩放值的范围,以确定最优缩放值。
[0099]
例如,在确定5个更新量化损失存在3更新量化损失小于对应量化损失的情况下,可以更新该3个更新量化损失对应的3个更新缩放值,以利用更新后的缩放值再次对神经网络模型的初始参数进行平滑操作,并量化神经网络模型,确定量化损失。
[0100]
在每次更新缩放值后,选择有利于模型精度的更新缩放值,并可以不断缩小缩放值的范围,直至确定一个最优缩放值。
[0101]
在一些实施例中,每个缩放值可以为张量,张量包括多个元素。更新多个缩放值可以包括:对于多个缩放值中的每个缩放值,分别通过执行以下操作中的至少一种对缩放值进行更新:将多个元素中位于张量的多个第一预设位置的多个第一目标元素进行交换;以及修改多个元素中位于张量的第二预设位置的第二目标元素的值。
[0102]
例如,缩放值可以为一个多阶矩阵。可以通过交换多阶矩阵中多个元素的位置,实现对缩放值的更新。
[0103]
例如,缩放值可以为一个3*3的矩阵第一预设位置可以包括矩阵a的第一行第一列和第二行第一列,位于第一预设位置的第一目标元素为a
11
和a
21
。将a
11
和a
21
进行交换,可以得到更新缩放值从而实现对缩放值的交叉更新。
[0104]
例如,缩放值可以为一个3*3的矩阵第二预设位置可以包括矩阵b的第一行第一列,位于第二预设位置的第二目标元素为1。将1修改为10,可以得到更新缩
放值从而实现对缩放值的突变更新。
[0105]
在一些实施例中,通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,可以确定多个压缩后的神经网络模型的多个量化损失410可以包括:通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,可以利用多个压缩后的神经网络模型对待处理数据进行数据运算,得到多个量化输出结果;通过将待处理数据输入神经网络模型,可以利用神经网络模型对待处理数据进行数据运算,得到初始输出结果;以及根据多个量化输出结果和初始输出结果,确定多个量化损失。
[0106]
例如,利用经过平滑操作和量化操作后的神经网络模型对输入的待识别音频数据进行数据运算,可以输出压缩模型的识别结果。利用不进行平滑操作和量化操作的原始的神经网络模型对相同的待识别音频数据进行数据运算,可以输出初始识别结果。通过比较量化输出结果和初始输出结果,可以确定压缩后的神经网络模型的数据运算过程产生的量化损失。例如,通过比较初始识别结果和压缩模型的识别结果的差值,确定量化损失。
[0107]
例如,数据运算可以为神经网络模型中处理成的数据运算过程。数据运算对象可以为输入神经网络模型或输入压缩后的神经网络模型的多媒体数据。处理层可以为卷积层和全连接层等。
[0108]
例如,多媒体数据可以为文本、图像、视频或多模态数据等多种类型的数据。神经网络模型为与多媒体数据的类型相对应。例如,在多媒体数据为文本时,神经网络模型可以为文心模型(ernie)或者gpt模等。在多媒体数据为图像时,神经网络模型可以为残差网络(residual network,resnet)系列模型(例如resnet-50)、视觉transformer模型(vision transformer,vit)、基于transformer的端到端目标检测模型(end-to-end object detection with transformers,dert)等。在多媒体数据为视频时,神经网络模型可以为swin-transformer模型等。
[0109]
通过计算压缩后神经网络模型的量化损失,可以评估平滑操作和量化操作的质量。在确定量化损失最小的情况下,可以表明在压缩神经网络模型时,最大限度地保证神经网络模型的精度。
[0110]
在一些实施例中,在对缩放值更新之前,还可以先对多个量化损失410进行评估。
[0111]
例如,在确定多个量化损失中的最小量化损失小于或等于预设量化损失的情况下,确定最小量化损失对应的压缩后的神经网络模型为目标神经网络模型。在确定多个量化损失中的最小量化损失大于预设量化损失的情况下根据多个量化损失,更新多个缩放值,并重新利用更新后的多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,以得到新的更新后的神经网络模型。
[0112]
例如,预设量化损失可以为神经网络模型的运算误差允许内的量化损失。例如,在对运算精度要求不高的情况下,预设量化损失可以为1。在确定多个量化损失410中存在小于或等于1的量化损失的情况下,可以确定该量化损失对应的压缩后的神经网络模型为目标神经网络模型。在确定多个量化损失410均大于1的情况下,可以对多个缩放值均进行更新,以获取满足运算需求的缩放值。
[0113]
在对缩放值进行更新之前,预先根据实际的运算需求,确定最优缩放值,可以简化
优化过程。
[0114]
在一些实施例中,在确定基于更新后的多个缩放值得到的多个更新量化损失450均大于多个量化损失420的情况下,重新更新多个缩放值430,并重新利用更新后的多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,以得到新的更新后的神经网络模型作。
[0115]
例如,在确定更新量化损失大于量化损失的情况下,认为缩放值优于更新缩放值,进而可认为需要调整对缩放值的更新方向。例如,在增大缩放值的情况下,产生了更大的量化损失,可以重新更新缩放值,即减小缩放值。
[0116]
在一些实施例中,在确定基于更新后的多个缩放值得到的多个更新量化损失均大于多个量化损失的情况下,从多个压缩后的神经网络模型中确定目标神经网络模型。
[0117]
例如,在经过多次更新缩放值的情况下,更新量化损失均大于量化损失的情况下,认为缩放值已经是最优缩放值,进而可以从多个压缩后的神经网络模型中确定最小量化损失对应的压缩后的神经网络模型为目标神经网络模型。例如,目标神经网络模型为最终确定具有最小量化损失的神经网络模型。
[0118]
在本公开实施例中,在通过更新缩放值不断优化神经网络模型的过程中,通过神经网络模型的量化损失,确定更新价值。在确定量化损失无法再减少的情况下,可以从优化过程中产生的历史神经网络模型中确定量化损失最小的神经网络模型为目标神经网络模型。
[0119]
通过本公开实施例,针对大模型离线量化效果损失大的现象,可以通过迭代优化的方法自动搜索对量化损失最小的缩放值,将初始参数中量化不友好的数值转移到量化友好的数值上,达到量化精度无损。此外,本公开提供压缩方法可以高效地执行并在真实硬件上享有可行性,通过缩放值对初始参数进行平滑,在资源有限的硬件终端上,也可以在几分钟内生成更适合量化的模型,不需要额外推理负担。再者,由于该实施例对所有处理层的异常激活值和对应的权重值进行量化处理,可以有效减小压缩模型的尺寸大小,降低部署压缩模型所需的计算能力,利于压缩模型在计算能力有限的终端上的部署。
[0120]
在完成对模型的压缩后,还可以对得到的压缩模型进行进一步地训练,以进一步提高压缩模型的精度。基于此,本公开还提供了一种压缩模型的训练方法,以下将结合图5对该方法进行详细描述。
[0121]
图5是根据本公开实施例的压缩模型的训练方法的流程示意图。
[0122]
如图5所示,该实施例的压缩模型的训练方法500可以包括操作s510~操作s530。
[0123]
在操作s510,将作为样本数据的多媒体数据输入压缩模型,得到针对多个预定类别的概率向量,多媒体数据标注有类别信息。
[0124]
根据本公开的实施例,操作s510中的压缩模型可以通过加载上文描述的神经网络模型的压缩方法得到的压缩后的神经网络模型而得到。样本数据可以为对神经网络模型进行预训练的训练集中的部分样本数据。例如,可以从训练集中随机抽取5%、10%或其他任意比例的数据,得到样本数据。作为样本数据的多媒体数据例如可以包括类别信息,该类别信息表示多个预定类别中的某个类别。
[0125]
该实施例中,压缩模型可以在对多媒体数据处理后,输出概率向量。该概率向量中包括压缩模型预测的针对多个预定类别中每个类别的概率值。
[0126]
可以理解的是,压缩得到压缩模型的神经网络模型例如可以为用于执行分类任务的模型,以对多媒体数据进行分类。相应地,概率向量可以包括压缩模型预测得到的多媒体数据属于多个预定类别中每个类别的概率值,多媒体数据标注的类别信息可以为多媒体数据的真实类别,该真实类别为多个预定类别中的任一类别。或者,压缩得到压缩模型的神经网络模型例如可以为用于执行文本生成任务的模型,以生成多媒体数据的答复文本。相应地,概率向量可以包括压缩模型预测得到的答复文本中某个字符为多个预定类别字符中每个字符的概率值,多媒体数据标注的类别信息可以为第一多媒体数据的答复文本中的各个字符。可以理解的是,概率向量所表示的信息可以与压缩模型执行的任务相对应,本公开对此不做限定。
[0127]
在操作s520,根据类别信息和概率向量,确定压缩模型的损失值。
[0128]
该实施例可以根据概率向量中与类别信息表示的类别对应的概率值,采用预定损失函数来计算压缩模型的损失值。其中,预定损失函数例如可以为交叉熵损失函数、均方误差损失函数(即l2损失函数)或铰链损失(hinge loss)函数等,本公开对此不做限定。
[0129]
在操作s530,根据损失值,对压缩模型进行训练。
[0130]
该实施例可以以最小化损失值为目标,采用梯度下降算法来对压缩模型中的权重参数等网络参数进行调整,实现对压缩模型的训练。
[0131]
在本公开实施例中,可以在gpu上对压缩模型进行训练。通过本公开压缩方法压缩神经网络模型,可以有效的减小神经网络模型的尺寸大小和减少执行训练过程中推理任务的时间,从而可以与资源有限的硬件终端更加适配,并提高训练效率。
[0132]
基于本公开提供的压缩模型的训练方法,本公开还提供了一种多媒体数据的处理方法,以下将结合图6对该方法进行详细描述。
[0133]
图6是根据本公开提供的多媒体数据的处理方法的流程示意图。
[0134]
如图6所示,以压缩模型用于执行对多媒体数据进行分类的任务为例,该实施例的多媒体数据的处理方法600可以包括操作s610~操作s620。
[0135]
在操作s610,将待处理的多媒体数据输入压缩模型,得到表示多媒体数据所属类别的概率向量。
[0136]
根据本公开的实施例,该操作s610的实现原理与上文描述的操作s510的实现原理类似。概率向量可以包括多媒体数据属于多个预定类别中每个预定类别的概率值,在此不再赘述。可以理解的是,压缩模型例如可以是采用上文描述的压缩模型的训练方法得到的训练完成的压缩模型。
[0137]
在操作s620,根据概率向量,确定多个预定类别中多媒体数据所属的目标类别。该实施例中,可以将概率向量中最大概率值所对应的预定类别作为多媒体数据所属的目标类别。
[0138]
可以理解的是,在多媒体数据为文本时,压缩模型例如可以是通过对文心模型等进行压缩并训练而得到的模型。在多媒体数据为图像时,压缩模型例如可以是通过对resnet-50等进行压缩并训练而得到的模型。
[0139]
在本公开实施例中,通过本公开提供的训练方法得到的神经网络模型,可以在资源有限的硬件终端上高校运行,减少资源开销。
[0140]
基于本公开提供的神经网络模型的压缩方法,本公开还提供了一种神经网络模型
的压缩装置,以下将结合图7对该装置进行详细描述。
[0141]
图7是根据本公开实施例的神经网络模型的压缩装置的结构框图。
[0142]
如图7所示,该实施例的神经网络模型的压缩装置700可以包括平滑模块710、量化模块720、第一确定模块730和更新模块740。
[0143]
获取模块710用于通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,多个平滑参数组中每个平滑参数组包括与多个初始参数对应的多个平滑参数,多个平滑参数组分别与多个缩放值一一对应。在一实施例中,平滑模块710可以用于执行上文描述的操作s210,在此不再赘述。
[0144]
量化模块720用于通过处理器分别对多个平滑参数组进行量化,得到多个压缩后的神经网络模型。在一实施例中,量化模块720以用于执行上文描述的操作s220,在此不再赘述。
[0145]
第一确定模块730用于通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,确定多个压缩后的神经网络模型的多个量化损失。在一实施例中,第一确定模块730可以用于执行上文描述的操作s230,在此不再赘述。
[0146]
更新模块740用于根据多个量化损失,更新多个缩放值。在一实施例中,更新模块740可以用于执行上文描述的操作s240,在此不再赘述。
[0147]
在本公开实施例中,更新模块740执行完成操作后,返回平滑模块710执行操作,直到确定目标神经网络模型;更新目标神经网络模型对应的缩放值,并返回通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作得到的神经网络模型的量化损失大于目标神经网络模型的量化损失。
[0148]
根据本公开的实施例,每个缩放值为张量,张量包括多个元素;更新模块740还用于:对于每个缩放值,通过执行以下操作中的至少一种对缩放值进行更新:将多个元素中位于张量的多个第一预设位置的多个第一目标元素进行交换;以及修改多个元素中位于张量的第二预设位置的第二目标元素的值。
[0149]
根据本公开的实施例,更新模块740还用于:根据多个量化损失的从小到大顺序,从多个量化损失中确定前k个量化损失,k为预设值,k为正整数;以及对前k个量化损失对应的k个缩放值进行更新,得到k个更新缩放值。
[0150]
根据本公开的实施例,更新模块740还用于:在确定基于k个更新缩放值得到的k个更新量化损失均小于k个量化损失的情况下,根据k个更新量化损失的从小到大顺序,对k个更新量化损失中的前n个更新量化损失对应的n个更新缩放值进行更新,n为预设值,n为正整数,n≤k。
[0151]
根据本公开的实施例,更新模块740还用于:根据k个量化损失和基于k个更新缩放值得到的k个更新量化损失,从k个更新量化损失中确定m个更新量化损失,m个更新量化损失均小于k个量化损失中与m个更新量化损失对应的m个量化损失,m为正整数,m≤k;以及更新m个更新量化损失。
[0152]
根据本公开的实施例,第一确定模块730还用于:利用多个压缩后的神经网络模型进行数据运算,得到多个量化输出结果;利用神经网络模型进行数据运算,得到初始输出结果;以及根据多个量化输出结果和初始输出结果,确定多个量化损失。
[0153]
根据本公开的实施例,装置700还包括第二确定模块,用于:在确定多个量化损失
中的最小量化损失小于或等于预设量化损失的情况下,确定最小量化损失对应的压缩后的神经网络模型为目标神经网络模型;以及在确定多个量化损失中的最小量化损失大于预设量化损失的情况下根据多个量化损失,更新多个缩放值,并返回分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作。
[0154]
根据本公开的实施例,更新模块740还用于:在确定基于更新后的多个缩放值得到的多个更新量化损失均大于多个量化损失的情况下,重新更新多个缩放值,并返回分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作。
[0155]
根据本公开的实施例,装置700还包括第三确定模块还用于:在确定基于更新后的多个缩放值得到的多个更新量化损失均大于多个量化损失的情况下,从多个压缩后的神经网络模型中确定目标神经网络模型。
[0156]
根据本公开的实施例,多个初始参数包括多个激活值和与多个激活值分别对应的多个权重值。平滑模块710还用于:分别利用多个缩放值,缩小多个激活值,得到与多个缩放值对应的多个平滑激活值组,多个平滑激活值组的每个平滑激活值组包括与多个激活值对应的多个平滑激活值;以及分别利用多个缩放值,放大多个权重值,得到与多个缩放值对应的多个平滑权重值组,多个平滑权重值组的每个平滑权重值组包括与多个权重值对应的多个平滑权重值;其中,多个平滑参数组的每个平滑参数组包括平滑激活值组和对应的平滑权重值组。
[0157]
基于本公开提供的压缩模型的训练方法,本公开还提供了一种压缩模型的训练装置,以下将结合图8对该装置进行详细描述。
[0158]
图8是根据本公开实施例的压缩模型的训练装置的结构框图。
[0159]
如图8所示,该实施例的压缩模型的训练装置800可以包括第一输入模块810、第四确定模块820和训练模块830。其中,压缩模型是采用本公开提供的神经网络模型的压缩装置得到的压缩后的神经网络模型。
[0160]
第一输入模块810用于将作为样本数据的多媒体数据输入压缩模型,得到针对多个预定类别的概率向量;多媒体数据标注有类别信息。在一实施例中,第一输入模块810可以用于执行上文描述的操作s510,在此不再赘述。
[0161]
第四确定模块820用于根据类别信息和概率向量,确定压缩模型的损失值。在一实施例中,第四确定模块820可以用于执行上文描述的操作s520,在此不再赘述。
[0162]
训练模块830用于根据损失值,对压缩模型进行训练。在一实施例中,训练模块830可以用于执行上文描述的操作s530,在此不再赘述。
[0163]
基于本公开提供的多媒体数据的处理方法,本公开还提供了一种多媒体数据的处理装置,以下将结合图9对该装置进行详细描述。
[0164]
图9是根据本公开实施例的多媒体数据的处理装置的结构框图。
[0165]
如图9所示,该实施例的多媒体数据的处理装置900可以包括第二模块910和第五确定模块920。
[0166]
第二输入模块910用于将待处理的多媒体数据输入压缩模型,得到表示多媒体数据所属类别的概率向量。其中,概率向量包括多媒体数据属于多个预定类别中每个预定类别的概率值,压缩模型包括采用本公开提供的压缩模型的训练方法训练得到的模型。在一实施例中,第二输入模块910可以用于执行上文描述的操作s610,在此不再赘述。
[0167]
第五确定模块920用于根据概率向量,确定多个预定类别中多媒体数据所属的目标类别。在一实施例中,第五确定模块920可以用于执行上文描述的操作s620,在此不再赘述。
[0168]
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
[0169]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0170]
图10示出了可以用来实施本公开实施例的方法的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0171]
如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(rom)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(ram)1003中的计算机程序,来执行各种适当的动作和处理。在ram 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、rom 1002以及ram 1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
[0172]
设备1000中的多个部件连接至i/o接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0173]
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法。例如,在一些实施例中,以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由rom 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到ram 1003并由计算单元1001执行时,可以执行上文描述的以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行以下方法中的至少之一:神经网络模型的压缩方法、压缩模型的训练方法和多媒体数据的处理方法。
[0174]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电
路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0175]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0176]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0177]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0178]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0179]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。其中,服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(

virtual private server

,或简称

vps

)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0180]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0181]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术特征:
1.一种神经网络模型的压缩方法,包括:通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,所述多个平滑参数组中每个平滑参数组包括与所述多个初始参数对应的多个平滑参数,所述多个平滑参数组分别与所述多个缩放值一一对应;通过处理器分别对所述多个平滑参数组进行量化,得到多个压缩后的神经网络模型;通过将多媒体数据作为待处理数据输入所述多个压缩后的神经网络模型,确定所述多个压缩后的神经网络模型的多个量化损失;以及根据所述多个量化损失,更新所述多个缩放值,并返回所述通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作,直到确定目标神经网络模型;其中,更新所述目标神经网络模型对应的缩放值,并返回所述通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作得到的神经网络模型的量化损失大于所述目标神经网络模型的量化损失。2.根据权利要求1所述的方法,其中,每个所述缩放值为张量,所述张量包括多个元素;所述更新所述多个缩放值包括:对于所述多个缩放值中的每个所述缩放值,分别通过执行以下操作中的至少一种对所述缩放值进行更新:将所述多个元素中位于所述张量的多个第一预设位置的多个第一目标元素进行交换;以及修改所述多个元素中位于所述张量的第二预设位置的第二目标元素的值。3.根据权利要求1所述的方法,其中,所述根据所述多个量化损失,更新所述多个缩放值包括:根据所述多个量化损失的从小到大顺序,从所述多个量化损失中确定前k个量化损失,所述k为预设值,k为正整数;以及对所述前k个量化损失对应的k个缩放值进行更新,得到k个更新缩放值。4.根据权利要求3所述的方法,其中,所述根据所述多个量化损失,更新所述多个缩放值还包括:在确定基于所述k个更新缩放值得到的k个更新量化损失均小于所述k个量化损失的情况下,根据所述k个更新量化损失的从小到大顺序,对所述k个更新量化损失中的前n个更新量化损失对应的n个更新缩放值进行更新,n为预设值,n为正整数,n≤k。5.根据权利要求3所述的方法,其中,所述根据所述多个量化损失,更新所述多个缩放值还包括:根据所述k个量化损失和基于所述k个更新缩放值得到的k个更新量化损失,从所述k个更新量化损失中确定m个更新量化损失,所述m个更新量化损失均小于所述k个量化损失中与所述m个更新量化损失对应的m个量化损失,m为正整数,m≤k;以及更新所述m个更新量化损失。6.根据权利要求1所述的方法,其中,所述通过将多媒体数据作为待处理数据输入所述多个压缩后的神经网络模型,确定所述多个压缩后的神经网络模型的多个量化损失包括:通过将多媒体数据作为待处理数据输入所述多个压缩后的神经网络模型,利用所述多
个压缩后的神经网络模型对所述待处理数据进行数据处理运算,得到多个量化输出结果;通过将所述待处理数据输入所述神经网络模型,利用所述神经网络模型对所述待处理数据进行数据处理运算,得到初始输出结果;以及根据所述多个量化输出结果和所述初始输出结果,确定所述多个量化损失。7.根据权利要求1所述的方法,还包括:在确定所述多个量化损失中的最小量化损失小于或等于预设量化损失的情况下,确定所述最小量化损失对应的压缩后的神经网络模型为所述目标神经网络模型;以及在确定所述多个量化损失中的最小量化损失大于预设量化损失的情况下根据所述多个量化损失,更新所述多个缩放值,并返回所述分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作。8.根据权利要求1所述的方法,还包括:在确定基于更新后的多个缩放值得到的多个更新量化损失均大于所述多个量化损失的情况下,重新更新所述多个缩放值,并返回所述分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作。9.根据权利要求1所述的方法,还包括:在确定基于更新后的多个缩放值得到的多个更新量化损失均大于所述多个量化损失的情况下,从所述多个压缩后的神经网络模型中确定目标神经网络模型。10.根据权利要求1所述的方法,其中,所述多个初始参数包括多个激活值和与所述多个激活值分别对应的多个权重值;所述分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组包括:分别利用所述多个缩放值,缩小所述多个激活值,得到与所述多个缩放值对应的多个平滑激活值组,所述多个平滑激活值组的每个平滑激活值组包括与所述多个激活值对应的多个平滑激活值;以及分别利用所述多个缩放值,放大所述多个权重值,得到与所述多个缩放值对应的多个平滑权重值组,所述多个平滑权重值组的每个平滑权重值组包括与所述多个权重值对应的多个平滑权重值;其中,所述多个平滑参数组的每个平滑参数组包括平滑激活值组和对应的平滑权重值组。11.一种压缩模型的训练方法,包括:将作为样本数据的多媒体数据输入压缩模型,得到针对多个预定类别的概率向量,所述多媒体数据标注有类别信息;根据所述类别信息和所述概率向量,确定所述压缩模型的损失值;以及根据所述损失值,对所述压缩模型进行训练;其中,所述压缩模型是采用权利要求1~10中任一项所述的方法得到的压缩后的神经网络模型。12.一种多媒体数据的处理方法,包括:将待处理的多媒体数据输入压缩模型,得到表示所述多媒体数据所属类别的概率向量,所述概率向量包括所述多媒体数据属于多个预定类别中每个预定类别的概率值;以及根据所述概率向量,确定所述多个预定类别中所述多媒体数据所属的目标类别;
其中,所述压缩模型包括采用权利要求11所述的方法训练得到的模型。13.一种神经网络模型的压缩装置,包括:平滑模块,用于通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组,所述多个平滑参数组中每个平滑参数组包括与所述多个初始参数对应的多个平滑参数,所述多个平滑参数组分别与所述多个缩放值一一对应;量化模块,用于通过处理器分别对所述多个平滑参数组进行量化,得到多个压缩后的神经网络模型;第一确定模块,用于通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,确定所述多个压缩后的神经网络模型的多个量化损失;以及更新模块,用于根据所述多个量化损失,更新所述多个缩放值;其中,所述更新模块执行完成操作后,返回所述平滑模块执行操作,直到确定目标神经网络模型;更新所述目标神经网络模型对应的缩放值,并返回所述通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作得到的神经网络模型的量化损失大于所述目标神经网络模型的量化损失。14.根据权利要求13所述的装置,其中,每个所述缩放值为张量,所述张量包括多个元素;所述更新模块还用于:对于每个所述缩放值,通过执行以下操作中的至少一种对所述缩放值进行更新:将所述多个元素中位于所述张量的多个第一预设位置的多个第一目标元素进行交换;以及修改所述多个元素中位于所述张量的第二预设位置的第二目标元素的值。15.根据权利要求13所述的装置,其中,所述更新模块还用于:根据所述多个量化损失的从小到大顺序,从所述多个量化损失中确定前k个量化损失,所述k为预设值,k为正整数;以及对所述前k个量化损失对应的k个缩放值进行更新,得到k个更新缩放值。16.根据权利要求15所述的装置,其中,所述更新模块还用于:在确定基于所述k个更新缩放值得到的k个更新量化损失均小于所述k个量化损失的情况下,根据所述k个更新量化损失的从小到大顺序,对所述k个更新量化损失中的前n个更新量化损失对应的n个更新缩放值进行更新,n为预设值,n为正整数,n≤k。17.根据权利要求15所述的装置,其中,所述更新模块还用于:根据所述k个量化损失和基于所述k个更新缩放值得到的k个更新量化损失,从所述k个更新量化损失中确定m个更新量化损失,所述m个更新量化损失均小于所述k个量化损失中与所述m个更新量化损失对应的m个量化损失,m为正整数,m≤k;以及更新所述m个更新量化损失。18.根据权利要求13所述的装置,其中,所述第一确定模块还用于:通过将多媒体数据作为待处理数据输入所述多个压缩后的神经网络模型,利用所述多个压缩后的神经网络模型对所述待处理数据进行数据运算,得到多个量化输出结果;通过将所述待处理数据输入所述神经网络模型,利用所述神经网络模型对所述待处理数据进行数据运算,得到初始输出结果;以及根据所述多个量化输出结果和所述初始输出结果,确定所述多个量化损失。
19.根据权利要求13所述的装置,还包括:第二确定模块,用于:在确定所述多个量化损失中的最小量化损失小于或等于预设量化损失的情况下,确定所述最小量化损失对应的压缩后的神经网络模型为所述目标神经网络模型;以及在确定所述多个量化损失中的最小量化损失大于预设量化损失的情况下根据所述多个量化损失,更新所述多个缩放值,并返回所述分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作。20.根据权利要求13所述的装置,其中,所述更新模块还用于:在确定基于更新后的多个缩放值得到的多个更新量化损失均大于所述多个量化损失的情况下,重新更新所述多个缩放值,并返回所述分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作。21.根据权利要求13所述的装置,还包括:第三确定模块还用于:在确定基于更新后的多个缩放值得到的多个更新量化损失均大于所述多个量化损失的情况下,从所述多个压缩后的神经网络模型中确定目标神经网络模型。22.根据权利要求13所述的装置,其中,所述多个初始参数包括多个激活值和与所述多个激活值分别对应的多个权重值;所述平滑模块还用于:分别利用所述多个缩放值,缩小所述多个激活值,得到与所述多个缩放值对应的多个平滑激活值组,所述多个平滑激活值组的每个平滑激活值组包括与所述多个激活值对应的多个平滑激活值;以及分别利用所述多个缩放值,放大所述多个权重值,得到与所述多个缩放值对应的多个平滑权重值组,所述多个平滑权重值组的每个平滑权重值组包括与所述多个权重值对应的多个平滑权重值;其中,所述多个平滑参数组的每个平滑参数组包括平滑激活值组和对应的平滑权重值组。23.一种压缩模型的训练装置,包括:第一输入模块,用于将作为样本数据的多媒体数据输入压缩模型,得到针对多个预定类别的概率向量,所述多媒体数据标注有类别信息;第四确定模块,用于根据所述类别信息和所述概率向量,确定所述压缩模型的损失值;以及训练模块,用于根据所述损失值,对所述压缩模型进行训练;其中,所述压缩模型是采用权利要求13-22中任一项所述的装置得到的压缩后的神经网络模型。24.一种多媒体数据的处理装置,包括:第二输入模块,用于将待处理的多媒体数据输入压缩模型,得到表示所述多媒体数据所属类别的概率向量,所述概率向量包括所述多媒体数据属于多个预定类别中每个预定类别的概率值;以及第五确定模块,用于根据所述概率向量,确定所述多个预定类别中所述多媒体数据所属的目标类别;
其中,所述压缩模型包括采用权利要求23所述的装置训练得到的模型。25.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。26.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-12中任一项所述的方法。27.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-12中任一项所述方法的步骤。

技术总结
本公开提供了一种神经网络模型的压缩方法、训练方法、处理方法、装置、设备、介质和产品,涉及人工智能领域,尤其涉及深度学习、自然语言处理、计算机视觉和语音处理领域。具体实现方案为:通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组;通过处理器对多个平滑参数组进行量化,得到多个压缩后的神经网络模型;通过将多媒体数据作为待处理数据输入多个压缩后的神经网络模型,确定多个压缩后的神经网络模型的多个量化损失;根据多个量化损失,更新多个缩放值,并返回通过处理器分别利用多个缩放值对神经网络模型中的多个初始参数进行平滑,得到多个平滑参数组的操作,直到确定目标神经网络模型。网络模型。网络模型。


技术研发人员:徐畅 李明昊 于广华 王豪爽 沙燕霖 于佃海 马艳军
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.05.19
技术公布日:2023/7/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐