一种模型压缩方法及装置
文献发布时间:2023-06-19 09:36:59
技术领域
本申请涉及人工智能领域,尤其涉及一种模型压缩方法及装置。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
近两年来,以BERT(Bidirectional Encoder Representation fromTransformers)为代表的、基于Transformer结构的预训练语言模型在自然语言处理领域中已经成为了一种新的范式,相比较早期的模型,预训练语言模型具有更强的表征学习,自回归或自编码的预训练方式,使得预训练语言模型能够捕捉到更多的上下文信息,学习到关于词的更好的表征,且预训练语言模型具有很好的迁移性,“预训练-微调”的模式可以应用到各种各样的NLP任务上,并且一般都能快速的取得当前最好的效果,而且也不需要很多的训练数据,同时,当前很多的应用和研究(比如Out-of-domain检测)都表明当前的预训练语言模型在很多领域数据上有很好的泛化性。
但是另一方面不可忽视的是,预训练语言模型一般都有巨大的参数量,例如BERT-base模型参数约为1.1亿,在32位浮点数的表示下,模型大小约为420MB,BERT-large模型更是有3.4亿的参数,模型大小1.3GB。如此规模的参数量,加上在运算过程中繁复的矩阵运算,导致模型在推理的时候往往需要大量的存储开销和计算资源,时延很大,而这些因素都严重阻碍了模型在工业界的应用。对于一般的云端服务器来说,它需要支持大量的并发,所以对模型的资源占用和时延都有比较高的要求。同时随着技术的发展,手机等端测设备的性能越来越强大,在这些终端设备上进行深度模型的部署甚至训练都已经成为了可能。但是端测设备因其有限的资源等原因对于模型同样有很多的限制。因此,在保证模型处理精度的前提下,对预训练语言模型等大规模模型进行压缩成为一个亟待解决的重要问题。
发明内容
第一方面,本申请提供了一种模型压缩方法,所述方法包括:
获取第一神经网络模型、第二神经网络模型以及第三神经网络模型,其中,所述第一神经网络模型包括转换(transformer)层,所述第二神经网络模型包括所述第一神经网络模型或对所述第一神经网络模型进行参数更新得到的神经网络模型,所述第三神经网络模型为对所述第二神经网络模型进行压缩得到的;通过所述第一神经网络模型对第一待处理数据进行处理,以得到第一输出;通过所述第三神经网络模型对所述第一待处理数据进行处理,以得到第二输出;根据所述第一输出和所述第二输出,确定第一目标损失,并基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型;对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型。
其中,在每次迭代训练的过程中,可以基于压缩后的模型的输出以及第一神经网络的输出构建损失,并对压缩前的模型进行参数更新,得到更新后的模型,并对更新后的模型进行压缩,得到压缩后的模型,其中,得到的更新后的模型和压缩后的模型可以在下一次迭代过程中被使用,本实施例中,在第i-1次迭代训练的过程中,第二神经网络模型为更新后的模型,第三神经网络模型为压缩后的模型,所述第二神经网络模型和所述第三神经网络模型可以在下一次迭代过程(第i次迭代过程)中被使用。
具体的,在初次迭代训练的过程中,第二神经网络模型和第一神经网络模型相同,在后续迭代的过程中,第二神经网络模型为对上一次迭代过程得到的第二神经网络模型进行参数更新得到的神经网络型。而由于上一次迭代过程得到的第二神经网络模型的初始来源可以是第一神经网络模型,也就是说上一次迭代过程得到的第二神经网络模型是对第一神经网络模型进行至少一次的参数更新得到的,因此,第二神经网络模型也可以理解为是对第一神经网络模型进行参数更新得到的神经网络模型。
应理解,在一些实现中,在初次迭代训练的过程中,第二神经网络模型也可以是对第一神经网络模型进行参数更新得到的神经网络型,例如,第二神经网络模型也可以是对第一神经网络模型进行参数微调得到的神经网络模型。
其中,压缩可以包括如下的至少一种:模型裁剪、权重共享、核稀疏(正则)、量化、二值化、Low-rank分解等等。
本申请实施例中,虽然目标损失是基于第一神经网络模型和第三神经网络模型的输出得到的,但是目标损失是用来更新第二神经网络模型的,这是因为第三神经网络模型为对第二神经网络量化后得到的模型,第三神经网络模型中的参数是通过固定的几个参数表达的,若基于目标损失更新的是第三神经网络模型,为了保证第三神经网络模型的大小不会改变或者不会改变很多,则第三神经网络模型中的参数只能在固定的几个参数之间变化,而模型中参数的更新在较小粒度(例如是连续非离散)时才会较好的提高模型精度,例如若第三神经网络模型中的参数只在固定的几个参数(0,-1,1)之间变化,则在进行第三神经网络的参数更新时,为了保证第三神经网络模型的大小不会改变或者不会改变很多,会将参数从0变成-1或者1,-1变成0或者1,1变成-1或者0,则可能会导致第三神经网络模型的数据处理精度下降很多。
因此,本申请实施例中,基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型,由于第二神经网络模型是量化前的原始模型,则可以连续的数值(非离散)上对第二神经网络模型进行更新,进而,压缩后的第二神经网络模型(后续实施例中称之为目标神经网络)的模型处理精度接近于第一神经网络模型,相比于第三神经网络模型,目标神经网络模型的模型处理精度更高。
在一种可能的实现中,所述第二神经网络模型和所述第一神经网络模型在处理相同数据时得到的处理结果的差异在预设范围内。第二神经网络模型为对第一神经网络模型进行参数更新得到的神经网络型,且第二神经网络模型和第一神经网络模型的数据处理精度近似。
在一种可能的实现中,所述更新后的第二神经网络模型和所述第一神经网络模型在处理相同数据时得到的处理结果的差异在预设范围内。更新后的第二神经网络模型和第一神经网络模型的数据处理精度近似。
在一种可能的实现中,所述第三神经网络模型为对所述第二神经网络模型进行量化得到的;所述对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型,包括:
对所述更新后的第二神经网络模型进行量化,得到目标神经网络模型。
在一种可能的实现中,所述第二神经网络模型和所述第三神经网络模型包括嵌入层、转换层以及输出层,所述第一输出为所述第二神经网络模型中目标层的输出,所述第二输出为所述第三神经网络模型中所述目标层的输出,所述目标层包括所述嵌入层、转换层以及输出层中的至少一种。
在一种可能的实现中,所述方法还包括:
通过所述第一神经网络模型对第二待处理数据进行处理,以得到第三输出;
通过所述目标神经网络模型对所述第二待处理数据进行处理,以得到第四输出;
根据所述第三输出和所述第四输出,确定第二目标损失,并基于所述第二目标损失更新所述更新后的第二神经网络模型,得到第四神经网络模型;
对所述第四神经网络模型进行压缩,得到更新后的目标神经网络模型。
在一种可能的实现中,所述第一待处理数据包括音频数据、文本数据以及图像数据中的一种。
在一种可能的实现中,所述获取第一神经网络模型,包括:
对预训练语言模型进行参数微调或者知识蒸馏,以得到所述第一神经网络模型,其中,所述第一神经网络模型在进行目标任务处理时的处理精度高于预设值。
第一神经网络模型可以为对预训练语言模型进行参数微调或知识蒸馏等进行处理得到的模型。其中,相比较早期的模型,预训练语言模型具有更强的表征学习,自回归或自编码的预训练方式,使得预训练语言模型能够捕捉到更多的上下文信息,学习到关于词的更好的表征,且预训练语言模型具有很好的迁移性,“预训练-微调”的模式可以应用到各种各样的NLP任务上,并且一般都能快速的取得当前最好的效果,而且也不需要很多的训练数据,同时,当前很多的应用和研究(比如Out-of-domain检测)都表明当前的预训练语言模型在很多领域数据上有很好的泛化性。
第二方面,本申请提供了一种模型压缩装置,所述装置包括:
获取模块,用于获取第一神经网络模型、第二神经网络模型以及第三神经网络模型,其中,所述第一神经网络模型包括转换(transformer)层,所述第二神经网络模型包括所述第一神经网络模型或对所述第一神经网络模型进行参数更新得到的神经网络模型,所述第三神经网络模型为对所述第二神经网络模型进行压缩得到的;
数据处理模块,用于通过所述第一神经网络模型对第一待处理数据进行处理,以得到第一输出;通过所述第三神经网络模型对所述第一待处理数据进行处理,以得到第二输出;
模型更新模块,用于根据所述第一输出和所述第二输出,确定第一目标损失,并基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型;
模型压缩模块,用于对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型。
在一种可能的实现中,所述第二神经网络模型和所述第一神经网络模型在处理相同数据时得到的处理结果的差异在预设范围内。
在一种可能的实现中,所述更新后的第二神经网络模型和所述第一神经网络模型在处理相同数据时得到的处理结果的差异在预设范围内。
在一种可能的实现中,所述第三神经网络模型为对所述第二神经网络模型进行量化得到的;所述模型压缩模块,用于对所述更新后的第二神经网络模型进行量化,得到目标神经网络模型。
在一种可能的实现中,所述第二神经网络模型和所述第三神经网络模型包括嵌入层、转换层以及输出层,所述第一输出为所述第二神经网络模型中目标层的输出,所述第二输出为所述第三神经网络模型中所述目标层的输出,所述目标层包括所述嵌入层、转换层以及输出层中的至少一种。
在一种可能的实现中,所述数据处理模块,用于通过所述第一神经网络模型对第二待处理数据进行处理,以得到第三输出;通过所述目标神经网络模型对所述第二待处理数据进行处理,以得到第四输出;
所述模型更新模块,用于根据所述第三输出和所述第四输出,确定第二目标损失,并基于所述第二目标损失更新所述更新后的第二神经网络模型,得到第四神经网络模型;
所述模型压缩模块,用于对所述第四神经网络模型进行压缩,得到更新后的目标神经网络模型。
在一种可能的实现中,所述第一待处理数据包括音频数据、文本数据、图像数据中的一种。
在一种可能的实现中,所述获取模块,用于对预训练语言模型进行参数微调或者知识蒸馏,以得到所述第一神经网络模型,其中,所述第一神经网络模型在进行目标任务处理时的处理精度高于预设值。
第三方面,本申请实施例提供了一种模型压缩装置,可以包括存储器、处理器以及总线系统,其中,存储器用于存储程序,处理器用于执行存储器中的程序,以执行如上述第一方面及其任一可选的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面及其任一可选的方法。
第五方面,本申请实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面及其任一可选的方法。
第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持执行设备或训练设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据;或,信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存执行设备或训练设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
本申请实施例提供了一种模型压缩方法,所述方法包括:获取第一神经网络模型、第二神经网络模型以及第三神经网络模型,其中,所述第一神经网络模型包括转换(transformer)层,所述第二神经网络模型包括所述第一神经网络模型或对所述第一神经网络模型进行参数更新得到的神经网络模型,所述第三神经网络模型为对所述第二神经网络模型进行压缩得到的;通过所述第一神经网络模型对第一待处理数据进行处理,以得到第一输出;通过所述第三神经网络模型对所述第一待处理数据进行处理,以得到第二输出;根据所述第一输出和所述第二输出,确定第一目标损失,并基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型;对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型。不同于传统的模型压缩方式,本实施例中对于压缩后的模型(第三神经网络模型)进行前馈,计算目标误差,并根据目标误差在压缩前的模型(第二神经网络模型)上进行参数更新,使得压缩后的第二神经网络模型(目标神经网络)的模型处理精度接近于第一神经网络模型,相比于第三神经网络模型,目标神经网络模型的模型处理精度更高。
附图说明
图1为人工智能主体框架的一种结构示意图;
图2为一种自然语言处理系统;
图3为另一种自然语言处理系统;
图4为本申请实施例提供的自然语言处理的相关设备的示意图;
图5为一种transformer层的架构示意;
图6为本申请实施例提供的一种模型压缩方法的实施例示意;
图7为本申请实施例中的一种神经网络模型的结构示意;
图8为一种transformer层的结构示意;
图9为一个注意力头head的操作示意图;
图10为本申请实施例提供的一种模型压缩方法的实施例示意;
图11为本申请实施例提供的一种模型压缩装置的示意;
图12为本申请实施例提供的执行设备的一种结构示意图;
图13是本申请实施例提供的训练设备一种结构示意图;
图14为本申请实施例提供的芯片的一种结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(CPU、NPU、GPU、ASIC、FPGA等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、平安城市等。
本申请可以应用于人工智能领域的自然语言处理领域中,下面将对多个落地到产品的多个应用场景进行介绍。
为了更好地理解本申请实施例的方案,下面先结合图1至图3对本申请实施例可能的应用场景进行简单的介绍。
图2示出了一种自然语言处理系统,该自然语言处理系统包括用户设备以及数据处理设备。其中,用户设备包括手机、个人电脑或者信息处理中心等智能终端。用户设备为自然语言数据处理的发起端,作为语言问答或者查询等请求的发起方,通常用户通过用户设备发起请求。
上述数据处理设备可以是云服务器、网络服务器、应用服务器以及管理服务器等具有数据处理功能的设备或服务器。数据处理设备通过交互接口接收来自智能终端的查询语句/语音/文本等问句,再通过存储数据的存储器以及数据处理的处理器环节进行机器学习,深度学习,搜索,推理,决策等方式的语言数据处理,并将处理结果反馈至用户设备。数据处理设备中的存储器可以是一个统称,包括本地存储以及存储历史数据的数据库,数据库可以在数据处理设备上,也可以在其它网络服务器上。
在图2所示的自然语言处理系统中,用户设备可以接收用户的指令,例如用户设备可以接收用户输入的一段文本,然后向数据处理设备发起请求,使得数据处理设备针对用户设备得到的该一段文本执行自然语言处理应用(例如文本分类、文本推理、命名实体识别、翻译等),从而得到针对该一段文本的对应的自然语言处理应用的处理结果(例如分类结果、推理结果、命名实体识别结果、翻译结果等)。示例性的,用户设备可以接收用户输入的一段中文,然后向数据处理设备发起请求,使得数据处理设备对该一段中文进行实体分类,从而得到针对该一段中文的实体分类结果;示例性的,用户设备可以接收用户输入的一段中文,然后向数据处理设备发起请求,使得数据处理设备将该一段中文翻译成英文,从而得到针对该一段中文的英文译文。
在本申请实施例中,数据处理设备可以通过交互接口接收来自用户设备获取自然语言处理(natural language processing,NLP)相关任务模型的请求以及性能上限参数,包括且不限于:精度、时延,模型压缩比参数中的至少一个。数据处理设备可以根据已经训练好的可伸缩transformer模型以及用户设备上传的需满足的性能上限参数,在满足模型大小的情况下计算出适合该用户设备的模型的尺寸大小,然后抽取出该尺寸大小的子网络,传回用户设备。
在图2中,数据处理设备可以执行本申请实施例的数据处理方法。
图3示出了另一种自然语言处理系统,在图3中,用户设备直接作为数据处理设备,该用户设备能够直接接收来自用户的输入并直接由用户设备本身的硬件进行处理,具体过程与图2相似,可参考上面的描述,在此不再赘述。
在图3所示的自然语言处理系统中,用户设备可以接收用户的指令,例如用户设备可以接收用户输入的一段文本,然后再由用户设备自身针对该一段文本执行自然语言处理应用(例如文本分类、文本推理、命名实体识别、翻译等),从而得到针对该一段文本的对应的自然语言处理应用的处理结果(例如分类结果、推理结果、命名实体识别结果、翻译结果等)。示例性的,用户设备可以接收用户输入的一段中文,并针对该一段中文进行实体分类,从而得到针对该一段中文的实体分类结果;示例性的,用户设备可以接收用户输入的一段中文,并将该一段中文翻译成英文,从而得到针对该一段中文的英文译文。
在本申请实施例中,用户设备可以存储有子网络模型,并在每次操作系统(operating system,OS)或应用程序(application,APP)调用该模型之前,根据用户设备当前的资源情况(包括且不限于端侧设备当前的功耗、计算能力、存储参数中的至少一个),计算出满足用户设备当前资源情况的模型的尺寸大小,将计算得到适合的模型的尺寸大小,输入到存储的子网络模型,得到动态裁剪后的当前状态模型,执行推理任务。
在图3中,用户设备自身就可以执行本申请实施例的数据处理方法。
图4是本申请实施例提供的自然语言处理的相关设备300的示意图。
上述图2和图3中的用户设备具体可以是图4中的本地设备301或者本地设备302,图2中的数据处理设备具体可以是图4中的执行设备310,其中,数据存储系统350可以存储执行设备310的待处理数据,数据存储系统350可以集成在执行设备310上,也可以设置在云上或其它网络服务器上。
图2和图3中的处理器可以通过神经网络模型或者其它模型进行数据训练/机器学习/深度学习,并利用数据最终训练或者学习得到的模型针对文本序列执行自然语言处理应用(例如文本分类、序列标注、阅读理解、文本生成、文本推理、翻译等),从而得到相应的处理结果。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)transformer层
参照图5,图5为一种transformer层的架构示意,如图5所示,神经网络包括嵌入层和至少一个transformer层,至少一个transformer层可以为N个transformer层(N大于0的整数),其中,每个transformer层包括依次相邻的注意力层、加和与归一化(add&norm)层、前馈(feed forward)层和加和与归一化层。在嵌入层,对当前输入进行嵌入处理,得到多个特征向量;在所述注意力层,从所述transformer层的上一层获取P个输入向量,以P个输入向量中的任意的第一输入向量为中心,基于预设的注意力窗口范围内的各个输入向量与该第一输入向量之间的关联度,得到该第一输入向量对应的中间向量,如此确定出P个输入向量对应的P个中间向量;在所述池化层,将所述P个中间向量合并为Q个输出向量,其中至少一个transformer层中最后一个transformer层得到的多个输出向量用作所述当前输入的特征表示。
接下来,结合具体例子对上述各步骤进行具体介绍。
首先,在所述嵌入层,对当前输入进行嵌入处理,得到多个特征向量。
嵌入层可以称为输入嵌入(input embedding)层。当前输入可以为文本输入,例如可以为一段文本,也可以为一个句子。文本可以为中文文本,也可以为英文文本,还可以为其他语言文本。嵌入层在获取当前输入后,可以对该当前输入中各个词进行嵌入处理,可得到各个词的特征向量。在一些实施例中,如图1所示,所述嵌入层包括输入嵌入层和位置编码(positional encoding)层。在输入嵌入层,可以对当前输入中的各个词进行词嵌入处理,从而得到各个词的词嵌入向量。在位置编码层,可以获取各个词在该当前输入中的位置,进而对各个词的位置生成位置向量。在一些示例中,各个词的位置可以为各个词在该当前输入中的绝对位置。以当前输入为“几号应还花呗”为例,其中的“几”的位置可以表示为第一位,“号”的位置可以表示为第二位,……。在一些示例中,各个词的位置可以为各个词之间的相对位置。仍以当前输入为“几号应还款”为例,其中的“几”的位置可以表示为“号”之前,“号”的位置可以表示为“几”之后、“应”之前,……。当得到当前输入中各个词的词嵌入向量和位置向量时,可以将各个词的位置向量和对应的词嵌入向量进行组合,得到各个词特征向量,即得到该当前输入对应的多个特征向量。多个特征向量可以表示为具有预设维度的嵌入矩阵。可以设定该多个特征向量中的特征向量个数为M,预设维度为H维,则该多个特征向量可以表示为M×H的嵌入矩阵。
其次,从所述第一transformer层的上一层获取P个输入向量,以P个输入向量中的任意的第一输入向量为中心,基于预设的注意力窗口范围内的各个输入向量与该第一输入向量之间的关联度,得到该第一输入向量对应的中间向量,如此确定出P个输入向量对应的P个中间向量。注意力层也可以称为多头注意力(multi-head attention)层。在一个例子中,注意力层可以为固定窗口多头注意力(fixed window multi-head attention)层。
在一些实施例中,第一transformer层可以为上述嵌入层的下一层,P个输入向量为从嵌入层得到的所述多个特征向量。在一些实施例中,本说明书实施例提供的神经网络中的至少一个transformer层还包括第二transformer层。该第二transformer层为第一自注意力的上一层,则P个输入向量为第二transformer层输出的P个输出向量。在该神经网络中的最后一个transformer层,通过上述步骤的多个输出向量可用作当前输入的特征表示。该特征表示为为当前输入的一种适合计算机处理的特征表示,可用于文本相似度、文本分类、阅读理解、机器翻译等任务。
(3)注意力机制(attention mechanism)
注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制,能够利用有限的注意力资源从大量信息中快速筛选出高价值信息。注意力机制可以快速提取稀疏数据的重要特征,因而被广泛用于自然语言处理任务,特别是机器翻译。而自注意力机制(self-attention mechanism)是注意力机制的改进,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。注意力机制的本质思想可以改写为如下公式:
其中,Lx=||Source||代表Source的长度,公式含义即将Source中的构成元素想象成是由一系列的数据对构成,此时给定目标Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。从概念上理解,把Attention可以理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。自注意力机制可以理解为内部Attention(intra attention),Attention机制发生在Target的元素Query和Source中的所有元素之间,自注意力机制指的是在Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制,其具体计算过程是一样的,只是计算对象发生了变化而已。
(4)自然语言处理(natural language processing,NLP)
自然语言(natural language)即人类语言,自然语言处理(NLP)就是对人类语言的处理。自然语言处理是以一种智能与高效的方式,对文本数据进行系统化分析、理解与信息提取的过程。通过使用NLP及其组件,我们可以管理非常大块的文本数据,或者执行大量的自动化任务,并且解决各式各样的问题,如自动摘要(automatic summarization),机器翻译(machine translation,MT),命名实体识别(named entity recognition,NER),关系提取(relation extraction,RE),信息抽取(information extraction,IE),情感分析,语音识别(speech recognition),问答系统(question answering)以及主题分割等等。
示例性的,自然语言处理任务可以有以下几类。
序列标注:句子中每一个单词要求模型根据上下文给出一个分类类别。如中文分词、词性标注、命名实体识别、语义角色标注。
分类任务:整个句子输出一个分类值,如文本分类。
句子关系推断:给定两个句子,判断这两个句子是否具备某种名义关系。例如entilment、QA、语义改写、自然语言推断。
生成式任务:输出一段文本,生成另一段文本。如机器翻译、文本摘要、写诗造句、看图说话。
下面示例性的列举一些自然语言处理案例。
分词(word segmentation或word breaker,WB):将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列,可以解决交叉歧义问题。例句:致毕业和尚未毕业的同学;分词1:致毕业和尚未毕业的同学;分词2:致毕业,和尚,未毕业的同学。
命名实体识别(named entity recognition,NER):识别自然语言文本中具有特定意义的实体(人、地、机构、时间、作品等),可以从粒度整合未登录体词。例句:天使爱美丽在线观看;分词:天使爱美丽,在线观看;实体:天使爱美丽->电影。
词性标注(part-speech tagging):为自然语言文本中的每个词汇赋予一个词性(名词、动词、形容词等);依存句法分析(dependency parsing):自动分析句子中的句法成分(主语、谓语、宾语、定语、状语和补语等成分),可以解决结构歧义问题。评论:房间里还可以欣赏日出;歧义1:房间还可以;歧义2:可以欣赏日出;词性:房间里(主语),还可以(谓语),欣赏日出(动宾短语)。
词向量与语义相似度(word embedding&semantic similarity):对词汇进行向量化表示,并据此实现词汇的语义相似度计算,可以解决词汇语言相似度。例如:西瓜与(呆瓜/草莓),哪个更接近?向量化表示:西瓜(0.1222,0.22333,..);相似度计算:呆瓜(0.115)草莓(0.325);向量化表示:(-0.333,0.1223..)(0.333,0.3333,..)。
文本语义相似度(text semantic similarity):依托全网海量数据和深度神经网络技术,实现文本间的语义相似度计算的能力,可以解决文本语义相似度问题。例如:“车头如何防止车牌”与“前牌照怎么装”、“如何办理北京牌照”,哪个更接近,向量化表示:车头如何防止车牌(0.1222,0.22333,..);相似度计算:前牌照怎么装(0.762),如何办理北京牌照(0.486),向量化表示:(-0.333,0.1223..)(0.333,0.3333,..)。
本申请实施例提供的模型压缩方法,涉及自然语言文本的处理,具体可以应用于数据训练、机器学习、深度学习等数据处理方法,对训练数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等,最终得到训练好的神经网络模型;并且,本申请实施例提供的数据处理方法可以运用上述训练好的神经网络模型,将输入数据(如待处理语言信息)输入到所述训练好的目标神经网络模型中,得到输出数据(如与目标任务对应的处理结果)。需要说明的是,本申请实施例提供的神经网络的训练方法和数据处理方法是基于同一个构思产生的发明,也可以理解为一个系统中的两个部分,或一个整体流程的两个阶段:如模型训练阶段和模型应用阶段。
首先以模型训练阶段为例对本申请实施例提供的模型压缩方法进行说明。
参照图6,图6为本申请实施例提供的一种数据处理方法的实施例示意,本申请实施例提供的一种数据处理方法可以应用在手机、平板、笔记本电脑、智能穿戴设备等终端设备上,如图6示出的那样,本申请实施例提供的一种模型压缩方法包括:
601、获取第一神经网络模型、第二神经网络模型以及第三神经网络模型,其中,所述第一神经网络模型包括转换(transformer)层,所述第二神经网络模型包括所述第一神经网络模型或对所述第一神经网络模型进行参数更新得到的神经网络模型,所述第三神经网络模型为对所述第二神经网络模型进行压缩得到的。
本申请实施例中,可以对预训练语言模型进行参数微调或者知识蒸馏,以得到所述第一神经网络模型,其中,所述第一神经网络模型在进行目标任务处理时的处理精度高于预设值,针对于不同的任务类型,可以适配性的设置预设值,预设值可以表征一个较高的处理精度。
本申请实施例中,第一神经网络模型可以为对预训练语言模型进行参数微调或知识蒸馏等进行处理得到的模型。其中,相比较早期的模型,预训练语言模型具有更强的表征学习,自回归或自编码的预训练方式,使得预训练语言模型能够捕捉到更多的上下文信息,学习到关于词的更好的表征,且预训练语言模型具有很好的迁移性,“预训练-微调”的模式可以应用到各种各样的NLP任务上,并且一般都能快速的取得当前最好的效果,而且也不需要很多的训练数据,同时,当前很多的应用和研究(比如Out-of-domain检测)都表明当前的预训练语言模型在很多领域数据上有很好的泛化性。
具体的,训练设备可以利用语料(例如包括任务训练语料,或者通过数据增强产生的语料等),针对具体的任务,在预训练语言模型(例如BERT(bidirectional encoderrepresentation from transformers)、Nezha、TinyBERT等)下游设计网络结构,通过各种方式(例如参数微调、知识蒸馏等)得到第一神经网络模型。相当于第一神经网络模型是针对于特定的任务,在预训练语言模型的基础上进行微调或知识蒸馏得到的,第一神经网络模型在特定的任务上具有较好的性能。
本申请实施例中,第一神经网络模型可以包括transformer层,换一种表述方式,第一神经网络模型可以为基于transformer层的神经网络模型,可选地,第一神经网络模型可以为基于transformer层的NLP模型。
接下来,对第一神经网络模型的一种示例结构进行描述:
参照图7,图7为本申请实施例中的一种神经网络模型的结构示意,图7所示的神经网络模型可以为本申请实施例中的第一神经网络模型、第二神经网络模型以及第三神经网络模型。如图7中示出的那样,基于transformer层的神经网络模型可以包括依次连接的嵌入层以及多个transformer层。如本领域技术人员所了解,transformer模型多用于执行自然语言处理NLP任务。需要理解,图7的结构仅仅是一个示例,transformer层的数目可以根据需要而设置。例如,可以仅设置一个transformer层,也可以设置更多的transformer层。神经网络模型基于各transformer层得到的N个输出向量,确定当前节点对应的特征向量。
下面描述各个层的具体工作过程。
在嵌入层,对当前输入进行嵌入处理,得到多个特征向量。transformer模型的核心特点在于其采用的独特的注意力机制。在处理自然语言,例如一个句子时,transformer模型利用该注意力机制,为句子中各个词向量赋予不同的注意力系数,从而更全面地考虑句子中上下文对各个词的影响。嵌入层基于当前序列中各个节点的节点特征及其位置编码,得到N个嵌入向量X
参照图8,图8为一种transformer层的结构示意,本申请实施例中的各个神经网络的transformer层都可以参照图8中示出的结构,如图8中示出的那样,transformer层包括依次相邻的多头注意力层、加和与归一化(add&norm)层、前馈(feed forward)层、加和与归一化层。
其中,多头注意力层从其上一层获取N个输入向量X
图9为一个注意力头head的操作示意图,该示意图示出注意力头head如何将输入矩阵X变换为输出矩阵Y。如图9所示,分别采用第一变换矩阵Q,第二变换矩阵K和第三变换矩阵V对N个输入向量
于是,可以以该第i输入向量Xi与各个输入向量Xj的各个关联度αi,j作为权重因子,对各个输入向量Xj对应的第三中间向量(v向量,vj)进行加权组合,得到该第i输入向量Xi对应的第i组合向量Ci:
于是,可以得到N个输入向量对应的N个组合向量的向量序列
以上为一个注意力头head的处理过程描述,在MHA架构中,MHA层维护m套变换矩阵,每套变换矩阵包括前述第一变换矩阵Q、第二变换矩阵K和第三变换矩阵V,从而可以并行地进行上述操作,得到m个组合向量序列(即m个矩阵C),每个向量序列包括基于一套变换矩阵得到的N个组合向量。在这样的情况下,MHA层将得到的m个组合向量序列进行拼接,得到拼接矩阵;再通过第四变换矩阵W对该拼接矩阵进行变换,得到最终的输出矩阵Y。将该输出矩阵Y拆分即对应于N个输出向量
如图8中示出的那样,transformer层包括前馈层,其中前馈层包括输入层、中间层intermediate layer以及输出层,其中intermediate layer包括多个神经元。
如前所述,神经网络模型可以包含多个transformer层。在一个实施例中,上述多个transformer层可以采用残差网络的方式堆叠连接,形成神经网络模型。
在多个transformer层的情况下,在一个实施例中,神经网络模型可以对多个transformer层中各个transformer层得到的N个输出向量进行综合,得到当前节点对应的特征向量。在另一实施例中,神经网络模型也可以仅提取最后一个transformer层得到的N个输出向量,对这N个输出向量进行综合,得到当前节点的特征向量。
可以理解,神经网络模型在确定当前节点的特征向量的计算过程中,依赖于大量的参数,例如前述各个变换矩阵(Q矩阵,K矩阵,V矩阵,等等)中的参数。这些参数需要通过对该神经网络模型进行训练而确定。在不同实施例中,可以通过不同的任务,训练该神经网络模型。
本申请实施例中,训练设备可以首先将第一神经网络模型作为老师teacher模型,并以第一神经网络模型为基础,初始化得到学生student模型(第二神经网络模型),并对第二神经网络模型进行压缩,得到第三神经网络模型。
应理解,在初次迭代时,第二神经网络模型可以和第一神经网络模型相同,也就是说第三神经网络模型可以是第一神经网络模型进行压缩的,在后续迭代过程中,第一神经网络模型可以保持不变,基于第一神经网络模型和第三神经网络模型的输出来构建目标损失,并基于目标损失来更新第二神经网络模型,相当于第二神经网络模型是对第一神经网络模型进行参数更新得到的。
本申请实施例中,可以对第二神经网络模型进行压缩,以得到第三神经网络模型,压缩可以包括如下的至少一种:模型裁剪、权重共享、核稀疏(正则)、量化、二值化、Low-rank分解等等。在一种实现中,可以对第二神经网络模型进行量化,以得到第三神经网络模型。
本申请实施例中模型的量化,即为神经网络的量化(neural networkquantization),是将浮点存储(运算)转换为整型存储(运算)的一种模型压缩技术,例如,原来一个模型的模型参数使用float32(32位的浮点)表示,量化后该模型的模型参数使用int8(8位的定点)表示,通过模型的量化操作,以较小的精度损失为代价,提高模型的运算速度。
模型的量化的本质是两种数据类型的数据之间的转换/映射,其中,在将浮点数据(数据类型为浮点的数据)转换为定点数据(数据类型为定点的数据)的一种实现方式中,可以通过如下公式:
其中,R为输入的浮点数据,Q为浮点数据R量化之后的定点数据,Z表示0点值(Zero Point),S表示比例,可见,确定S和Z后,既可进行这两个数据之间的转换。S和Z的确定方式很多,例如:
Z=Q
其中,Rmax表示输入浮点数据的最大值,Rmin表示输入浮点数据的最小值,Qmax表示定点数据的最大的值,Rmin表示定点数据的最小值。
其中,不同比特数(位数,1比特=1位)的定点数据之间的转换可以参照上述浮点数据和定点数据之间的转换方式,也可以是现有技术中其他的转换方式,这里不再赘述。
在一种实现中,4比特和8比特可以参照上述的转换方式进行,而浮点数据和2比特(1比特)转换的一种实现方式可通过如下公式进行:
其中2比特可表示为三个数-1,0,1。T为阈值,浮点数据大于等于T时,转换得到的2比特的定点数据为1。浮点数据小于-T时,其值转换为-1。浮点数据为其他值时,其值转换为0。1比特的转换方式和2比特类似,但其定点值只有-1和1,其中T值为0。
本申请实施例中,在每次迭代训练的过程中,可以基于压缩后的模型的输出以及第一神经网络的输出构建损失,并对压缩前的模型进行参数更新,得到更新后的模型,并对更新后的模型进行压缩,得到压缩后的模型,该得到的更新后的模型和压缩后的模型可以在下一次迭代过程中被使用,其中,第i-1次迭代训练的过程中,第二神经网络模型为更新后的模型,第三神经网络模型为压缩后的模型,所述第二神经网络模型和所述第三神经网络模型可以在下一次迭代过程中被使用。
602、通过所述第一神经网络模型对所述待处理数据进行处理,得到第一输出。
603、通过所述第三神经网络模型对所述待处理数据进行处理,得到第二输出。
本申请实施例中,待处理数据可以为音频数据、文本数据以及图像数据中的一种,其中,第一神经网络模型和第三神经网络模型可以是基于transformer的自然语言处理模型,相应的,待处理数据可以是音频数据。本申请实施例中,第一神经网络模型和第三神经网络模型还可以是具有处理其他任务能力的模型,例如进行图片分类、目标识别等等,相应的,待处理数据可以为不同类型的数据。
本申请实施例中,在进行前馈的过程中,可以通过第一神经网络模型和第三神经网络模型对所述待处理数据进行处理,得到第一输出和第二输出,其中,在第一神经网络模型和第三神经网络模型为基于transformer的神经网络时,第一输出可以包括第一神经网络模型中嵌入层的输出、任意一个transformer层的输出以及输出层的输出中的至少一种。
在第三神经网络为对第二神经网络模型进行量化或其他不改变网络结构的处理得到的情况下,第一神经网络模型和第三神经网络模型可以具有相同的网络结构,仅仅是网络中的参数大小不同,相应的,第一输出和第二输出为第一神经网络模型和第三神经网络模型中相同位置的层的输出。
示例性的,第一输出可以为第一神经网络模型的嵌入层、从嵌入层开始的第三个transformer层的输出、以及输出层的输出,第二输出为第三神经网络模型的嵌入层、从嵌入层开始的第三个transformer层的输出、以及输出层的输出。
更细节的,可以参照图10,可以基于第一神经网络模型和第三神经网络模型的嵌入层embedding、中间层intermediate、以及输出层(或者称之为任务层task)的输出来构建目标损失(包括图10中示出的loss
604、根据所述第一输出和所述第二输出,获取目标损失,并根据所述目标损失更新所述第二神经网络模型,以得到更新后的第二神经网络模型。
本申请实施例中,训练设备在得到第一输出和所述第二输出之后,可以根据第一输出和所述第二输出来构建目标损失,并基于目标损失更新所述第二神经网络模型,以得到更新后的第二神经网络模型。
本申请实施例中,在初始化时,可以将第二神经网络模型设置为和第一神经网络模型一致,虽然对第二神经网络模型进行压缩后得到的第三神经网络模型的模型大小和/或运算模型所需的计算资源变小了,但相应的模型处理精度也可能会下降,为了将第三神经网络模型的模型处理精度提高,可以基于第一神经网络模型和第三神经网络模型的输出构建目标损失,并基于目标损失来更新第二神经网络模型的模型参数,进而使得压缩后的第二神经网络模型(后续实施例中称之为目标神经网络)的模型处理精度接近于第一神经网络模型,相比于第三神经网络模型,目标神经网络模型的模型处理精度更高。
本申请实施例中,虽然目标损失是基于第一神经网络模型和第三神经网络模型的输出得到的,但是目标损失是用来更新第二神经网络模型的,这是因为第三神经网络模型为对第二神经网络量化后得到的模型,第三神经网络模型中的参数是通过固定的几个参数表达的,若基于目标损失更新的是第三神经网络模型,为了保证第三神经网络模型的大小不会改变或者不会改变很多,则第三神经网络模型中的参数只能在固定的几个参数之间变化,而模型中参数的更新在较小粒度(例如是连续非离散)时才会较好的提高模型精度,例如若第三神经网络模型中的参数只在固定的几个参数(0,-1,1)之间变化,则在进行第三神经网络的参数更新时,为了保证第三神经网络模型的大小不会改变或者不会改变很多,会将参数从0变成-1或者1,-1变成0或者1,1变成-1或者0,则可能会导致第三神经网络模型的数据处理精度下降很多。
因此,本申请实施例中,基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型,由于第二神经网络模型是量化前的原始模型,则可以连续的数值(非离散)上对第二神经网络模型进行更新,进而,压缩后的第二神经网络模型(后续实施例中称之为目标神经网络)的模型处理精度接近于第一神经网络模型,相比于第三神经网络模型,目标神经网络模型的模型处理精度更高。
605、对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型。
本申请实施例中,可以对所述更新后的第二神经网络模型进行量化,得到目标神经网络模型。
本申请实施例中,还可以通过所述第一神经网络模型对第二待处理数据进行处理,以得到第三输出;通过所述目标神经网络模型对所述第二待处理数据进行处理,以得到第四输出;根据所述第三输出和所述第四输出,确定第二目标损失,并基于所述第二目标损失更新所述更新后的第二神经网络模型,得到第四神经网络模型;对所述第四神经网络模型进行压缩,得到更新后的目标神经网络模型,类似的,可以重复上述步骤,直到目标神经网络模型满足一定的模型精度要求。
本申请实施例提供了一种模型压缩方法,所述方法包括:获取第一神经网络模型、第二神经网络模型以及第三神经网络模型,其中,所述第一神经网络模型包括转换(transformer)层,所述第二神经网络模型包括所述第一神经网络模型或对所述第一神经网络模型进行参数更新得到的神经网络模型,所述第三神经网络模型为对所述第二神经网络模型进行压缩得到的;通过所述第一神经网络模型对第一待处理数据进行处理,以得到第一输出;通过所述第三神经网络模型对所述第一待处理数据进行处理,以得到第二输出;根据所述第一输出和所述第二输出,确定第一目标损失,并基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型;对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型。不同于传统的模型压缩方式,本实施例中对于压缩后的模型(第三神经网络模型)进行前馈,计算目标误差,并根据目标误差在压缩前的模型(第二神经网络模型)上进行参数更新,使得压缩后的第二神经网络模型(目标神经网络)的模型处理精度接近于第一神经网络模型,相比于第三神经网络模型,目标神经网络模型的模型处理精度更高。
第一神经网络模型可以应用于GLUE自然语言理解任务,示例性的,第一神经网络模型可以为32-bit的BERT模型,可以对第一神经网络模型进行参数2-bit,activation 8-bit的压缩。
具体的,可以获取各个任务的训练数据,包括训练集、验证集和测试集。针对各个任务的数据量,分别对训练集进行5~20倍的数据扩充。扩充的方法如可以是同义词替换和利用BERT等预训练语言模型对去掉的部分进行预测等,之后使用BERT-base模型初始化编码层,在下游添加任务层(添加分类器),构建网络结构。在训练集上,对网络进行微调,同时在验证集上进行验证,保存在验证集上表现最好的模型作为第一神经网络模型。
之后可以将第一神经网络模型当做老师模型T,它的参数固定不变,每次有数据输入进来,网络进行计算输出结果;另一方面作为需要进行量化的第二神经网络模型(学生模型S),以及对学生模型S采取量化操作之后的第三神经网络模型(模型S’)。
对于学生模型S的量化操作,网络参数部分可以采取2-bit量化。举例说明,对于embedding的参数,假如W是一个3*3的矩阵,经过量化之后模型所有参数取值为3个值(2
对于需要参与矩阵乘法的输入部分activations,可以采取8-bit量化,量化后它们的取值范围为255个值(2
之后可以将扩充的数据集分别输入到模型T和S’,得到各自模型的每一层输出结果,逐层计算拟合误差,包括embedding层的拟合误差loss
重复上述过程,直到模型收敛,保存在验证集上表现最好的模型S’。
上述实例中的32-bit模型在GLUE网站的8个常见任务上进行测评,得到的分数是78.2。利用上述实施例的方法,对上述各个任务上的模型进行压缩,压缩后的模型提交相同的测评,得到的分数是76.9。
再给出一个实例,第一神经网络模型可以为32-bit的TinyBERT,对第一神经网络模型进行参数8-bit、activation 8-bit的压缩。
具体的,对话系统的自然语言理解模块需要对于输入的文本进行意图分类和槽位理解,输入的文本数据一般为自然语言。如下一句话“明天北京的天气怎么样?”,这句话的意图是天气查询,槽位是文本中的片段,日期是“明天”,地点是“北京”。
对于已有的大量经过人工标注的语料,进行4:1分别拆分为训练集和验证集。对于训练集中的语料,文本随机去掉一些字,并用BERT进行预测,从而得到增强语料。
利用以上数据集和BERT模型,使用TinyBERT的训练方式得到在NLU任务上的意图分类和槽位提取的联合模型。
对TinyBERT的参数做8-bit量化,对于需要做优化的拟合误差,同样有embedding层的拟合误差,中间4层(TinyBERT用的是4层模型)transformer层拟合误差,任务层有两个:用于意图分类的任务层拟合误差lossint,用于槽位提取的任务层拟合误差lossslot。其他相似之处可以参照上述实施例中对BERT模型的压缩过程,这里不再赘述。
上述示例可以实现对NLU任务上TinyBERT的4倍的模型压缩,同时关于意图分类和槽位提取的指标下降小于1%。
参照图11,图11为本申请实施例提供的一种模型压缩装置1100的示意,如图10中示出的那样,本申请提供的模型压缩装置1100包括:
获取模块1101,用于获取第一神经网络模型、第二神经网络模型以及第三神经网络模型,其中,所述第一神经网络模型包括转换(transformer)层,所述第二神经网络模型包括所述第一神经网络模型或对所述第一神经网络模型进行参数更新得到的神经网络模型,所述第三神经网络模型为对所述第二神经网络模型进行压缩得到的;
数据处理模块1102,用于通过所述第一神经网络模型对第一待处理数据进行处理,以得到第一输出;
通过所述第三神经网络模型对所述第一待处理数据进行处理,以得到第二输出;
模型更新模块1103,用于根据所述第一输出和所述第二输出,确定第一目标损失,并基于所述第一目标损失更新所述第二神经网络模型,得到更新后的第二神经网络模型;
模型压缩模块1104,用于对所述更新后的第二神经网络模型进行压缩,得到目标神经网络模型。
在一种可能的实现中,所述第二神经网络模型和所述第一神经网络模型在处理相同数据时得到的处理结果的差异在预设范围内。
在一种可能的实现中,所述更新后的第二神经网络模型和所述第一神经网络模型在处理相同数据时得到的处理结果的差异在预设范围内。
在一种可能的实现中,所述第三神经网络模型为对所述第二神经网络模型进行量化得到的;所述模型压缩模块,用于对所述更新后的第二神经网络模型进行量化,得到目标神经网络模型。
在一种可能的实现中,所述第二神经网络模型和所述第三神经网络模型包括嵌入层、转换层以及输出层,所述第一输出为所述第二神经网络模型中目标层的输出,所述第二输出为所述第三神经网络模型中所述目标层的输出,所述目标层包括所述嵌入层、转换层以及输出层中的至少一种。
在一种可能的实现中,所述数据处理模块,用于通过所述第一神经网络模型对第二待处理数据进行处理,以得到第三输出;通过所述目标神经网络模型对所述第二待处理数据进行处理,以得到第四输出;
所述模型更新模块,用于根据所述第三输出和所述第四输出,确定第二目标损失,并基于所述第二目标损失更新所述更新后的第二神经网络模型,得到第四神经网络模型;
所述模型压缩模块,用于对所述第四神经网络模型进行压缩,得到更新后的目标神经网络模型。
在一种可能的实现中,所述第一待处理数据包括音频数据、文本数据、图像数据中的一种。
在一种可能的实现中,所述获取模块,用于对预训练语言模型进行参数微调或者知识蒸馏,以得到所述第一神经网络模型,其中,所述第一神经网络模型在进行目标任务处理时的处理精度高于预设值。
接下来介绍本申请实施例提供的一种执行设备,请参阅图12,图12为本申请实施例提供的执行设备的一种结构示意图,执行设备1200具体可以表现为手机、平板、笔记本电脑、智能穿戴设备、服务器等,此处不做限定。其中,执行设备1200上可以部署有图10对应实施例中所描述的数据处理装置,用于实现图10对应实施例中数据处理的功能。具体的,执行设备1200包括:接收器1201、发射器1202、处理器1203和存储器1204(其中执行设备1200中的处理器1203的数量可以一个或多个,图12中以一个处理器为例),其中,处理器1203可以包括应用处理器12031和通信处理器12032。在本申请的一些实施例中,接收器1201、发射器1202、处理器1203和存储器1204可通过总线或其它方式连接。
存储器1204可以包括只读存储器和随机存取存储器,并向处理器1203提供指令和数据。存储器1204的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccess memory,NVRAM)。存储器1204存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
处理器1203控制执行设备的操作。具体的应用中,执行设备的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器1203中,或者由处理器1203实现。处理器1203可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1203中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1203可以是通用处理器、数字信号处理器(digital signal processing,DSP)、微处理器或微控制器,还可进一步包括专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器1203可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1204,处理器1203读取存储器1204中的信息,结合其硬件完成上述方法的步骤。
接收器1201可用于接收输入的数字或字符信息,以及产生与执行设备的相关设置以及功能控制有关的信号输入。发射器1202可用于通过第一接口输出数字或字符信息;发射器1202还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器1202还可以包括显示屏等显示设备。
本申请实施例中,在一种情况下,处理器1203,用于执行图7对应实施例中的执行设备执行的数据处理方法。
本申请实施例还提供了一种训练设备,请参阅图13,图13是本申请实施例提供的训练设备一种结构示意图,具体的,训练设备1300由一个或多个服务器实现,训练设备1300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)1313(例如,一个或一个以上处理器)和存储器1332,一个或一个以上存储应用程序1342或数据1344的存储介质1330(例如一个或一个以上海量存储设备)。其中,存储器1332和存储介质1330可以是短暂存储或持久存储。存储在存储介质1330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练设备中的一系列指令操作。更进一步地,中央处理器1313可以设置为与存储介质1330通信,在训练设备1300上执行存储介质1330中的一系列指令操作。
训练设备1300还可以包括一个或一个以上电源1326,一个或一个以上有线或无线网络接口1350,一个或一个以上输入输出接口1358;或,一个或一个以上操作系统1341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
具体的,训练设备可以执行图5以及图8对应实施例中的执行设备执行的模型压缩方法。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例提供的执行设备、训练设备或终端设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使执行设备内的芯片执行上述实施例描述的数据处理方法,或者,以使训练设备内的芯片执行上述实施例描述的数据处理方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体的,请参阅图14,图14为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 1400,NPU 1400作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路1403,通过控制器1404控制运算电路1403提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1403内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路1403是二维脉动阵列。运算电路1403还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1403是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1402中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1401中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1408中。
统一存储器1406用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(Direct Memory Access Controller,DMAC)1405,DMAC被搬运到权重存储器1402中。输入数据也通过DMAC被搬运到统一存储器1406中。
BIU为Bus Interface Unit即,总线接口单元1410,用于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer,IFB)1409的交互。
总线接口单元1410(Bus Interface Unit,简称BIU),用于取指存储器1409从外部存储器获取指令,还用于存储单元访问控制器1405从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1406或将权重数据搬运到权重存储器1402中或将输入数据数据搬运到输入存储器1401中。
向量计算单元1407包括多个运算处理单元,在需要的情况下,对运算电路1403的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如Batch Normalization(批归一化),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1407能将经处理的输出的向量存储到统一存储器1406。例如,向量计算单元1407可以将线性函数;或,非线性函数应用到运算电路1403的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1407生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1403的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1404连接的取指存储器(instruction fetch buffer)1409,用于存储控制器1404使用的指令;
统一存储器1406,输入存储器1401,权重存储器1402以及取指存储器1409均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
- 神经网络模型装置和神经网络模型的压缩方法
- 一种基于模型稀疏化与权重量化的联邦学习模型压缩方法