← 返回 2026-05-21

通过字节级模拟解耦子词分词对语言模型训练的好处 Decoupling the Benefits of Subword Tokenization for Language Model Training via Byte-level Simulation

Théo Gigant, Bowen Peng, Jeffrey Quesnelle 📅 2026-05-14 👍 11 2026-07-13 08:36
子词分词 字节级建模 归纳偏置 语言模型 预训练

解耦子词分词在语言模型训练中的贡献,发现样本吞吐量和边界先验是关键

前置知识

Byte-Pair Encoding (BPE)

BPE是一种自底向上的子词分词方法,基于BPE语法压缩算法。它从字符级别开始,迭代地合并出现频率最高的字节对,形成新的词表项。例如,在英文语料中,'e'和'r'可能先合并成'er',然后'er'和'h'合并成'her'。这个过程持续到达到预设词表大小(如32k或64k)。BPE通过压缩输入序列长度来平衡词表大小、序列长度和每个token的信息密度,是当前LLM如GPT-2、LLaMA、Mistral的默认分词方法。

本文的核心研究问题就是理解BPE等子词分词方法为何优于原始字节建模,需要先掌握BPE的工作原理才能理解作者的实验设计和假设。

字节级语言模型

字节级语言模型直接处理UTF-8编码的字节序列,而不是经过子词分词的token序列。UTF-8将每个Unicode字符编码为1到4个字节,例如英文字母占1字节,中文字符占3字节。字节级模型对输入有更细粒度的访问,可以避免子词分词带来的'字符盲视'、语言依赖性能差异、分词歧义等问题。但由于序列长度约为子词模型的4倍,在相同FLOPs预算下训练样本吞吐量更低,这是字节级模型面临的主要挑战。

本文通过字节级模型来模拟子词分词的各种效应,需要理解字节级模型的特点和挑战才能理解实验设计的目的。

归纳偏置

归纳偏置是指学习算法对解空间的先验假设或偏好,使得模型在有限数据下能够更好地泛化。在神经网络中,归纳偏置可以通过架构设计(如卷积网络的平移不变性)或训练过程注入(如本文中的子词边界信息)来实现。例如,卷积网络假设空间局部性,Transformer假设序列中的位置关系。好的归纳偏置应该与任务的真实结构对齐,从而提高学习效率和泛化能力。

本文假设子词边界作为归纳偏置能改善字节级模型训练,这是本文的核心假设之一,需要理解这个概念才能评估作者的贡献。

isoFLOPs预算

isoFLOPs(等FLOPs)是指在固定计算预算下比较不同模型或训练策略。由于子词分词压缩了序列长度,在相同FLOPs预算下,子词模型可以处理约4倍的训练样本。这意味着即使模型架构相同,子词模型在相同计算成本下能'看'到更多的训练数据,这是isoFLOPs比较的核心。例如,假设每个样本需要$N$次前向传播,FLOPs为$F = N imes C$,其中$C$是每次前向的计算量。子词分词将序列长度从$4L$压缩到$L$,使得$C$减少约4倍,因此在相同$F$下可以处理4倍的样本。

本文的假设2关于样本吞吐量的优势就是在isoFLOPs框架下分析的,需要理解这个概念才能理解实验结果的含义。

Kolmogorov复杂性

Kolmogorov复杂性是指描述一个对象所需的最短计算机程序的长度,是信息论中衡量信息复杂度的指标。在文本处理中,一个更复杂的文本需要更多的信息来描述。Chung和Kim(2023)通过估计token化文本的Kolmogorov复杂性来量化不同分词策略的效果,发现增加BPE词表大小能降低token序列的复杂性,从而提高下游性能。这是因为更大的词表能更好地捕捉语料中的高频模式,使得每个token携带更多信息。

相关工作提到了Kolmogorov复杂性与词表大小的关系,这是理解子词分词压缩效应的理论基础。

研究动机

子词分词是现代大语言模型的标准配置,GPT-2、LLaMA、Mistral等主流模型几乎都使用BPE或Unigram分词,但其具体贡献仍然不清楚。字节级语言模型作为替代方案,虽然能解决子词分词带来的'字符盲视'、语言依赖性能差异、前缀形式不足、分词歧义、训练不足token等问题,但始终难以匹配子词模型的训练效率和下游性能。这个性能差异被归因于子词分词的'好处',但这些好处通常被整体分析,缺乏解耦的量化研究。例如,更大的词表不仅增加了embedding容量,还减少了序列长度,从而提高了训练期间的样本吞吐量;子词边界可能提供与人类语义对齐的结构先验,有助于泛化。这些因素相互交织,难以区分各自的具体贡献。

