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

一种基于大语言模型自身对上下文进行压缩的方法及系统

文献发布时间:2024-04-18 19:58:53


一种基于大语言模型自身对上下文进行压缩的方法及系统

技术领域

本发明涉及大语言模型技术领域,具体为一种基于大语言模型自身对上下文进行压缩的方法及系统。

背景技术

目前常见的上下文压缩方法可以归纳为:基于抽取式的压缩、基于软提示的压缩。

基于抽取式的压缩是指,给定需要压缩的上下文,模型对上下文进行关键信息的直接抽取,从而减少原始上下文的输入长度。

基于软提示的压缩是指,给定需要压缩的上下文,模型将其压缩成一组虚拟字符。

当前技术的缺点:

1.目前基于抽取式的压缩方式由于压缩结果不是一段完整的句子,因而会增加语言模型的困惑度。虽然抽取后的上下文虽然减少了输长度但是也将较大导致性能下降。

2.传统基于软提示的压缩方法主要是训练一个压缩器来将上下文压缩成软提示,但这个压缩器通常需要大量训练数据,并且由于大语言模型巨大的训练参数量对压缩器进行训练会有很高的算力需求,同时该方法无法利用语言模型在预训练过程中学习到的知识。另一方面,传统基于软提示的压缩方式仅支持全量压缩即将给定上下文从头开始整个压缩成软提示并且固定压缩后的软提示位置。然而在很多任务中比如问答系统,聚焦于问题的自动摘要任务中,压缩应该以某一个具体问题为条件。

压缩的目的是为了让模型输入更多内容得到额外信息和复用压缩结果加快推理节省算力,目前基于软提示的方法只有复用和加速效果,由于只支持全量压缩,模型输入仅仅是很短的软提示,从而浪费了大量输入窗口,有悖于压缩的第一个目的。

发明内容

鉴于上述存在的问题,提出了本发明。

因此,本发明解决的技术问题是:针对传统基于软提示的压缩方法需要大量数据对压缩器进行训练和巨大的训练参数量,无法利用预训练知识,并且只支持全量压缩,从而有悖于解决超长文本无法输入的压缩目的。

为解决上述技术问题,本发明提供如下技术方案:一种基于大语言模型自身对上下文进行压缩的方法,包括:获取待压缩文本,添加任务描述、分隔符和压缩槽。

当GPU资源紧缺的情况下,利用现有大语言模型对所述待压缩文本进行压缩,额外训练投影层,当GPU资源充沛时,预训练大语言模型自身对所述待压缩文本进行压缩。

将训练后的大语言模型进行推理,生成文本回复。

作为本发明所述的基于大语言模型自身对上下文进行压缩的方法的一种优选方案,其中:所述添加任务描述、分隔符和压缩槽包括,将任务描述、待压缩文本和连续掩码序列拼接成一个新的序列

其中,

作为本发明所述的基于大语言模型自身对上下文进行压缩的方法的一种优选方案,其中:所述利用现有大语言模型对所述待压缩文本进行压缩,额外训练投影层包括,利用大语言模型自身当作压缩器,生成压缩文本的压缩虚拟字符。

将序列

其中,

所述隐层状态包含经过精炼的总结性上下文信息,表示为:

其中,_表示对应的输出被丢弃。

建立线性投影层

其中,

作为本发明所述的基于大语言模型自身对上下文进行压缩的方法的一种优选方案,其中:所述利用现有大语言模型对所述待压缩文本进行压缩还包括,利用大语言模型自身当作解码器,根据所述压缩虚拟字符和不压缩上下文进行解码,生成与金标文本的损失函数。

金标文本表示为:

其中,

通过softmax函数操作得到最终的概率输出:

其中,

损失函数

其中,

对损失函数

采用小批量梯度下降法,计算出一个小批量里各个数据的梯度

小批量平均梯度

其中,

作为本发明所述的基于大语言模型自身对上下文进行压缩的方法的一种优选方案,其中:所述预训练大语言模型自身对所述待压缩文本进行压缩包括,对大语言模型整体进行预训练,步骤如下:

将序列

执行编码操作,

其中,

所述隐层状态包含经过精炼的总结性上下文信息,表示为:

执行解码操作,根据所述压缩虚拟字符和不压缩上下文进行解码,得到文本回复,生成与金标文本的交叉熵损失函数。

金标文本表示为:

其中,

通过softmax函数操作得到最终的概率输出:

其中,

损失函数

其中,

对损失函数

采用小批量梯度下降法,计算出一个小批量里各个数据的梯度

小批量平均梯度

其中,

作为本发明所述的基于大语言模型自身对上下文进行压缩的方法的一种优选方案,其中:所述推理包括一个动态交互过程:

用户在输入待压缩文本前,选择是否自行为文本标记关键词作为任务描述:

若用户选择自行标注,标注文本中用户认为重要的词汇、句子,系统将基于用户的标记生成对应的任务描述并将其与待压缩文本进行拼接,经过模型推理给出回复。

若用户选择不标记关键词,则从预设的任务描述数据库中匹配任务描述,与待压缩文本进行拼接,经过模型推理给出回复。

作为本发明所述的基于大语言模型自身对上下文进行压缩的方法的一种优选方案,其中:所述经过模型推理给出回复包括,利用大语言模型自身当作压缩器,生成压缩文本的压缩虚拟字符,利用大语言模型自身当作解码器,根据压缩虚拟字符和不压缩上下文进行生成回复。

根据训练完成的压缩模型进行生成回复时,输入压缩虚拟字符和前

生成文本回复表示为:

其中,

一种基于大语言模型自身对上下文进行压缩的系统,其特征在于:包括,

预处理模块,获取待压缩文本,添加任务描述、分隔符和压缩槽。

模型训练模块,当GPU资源紧缺的情况下,利用现有大语言模型对所述待压缩文本进行压缩,额外训练投影层,当GPU资源充沛时,预训练大语言模型自身对所述待压缩文本进行压缩。

推理生成回复模块,将训练后的大语言模型进行推理,生成文本回复。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本发明的有益效果:任务提示参与到压缩过程中,可以让压缩后的虚拟字符更具目的性从而生成更好的输出结果。同时支持部分、全量压缩和拼接压缩,并且压缩后的虚拟字符位置数量不固定。既可以利用现有的大语言模型,也可以将压缩部署在预训练阶段,并且通过大语言模型自身对上下文进行压缩,不需要额外训练压缩器。压缩后的虚拟字符可以衡量文章相似度,从而可以用来检索。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明第一个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的整体流程图;

图2为本发明第一个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的Decoder-only模型架构示意图;

图3为本发明第一个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的利用现有大语言模型训练流程图;

图4为本发明第一个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的预训练大语言模型流程图;

图5为本发明第一个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的推理流程图;

图6为本发明第一个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的虚拟字符检索流程图;

图7为本发明第二个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的各个模型的推理性能对比图;

图8为本发明第二个实施例提供的一种基于大语言模型自身对上下文进行压缩的方法的部分压缩示例图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。

实施例1

参照图1~图6,为本发明的一个实施例,提供了一种基于大语言模型自身对上下文进行压缩的方法,包括:

S1:获取待压缩文本,添加任务描述、分隔符和压缩槽。

添加任务描述、分隔符和压缩槽包括,将任务描述、待压缩文本和连续掩码序列拼接成一个新的序列

其中,

应说明的是,任务描述来源于预设的数据库。

进一步的,将连续掩码序列添加在后方,是因为Decoder-only的大语言模型由于单项注意力机制,可以在压缩上下文后方添加掩码序列对前文进行总结。Decoder-only的大语言模型框架图如2所示。

S2:当GPU资源紧缺的情况下,利用现有大语言模型对待压缩文本进行压缩,额外训练投影层,当GPU资源充沛时,预训练大语言模型自身对待压缩文本进行压缩。

应说明的是,在GPU资源受限情况下,直接利用现有的大语言模型可以减少成本,因为在整个训练过程中大语言模型本身保持冻结,训练参数只有一个可学习的投影层,将大语言模型的编码结果投影成压缩虚拟字符,供大语言模型解码使用,如图3所示。

