掌桥专利:专业的专利平台
掌桥专利
首页

模型压缩方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 10:19:37


模型压缩方法、装置、电子设备及存储介质

技术领域

本申请涉及人工智能技术领域,特别涉及深度学习及语音识别等领域的模型压缩方法、装置、电子设备及存储介质。

背景技术

随着技术的发展,深度学习模型得到了越来越广泛的应用,为了不断提升模型精度,模型的深度和体积都在持续增长。以语音识别为例,从前馈深度神经网络到循环神经网络,再发展到编码-解码(Encoder-Decoder)模型,每一次技术的变革都给模型推理带来了更大的计算需求。

目前,深度学习应用的部署正逐渐从云服务器迁移到端设备上。虽然端设备的计算性能等也在不断提升,但在实际应用中仍经常无法满足需求,模型推理与端设备的硬件资源等的不匹配问题亟待解决。

为解决上述问题,多采用以下实现方式:在原有的大模型的基础上通过裁减网络节点数量或连接数量获得更为精简的模型结构,从而实现模型压缩。但这种方式与模型结构紧密相关,可操作性和可重复性较差,从而限制了其应用场景等。

发明内容

本申请提供了模型压缩方法、装置、电子设备及存储介质。

一种模型压缩方法,包括:

当模型推理过程中需要进行单精度浮点的矩阵运算时,对相乘的两个矩阵中的左矩阵按行进行量化,得到第一量化矩阵,对相乘的两个矩阵中的右矩阵按列进行量化,得到第二量化矩阵;

将所述第一量化矩阵和所述第二量化矩阵相乘,得到作为定点运算结果的第三矩阵;

根据所述第三矩阵进行反量化,得到第四矩阵,将所述第四矩阵作为所述矩阵运算的结果。

一种模型压缩装置,包括:量化模块、运算模块以及反量化模块;

所述量化模块,用于当模型推理过程中需要进行单精度浮点的矩阵运算时,对相乘的两个矩阵中的左矩阵按行进行量化,得到第一量化矩阵,对相乘的两个矩阵中的右矩阵按列进行量化,得到第二量化矩阵;

所述运算模块,用于将所述第一量化矩阵和所述第二量化矩阵相乘,得到作为定点运算结果的第三矩阵;

所述反量化模块,用于根据所述第三矩阵进行反量化,得到第四矩阵,将所述第四矩阵作为所述矩阵运算的结果。

一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如以上所述的方法。

一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如以上所述的方法。

上述申请中的一个实施例具有如下优点或有益效果:通过量化处理,可将单精度浮点转换为定点,从而在模型推理过程中的矩阵运算时,用定点运算代替浮点运算,进而有效压缩了模型体积,提升了模型推理速度,而且,可适用于各种不同的模型结构,具有普遍适用性等。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1为本申请所述模型压缩方法实施例的流程图;

图2为本申请所述量化精调训练过程示意图;

图3为本申请所述模型压缩装置30实施例的组成结构示意图;

图4为根据本申请实施例所述方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

另外,应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

图1为本申请所述模型压缩方法实施例的流程图。如图1所示,包括以下具体实现方式。

在步骤101中,当模型推理过程中需要进行单精度浮点的矩阵运算时,对相乘的两个矩阵中的左矩阵按行进行量化,得到第一量化矩阵,对相乘的两个矩阵中的右矩阵按列进行量化,得到第二量化矩阵。

在步骤102中,将第一量化矩阵和第二量化矩阵相乘,得到作为定点运算结果的第三矩阵。

在步骤103中,根据第三矩阵进行反量化,得到第四矩阵,将第四矩阵作为矩阵运算的结果。

矩阵运算是模型推理过程中最为核心、开销最大的运算,上述方法实施例所述方案中,通过量化处理,可将单精度浮点转换为定点,从而在模型推理过程中的矩阵运算时,用定点运算代替浮点运算,进而有效压缩了模型体积,提升了模型推理速度,而且,可适用于各种不同的模型结构,并可适用于各种不同的体系结构,如高级精简指令集机器(ARM,Advanced RISC Machine)和X86等,具有普遍适用性。

所述矩阵运算通常是指两个矩阵相乘的运算,可对相乘的两个矩阵中的左矩阵按行进行量化,得到第一量化矩阵,并对相乘的两个矩阵中的右矩阵按列进行量化,得到第二量化矩阵。比如,对于矩阵运算W*X,其中的W即为左矩阵,X即为右矩阵。

对于左矩阵,可按行进行量化,从而得到第一量化矩阵。优选地,可分别确定出左矩阵中的每行元素对应的基准值,并可针对左矩阵中的每个元素,分别根据该元素所在行对应的基准值及预定的位宽确定出该元素的量化值,第一量化矩阵中的各元素的取值均为量化值。