本文的目标是本文的目标是解耦子词分词对语言模型训练的各种效应,通过在字节级预训练管道中逐一模拟这些效应来量化它们的贡献。作者提出了7个假设,涵盖计算效率、结构归纳偏置和优化目标三个方面,通过控制实验逐一测试。具体而言,作者使用1.7B参数的字节级语言模型(基于LLaMA-3架构)在fineweb-edu数据集上训练,通过扩大输入embedding参数、人工增加训练样本吞吐量、提供子词边界先验、使用子词距离编码、优化子词交叉熵、预测下一个子词等方式来模拟子词分词的各种效应,并与基线字节级模型进行比较,所有模型使用相同的bits-per-byte交叉熵损失进行评估。

与已有工作不同的是,本文的独特切入角度是从'逆向工程'的视角出发,不是直接比较子词模型和字节级模型,而是将子词分词的潜在好处拆解为独立的假设,通过在字节级模型中逐一模拟这些效应来量化它们的贡献。这种方法允许作者控制变量,隔离每个因素的影响,而不是像之前的研究那样将所有因素混合分析。例如,之前的研究如Gallé(2019)和Zouhar等(2023)观察到BPE压缩率与性能相关,但没有区分是压缩带来的样本吞吐量增加还是其他因素;Schmidt等(2023)开发了一种比BPE压缩更多的分词方案但性能更差,挑战了BPE的有效性仅来自压缩效应的观点。本文通过控制实验直接测试这些假设,填补了理解子词分词贡献的空白。

核心方法

本文的方法核心是在字节级预训练管道中逐一模拟子词分词的各种效应,通过控制实验来量化它们的贡献。作者使用1.7B参数的字节级语言模型,基于标准的LLaMA-3架构,使用TorchTitan框架在fineweb-edu数据集上训练。数据被token化为UTF-8字节,同时使用LLaMA-3 BPE分词器提供字节级子词边界信息。所有模型比较使用相同的bits-per-byte交叉熵损失在独立的fineweb-edu验证子集上计算。实验设计遵循控制变量原则,大部分超参数保持不变,所有对输入、输出或模型架构的修改都设计为引入可忽略的计算开销,以便观察到的是目标效应而不是计算预算的差异。

本文的核心创新点是将子词分词的潜在好处解耦为7个独立假设,通过在字节级模型中逐一模拟来量化它们的贡献。这种方法的关键在于控制变量,确保每个实验只改变一个因素,从而能够隔离该因素的影响。例如,为了测试假设2(样本吞吐量),作者将序列压缩4倍,在输入层将4个连续字节的embedding相加,在隐藏层行为不变,模型实际上处理长度为$L$的潜在token序列,包含来自$4L$个输入token的信息。这种方法在不改变计算预算的情况下,将字节级模型的样本吞吐量提升到与子词模型相同的水平,从而可以单独观察样本吞吐量对性能的影响。这种解耦分析方法在之前的研究中尚未出现,填补了理解子词分词贡献的空白。

方法步骤详情

实验步骤分为7个独立测试,对应7个假设。步骤1:测试假设1(扩大词表参数),引入多头n-gram embedding表来模拟子词LLM更大的输入词表,在输入层添加约70M额外参数,匹配使用35k token词表的子词LLM的embedding表大小。步骤2:测试假设2(样本吞吐量),将序列压缩4倍,将$4L$长度的序列分割为连续的4字节块,在输入层将每个块中4个连续字节的embedding相加,模型输出形状为$(L, V)$,损失计算为预测下一个块的第一个字节。步骤3:测试假设3和4(子词边界先验和归纳偏置),提供子词开始或结束边界的二进制序列,其embedding被添加到输入字节embedding中,分别测试作为先验(训练和验证都使用)和归纳偏置(仅训练时使用)的效果。步骤4:测试假设5(子词距离先验),用子词位置编码替换字节位置编码,同一子word的后续字节使用相同重复位置。步骤5:测试假设6(优化子词交叉熵),使用子词交叉熵作为目标训练字节级LLM。步骤6:测试假设7(预测下一个子词),使用子词输出词表,优化从子词结束字节预测的下一个子word的交叉熵。所有实验在前50k步使用干预设置,之后返回基线训练 regime,以观察干预是否能形成有用的归纳偏置。

技术新颖性