利用大语言模型自身当作压缩器,生成压缩文本的压缩虚拟字符。

将序列

其中,

隐层状态包含经过精炼的总结性上下文信息,表示为:

其中,_表示对应的输出被丢弃。

建立线性投影层

其中,

应说明的是,投影层可以用线性层、多层感知机等多种神经网络结构进行实现。投影层用于将连续掩码序列的最后一层隐层状态H从编码输出表征空间映射到输入表征空间,从而实现从K个连续掩码序列的最后一层隐层状态H到K个虚拟压缩字符

利用大语言模型自身当作解码器,根据压缩虚拟字符和不压缩上下文进行解码,生成与金标文本的损失函数。

金标文本表示为:

其中,

通过softmax函数操作得到最终的概率输出:

其中,

损失函数

其中,

对损失函数

采用小批量梯度下降法,计算出一个小批量里各个数据的梯度

小批量平均梯度

其中,

应说明的是,利用模型自身压缩时,设批量大小

预训练大语言模型包括,不需要额外训练投影层,如图4所示。

应说明的是,由于不冻结模型,参数量增加,并且编码解码来自同一个模型,因此不需要额外训练投影层。步骤如下:

将序列

执行编码操作,

其中,

隐层状态包含经过精炼的总结性上下文信息,表示为:

执行解码操作,根据压缩虚拟字符和不压缩上下文进行解码,得到文本回复,生成与金标文本的交叉熵损失函数。

金标文本表示为:

其中,

通过softmax函数操作得到最终的概率输出:

其中,

损失函数

其中,

对损失函数

采用小批量梯度下降法,计算出一个小批量里各个数据的梯度

小批量平均梯度

其中,

应说明的是,预训练大语言模型要求成本较高,但性能和效率相对于利用大语言模型自身训练有所提升。预训练的整个训练过程在8张NVIDIA Tesla A100 (80GB)显卡在180小时左右完成,训练要求成本较高,但模型性能有所提升。

S3:将训练后的大语言模型进行推理,生成文本回复,如图5所示。

进行推理包括,利用大语言模型自身当作压缩器,生成压缩文本的压缩虚拟字符,利用大语言模型自身当作解码器,根据压缩虚拟字符和不压缩上下文进行生成回复。

应说明的是,在推理过程中,所有的模型参数都是冻结的,不参与训练,模型不计算损失函数。

根据待压缩文本利用大语言模型自身进行训练时,计算得到的概率

应说明的是,输出EOS是指EndOfSequence的缩写,是一个特殊的标记或符号,用于指示序列(如文本)的结束。

根据待压缩文本预训练大语言模型时,计算得到的概率

生成文本回复表示为:

其中,

更进一步的,压缩虚拟字符由于维度固定并且自然的总结了被压缩部分,可以很好的衡量被压缩上下文之间的相似度,从而可应用在检索中。主要做法为:

首先通过大语言模型将待检索的候选上下文和当前推理文本压缩成虚拟字符,然后计算推理文本与候选上下文压缩虚拟字符的内积相似度。用类似于pytorch框架下的topk函数(函数功能为返回最大的k个值及其索引)选择出内积相似度最高的k个候选上下文。检索过程如图6所示。

推理还包括一个动态交互过程,具体步骤如下:

用户在输入待压缩文本前,选择是否自行为文本标记关键词作为任务描述:

若用户选择自行标注,标注文本中用户认为重要的词汇、句子,系统将基于用户的标记生成对应的任务描述并将其与待压缩文本进行拼接,经过模型推理给出回复。

若用户选择不标记关键词,则从预设的任务描述数据库中匹配任务描述,与待压缩文本进行拼接,经过模型推理给出回复。

应说明的是,根据用户标记生成对应的任务描述采用模板生成法,当用户输入关键词时,生成任务描述:“关注并尽可能保留与[关键词]相关的主要信息”。

进一步的,本发明还提供了一种基于大语言模型自身对上下文进行压缩的系统,具体为:

预处理模块,获取待压缩文本,添加任务描述、分隔符和压缩槽。

模型训练模块,当GPU资源紧缺的情况下,根据待压缩文本利用大语言模型自身进行训练,当GPU资源充沛时,根据待压缩文本预训练大语言模型。

推理生成回复模块,将训练后的大语言模型进行推理,生成文本回复。

计算机设备可以是服务器。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储电力监控系统的数据集群数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(MagnetoresistiveRandomAccessMemory,MRAM)、铁电存储器(FerroelectricRandomAccessMemory,FRAM)、相变存储器(PhaseChangeMemory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(RandomAccessMemory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandomAccessMemory,SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

实施例2

参照图7、图8,为本发明的一个实施例,为了验证本发明的有益效果,通过仿真实验进行科学论证。

将常见压缩模型与本发明进行对比,如图7所示,可以看出我方发明性能优于常见压缩模型。

根据是否有提示压缩整个上下文的结果,从QFS和QA数据集中随机抽取了长指令进行评估,结果如表1所示:

表1 在DUC、CICERO数据集上的对比结果

由表得知,在压缩过程中提供任务描述在QueryFoucusedSummarization任务和Question任务上取得了显著性能提升。

我方发明提出的方法同时支持部分压缩以及全量压缩,相比于现有方法对文本只能进行全量压缩,我们的方法最大限度利用了大语言模型性能。如表2所示,Entire表示全量压缩,Partial表示部分压缩,部分压缩由于提供了更多的文本信息因此生成了更高质量的回复。

表2 各类大语言模型的表现

XSUM和CICERO的领域内,Vicuna根据实际上下文生成响应,LLM-CCEntire将整个上下文压缩到虚拟令牌,而LLM-CCPartial则保留前部分未压缩并压缩后部分上下文。

由表2得出,我方发明借助大语言模型自身进行压缩并将其转化为压缩虚拟字符,而不需要额外的压缩器构建特定输入,使得我方发明对最终输入的形式没有限制,加之大语言模型本身以真实字符为输入,因此生成回复时大语言模型的输入可以是真实字符混合上压缩虚拟字符,从而给大语言模型提供更多信息。

在处理超长文本时,我方发明可以通过压缩被截断部分,给模型提供更多信息,从而提升回复质量。如表3所示,DUC是一个输入长度较长的QFS数据集,普通模型比如在遭遇超长文本的时候会发生直接截断,导致信息丢失,Rec-SUM是OpenAI提出的一种解决长输入的方式,AutoCompressor是目前最好的开源压缩模型。

表3 DUC数据集上的结果

从表3可以看出,我们方案训练出的LLM-CC相比于所有基线取得了巨大性能提升,实验中我们将本来被截断的内容,提供给模型将其压缩成压缩虚拟字符,并拼接上不希望被压缩的部分构成输入送入模型,实验结果表明我们的方案训练出的模型(LLM-CC)生成出了最高质量的回复结果。

我方发明压缩出的虚拟字符可以更好的在上下文学习中衡量语义相似度,从而为模型挑选出更好的上下文提示样本。如表4所示,LLM-CC代表用S-BERT检索出的样本,而Rerank代表用我们的压缩虚拟检索出的样本。Vicuna0/1-shot表示在ICL中定义的朴素上下文演示。LLM-CC1/2-shot表示压缩插槽作为抽象上下文演示,其中S-BERT检索它们的上下文演示。Rerank-LLM-CC1/2-shot表示通过LLM-CC重新排列的上下文演示。

表4 XSUM数据集上的结果

表4表明,压缩出的虚拟字符更好的对前文进行总结从而可以更好的衡量语义相似度,完成检索工作。

另外,借助预处理模块的帮助,首先将提示拼接上待压缩上下文输入大语言模型进行编码,得到k个压缩虚拟字符,其中k取值和M的位置不受限制(比如压缩前半部分放前面,压缩后半部分放后面),然后将虚拟字符拼接上不压缩上下文输入大语言模型进行解码,压缩示例如图8所示。

应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

技术分类

06120116511625