其中,针对左矩阵中的每行元素,可分别将其中包括的各元素的取值的绝对值中的最大值作为该行对应的基准值。即针对左矩阵中的每行元素,可分别将fabsmax(w

之后,针对左矩阵中的每个元素,可分别计算该元素的取值与该元素所在行对应的基准值的商,并计算得到的商与2

比如,对于元素a,则有:

其中,w

对于右矩阵,可按列进行量化,从而得到第二量化矩阵。优选地,可分别确定出右矩阵中的每列元素对应的基准值,并针对右矩阵中的每个元素,分别根据该元素所在列对应的基准值及预定的位宽确定出该元素的量化值,第二量化矩阵中的各元素的取值均为量化值。

其中,针对右矩阵中的每列元素,可分别将其中包括的各元素的取值的绝对值中的最大值作为该列对应的基准值。即针对右矩阵中的每列元素,可分别将fabsmax(X

之后,针对右矩阵中的每个元素,可分别计算该元素的取值与该元素所在列对应的基准值的商,并计算得到的商与2

比如,对于元素b,则有:

其中,x

按照上述方式分别得到第一量化矩阵和第二量化矩阵后,可将第一量化矩阵和第二量化矩阵相乘,得到作为定点运算结果的第三矩阵。

即有:O′=W′*X′;(3)

其中,W′表示第一量化矩阵,X′表示第二量化矩阵,O′表示第三矩阵。

通过量化处理,将单精度浮点转换为了定点,从而在矩阵运算时,用定点运算代替了浮点运算,进而有效压缩了模型体积,提升了模型推理速度等。

由于进行了量化处理,相应地,还需要根据第三矩阵进行反量化,得到第四矩阵,将第四矩阵作为最终所需的矩阵运算的结果。

优选地,针对第四矩阵中的每个元素,可分别进行以下处理:计算该元素在第三矩阵中的对应元素的取值、该元素所在行对应的基准值以及该元素所在列对应的基准值的乘积,将得到的乘积作为该元素的取值,对应元素为处于相同位置的元素。

比如,对于元素c,则有:

o

其中,o′

在模型推理时,上述左矩阵通常为权重矩阵,是固定的,因此对于左矩阵的量化处理可离线完成,而对于右矩阵来说,是和输入相关的,因此对于右矩阵的量化处理需要在线完成。

如前所述,位宽B的具体取值可根据实际需要而定,如8或4或其它值等。本申请中可采用对称的定点表示法,位宽B的表示范围为(-2

本申请所述模型压缩方法还可与其它压缩方法结合使用,比如,按照本申请所述模型压缩方法对模型进行压缩后,还可采用霍夫曼(huffman)压缩方法以实现模型的进一步压缩等。

随着表示位宽的降低,定点模型精度与浮点模型精度的差距逐渐增大,低比特模型需要进行精调来获得原模型精度。为此,本申请中进一步提出了一种渐进的低精度模型训练方法,以提升模型精度以及模型的稳定性和可复现性等。

优选地,可首先按照单精度训练方式训练得到单精度模型,作为初始模型,之后可对初始模型的模型参数进行量化精调训练,从而得到最终的模型。利用最终的模型,可进行模型推理等处理。

即可先按照现有的正常单精度训练方式获得一个经过调优的单精度模型,作为初始模型,作为后续量化精调训练的基础。

针对初始模型的模型参数,可执行以下第一处理:对模型参数中的权重矩阵(即前述左矩阵)按行进行量化,并对量化结果进行反量化,得到处理后的模型参数;根据处理后的模型参数进行前向计算和反向计算,得到模型参数梯度;根据模型参数梯度更新模型参数,并针对更新后的模型参数,重复执行所述第一处理,直到符合预定结束条件。

基于上述介绍,图2为本申请所述量化精调训练过程示意图。如图2所示,在每个批次(batch)训练数据训练开始前,可首先针对最新的模型参数,对权重矩阵按行进行量化,即分别确定出权重矩阵中的每行元素对应的基准值,并针对权重矩阵中的每个元素,分别根据该元素所在行对应的基准值及预定的位宽确定出该元素的量化值,其中,针对权重矩阵中的每行元素,可分别将其中包括的各元素的取值的绝对值中的最大值作为该行对应的基准值,另外,针对权重矩阵中的每个元素,可分别计算该元素的取值与该元素所在行对应的基准值的商,并计算得到的商与2

上述过程中,如何进行反量化、如何得到模型参数梯度以及如何根据模型参数梯度更新模型参数等均为现有技术。另外,在实际应用中,优选地,可按照从输入层到输出层的顺序依次执行上述过程,直到符合预定结束条件。

预定结束条件具体为何种条件可根据实际需要而定。比如,可以是指模型精度或模型体积达到预期等。

需要说明的是,对于前述的方法实施例,为了简单描述,将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

以上是关于方法实施例的介绍,以下通过装置实施例,对本申请所述方案进行进一步说明。

图3为本申请所述模型压缩装置30实施例的组成结构示意图。如图3所示,包括:量化模块301、运算模块302以及反量化模块303。

量化模块301,用于当模型推理过程中需要进行单精度浮点的矩阵运算时,对相乘的两个矩阵中的左矩阵按行进行量化,得到第一量化矩阵,对相乘的两个矩阵中的右矩阵按列进行量化,得到第二量化矩阵。

运算模块302,用于将第一量化矩阵和第二量化矩阵相乘,得到作为定点运算结果的第三矩阵。

反量化模块303,用于根据第三矩阵进行反量化,得到第四矩阵,将第四矩阵作为矩阵运算的结果。

其中,在对左矩阵进行量化时,量化模块301可分别确定出左矩阵中的每行元素对应的基准值,并可针对左矩阵中的每个元素,分别根据该元素所在行对应的基准值及预定的位宽确定出该元素的量化值。

在对右矩阵进行量化时,量化模块301可分别确定出右矩阵中的每列元素对应的基准值,并可针对右矩阵中的每个元素,分别根据该元素所在列对应的基准值及预定的位宽确定出该元素的量化值。

优选地,量化模块301可针对左矩阵中的每行元素,分别将其中包括的各元素的取值的绝对值中的最大值作为基准值。

类似地,量化模块301可针对右矩阵中的每列元素,分别将其中包括的各元素的取值的绝对值中的最大值作为基准值。

另外,量化模块301可针对左矩阵中的每个元素,分别计算该元素的取值与该元素所在行对应的基准值的商,并计算商与2

类似地,量化模块301可针对右矩阵中的每个元素,分别计算该元素的取值与该元素所在列对应的基准值的商,并计算商与2

运算模块302可将第一量化矩阵和第二量化矩阵相乘,得到作为定点运算结果的第三矩阵。

之后,反量化模块303可针对第四矩阵中的每个元素,分别进行以下处理:计算该元素在第三矩阵中的对应元素的取值、该元素所在行对应的基准值以及该元素所在列对应的基准值的乘积,将乘积作为该元素的取值,对应元素为处于相同位置的元素。

如图3所示,所述装置中还可包括:预处理模块300,用于按照单精度训练方式训练得到单精度模型,作为初始模型,并对初始模型的模型参数进行量化精调训练,从而得到最终的模型。

通常来说,上述左矩阵为权重矩阵。预处理模块300可针对模型参数,执行以下第一处理:对模型参数中的权重矩阵按行进行量化,并对量化结果进行反量化,得到处理后的模型参数;根据处理后的模型参数进行前向计算和反向计算,得到模型参数梯度;根据模型参数梯度更新模型参数,并针对更新后的模型参数,重复执行所述第一处理,直到符合预定结束条件。

图3所示装置实施例的具体工作流程请参照前述方法实施例中的相关说明,不再赘述。

总之,采用本申请装置实施例所述方案,通过量化处理,可将单精度浮点转换为定点,从而在模型推理过程中的矩阵运算时,用定点运算代替浮点运算,进而有效压缩了模型体积,提升了模型推理速度,而且,可适用于各种不同的模型结构,并可适用于各种不同的体系结构,具有普遍适用性等。

本申请所述方案可应用于人工智能领域,特别涉及深度学习及语音识别等领域。人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术,人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术,人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图4所示,是根据本申请实施例所述方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图4所示,该电子设备包括:一个或多个处理器Y01、存储器Y02,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图4中以一个处理器Y01为例。

存储器Y02即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的方法。

存储器Y02作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的方法对应的程序指令/模块。处理器Y01通过运行存储在存储器Y02中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。

存储器Y02可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器Y02可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器Y02可选包括相对于处理器Y01远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、区块链网络、局域网、移动通信网及其组合。

电子设备还可以包括:输入装置Y03和输出装置Y04。处理器Y01、存储器Y02、输入装置Y03和输出装置Y04可以通过总线或者其他方式连接,图4中以通过总线连接为例。

输入装置Y03可接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置Y04可以包括显示设备、辅助照明装置和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器、发光二极管显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用集成电路、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,阴极射线管或者液晶显示器监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网、广域网、区块链网络和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

相关技术
  • 深度神经网络模型压缩方法及装置、电子设备、存储介质
  • 模型压缩方法、装置、电子设备及存储介质
技术分类

06120112501143