本文的技术新颖性体现在三个方面:首先是解耦分析方法,首次将子词分词的潜在好处拆解为独立的假设并通过控制实验逐一测试,这种方法填补了理解子词分词贡献的空白。其次是实验设计的精细控制,通过在字节级模型中模拟子词分词的特定效应,同时保持其他因素不变,能够准确量化每个因素的影响。例如,通过压缩序列来模拟样本吞吐量增加,而不是简单地使用更少的FLOPs;通过提供边界信息而不是实际分词来测试先验效应。最后是发现的重要性,作者发现样本吞吐量、子词边界先验和归纳偏置是最重要的因素,而词表大小、子词距离、优化目标等因素的贡献不显著,这些发现为改进字节级和子词模型的预训练提供了明确的指导方向,例如可以通过增加样本吞吐量或注入结构先验来提高字节级模型的性能,而不是简单地扩大词表或修改优化目标。

实验结果

实验结果表明,子词语言模型相对于字节级语言模型的优越性能涉及多个不同量级的效应,具体而言,与假设2、3和4相关的效应在这个规模上最为显著。对于假设1(扩大词表参数),图1显示扩大输入embedding参数带来的性能提升很小,表明假设1不能解释子词和字节级语言模型之间的显著性能差距,尽管扩大类似词表的参数仍然是改进语言模型的有前景方向,如近期文献所示。对于假设2(样本吞吐量),图2显示即使仅在50k步内将样本吞吐量提高4倍,也带来显著收益,快速返回正常 regime 后,模型B交叉基线模型A的性能,并很快稳定在相同的斜率,这个实验强烈支持假设2。对于假设3和4(子词边界先验和归纳偏置),图3a显示访问子词分割边界带来显著性能提升,支持假设3,特别是子词结束边界比子词开始边界提供更大优势,因为它们泄露未来信息;子词开始边界也提高模型性能,表明它们提供的统计先验是有用的归纳偏置。为了测试这个假设,作者训练模型仅在训练时访问子词边界,并在验证时移除边界信息,50k步后也移除训练时的子词边界访问,恢复基线训练 regime。图3b显示,虽然子词结束边界作为先验比子词开始边界更有用,但在这个设置中不提供有用的归纳偏置,可能因为模型过度依赖这个先验;另一方面,子词开始边界不泄露未来字节信息,在这个设置中提供改善模型性能的先验,这些观察支持假设3和4。对于假设5(子词距离先验),图4a和图4b显示子词距离可以是有用的先验,但不构成这个设置中的强归纳偏置。结合前一部分,作者得出结论子词边界构成比子词距离更强的先验和归纳偏置,突出了假设5相对于之前假设的较小相对意义。对于假设6(优化子词交叉熵),图5显示与基线相比几乎没有改善,表明假设6在这个规模上的影响最小。对于假设7(预测下一个子word),图6显示下一个子词预测任务在这个规模上训练语言模型是比下一字节预测更差的目标,拒绝假设7。

Validation loss when scaling input embedding parameters
Figure 1: Validation loss when scaling input embedding parameters
Validation loss when scaling sample throughput by 4 times for 50k steps
Figure 2: Validation loss when scaling sample throughput by 4 times for 50k steps
Validation loss when providing the start or end of subword boundaries
Figure 3: Validation loss when providing the start or end of subword boundaries
Validation loss when using subword distances in the positional embedding
Figure 4: Validation loss when using subword distances in the positional embedding
Validation loss when optimizing for cross-entropy per subword
Figure 5: Validation loss when optimizing for cross-entropy per subword
Validation loss when optimizing for next subword prediction for 50k steps
Figure 6: Validation loss when optimizing for next subword prediction for 50k steps
查看结构化数据
任务指标本文基线提升
验证集bits-per-byte交叉熵 验证损失(bits-per-byte) 模型B(提高样本吞吐量)在前50k步显著优于基线,50k步后返回正常 regime 后性能交叉基线并稳定在相同斜率 模型A(基线字节级模型) 显著提升,支持假设2
验证集bits-per-byte交叉熵 验证损失(bits-per-byte) 模型C(子词结束边界先验)显著优于基线,子词开始边界也有提升但小于结束边界 模型A(基线字节级模型) 显著提升,支持假设3和4
验证集bits-per-byte交叉熵 验证损失(bits-per-byte) 模型B(扩大词表参数)仅带来微小性能提升 模型A(基线字节级模型) 提升微小,假设1不解释性能差距
验证集bits-per-byte交叉熵 验证损失(bits-per-byte) 模型B(优化子词交叉熵)几乎没有改善 模型A(基线字节级模型) 几乎没有改善,假设6影响最小
验证集bits-per-byte交叉熵 验证损失(bits-per-byte) 模型B(预测下一个子word)性能劣于基线 模型A(基线字节级模型) 性能下降,拒绝假设7

局限与改进

