随着大型语言模型(LLMs)在各个领域的广泛应用,其训练和部署的效率问题日益凸显。传统的子词标记化方法,如Byte Pair Encoding (BPE) 或 Unigram,虽然能够在一定程度上压缩文本,但其压缩率通常只有4倍左右。LLMs在处理文本时,需要消耗大量的计算资源来处理这些标记。而且这些方法在处理长文本时,由于自注意力层的计算复杂度与序列长度的平方成正比,限制了模型能够处理的序列长度,进而影响了模型捕捉长距离依赖的能力。
本文提出的方法通过引入“等信息窗口”(Equal-Info Windows)压缩技术,显著提升了大型语言模型(LLMs)在神经压缩文本上的学习效率和效果。该技术通过将文本分割成等比特长度的块,不仅解决了传统压缩方法导致的学习障碍,还使得模型能够在更少的计算资源下处理更多的文本数据,从而提高了训练效率。由于压缩后的文本序列更短,模型在推理时需要的自回归生成步骤减少,这不仅降低了延迟,还使得模型能够更好地处理长文本,捕捉更远的依赖关系。这种方法的优势在于,它不仅提供了更高的压缩率,还保持了文本的可学习性,为LLMs的训练和部署带来了实质性的改进。
方法
Figure 1 显示了对训练大型语言模型(LLM,记为 M2)在神经压缩文本上的方法的高层次概述。这个过程分为几个关键步骤:
训练 M1 作为字节级语言模型:首先,模型 M1 被训练为一个标准的字节级语言模型。给定左侧的上下文,M1 能够为每个可能跟随的字节分配一个概率值。这个步骤是基础,因为它为后续的文本压缩提供了必要的概率信息。
使用 M1 压缩语料库文本:接着利用训练好的 M1 模型来压缩整个语料库文本。M1 为文本中的每个位置分配的概率被用作压缩算法的输入,这里使用的是算术编码(Arithmetic Coding,简称 AC)。算术编码是一种支持使用动态符号概率的压缩算法,它根据 M1 分配给文本的实时概率来压缩文本。
将压缩后的位流分块成标记:压缩后的文本被转换成位流,这个位流随后被分块成固定大小的标记,例如 8 位的块。这样,原本的文本就被转换成了一系列的标记,这些标记代表了原始文本的压缩形式。
训练 M2 在压缩文本上的模型:最后使用这些由压缩位流转换来的标记来训练 M2。M2 被训练为一个语言模型,它直接在这些压缩文本的标记上进行操作,而不是在原始的字节级文本上。就是说M2 学习的是如何处理和生成压缩文本,而不是原始文本。
这个过程的关键创新之处在于,它通过压缩来减少模型在训练和推理时需要处理的标记数量,从而提高效率。同时,它也提出了一种新的方法,让模型学习如何从压缩的表示中恢复出语言的结构和语义信息。
这种方法的优势在于,如果能够成功训练 M2,那么在处理相同数量的原始文本时,模型将需要更少的计算资源,因为压缩后的文本更短。由于压缩文本的每个标记包含了更多的原始文本信息,这可能有助于模型捕捉到更长距离的依赖关系,从而提高其语言理解能力。
然而直接在神经压缩文本上训练LLMs面临着学习上的挑战,主要是因为强压缩往往导致输出难以被模型学习。为了克服这一难题,本文提出了“等信息窗口”(Equal-Info Windows)的压缩技术,该技术通过将文本分割成固定大小的块,每块压缩到相同的比特长度,从而保证了压缩文本的可学习性。通过这种方法,研究者们不仅展示了在神经压缩文本上有效学习的可能性,而且在困惑度和推理速度等基准测试中取得了优于字节级基线的性能。尽管与相同参数数量的子词标记器相比,该方法在困惑度上表现稍逊,但它的优势在于更短的序列长度,这有助于减少自回归生成步骤,降低延迟。
研究团队采用了来自C4数据集的英文网络文本作为训练数据。在进行标记化处理后,每个文档末尾都添加了<EOS>
标记,以表示文档结束。接着,将128个文档串联起来,形成了一个长文本序列。使用UTF-8字节级标记化,平均文档长度为2,170字节,这些长序列的平均长度达到了277,760字节。尽管存在文档分割,但这些长序列在语言模型训练中被视为“连续”的。然后,这些序列被分割成单独的样本,并使用SeqIO工具的确定性数据集功能进行洗牌处理。
用于压缩的模型M1是一个仅包含解码器的Transformer模型。它使用了表4中的3m大小,并设置了1,024的上下文长度。训练过程中使用了128的批量大小,以及从1.0开始、在10,000步预热后使用rsqrt衰减学习率计划。M1模型使用Adafactor优化器进行了2,500,000步的训练。模型的前馈层采用了ReLU激活函数,并在每层都使用了可学习的相对注意力嵌入。M1和M2都是在C4训练数据上训练的,但用于评估M2的最终验证数据在M1训练期间是未见过的,因此没有信息泄露。
在压缩C4训练数据时,研究者使用了10,240字节的示例长度,并应用了以下压缩技术之一。这导致压缩后的样本平均长度远大于目标序列长度512 M2标记。算术编码(Arithmetic Coding)使用了一个仅包含解码器的Transformer语言模型来模拟概率分布,而静态逻辑算术编码(Static Logits Arithmetic Coding)则用静态字节单字模型替换了上下文敏感的语言模型。
Figure 2 展示了“等信息窗口”(Equal-Info Windows)方法的工作流程,这是一种创新的文本压缩技术,用于支持大型语言模型(LLMs)的训练。这种方法将文本编码成一系列 N 位的窗口,每个窗口代表了原始文本中的一部分内容,并且每个窗口都压缩成了固定数量的比特。
在“等信息窗口”方法中,文本的压缩过程是逐步进行的。首先,使用算术编码(Arithmetic Coding, AC)算法对文本进行逐字节编码,直到达到预设的比特阈值,例如 16 位。这个阈值定义了每个窗口的最大比特数。一旦当前窗口的比特数达到这个阈值,就不能再添加更多的字节,否则会超出目标比特限制。
这个过程的一个关键特点是每次创建新窗口时,都会重置 M1 模型和算术编码算法。每个窗口都是独立压缩的,不携带任何来自前一个窗口的信息。这种设计确保了每个窗口都可以作为一个独立的单元被解码,而不需要依赖于其他窗口的信息。因此模型在处理每个窗口时,都从相同的起点开始,这有助于简化模型的训练过程。
通过这种方法,文本被分割成了一系列等长的比特序列,每个序列都是通过算术编码压缩得到的。这些序列随后被用作训练 M2 的输入,M2 是一个直接在压缩文本上进行操作的语言模型。这种方法的优势在于,它能够在保持高压缩率的同时,提供足够的信息,使模型能够学习并理解压缩文本中的模式和结构。
大多数压缩方法输出的是比特流,但直接在比特上训练M2并不理想。因此,研究者需要一种方法将比特流分割成标记,创建一个更标准的训练语言模型所需的序列。通过将每N位比特组合成一个标记,形成了词汇量为2^N的标记序列。
每个M2模型都在200,000步的训练中,使用256的批量大小和512的序列长度。这样,每个模型都训练了26.2十亿个标记。这些标记中绝大多数(超过98.9%)是非填充标记。训练时,数据集的洗牌是固定的,并且在训练过程中对数据集状态进行了检查点,以确保每个训练运行中模型恰好看到每个样本一次。
M2模型与使用两种标准标记化方法训练的基线模型进行了比较。所有超参数,包括序列长度(512),都与上文提到的M2训练相同。基线模型包括直接在UTF-8字节上训练的模型,以及使用SentencePiece标记化文本的模型。
算术编码依赖于基于模型的对数累积分布来创建“区间”,这些区间覆盖词汇表中的每个符号。因此,由于数值噪声导致对数的微小变化,可能会导致完全不同的输出比特流。这可能使得在压缩中实际使用神经语言模型变得困难。数值噪声的常见来源包括批量大小的变化、并行计算、计算基础设施的变化(CPU与GPU与TPU,不同的TPU拓扑等)、推理的变化等。
实验
实验结果明确显示,直接使用算术编码(Arithmetic Coding, AC)压缩文本的方法并不成功。具体来说,即使模型规模不断扩大,使用这种压缩方法训练的模型在预测标记时表现与随机猜测无异,无法学习到有效的语言模型信息。这表明,尽管算术编码在理论上能提供最优的压缩率,但其压缩过程的复杂性和输出的不透明性使得LLMs难以从中学习到有用的模式。
与简单方法形成鲜明对比的是,使用SentencePiece进行标记化的基线模型在所有模型规模上均表现出色,甚至在某些情况下超过了直接在字节级别训练的模型。这一结果归功于SentencePiece稳定的词元到标记的映射,以及其在捕捉语言结构方面的有效性,这为模型提供了丰富的语言学信息,从而在困惑度等指标上取得了更好的性能。
等信息窗口(Equal-Info Windows)压缩方法的成功应用,为在压缩文本上训练LLMs提供了新的可能性。通过将文本分割成固定信息量的窗口,并独立地对每个窗口进行算术编码压缩,模型能够逐步学习每个窗口的压缩文本。特别是当使用16位窗口和65,536的词汇量时,模型在困惑度和推理速度上的表现尤为突出,显示出与SentencePiece相媲美的性能。
尽管GZip作为一种压缩算法在实际应用中非常普遍,但实验结果表明,使用GZip压缩文本进行训练的模型在性能上并不具有竞争力。GZip压缩的文本虽然在字节级别上看起来更加均匀分布,但其压缩效率较低,导致模型在处理相同数量的原始文本时需要更多的计算资源,从而在性能上落后于其他方法。
在对等信息窗口大小进行的一系列实验中,研究者发现短窗口(如16位)在模型学习中表现最佳。这可能是因为短窗口内的压缩文本更容易被模型学习,而长窗口则可能由于信息量过大而难以被模型有效捕捉和学习。此外,短窗口也有助于减少模型在解码时所需的计算步骤,从而提高推理速度。
为了探究比特流的标记化是否是LLMs学习压缩文本的主要难点,研究者进行了实验,结果表明,无论是8位还是16位的标记化策略,模型都能够在一定程度上学习压缩文本。这表明,比特流的标记化过程本身并不是导致学习困难的主要原因。
将算术编码格式化为序列到序列任务的实验显示,变换器模型在学习和模拟算术编码过程方面存在困难。即使在提供了真实文本作为输入的情况下,模型在压缩和解压缩任务上的表现也远未达到预期的准确率,这进一步证实了算术编码过程本身的复杂性是学习的主要障碍。
使用更大的词汇量(如65,536)对模型性能的影响实验表明,更大的词汇量不仅提高了压缩比,还有助于提高模型在比特/字节上的性能。这可能是因为更大的词汇量为模型提供了更多的标记选择,从而能够更精细地捕捉压缩文本中的信息。
分析
在对等信息AC(EqualInfoAC)和SentencePiece两种标记化方案进行深入分析时,研究者发现两者在稳定性和语义性方面存在显著差异。SentencePiece倾向于产生相对稳定的文本到标记的映射,例如,单词“elephants”在不同上下文中被一致地分割成相同的标记序列。相比之下,EqualInfoAC的标记化结果则显得不稳定,同一词汇在不同上下文中可能被分割成不同的标记序列,且这些标记往往不与语言单位如单词或词根对齐。这种不稳定性可能会对模型学习造成额外的挑战,因为它需要更强的上下文理解能力来准确预测标记。
进一步分析等信息AC压缩中模型的学习过程,研究者观察到模型似乎是逐步学习解码过程的。在训练初期,模型首先学习窗口中的第一个标记,随后是第二个和第三个,而更深层次的标记则需要更多的训练步骤才能被有效学习。这种逐步学习的现象表明,模型在解码过程中对前一个标记的理解为其解码后续标记提供了基础。然而,当模型需要解码超过一定比特长度的AC输出时,性能会下降,这表明模型在跟踪AC算法的长期依赖方面存在限制。
研究者还探讨了压缩数据的分布特性对LLMs学习的影响。在理论上,压缩算法产生的输出应该是均匀分布的,因为原始模型中的所有信息都已被压缩算法的模型所捕捉。但实验结果表明,即使是经过压缩的数据,也仍然存在可以被模型学习到的非均匀分布模式。通过计算不同压缩方法产生的位流的KL散度,研究者发现,与随机数据相比,某些压缩方法(如GZip和较短的等信息窗口)产生的数据具有更多的非均匀性,这为模型提供了更多的学习信息。这一发现表明即使是在高压缩率下,数据的某些结构特征仍然可以被保留并用于模型训练。
通过这些分析,研究者得出结论,尽管等信息AC在某些方面不如SentencePiece稳定和语义化,但它提供了一种有效的途径来训练LLMs处理压缩文本。模型能够逐步学习解码过程,并且压缩数据中的非均匀分布特性对于模型学习是有益的。这些发现为未来在更高压缩率下设计可学习的文本表示方法提供了有价值的见解。
尽管直接在算术编码压缩的文本上训练LLMs的方法并不可行,但研究表明通过等信息窗口压缩,可以在神经压缩文本上有效地训练LLMs。这些方法将为LLMs提供更高的压缩率,更接近每个标记的等信息量,并帮助模型更直接地处理原始文本。
论文链接:https://arxiv.org/abs/2404.03626