VocabX 如何通过专化 SLM 词表将推理成本降低 77%
How Specializing the Vocabulary of SLMs Can Cut Inference Cost by 77% in Real Applications
Dharma-AI 在 Hugging Face 博客中介绍即将发表的 VocabX 论文,该方法按 token 成本而非出现频率重建领域模型词表,在基于 Qwen3-4B 的葡萄牙语作文评分器上将实测推理成本降低 77.0%,平均回复长度从 350 token 降至 101 token,bench 分数从 0.703 升至 0.810。
原文用生产环境评测器给出词表改造前后的实测成本与质量对比,并说明压缩边界该停在哪里。
通过对 Qwen、Gemma 等通用开源模型进行微调而专门针对某一领域或任务的模型,会继承一个为多领域和通用应用构建的词表。
在我们生产环境中运行的一个作文评分器中,该词表将模型最常写出的文本切分成了许多 token。本文预览了 VocabX 论文的部分结果(我们即将发布):我们如何围绕每个 token 的成本而非其频率来专门化词表,并在不更换基础模型的情况下将实测推理成本降低了 77%。
分词器通常被视为基础模型的一项固定属性,被继承下来且不作改动。对于专精于单一领域的模型而言,它可能是最大的成本杠杆之一,而且它在任何训练步骤之前就已确定。
我们生产环境中运行的系统之一是一个基于 Qwen3-4B 构建的葡萄牙语作文自动评分器。它接收作文、题目和支持文本,并返回一个 JSON 评估结果,包含分数和针对每项能力的评语。
该模型本身已经很小,只有 40 亿参数,并且已经针对该任务训练过。然而它的分词器仍是原始的 Qwen3-4B 分词器,是为多种语言和多种文本构建的。在评分器中,它只用于单一语言(葡萄牙语)和单一响应格式。这带来了两项成本:评分器在每次请求中写出的文本消耗的 token 多于所需,并且在生成每个 token 时,模型都要对一个包含 151,669 个条目的词表进行打分,其中许多条目该任务几乎从不使用。
我们用一种称为 VocabX 的方法重建了该词表,保持相同的基础模型、相同的数据和相同的训练配方。本文中的数字来自论文的当前版本(仍在评审中),在发表前可能发生变化。
为所有人构建的词表
领先的语言模型以 token 读写,而分词器决定文本如何变成 token。领先的通用模型的分词器是在来自众多领域和语言(从源代码到合同再到中文)的大型文本集合上训练的。对于通用模型而言,这一选择是合理的。
对于在单一领域中使用的模型,它同时造成两种浪费。
第一种是碎片化。分词器恰恰把该领域重复最多的内容切分成许多片段。在评分器中,每个响应都以相同的 JSON 外层结构、相同的能力名称、相同的评估短语开头。在合同中,是样板条款。在代码中,是标识符。这些序列每一个都要花费多个 token,而本可以只用一个,并且模型在每次请求中都要为每一个付出代价。
第二种是冗余。词表携带了数万个该领域从不使用的条目,而模型在生成每个 token 时都要为所有这些条目计算分数。一个针对美国学校生物考试评分而调优的模型几乎不会用中文写作,但它在每一步都要计算每个中文 token 的概率。词表把该领域重复最多的内容切分成许多片段,并携带该领域从不使用的条目。
读取便宜,写入昂贵
自然的反应是统计 token 数量并试图减少数量。但数量并不是账单。
要理解为什么生成的 token 成本更高,不妨看看推理是如何工作的。它分为两个阶段。在预填充阶段,模型通过一次网络前向传播处理整个输入:从 GPU 内存中读取的每个权重都会被所有输入 token 复用,此时的瓶颈是计算。在解码阶段,模型一次生成一个 token,每个 token 都需要一次完整的前向传播。每次读取的权重只被使用几次,GPU 大部分时间都在等待数据从内存到达:瓶颈变成了内存带宽。
这种效应在我们所处的场景中最为明显:以中等批次规模服务的小模型。对请求进行批处理可以将权重读取分摊到多个请求上,从而缓解问题,但并不能解决它。在每一个解码步骤中,模型还要读取 KV 缓存,即保存已处理上下文并随上下文增长的注意力内存。在我们测量的案例中,评分器显示,生成一个 token 的成本是读取一个 token 的 7.4 倍,但这一比例会随硬件、问题、批次大小、上下文长度等因素变化,并且可能更大。总体而言,方向是成立的:生成比读取更贵。
想象一家航运公司按箱子收费,但寄出箱子的费用是收到箱子的七倍。减少箱子总数有帮助。减少寄出箱子带来的帮助是前者的七倍。一种对输入和输出同等压缩的方法会错过大部分可节省的成本。
账单的第三个组成部分是词表本身。模型的最后一层,即 LM head,将内部状态转换为每个可能 token 的分数。为此,它为每个词表条目保留一行参数。在 Qwen3-4B 规模的模型中,该矩阵几乎占参数的 10%。大模型可以毫无察觉地吸收这一比例,但它对小模型来说是个负担。
而且这笔成本并非只支付一次。输入层只查找正在读取的 token 所在的那一行,但 LM head 会为每个生成的 token 读取并乘以整个矩阵。由于解码已经受内存带宽限制,每一行额外的数据都意味着每一步要搬运更多数据。一个领域从未使用的条目,其成本与一个频繁使用的条目完全相同。这就是为什么添加 token 可能同时降低 token 数量并提高账单。VocabX 在其选择标准中不包含这一项,但它通过两个步骤控制词表大小:子词合并用更小的、领域特定的词表替换基础词表,而宏则在固定预算下加入。在评分器中,输出层从约 152,000 行降至约 65,000 行。
为什么现有解决方案不够好
调整模型的词表并不是一个新想法。文献中的参考方法,如快速词表迁移(FVT)、多词分词(MWT)以及 Liquid AI 的原地分词器扩展(in-place BPE,即从原始词表继续 BPE 训练),已经减少了碎片化。当我们在自己的问题上测试它们时,发现了两个局限。
它们按频率而非成本选择 token。一个在输入中频繁出现的表达,对它们来说比一个在响应中出现频率较低的表达更有价值,即使后者在服务时成本更高。
它们只在单一层面上工作。它们要么调整单词被切分成片段的方式,要么将整个短语合并为一个 token。这三者中没有一个能在同一标准下同时做到这两点。而评分器最大的浪费恰恰出现在长而重复的片段上,比如 JSON 信封,子词方法只能逐个合并各部分后才能触及它。
我们如何解决
VocabX 解决了这两个局限,以及第三个问题——它出现在解决第一个问题的显而易见路径上。
第一,我们改变了问题。我们不再问候选方案能节省多少 token,而是问它能节省多少成本和时间。每个被消除的 token 都乘以它所在字段的价格:系统提示、用户消息或模型响应。在我们测量的案例中,评分器里响应中节省的一个 token 价值是输入中节省的一个 token 的 7.4 倍,词汇表据此构建。
第二,我们同时处理两个层面。回到航运公司的例子:你可以通过更好地打包每件物品来切割箱子,或者通过认识到同样的十二件套每周都发货并将整套装进一个箱子。VocabX 两者都做。在子词层面,它重建领域词被切分成片段的方式。在多词层面,它寻找重复的整个片段,从短表达式到整行和 JSON 信封,并将每个转换为单个 token,我们称之为宏 token。两个层面都在同一成本标准下选择,各自有自己的预算。
为了找到这些片段,我们使用了五个挖掘器,自动搜索在语料库中重复出现的片段,每个专门针对一种重复类型:长词、整行、表达式、完整句子,以及带标点的结构如 JSON 和标签。在八个语料库上平均,最后一个贡献最大,在代码上它单独就占了 17.5 个百分点。如果没有全部五个,评分器上的 token 减少量会下降 55.6 个百分点。
第三,我们估计样本看不到的内容。按成本选择 token 需要知道每个候选在已选 token 之后还能节省多少。精确测量这一点需要在每次选择后重新处理整个语料库,数万次。在大规模下做这件事的常见方法是在文档样本上测量,然后样本中不存在的候选获得零增益。
一个在 50,000 份文档中出现 37 次的表达式,在 400 份文档的样本中只有约 26% 的概率出现。在合同语料库中,只有 16.6% 的候选出现在 400 份文档的样本中;其余的从未被评估。
一个候选的增益有两部分。一是它在整个语料库上节省多少,这可以精确计算,无需样本。二是这部分节省中有多少尚未被已选 token 覆盖,只有这部分需要估计。对于样本看不到的候选,我们基于它能看到的候选的行为进行统计估计,而不是用零。一个在样本中罕见但在语料库中频繁的候选重新回到了竞争中。
仅这一改变,在相同样本和相同预算下,将合同语料库上的 token 减少量从 44.7% 提高到 52.8%。
评分器中发生了什么变化
为了衡量真实效果,我们用相同的基础模型、相同的数据、相同的配方和相同的随机种子训练了七个版本的评分器。它们之间唯一的区别是分词器。所有版本都在同一台测试机器上运行了相同的 500 个请求,该机器配备 RTX 5090 GPU 和 vLLM 推理服务器,成本根据实测运行时间计算。
模型的响应平均从 350 个 token 降至 101 个 token。成本下降了 77.0%。质量以 bench 分数衡量,该分数综合了评分准确率以及筛除离题或违规作文的准确率,从 0.703 上升到 0.810。
达到这一目标需要一次路线修正。词表的第一版将每项能力的评分与周围的 JSON 融合为单个宏 token。这是最紧凑的方案,但质量下降了:其 bench 分数为 0.689,低于生产评分器的 0.703。当评分被包含在宏 token 内时,评分与结构的每种组合都成为同一 token 的不同变体,模型在一步中同时选择两者。让评分拥有自己的 token 使每次响应多花 2 个 token,将 bench 分数提升到 0.810,并且在测量中甚至更便宜:成本降低 77.0%,而融合版本为 73.3%。
这一教训适用于评分器之外。当被压缩的片段承载的正是模型存在的意义所在的那个决策时,压缩是有代价的。目标不是尽可能便宜的词汇表,而是保留重要 token 的最便宜词汇表。
超越评分器
为了弄清这一收益是否是我们这一场景所特有的,我们在五个公共领域(合同、医学论文、科学论文、新闻和 Python 代码)和三个模型家族(Qwen3、Llama-3.1 和 Gemma-3)上,将 VocabX 与三种参考方法进行了比较。所有方法使用相同的挖掘文档和测试文档,以及相同的词汇表上限。
在全部十五种组合中,VocabX 的压缩幅度都超过最强的参考方法,领先 1.2 到 9.3 个百分点。在估计推理成本方面,VocabX 的剪枝版本也在全部十五种组合中领先,在 Qwen3 上平均领先 10.2 个百分点,在 Llama-3.1 上领先 7.5 个百分点,在 Gemma-3 上领先 13.6 个百分点。在合同领域,剪枝版本以 113,426 个词汇表条目实现了 62.6% 的 token 缩减,而最佳就地 BPE 配置为 61.8%,其使用了 207,803 个条目。
只为重要的 token 付费
VocabX 不会让模型变得更聪明。它让模型不再为它无需逐段写出的文本付费,也不再为一个它永远不会使用的词汇表打分。在我们的评分器中,在相同的基础模型和相同的训练配方下,这将实测推理成本降低了 77%。
专业化通常从数据和权重开始。它也可以从更早的一层开始,即词汇表。
完整方法、每个实验的表格以及被弃用的干预措施将收录在 VocabX 论文中,我们很快会发布。
来源
- Dharma-AI。“VocabX: Cost-Weighted Vocabulary Adaptation for Domain-Specific Language Models。” 准备中(2026)。
- Gee, Leonidas, et al. “Fast vocabulary transfer for language model compression。” EMNLP Industry Track(2022)。
- Gee, Leonidas, et al. “Multi-word tokenization for sequence compression。” EMNLP Industry Track(2023)。
- Smith, Jimmy T.H., et al. “In-Place Tokenizer Expansion for Pre-trained LLMs。” arXiv:2607.15232(2026)。
延伸阅读
- 同一集群,利用率高出 33 个点:改变的是顺序
- GPU 管理:为什么闲置的 GPU 是新的停飞飞机
- 为什么专业化不可避免
- 专业化胜过规模:大多数 AI 采购决策忽视的一个战略变量
- 文本退化:大多数基准测试都不追踪的一种生产故障模式
探索 Hugging Face 上的 Dharma AI,试用我们的演示、下载我们的开放模型,并了解专用 AI 系统如何在真实企业应用中胜过通用模型。
来源:Hugging Face Blog · huggingface.co









