作者 | 契元
当前大模型效率优化的主流叙事,几乎都围绕“让每个 token 算得更快”展开:线性/稀疏/混合注意力机制加速注意力计算、KV-Cache 压缩减少显存占用并降低注意力计算的时间开销。这些工作本质上是在不改变 token 序列长度的前提下,降低单位 token 的计算和存储开销。
但还有另一条路径长期被忽视:如果 token 数量本身就变少了呢?同样的文本,更少的 token 数会直接带来推理时间的等比例下降。最近,一篇 arXiv 预印版论文《Counting and Min-Cost Encoding for Tokenization in Large Language Models(https://arxiv.org/abs/2610.01127)》正是从这一角度切入:不优化 token 的计算方式,而是让同一段文本编码成更少的 token。优化效果十分显著,在 250K 规模的词表上,英文文本的压缩率提升 30% 左右,词表扩展至百万条目时相比同规模现有分词器提升 67.0%。
这条路径的起点是分词器(tokenizer),它决定文本如何转换为模型处理的 token 序列。长期以来,BPE(Byte-Pair Encoding,字节对编码)分词器被广泛用于大模型,其词表构建和文本切分都遵循“自底向上、逐步合并”的思路。但贪心合并关注局部选择,不保证整段文本的切分最优;许多 BPE 分词器还限制 token 跨越预分词边界,使“the United States”等高频短语难以作为一个 token 编码。
针对这些局限,这项工作提出 CNF-MCE 框架:通过直接统计和实际使用频率构建词表,再通过全局代价优化完成切分。它将词表构建与文本编码分开,让分词不再依赖逐步合并的历史。
实验显示,约250K 规模的词表在英文网页上,相比 o200k_base 和 qwen250k,字符级压缩率分别提高 26.7% 和 32.4%;词表扩展至约百万条目时,相比同规模 BPE,提升达到 67.0%。在 1.8B 和 8B 两个模型规模上,从头训练的语言模型也保持了具有竞争力的下游平均表现。
1 BPE 分词器的局限
BPE(Byte-Pair Encoding,字节对编码)是广泛使用的分词方法。它从基础符号出发,反复选择高频的相邻符号对进行合并,逐步形成词表;编码新文本时,再按学到的合并顺序完成切分。这条路径简单、成熟,但也让最终结果受到合并历史的约束。
词表容量被中间产物占据:长 token 往往需要经过若干中间产物才能形成。即使这些中间 token 在实际编码中很少使用,它们仍可能占据词表位置。词表容量增加后,这类条目也可能累积,造成容量与实际使用之间的落差。
预分词边界限制跨词压缩:许多 BPE 分词器会先按空格、标点等规则进行预分词,把文本分成小块,再限制合并发生在块内。这样做便于控制切分,却也限制了高频短语成为一个 token 的机会。已有方法尝试放宽边界,但仍保留顺序合并机制。
局部合并不保证全局最优:局部合并不保证整段文本的切分代价最低。论文给出的例子中,使用同一个 qwen250k 词表,BPE 把“ pysimplesoap”切成“ pys|imp|les|o|ap”,而 MCE 得到“ py|simple|soap”:token 从五个减少为三个,切分也更贴近词的组成。
另一个例子是“memory_efficient”。BPE 得到“memory|_eff|icient”,MCE 则得到“memory|_|efficient”。两者使用的 token 数相同,边界却不同:MCE 将下划线独立出来,保留两侧完整单词,展示了压缩之外的切分差异。
CNF-MCE 将词表构建转向直接统计候选,并让编码器比较完整切分路径的代价。这种设计同时打开了词表选择和文本切分的优化空间。
2CNF:先统计候选,再按真实使用筛选
CNF 的全称是 Counting and Filtering,即“计数与过滤”。它先构建较大的候选词表,再通过一次基于使用频率的过滤,选出最终词表。
计数阶段(Counting),算法直接统计训练语料中的合法子串,并按出现频率保留候选。候选既包含子词和完整单词,也允许包含多个词的短语。例如,“significant year”可以作为跨词候选,而从前一个单词内部开始的“ficant year”会被排除。这样既扩大了候选范围,又限制了不合理的跨词片段。
面对大规模语料,逐一统计所有子串会带来很高的时间和内存开销。CNF 按长度区间分轮计数,先处理短候选,再利用已有的前缀频率与合法性规则提前停止无效扩展,并通过多线程统计、汇总结果。论文报告,在 32 线程配置下,百万篇英文文档的原始词表构建耗时不到一小时。
过滤阶段(Filtering)则回答另一个关键问题:一个子串出现很多次,是否意味着它值得占据词表?答案取决于它在切分中实际被使用多少次。若一个短片段常被更完整的 token 覆盖,即便原始出现频率很高,也可能很少进入最终序列。
例如,两个高频单词可能共享一个前缀,计数时,这个前缀会随着两个单词反复出现。但当完整单词也进入词表,编码器可能更多地选择完整单词,使共享前缀的实际使用次数下降。CNF 的过滤正是利用这种区别,让词表选择与编码结果建立联系。
因此,CNF 使用原始词表和 MCE 对训练语料编码一次,统计每个 token 的实际使用频率,再保留使用频率最高的条目。整个过程无需反复迭代删词,也无需维护合并路径,让有限的词表容量优先服务于实际编码。
计数阶段的“多轮”与反复优化词表是不同的过程:前者按候选长度分批统计,利用短片段的频率减少长片段的无效搜索;后者则不断调整词表并重新编码语料。CNF 将搜索候选与筛选最终条目分开,最后只进行一次基于实际使用的过滤。
论文的混合词表训练使用了 690 万篇文档,覆盖英文、数学、代码、中文和多语言文本;先构建 500 万条目的原始词表,再筛选出约 138K 和 250K 两种规模的最终词表。
3MCE:在整段文本上寻找最低代价切分
MCE 的全称是 Min-Cost Encoding,即“最小代价编码”。给定词表,它通过动态规划比较不同切分路径,找出总编码代价最低的方案。
每个候选 token 的代价包含三部分:
单位 token 代价:鼓励使用更少的 token。
边界惩罚:边界规则允许完整的多词片段,同时抑制不完整的跨词切分。
可选的微小偏好项:在代价接近时,对某些词表条目给予轻微倾向。
这意味着,MCE 优化的是包含边界约束的总代价。它既关注序列长度,也关注切分位置。例如,完整覆盖多个词的短语可以不受边界惩罚,而从词中间开始、跨越多个单位又在中间结束的候选,会受到惩罚或被排除。
它也不同于“从左到右每次选最长片段”的正向最大匹配。当前最长的 token 可能让后面的文本被切得更碎;动态规划则把后续切分的代价纳入考虑,从整段文本的角度作出选择。
可以把它理解为在文本的各个位置之间寻找一条最低代价路径:词表中的每个匹配片段连接两个位置,一条完整路径对应一种切分。算法从文本末尾向前计算,记录每个位置的最佳选择,再恢复整条路径。所谓“全局最优”,针对的是给定词表和代价函数下的完整编码结果。
MCE 不需要 BPE 合并列表,也不需要 UnigramLM 的 token 概率,因此可以用于不同方法构建的词表。词表负责提供候选,编码算法负责选择路径,两者可以独立研究和改进。
编码过程在 UTF-8 字节序列上进行,词表包含全部 256 个单字节 token,保证任意输入都有可用的编码路径。解码时,根据 token ID 查出对应字节并依次拼接,就能恢复文本。这为多语言输入和特殊字符提供了基础覆盖。
4实验数据:压缩效率与下游能力的系统验证
六类文本评测:压缩收益覆盖多个领域
论文将分词器分为 100K—160K 和 200K—250K 两个词表规模组,在英文网页、英文 PDF、数学、代码、中文及多语言文本上比较。每类随机抽取一万篇文档,同一类别内,各分词器处理相同文本。
这里的主要指标是 CPT,即平均每个 token 表示多少字符。CPT 越高,表示同样的文本所需 token 越少。两个规模组的词表大小接近,但并非逐一完全相等。
较小规模组中,mix138k 在六类文本上均取得最高 CPT。英文网页上,相比 ds128k 和 qwen152k,分别提升 20.6% 和 23.2%;多语言文本上,提升分别达到 25.4% 和 26.8%。
较大规模组中,mix250k 同样在六类文本上领先。与各 BPE 基线的结果如下:
这组数据说明,收益覆盖了自然语言、技术文本和代码等不同场景。英文网页上,CPT 提升 32.4%,换算为处理相同文本的 token 数量,约减少 24.5%。两个百分比对应不同指标,实际延迟和成本还取决于模型与部署配置。
百万词表:新增容量能否持续发挥作用?
词表越大,理论上越能容纳长词和短语,但新增条目能否被使用,需要实验检验。论文在英文网页上,将词表规模从 1K 逐步翻倍至约 1M,并为每种配置设置 100M 输出 token 的评估预算。
结果显示,压缩率和词表利用率均呈现明显差异:
压缩率持续提升:BPE 的 CPT 随词表扩大逐渐趋于饱和;CNF-MCE 则持续获益。从 512K 扩展到 1M 时,BPE 的 CPT 仅提高 0.6%,CNF-MCE 提高 6.8%。在百万规模,二者 CPT 分别为 4.869 和 8.129,后者高出 67.0%。
词表利用率达 96.9%:BPE 为 52.9%,CNF-MCE 为 96.9%。这里的“利用率”指在评估输出中至少出现一次的词表条目占比。它反映词表覆盖使用的广度,不能直接解释为每个条目都已得到充分训练。
在这套实验中,CNF-MCE 同时保持了更高压缩率和更广泛的词表使用。直接统计与使用频率过滤,为大词表继续释放容量价值提供了实证支持。
从扩展曲线看,小词表阶段二者差距较小,随着容量增加,差距逐渐拉开:128K 时,BPE 与 CNF-MCE 的 CPT 分别为 4.707 和 6.475;512K 时则为 4.841 和 7.613。更大的候选空间与跨词片段,让 CNF-MCE 在这些配置下持续获得更长的有效表示。
更多验证:编码质量与固定词表切分
除字符级压缩外,论文还使用第三方工具 TokEval,在覆盖 13 种语言的 FLORES-200 子集上评估分词器。mix250k 的字节级压缩率从 qwen250k 的 5.143 提高到 6.329,增幅约 23.1%;评估语料上的词表利用率从 21.47% 提升到 26.96%。这与百万词表实验采用不同语料和预算,应分别理解。
数字切分方面,三位数字边界对齐的 F1 从 0.3703 提高到 0.7655;两个分词器的文本精确重建率均为 1.0。结果表明,更紧凑的编码可以与无损文本重建并存。
多语言评测还考察了不同语言之间的编码差异,以及 token 使用分布。mix250k 的跨语言公平性基尼指标略有下降,Rényi 效率有所提高,说明在这组语料上,语言间编码差异有所缩小,token 使用分布也更均衡。多维评估让分词器的收益得到更完整的呈现。
固定词表实验进一步区分了词表和编码器的作用。在 qwen250k 上,仅将编码算法换为 MCE,也能减少 token,但幅度较小:英文网页每千字符由 222.5 个降至 221.6 个。使用 CNF 词表时,MCE 又优于正向最大匹配。大幅压缩收益来自词表构建与编码方法的配合。
下游任务验证
下游验证中,研究者在 1.8B 和 8B 规模从头训练模型,评估覆盖知识、数学、代码、常识和语言理解的 11 个英文基准。完成衰减阶段训练后,1.8B 两组模型平均分均为 44.1;8B 的 CNF-MCE 模型为 51.6,BPE 基线为 51.0。
这些模型采用基于 SmolLM3 的训练方案,在同一规模内保持其余模型与训练设置一致,并比较第一阶段和衰减阶段结束时的检查点。这样的设计将评估从“文本切得是否更短”推进到“用这种表示训练后,模型能否完成任务”,为分词器的实际价值提供进一步证据。
单项任务存在取舍:8B 模型在 GSM8K 和 LAMBADA 上分别领先 17.9 和 7.8 个百分点,在 HumanEval 和 MMLU 等任务上则较低。8B 实验比较的是 mix250k 与 qwen152k,词表规模不同。因此,当前证据支持更高压缩效率下的平均能力保持竞争力,同规模大词表的下游对比仍待开展。
5分词器,为大模型效率打开新的优化空间
更短的序列可以让相同的 token 上下文窗口容纳更多文本,并有望减少注意力计算和 KV 缓存需求。CNF-MCE 展示了一个值得继续探索的方向:用直接计数获得丰富候选,用真实使用筛选词表,再用全局优化选择切分。随着大模型走向更长上下文和更复杂任务,文本进入模型之前的这一环,也拥有可观的优化空间。
热门跟贴