←新闻详情

Hugging Face更新于 10月25日 21:26

VocabX 如何通过专精 SLM 词表将实际应用推理成本降低 77%

How Specializing the Vocabulary of SLMs Can Cut Inference Cost by 77% in Real Applications

AI 导读

VocabX 通过按成本而非频次选择 token、同时重建子词切分与多词合并,把领域专用小模型的词表压缩到更小规模,在实际应用中把推理成本降低 77%。以评分模型为例,生成一个 token 的成本是读取一个 token 的 7.4 倍,输出层词表从约 152,000 行减到约 65,000 行。该方法针对 Qwen3-4B 这类小模型在中等批量下的内存带宽瓶颈,而 FVT、MWT 和 in-place BPE 等方法只按频次选词、只处理单一层面。

正文 · AI 翻译

为所有人构建的词表

主流语言模型以 token 为单位读写,而分词器决定文本如何变成 token。主流通用模型的分词器是在来自众多领域和语言的大量文本集合上训练出来的,从源代码到合同再到中文,无所不包。对于通用模型而言,这一选择是合理的。

而对于只用于单一领域的模型,这一选择会同时造成两种浪费。

第一种是碎片化。分词器恰恰把该领域重复最多的内容切分成许多片段。在评分模型中,每个响应都以相同的 JSON 外层结构、相同的能力名称、相同的评估短语开头。在合同中,是那些样板条款。在代码中,是标识符。这些序列每一个都要花费好几个 token,而其实一个就够了,并且模型在每次请求时都要为每一个这样的 token 付出代价。

第二种是冗余。词表中包含数万个该领域从不使用的条目,而模型在生成的每个 token 上都要为所有这些条目计算分数。一个专门用于批改美国中学生物考试的模型几乎永远不会用中文写作,然而它在每一步都要计算每一个中文 token 的概率。词表把该领域重复最多的内容切分成许多片段,同时又携带该领域从不使用的条目。

自然的反应是统计 token 数量并设法减少这个数量。但数量并不等于账单。

要理解为什么生成一个 token 的成本更高,不妨看看推理是如何工作的。它分为两个阶段。在预填充(prefill)阶段,模型通过一次网络前向传播处理整个输入:从 GPU 内存中读取的每个权重都会被所有输入 token 复用,瓶颈在于计算。在解码(decode)阶段,模型一次生成一个 token,而每个 token 都需要一次完整的前向传播。每次读取的权重只会被使用几次,GPU 大部分时间都在等待数据从内存中到达:瓶颈变成了内存带宽。

这一效应在我们所处的场景中恰恰最为明显:以中等批量服务的小模型。将请求分批可以把权重读取分摊到多个请求上,从而缓解这一问题,但并不能解决它。在每一个解码步骤中,模型还要读取 KV 缓存,即保存已处理上下文并随上下文增长的注意力内存。在我们测量的案例中,也就是评分模型,生成一个 token 的成本是读取一个 token 的 7.4 倍,但这一比例会随硬件、问题、批量大小、上下文长度及其他因素而变化,并且可能更大。总体而言,方向是成立的:生成比读取更贵。

设想一家航运公司按箱子收费,但寄出箱子的收费是收到箱子的七倍。减少箱子总数有帮助。减少寄出箱子则能带来七倍的帮助。一种对输入和输出同等压缩的方法会错过大部分可能的节省。

账单的第三个组成部分是词表本身。模型的最后一层,即 LM head,会把内部状态转换为对每个可能 token 的分数。为此,它为每个词表条目持有一行参数。在 Qwen3-4B 这种规模的模型中,这个矩阵几乎占了参数的 10%。大模型可以毫无察觉地吸收这一占比,但它会给小模型带来负担。

而且这笔成本并非只付一次。输入层只查找正在读取的那个 token 所在的行,但 LM head 会为每个生成的 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 使每个响应多花 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 个。

VocabX 并不会让模型变得更聪明。它只是让模型不再为那些它无需逐段写出的文本付出代价,也不再为一个它永远不会使用的词表进行评分。在我们的评分器中,这一改动将实测推理成本降低了 77%,而基础模型和训练配方均保持不变。

专精通常始于数据和权重。它也可以更早一步开始,即从词表开始。

完整方法、每项实验的表格以及被弃用的干预措施都将收录在 VocabX 论文中,我们很快就会发表。

来源

Dharma-AI。“VocabX:面向领域专用语言模型的成本加权词表适配。” 准备中(2026)。

Gee, Leonidas, et al. “用于语言模型压缩的快速词表迁移。” EMNLP Industry Track(2022)。

Gee, Leonidas, et al. “用于序列压缩的多词分词。” EMNLP Industry Track(2023)。

Smith, Jimmy T.H., et al. “预训练 LLM 的原位分词器扩展。” arXiv:2607.15232(2026)。

延伸阅读

为什么专精是不可避免的

在 Hugging Face 上探索 Dharma AI,试用我们的演示、下载我们的开放模型,并了解专用 AI 系统如何在真实企业应用中优于通用模型。

来自该作者的更多内容

来源

Hugging Face