CN117744631A - 文本预测的方法及装置 - Google Patents
文本预测的方法及装置 Download PDFInfo
- Publication number
- CN117744631A CN117744631A CN202311688510.8A CN202311688510A CN117744631A CN 117744631 A CN117744631 A CN 117744631A CN 202311688510 A CN202311688510 A CN 202311688510A CN 117744631 A CN117744631 A CN 117744631A
- Authority
- CN
- China
- Prior art keywords
- word
- fetch
- phrase
- sequence
- current
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000008569 process Effects 0.000 claims abstract description 28
- 239000011159 matrix material Substances 0.000 claims description 27
- 230000007246 mechanism Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 6
- 241000282326 Felis catus Species 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000003058 natural language processing Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000000306 recurrent effect Effects 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Machine Translation (AREA)
Abstract
本说明书实施例提供一种文本预测的方法及装置,在基于大模型进行文本预测过程中,为当前词预测下文时,根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组,然后对各个预取词组并行执行前向预测,从而确定基于若干个预取词组匹配到的最长词序列,根据最长词序列确定相应的若干输出词作为当前词的下文。如此,可以通过预取和并行计算提高词预测速率。
Description
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种文本预测的方法及装置。
背景技术
语言大模型(Large Language Model,LLM),即大规模语言模型,或称为大模型,通常具有较大的参数量级,如十亿级。语言大模型是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。利用大模型生成文本的过程中,通常包括对输入文本的转换、压缩等流程,再根据得到的表征向量预测或生成目标文本。在目标文本生成过程中,可以按照字符出现顺序依次进行。也就是说逐个字或词进行文本串行生成。因此,如何提高文本生成效率,是语言大模型使用过程中值得研究的重要技术问题。
发明内容
本说明书一个或多个实施例描述了一种文本预测的方法及装置,用以解决背景技术提到的一个或多个问题。
根据第一方面,提供一种文本预测的方法,用于基于大模型进行文本生成过程中,为当前词预测下文,所述方法包括:根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组;对各个预取词组并行执行前向预测,从而确定基于所述若干个预取词组匹配到的最长词序列,其中,针对单个预取词组,按照预取词组中各个词的出现顺序以词数量逐个递增的方式确定至少一个候选词序列,所述最长词序列通过以下比对结果确定:并行为各个预取词组对应的全部候选词序列预测下一个词,并将预测得到的词与相应候选词序列在相应预取词组中的相应词进行比对,得到各个比对结果;根据所述最长词序列确定相应的若干输出词作为当前词的下文。
根据一个实施例,单个预取词组至多包含预定数量的预取词,且单个预取词组在当前业务请求及历史生成文本中的出现频次满足以下条件:大于预定频次阈值,或者按照由大到小的顺序排列在前n个。
根据一个实施例,所述对各个预取词组并行执行前向预测包括:根据各个预取词组中各个词的位置,确定各个预取词的位置标识以及相应的注意力掩码矩阵,其中,所述预取词是预取词组中的词;基于所述位置标识和所述掩码矩阵执行前向预测。
根据一个实施例,所述若干个预取词组通过以当前词为根节点的字典树中各条词路径上的节点确定,且不同预取词组在同一次序的相同预取词按照字典树结构进行合并。
根据一个实施例,各个预取词分别对应的各个位置标识由字典树中的节点位置确定,且按照对应于字典树中的节点次序依次排列,所述掩码矩阵的各列分别对应各个预取词,所述掩码矩阵的各行分别对应各个候选词序列,且与候选词序列中的各个词对应的各个元素为预定字符。
根据一个实施例,所述若干个预取词组存在以下第一词组的情况下,所述最长词序列包括,所述第一词组以及根据最长候选词序列预测的下一个词:所述第一词组中的全部预取词与为第一词组确定的各个候选词序列预测的下一个词均一致。
根据一个实施例,在全部预取词组中当前词的下一个词均与针对当前词预测的下一个词不一致的情况下,所述最长词序列包括针对当前词预测的下一个词。
根据一个实施例,所述方法还包括:在未预测到结束符的情况下,通过所述最长词序列中的最后一个词更新当前词。
根据一个实施例,所述大模型基于注意力机制实现,已预测到的各个词以及各个预取词对应的k、v值以kvs缓存形式存储是否被选中的状态,所述方法还包括:根据所述最长词序列更新kvs缓存中各个词的k、v值状态。
根据第二方面,还提供一种文本预测的装置,用于基于大模型进行文本生成过程中,为当前词预测下文,所述装置包括:
预取单元,配置为根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组;
预测单元,配置为对各个预取词组并行执行前向预测,从而确定基于所述若干个预取词组匹配到的最长词序列,其中,针对单个预取词组,按照预取词组中各个词的出现顺序以词数量逐个递增的方式确定至少一个候选词序列,所述最长词序列通过以下比对结果确定:并行为各个预取词组对应的全部候选词序列预测下一个词,并将预测得到的词与相应候选词序列在相应预取词组中的相应词进行比对,得到各个比对结果;
更新单元,配置为根据所述最长词序列确定相应的若干输出词作为当前词的下文。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的装置和方法,在基于大模型进行文本预测过程中,为当前词预测下文时,根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组,然后对各个预取词组并行执行前向预测,从而确定在若干个预取词组中匹配到的最长词序列,根据最长词序列确定相应的若干输出词作为当前词的下文。如此,可以通过预取和并行计算提高词预测速率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1常规技术中通过循环神经网络实现的seq2seq模型架构示意图;
图2示出了自注意力机制下处理数据的架构示意图;
图3示出了根据本说明书一个实施例的文本预测流程示意图;
图4示出了本说明书中根据当前词构建的一个字典树的示意图;
图5示出了一个具体例子的针对多个预取词组并行预测的架构示意图;
图6示出单分支前向预测情况下的位置及掩码矩阵确定及可能得预测结果示例图;
图7示出多分支前向预测情况下对位置标识记录及掩码矩阵的改进示例图;
图8示出多文本批量预测情况下对位置标识记录及掩码矩阵的构建示例图;
图9示出了根据本说明书一个实施例的文本预测装置的结构框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
本领域技术人员可以理解,文本摘要提取、文本生成、文本自动填充之类的任务通常依赖Language model(LM)。LM可以预测一个字符序列出现的概率,概率最高的字符序列作为较优序列进行输出。例如文本预测领域采用的诸如BERT之类的seq2seq(序列到序列)模型,往往包含编码器(encoder)和解码器(decoder)。其中,编码器将输入字符通过向量进行表征,解码器将输入字符的向量表征进行解码,得到输出字符。这里的解码器就可以通过LM实现。
如图1示出了一个通过循环神经网络实现的seq2seq模型架构。其中,LM1为编码器模型,用于对输入字符序列“I like cat”依次进行编码,并在编码过程中将前一个字符的编码结果向后传递,在最后时刻的LM1输出的上下文信息中包含英文“I like cat”的完整信息(如编码向量)。LM2为解码器模型,英文“I like cat”的完整信息传递给解码器LM2,LSTM2的起始状态start,之后每个时刻的预测结果作为下一时刻的输入,翻译顺序进行直到终止符(如<结束>或<END>)停止翻译,如各个时刻的输出“我”“喜欢”“猫”,作为英文“Ilike cat”的中文翻译结果。
由于循环神经网络可能存在长距离衰减等问题,深度神经网络生成算法可以包括:生成对抗网络(Generative Adversarial Network,GAN)、可变自动编码器(Variational Autoencoder,VAE)、自回归模型(Autoregressive models,AR)等。在基于大模型的文本生成中,往往采用自回归模型。自回归预测法通常利用预测目标的历史时间数列在不同时期取值之间存在的依存关系(即自身相关),建立起回归方程进行预测。自回归意味着使用模型基于模型的过去时间点的数据来预测新的时间点的数据。在一些语言处理模型中,还采用注意力机制提升预测效果。注意力机制是一种模仿人类视觉和认知系统的方法,它允许神经网络在处理输入数据时集中注意力于相关的部分。通过引入注意力机制,神经网络能够自动地学习并选择性地关注输入中的重要信息,提高模型的性能和泛化能力。常用的注意力机制例如有自注意力(Self-Attention)机制、时间注意力机制、空间注意力机制等。其中,自注意力机制下可以有多头自注意力(Multi-head Self-Attention)、Transformer等机制。如此,可以将自回归模型与注意力机制结合起来,用于解码器LM2的构建。例如,Transformer解码器就可以是基于注意力机制的AR处理架构,Transformer架构例如可以用于BERT(Bidirectional Encoder Representation from Transformers,Transformers双向编码表示)等自然语言处理模型中,构建大模型。
其中,大模型可以是基于自然语言处理的生成模型,其旨在理解和生成人类语言,因此也可以称为语言大模型(Large Language Model,简称LLM,如OPENAI的ChatGPT等)。大模型通过在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。大模型通常基于深度学习架构,如BERT等架构的转换器,处理各种自然语言处理任务。大模型由于所涉及的语料库巨大,通常可以经过预训练作为基础模型。
在文本生成领域,各个时间点的数据可以是字符或词汇等。为了描述方便,本文将文本中可能出现的字符、词汇、符号等统一记为词,如用token表示。文本生成的自回归预测过程也可以称为前向预测过程。通常一次前向预测过程可以计算出下一个token,如果需要计算100个token,就需要100次前向预测过程。本说明书对自回归预测过程进行改进,通过借鉴已知文本中的词序列,提高文本生成效率。
具体而言,为了提高文本生成速度,本说明书通过预判断的方式来预取多个token进行前向预测。举例而言,假如4、5两个词经常一起出现,在前一次的前向过程中,已经根据词汇1、2、3计算出下一个词是4,那么就可以将词序列1-2-3-4和词序列1-2-3-4-5一起进行前向预测,分别得到1-2-3-4和1-2-3-4-5作为上下文预测的下一个词,如果针对1-2-3-4预测的下一个词刚好是5,那就可以直接用针对1-2-3-4-5预测的下一个词(如词6)作为起始词来进行后续计算,这样就相当于用一次前向的时间预测了5和6两个词,相比一次预测一个词效率更高。如果针对1-2-3-4预测出的下一个词不是5(如是6),从针对1-2-3-4预测的下一个词6开始进行后续预测。
在自注意力机制下,处理序列数据时,可以认为每个元素都可以与序列中的其他元素建立关联,而不仅仅是依赖于相邻位置的元素。它通过计算元素之间的相对重要性来自适应地捕捉元素之间的长程依赖关系。由此,对于输入数据,可以经由三个矩阵q、k、v(可以共享)来进行处理,得到相应的值,用于不同的重要度评估。如图2所示,对于三个特征x1、x2、x3,经由编码矩阵W的处理,可以得到三个编码张量a1、a2、a3。编码张量a1经由三个矩阵q、k、v处理(处理过程例如可以是计算乘积),得到三个张量q1、k1、v1,分别对应Query、Key、Value。同理,对a2、a3进行相似的处理。其中,Query通常是用来和其他元素(如单词、字符等)进行匹配,或者说是用来计算当前元素与其他元素之间的关联或者关系,Key通常是被用来和q进行匹配,也可理解为元素的关键信息,Value则是进行计算的主体。例如,以Query和Key的匹配度作为Value的权重进行加权求和计算。如图4示出了自注意力机制下,计算a1对应的张量b1的过程,用q1和k1、k2、k3的匹配度等分别作为对v1、v2、v3的加权权重,根据得到得加权和可以确定张量b1。
对于每个输入的词序列(如记为prompt),在预测第一个词(如记为token)输出的时候,单个token的注意力(attention)是从起始位置计算的,但是在后续token的生成中,需要串联前面各个token的K和V,由于模型参数矩阵是不变的,此时只有前一个生成的token的K和V需要从起始位置计算,所以可以把之前token的K和V缓存起来避免重复计算,这里K和V的缓存可以称为kvs缓存(kv cache)。在文本预测过程中,可以通过kv cache中的K、V状态来描述字符是否被选中。
例如,一个字符组合2-3-4-5和一个字符组合2-3-6-8,在前向预测过程中,各个字符的K、V状态可能被改变,如2-3-4匹配到的最长字符序列,其中,在前向预测的中间过程中,词2、3、4、5、6、8对应的K、V状态可能被临时修改为选中状态,最终词组2-3-4被选中为预测文本,则至少字符5、6、8对应的K、V状态被修改回未选中状态,即状态回滚。在实践中,K、V状态可以通过掩码(mask)表示,如掩码值为1,则表示选中,否则表示未选中。
那么,对于预测到的下一个词和预取的下一个词不一致的情况,可以把预取的相应词的中间状态回滚掉。由于状态回滚的耗时低于前向的耗时,如果命中概率足够高,就会带来加速。
下面结合图3示出的实施例,详细描述本说明书的技术构思。
图3示出了根据一个实施例的文本预测流程示意图。该流程的执行主体可以是具有一定计算能力的计算机、设备、服务器。如图3所示,本说明书实施例提供的文本预测流程可以包括:步骤302,根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组;步骤304,对各个预取词组并行执行前向预测,从而确定基于若干个预取词组匹配到的最长词序列,其中,针对单个预取词组,按照预取词组中各个词的出现顺序以词数量逐个递增的方式确定至少一个候选词序列,最长词序列通过以下比对结果确定:并行为各个预取词组对应的全部候选词序列预测下一个词,并将预测得到的词与相应候选词序列在相应预取词组中的相应词进行比对,得到各个比对结果;步骤306,根据最长词序列确定相应的若干输出词作为当前词的下文。
首先,在步骤302中,根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组。
可以理解,当前业务请求可以是用户所需要的任意具有文本生成需求的业务场景下用户的输入数据,例如,在问答场景下,用户问题可以作为当前业务请求,在按照样例生成业务文本的场景下,用户输入的样例及目标业务需求等可以作为当前业务请求。这里的目标业务需求例如是新闻、事件、论文、评论等等。可选地,当前业务请求可以通过自然语言描述,并可以包含至少一个句子。
历史生成文本可以是针对历史业务请求生成的各种文本,例如新闻文本、事件文本、论文文本、评论文本、答案文本等等。历史生成文本也可以经由自然语言描述。
本说明书中,可以将词汇、标点、符号、数字、字母等等中的一项用单个词表示。为了借鉴当前业务请求和历史生成文本中的已知词组合,可以在针对当前词预测下文时,从当前业务请求和历史生成文本中预取将当前词作为起始词的若干个候选词组,如记为预取词组。当前词可以是当前预测到的最后一个词,如一个字符作为一个词的情况下,当前仅预测到第一个字符“我”,则该第一个字符可以作为当前词,当前预测了5个字符“我们都是中”,则第五个字符“中”可以作为当前词。
实践中,为了确定预取词组,可以遍历当前业务请求和历史生成文本,从中搜索当前词,并以当前词作为起始词选择连续文本作为预取词组。以当前词为“中”为例,预取词组例如可以包括“中心位置”、“中国人。”、“中。从而”,等等。可选地,预取词组的词数量不超过预定数量(如4)。可以理解,在当前词出现在历史文本的结尾的情况下,预取词组的词数量可以小于预定数量(如为1)。
可选地,为了借鉴更加高频的词组合,还可以仅选择在当前业务请求及历史生成文本中出现频次大于预定频次阈值的词组合作为预取词组,或者按照词组合的出现频次选择由大到小排列靠前的n个词组合作为预取词组。
在可选的实现方式中,可以遍历当前业务请求和历史生成文本,构建字典树(Trie树)。在针对当前词的字典树中,当前词可以作为根节点,后续的词可以对应各个子节点,一个连续词组形成树结构中的路径。如图4所示,是一个深度为4(单个词组对应至多4个连续的词)的字典树的具体例子。当前词通过1表示,则针对当前词1构建的字典树可以包括1-2-1-3、1-3-4-1、1-3-4-2、1-3-1-3共四个词组。这些词组均可以作为用于参考的预取词组。
在一个实施例中,字典树的单个节点的子节点对应的词,可以经由在历史生成文本中排列在根节点对应的词到该单个节点对应的词构成的词序列之后的词的出现频次确定。例如出现频次大于预定阈值,或者出现频次由大到小排列在前n个(如n=2)。作为示例,如图4中,确定根节点1对应词1,在历史生成文本中词1之后出现的词包括2、3、5等等,词2的出现频次为100,词3的出现频次为95,词5的出现频次为30,在n=2的情况下,取前n个词2、3作为节点1的子节点。进一步地,在历史生成文本中词序列1-3之后出现的词包括4、1、8等等,取出现频次由大到小排列靠前的n个词如4、1作为节点3的子节点。以此类推。
本领域技术人员可以理解,对于历史生成文本而言,针对各个词的预取词组可以预先生成,需要时查询并加载,以提高预取词组的效率。
接着,在步骤304中,对各个预取词组并行执行前向预测,从而确定基于若干个预取词组匹配到的最长词序列。
如图4所示,假设当前预测到的词序列为1-2-3-4,则当前词为4,针对当前词4构建字典树,从中获取词组合4-5-6-7、4-8-9-1、4-2作为预取词组,完成词序列的预取。如此,可以对预取词组4-5-6-7、4-8-9-1、4-2并行执行前向预测。其中,前向预测可以通过语言模型(Language Model,LM)实现。
下面描述针对单个预取词组,执行前向预测操作的流程。以4-5-6-7为例,如图5所示,并行执行3个前向预测,用于与预取词组4-5-6-7中的5、6、7进行匹配。具体而言,可以按次的出现顺序以词数量逐个递增的方式生成多个候选词序列,例如,将4-5-6-7拆分为4、4-5、4-5-6、4-5-6-7四个词序列,这四个词序列可以直接作为候选词序列,也可以与以预测到的词序列1-2-3-4合并得到词序列1-2-3-4、1-2-3-4-5、1-2-3-4-5-6、1-2-3-4-5-6-7四个词序列作为候选词序列,在此不做限定。
然后,并行为各个候选词序列预测下一个词,并与相应序列的在该预取词组中的下一个词汇比对,得到各个比对结果。其中,在当前词之前还有其他词的情况下,还可以将其他词作为上文一起进行预测。在以上例子中,可以并行预测词序列1-2-3-4、1-2-3-4-5、1-2-3-4-5-6、1-2-3-4-5-6-7各自的下一个词。具体而言,预测1-2-3-4的下一个词,并比对检测预测结果是否为5,预测词序列1-2-3-4-5的下一个词,并比对检测预测结果是否为6,预测词序列1-2-3-4-5-6的下一个词,并比对检测预测结果是否为7,预测1-2-3-4-5-6-7的下一个词(如为8)。
进一步地,根据各个比对结果确定针对各个预取词组匹配的最长词序列。假设预测结果为1-2-3-4的下一个词是5,1-2-3-4-5的下一个词是6,而1-2-3-4-5-6的下一个词是9,则5-6作为针对词序列1-2-3-4匹配到的最长字符序列。同理,针对预取词组4-8-9-1、4-2也执行前向预测。其中,预取词组4-5-6-7、4-8-9-1、4-2的前向预测可以并行执行。这里,并行执行可以是分布式并行、多进程并行等执行形式下的并行。如此,针对所确定的预取词组,可以得到匹配到的最长词序列。值得说明的是,在某个预取词组中的各个词均被预测结果匹配到的情况下,最长词序列可以是包含该预取词组中的全部词的候选词序列预测到的下一个词。举例而言,在前文的例子中,假设针对候选词序列1-2-3-4、1-2-3-4-5、1-2-3-4-5-6预测到的下一个词分别与词5、6、7匹配,则所确定的最长词序列包含根据候选词序列1-2-3-4-5-6-7预测到的下一个词,例如为5-6-7-8。
根据一个可能的设计,针对单个预取词组,在进行前向预测时,可以将已预测到的词序列(如图6中的1-2-3-4)与预取词组拼接构成当前的候选词序列,并标注出各个词的位置标识,然后,根据位置标识,构建掩码矩阵。其中,掩码矩阵中的单个行通过预定值描述单个候选词序列。如图6所示,当前字符为字符“4”,预取词组为“4-5-6-7”,其中各个词对应的位置标识假设分别为3、4、5、6,掩码矩阵的第一行“1,1,1,1,0,0,0”中,位置为1的元素对应位置为当前的候选词序列,对应着词序列“1-2-3-4”,依次类推。如此,大模型通过自注意力解码,可以为词序列“1-2-3-4”等分别预测下一个字符。
在一些可选的实现方式中,在多分支前向预测过程中,由于需要对各个预取词组均标注位置标识和注意力掩码,因此,可以对掩码矩阵进行改进。如图7所示,在列表结构的预取词组下,针对各个预取词组分别确定相应的掩码矩阵,在字典树结构下,则可以按照字典树的分支路径,对共用节点采用同一个元素标识,且位置唯一。如此,通过字典树改进的掩码矩阵,各个预取词组可以共用一个矩阵。如图7中,4为根节点构建的字典树下,包含两个子节点5和2,节点5又对应子节点6,节点6对应子节点7和8,如此,预取词组1“4-5-6-7”和预取词组2“4-5-6-8”中的字符“4-5-6”可以合并,并对应位置3、4、5,字符“7”和“8”均可以对应位置6,字符“2”对应位置4,在掩码矩阵中,允许出现在中间位置元素的元素值为0,仅在与预测到的词和当前预取词相对应的位置出现字符1。
如此,通过对字典树中的各个词构建位置标识和掩码矩阵,可以实现逻辑上对各个预取词组的并行前向预测,而实际执行过程中,由于token的数量被压缩,可以进一步提高并行前向预测的效率。
在另一些可选的实施方式中,还可以针对一个批次(batch)的字符序列同时执行以上前向预测。如图8所示,将词序列“1-2-3-4”和词序列“a-b-c”作为一个批次分别进行后续词的预测。在进行预测过程中,由于当前词序列长度和预取词组长度之和可能不一致,因此,一方面可以将当前词对齐,另一方面可以用预定字符(如图8中的x)补足以将当前批次的预取词组对齐。如此,一个批次中的词序列的位置标识可以对齐,且掩码矩阵可以对齐,从而便于进行批量处理。而在kvs缓存(kvs cache)中,也可以用预定字符补足较短字符序列,从而进行对齐。然后,通过步骤306,根据最长词序列确定相应的若干输出词作为当前词的下文。
可以理解,最长词序列中的各个词依次可以作为各个输出词,并作为当前词的下文。在未预测到结束符的情况下,可以将最长词序列中的最后一个词作为当前词,重复执行图3示出的流程。
图6示出了针对单个预取词组进行前向预测的示例。从图6可以看出,前向预测过程中,有三种可能的匹配情况:全部成功(全部预取词与为该单个词组确定的各个候选词序列预测的下一个词均一致)、全部失败(第一个预取词即与为该单个词组确定的最短候选词序列预测的下一个词不一致)、部分成功(排列靠前的部分预取词与相应候选词序列预测的下一个词一致)。参考图6所示,针对一个当前词“4”,以及一个预取词组“4-5-6-7”(图6中预取词组中的预取词5、6、7用下划线标示),在全部匹配失败的情况下,输出针对当前字符预测到的下一个词,如针对“1-2-3-4”预测到6,未与预取词组中的“5”匹配,则匹配到的最长词序列可以为空,输出真实预测到的词“6”作为当前词“4”的下文。在部分成功的情况下,匹配到的最长词序列包括匹配到的最后一个词(如词“5”),以及根据匹配到的最后一个词(5)预测到的下一个词(如词“7”),输出当前词“4”的下文5-7。在全部成功的情况下,匹配到的最长词序列包括根据预取词组中的全部词(如词5、6、7)在内的候选词序列匹配到的最后一个词(如“8”),输出当前词“4”的下文5-6-7-8。
进而,在多个预取词组并行进行前向预测的情况下,在以上若干个预取词组中存在一个第一词组的前向预测结果为全部成功的情况下,最长词序列可以包括该第一词组和根据基于该第一词组的最长候选词序列预测的下一个词,如以上的“5-6-7-8”。在全部预取词组的前向预测结果均为全部失败,则最长词序列可以包括针对当前词(如图6中的词4)预测的下一个词(如图6中的词6)。在全部预取词组的前向预测结果均为部分成功的情况下,最长词序列可以包括匹配到的最后一个词(如词“5”),以及根据匹配到的最后一个词(5)预测到的下一个词(如词“7”)。
对于一个预取词组而言,假设其前向预测(可以称为单分支前向预测)耗时为:t=∑i=0,i<L∑j=0,j<=l(p(j)t(j+1)/(j+1)+Ij!=lr),其中,l为前向预测字符长度,L为生成字符的总长度,p(j)是成功命中的长度刚好为j的概率(计算方式如为前向预测字符长度是j的成功率减去前向预测字符长度是j-1的成功率),r为回滚耗时。由于状态回滚的耗时低于前向预测的耗时,如果命中概率足够高,就会带来加速。
采用多个预取词组并行计算(也可以称为多分支前向预测),即提前预取多个词组,提高命中率。多个预取词组的耗时为:其中B为预取词组数量(或分支数),其他符号同上。如此,可以通过命中率的提高带来大模型在下文预测中的加速。
根据一些可能的设计,在确定当前词的下文字符后,还可以将下文中的最后一个词作为当前词,重复执行以上文本预测流程,直至预测到结束符,文本预测结束。
为了表明本说明书技术方案下词预测速度的提高,发明人还利用至少两个数据集进行了测试。实验结果表明:在检索增强的内部业务数据集AntRAG上,对于10B(B是十亿billion的缩写)参数量的模型(GLM模型架构),在A100单卡设备上,本说明书提出的技术方案的预测速度(token/s,即词/秒)相比没有用该方法的方案可以提高4.36倍;在开源问答数据集Dolly上,对于13B参数量的模型(LLAMA-2-CHAT),在A100单卡设备上,预测速度可以提高1.11倍。在其他数据集上进行实验,文本预测速度均得到较大幅度提升,在此不再一一列举。
值得说明的是,实验发现,在保持其他参数一致的情况下,随着字典树逐渐构建完整,预测速度会逐渐增加。因此,模型实际上线后,随着线上请求数的累积,预测效率会持续的小幅提升,直到收敛。
本说明书的技术构思下提供的文本预测方法,基于大模型进行文本生成过程中,为当前词预测下文时,根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组,然后对各个预取词组并行执行前向预测,从而确定在若干个预取词组中匹配到的最长词序列,根据最长词序列确定相应的若干输出词作为当前词的下文。如此,可以通过预取和并行计算提高词预测速率。本说明书提供的文本预测方案,不需要基于特定硬件,对用户无感,通过提升单位时间生成词的速率,从而减少文本预测延迟。
根据另一方面的实施例,还提供一种文本预测的装置。该装置可以设于具有一定计算能力的计算机、终端、服务器,图9示出了根据一个实施例的文本预测的装置900。
如图9所示,装置900可以包括:
预取单元901,配置为根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组;
预测单元902,配置为对各个预取词组并行执行前向预测,从而确定基于若干个预取词组匹配到的最长词序列,其中,针对单个预取词组,按照预取词组中各个词的出现顺序以词数量逐个递增的方式确定至少一个候选词序列,最长词序列通过以下比对结果确定:并行为各个预取词组对应的全部候选词序列预测下一个词,并将预测得到的词与相应候选词序列在相应预取词组中的相应词进行比对,得到各个比对结果;
更新单元903,配置为根据最长词序列确定相应的若干输出词作为当前词的下文。
在一个实施例中,单个预取词组至多包含预定数量的预取词,且单个预取词组在当前业务请求及历史生成文本中的出现频次满足以下条件:大于预定频次阈值,或者按照由大到小的顺序排列在前n个。
根据一些可选的实现方式,预测单元902配置为:根据各个预取词组中各个词的位置,确定各个预取词的位置标识以及相应的注意力掩码矩阵,其中,预取词是预取词组中的词;基于位置标识和掩码矩阵执行前向预测。
在一个实施例中,若干个预取词组通过以当前词为根节点的字典树各条词路径上的节点确定,且不同预取词组在同一次序的相同预取词按照字典树结构进行合并。
在一个进一步的实施例中,各个预取词分别对应的各个位置标识由字典树中的节点位置确定,且按照对应于字典树中的节点位置依次排列,掩码矩阵的各列分别对应各个预取词,掩码矩阵的各行分别对应各个候选词序列,且与候选词序列中的各个词对应的各个元素为预定字符。
根据一个可能的设计,若干个预取词组存在以下第一词组的情况下,所述最长词序列包括,所述第一词组以及根据最长候选词序列预测的下一个词:第一词组中的全部预取词与为第一词组确定的各个候选词序列预测的下一个词均一致。
另一方面,在全部预取词组中当前词的下一个词均与针对当前词预测的下一个词不一致的情况下,最长词序列包括针对当前词预测的下一个词。
其中,在未预测到结束符的情况下,更新单元903还可以通过最长词序列中的最后一个词更新当前词。
在一些可选的实施方式中,大模型基于注意力机制实现,以预测到的各个词以及各个预取词对应的k、v值以kvs缓存形式存储是否被选中的状态,更新单元903还可以根据最长词序列更新kvs缓存中各个词的k、v值状态。
值得说明的是,图9所示的装置900与图3描述的方法相对应,图3示出的方法实施例中的相应描述同样适用于装置900,在此不再赘述。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当上述计算机程序在计算机中执行时,令计算机执行结合图3等所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,该存储器中存储有可执行代码,在处理器执行上述可执行代码时,实现结合图3等所描述的方法。本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所描述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所描述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。
Claims (12)
1.一种文本预测的方法,用于基于大模型进行文本生成过程中,为当前词预测下文,所述方法包括:
根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组;
对各个预取词组并行执行前向预测,从而确定基于所述若干个预取词组匹配到的最长词序列,其中,针对单个预取词组,按照预取词组中各个词的出现顺序以词数量逐个递增的方式确定至少一个候选词序列,所述最长词序列通过以下比对结果确定:并行为各个预取词组对应的全部候选词序列预测下一个词,并将预测得到的词与相应候选词序列在相应预取词组中的相应词进行比对,得到各个比对结果;
根据所述最长词序列确定相应的若干输出词作为当前词的下文。
2.如权利要求1所述的方法,其中,单个预取词组至多包含预定数量的预取词,且单个预取词组在当前业务请求及历史生成文本中的出现频次满足以下条件:大于预定频次阈值,或者按照由大到小的顺序排列在前n个。
3.如权利要求1所述的方法,其中,所述对各个预取词组并行执行前向预测包括:
根据各个预取词组中各个词的位置,确定各个预取词的位置标识以及相应的注意力掩码矩阵,其中,所述预取词是预取词组中的词;
基于所述位置标识和所述掩码矩阵执行前向预测。
4.如权利要求3所述的方法,其中,所述若干个预取词组通过以当前词为根节点的字典树中各条词路径上的节点确定,且不同预取词组在同一次序的相同预取词按照字典树结构进行合并。
5.如权利要求4所述的方法,其中,各个预取词分别对应的各个位置标识由字典树中的节点位置确定,且按照对应于字典树中的节点位置依次排列,所述掩码矩阵的各列分别对应各个预取词,所述掩码矩阵的各行分别对应各个候选词序列,且与候选词序列中的各个词对应的各个元素为预定字符。
6.如权利要求1所述的方法,其中,所述若干个预取词组存在以下第一词组的情况下,所述最长词序列包括,所述第一词组以及根据最长候选词序列预测的下一个词:所述第一词组中的全部预取词与为第一词组确定的各个候选词序列预测的下一个词均一致。
7.如权利要求1所述的方法,其中,在全部预取词组中当前词的下一个词均与针对当前词预测的下一个词不一致的情况下,所述最长词序列包括针对当前词预测的下一个词。
8.如权利要求1所述的方法,其中,所述方法还包括:
在未预测到结束符的情况下,通过所述最长词序列中的最后一个词更新当前词。
9.如权利要求1所述的方法,其中,所述大模型基于注意力机制实现,已预测到的各个词以及各个预取词对应的k、v值以kvs缓存形式存储是否被选中的状态,所述方法还包括:
根据所述最长词序列更新kvs缓存中各个词的k、v值状态。
10.一种文本预测的装置,用于基于大模型进行文本生成过程中,为当前词预测下文,所述装置包括:
预取单元,配置为根据当前业务请求及历史生成文本,确定将当前词作为起始词的若干个预取词组;
预测单元,配置为对各个预取词组并行执行前向预测,从而确定基于所述若干个预取词组匹配到的最长词序列,其中,针对单个预取词组,按照预取词组中各个词的出现顺序以词数量逐个递增的方式确定至少一个候选词序列,所述最长词序列通过以下比对结果确定:并行为各个预取词组对应的全部候选词序列预测下一个词,并将预测得到的词与相应候选词序列在相应预取词组中的相应词进行比对,得到各个比对结果;
更新单元,配置为根据所述最长词序列确定相应的若干输出词作为当前词的下文。
11.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-9中任一项的所述的方法。
12.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311688510.8A CN117744631A (zh) | 2023-12-10 | 2023-12-10 | 文本预测的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311688510.8A CN117744631A (zh) | 2023-12-10 | 2023-12-10 | 文本预测的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117744631A true CN117744631A (zh) | 2024-03-22 |
Family
ID=90260165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311688510.8A Pending CN117744631A (zh) | 2023-12-10 | 2023-12-10 | 文本预测的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117744631A (zh) |
-
2023
- 2023-12-10 CN CN202311688510.8A patent/CN117744631A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6870076B2 (ja) | ニューラル機械翻訳システム | |
CN109783817B (zh) | 一种基于深度强化学习的文本语义相似计算模型 | |
CN109033068B (zh) | 基于注意力机制的用于阅读理解的方法、装置和电子设备 | |
US10664744B2 (en) | End-to-end memory networks | |
US11544474B2 (en) | Generation of text from structured data | |
Collobert et al. | Natural language processing (almost) from scratch | |
KR102260646B1 (ko) | 자연어 처리 시스템 및 자연어 처리에서의 단어 표현 방법 | |
CN109840287A (zh) | 一种基于神经网络的跨模态信息检索方法和装置 | |
CN111191002A (zh) | 一种基于分层嵌入的神经代码搜索方法及装置 | |
KR102033458B1 (ko) | 계층적 포인터 네트워크를 이용한 상호참조해결 시스템 및 방법 | |
CN111966810B (zh) | 一种用于问答系统的问答对排序方法 | |
CN113312505B (zh) | 一种基于离散在线哈希学习的跨模态检索方法及系统 | |
US20190130251A1 (en) | Neural question answering system | |
Chen et al. | Joint multiple intent detection and slot filling via self-distillation | |
CN110413987B (zh) | 基于多个预测模型的标点符号预测方法及相关设备 | |
JP2023159453A (ja) | 文生成装置、文生成学習装置、文生成方法、文生成学習方法及びプログラム | |
CN111462751A (zh) | 解码语音数据的方法、装置、计算机设备和存储介质 | |
Lee et al. | Accelerating recurrent neural network language model based online speech recognition system | |
CN110688450A (zh) | 一种基于蒙特卡洛树搜索的关键词生成方法、基于强化学习的关键词生成模型及电子设备 | |
CN110084323A (zh) | 端到端语义解析系统及训练方法 | |
CN110597968A (zh) | 一种回复选择方法及装置 | |
WO2021239631A1 (en) | Neural machine translation method, neural machine translation system, learning method, learning system, and programm | |
CN110929006B (zh) | 一种数据型问答系统 | |
CN109918484B (zh) | 对话生成方法和装置 | |
WO2019163752A1 (ja) | 形態素解析学習装置、形態素解析装置、方法、及びプログラム |
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 |