作者承认的研究局限性包括:首先,为了在探索广泛假设的同时保持计算可行性,几个关键实验干预(如人工增加样本吞吐量、注入子词边界先验、强制子词距离先验、优化下一个子词预测目标)仅在最初50k训练步骤引入,然后恢复基线字节级训练 regime。虽然这个设置足以在某些设置中观察到验证损失和训练动态的显著变化,但这些先验在不同模型规模和干预持续时间下的行为可能不同。如果在完整的、全规模预训练运行中维持这些性能增益、或缺乏增益,是否会复合、平台还是衰减,仍然是一个开放问题。其次,本文的核心方法学选择是逐一复制子词分词诱导的效应,通过人工隔离这些变量,作者成功量化了它们对子词-字节性能差距的个体贡献,但这种解耦方法不考虑这些机制之间的复杂相互作用。例如,增加训练样本吞吐量的好处和子词边界的结构归纳偏置很可能在标准子词语言模型训练过程中相互作用,未来工作应该研究这些复合效应,以确定这些孤立变量在组合到单个字节级架构中时是加法、协同还是冗余。第三,实验仅在1.7B参数语言模型上执行,专门在英语为主的fineweb-edu数据集上训练为UTF-8字节。正如在讨论中指出的,某些假设的意义可能在更大或更小的参数规模上转变;此外,由于英语子词自然与形态分割很好地对齐,子词边界提供的归纳偏置的强度可能在建模具有不同形态结构的语言时显著不同。将字节级模拟框架扩展到高度多语言数据集和更大模型规模仍然是未来工作的有前景方向。

独立分析的弱点

独立分析的弱点包括:首先,实验干预仅在50k步骤内实施,这可能不足以观察长期效果,特别是在完整预训练运行中,这些先验的效果可能会复合、衰减或改变。例如,子词边界先验可能在早期训练阶段提供显著优势,但在后期可能变得冗余或甚至有害,因为模型可能过度依赖这些先验而学习不到真正的模式。改进方向是延长干预时间或在不同训练阶段引入干预,以观察长期效果。其次,实验仅在1.7B参数模型上执行,这个规模可能不足以观察某些效应。例如,假设1(扩大词表参数)在小模型上可能更显著,但在1.7B模型上可能被其他因素掩盖。改进方向是在不同参数规模(如68M、7B、13B)上重复实验,以观察效应的尺度依赖性。第三,实验仅使用英语为主的fineweb-edu数据集,这限制了结论的普遍性。英语是弱形态变化语言,子词边界与形态分割很好地对齐,但在强形态变化语言(如阿拉伯语、芬兰语)中,这种对齐可能不强,子词边界的归纳偏置效果可能不同。改进方向是在多语言数据集上重复实验,以观察语言特性对结论的影响。第四,实验设计未能测试不同假设之间的相互作用,例如样本吞吐量和边界先验可能协同作用,这种相互作用在完整预训练中可能很重要。改进方向是设计组合实验,测试多个效应同时存在时的效果。

未来方向

作者提出的未来研究方向包括:扩展字节级模拟框架到高度多语言数据集和更大模型规模,以观察语言特性和尺度对结论的影响;研究这些复合效应,以确定这些孤立变量在组合到单个字节级架构中时是加法、协同还是冗余;将干预延长到完整预训练运行,以观察这些先验的效果是否会复合、平台还是衰减。基于成果可延伸的方向包括:设计针对不同目的的不同分词方案,例如在早期训练阶段使用子词分词以利用其先验优势,在后期训练阶段切换到字节级以避免子词分词的缺点;研究如何规模化这些效应,类似于近期研究从模型词表解耦的类似词表参数的新缩放方向;将发现应用于改进字节级和子词模型的预训练,例如通过增加样本吞吐量(如Minixhofer等提出的将子词LLM继续预训练为字节级LLM)或注入结构先验(如Zheng等训练LLM使用混合原始unicode和子词分词、神经压缩或gzip压缩的序列)来提高字节级模型的性能;研究如何优化子词分词本身,例如设计更好的子词边界或距离编码,以最大化其先验和归纳偏置的效果。

复现评估

复现评估:论文没有明确提到代码开源,但提到使用TorchTitan框架和标准LLaMA-3架构,fineweb-edu是公开数据集,LLaMA-3 BPE分词器也是公开可用的。实验在1.7B参数模型上执行,训练细节在附录A中提供,这有助于复现。然而,论文没有提供具体的训练脚本和超参数配置,这可能增加复现难度。算力方面,1.7B参数模型在fineweb-edu上训练100k步需要相当大的计算资源,估计需要数十到数百个GPU小时,这对大多数研究团队来说是可访问的。总体而言,复现难度中等,主要挑战是缺少完整的训练脚本和配置文件,以及需要相当大的计算资源。如果作者能开源代码和训练配置,复现难度会大大降低。