生命周期最优分词:词汇表大小作为部署场景相关的基础设施参数

arXiv cs.LG 论文

摘要

本文认为最优分词器词汇表大小并非固定不变,而是取决于部署场景,例如批大小和推理量。通过roofline分析以及在A10G和A100 GPU上的实验,本文展示了在端侧部署和数据中心服务之间,生命周期最优词汇量可变化多达16倍,且对质量影响极小。

arXiv:2608.11361v1 公告类型:新 摘要:分词器词汇表大小是大语言模型(LLM)基础设施中的一个基础设计选择,但通常在训练时基于惯例而非部署分析来确定。我们表明成本最优词汇表并非一个常数,而是服务场景的函数。我们将总部署成本形式化为 $C_{lifecycle}(V) = C_{train}(V) + \lambda \cdot C_{infer}(V, B)$,其中 $\lambda$ 是推理量,$B$ 是服务批大小。通过在跨越内存受限到计算受限范围的两代GPU家族(A10G,ridge $\approx$ 117 FLOP/byte;A100,ridge $\approx$ 183 FLOP/byte)上进行受控实验,我们证明了:(1)推理最优词汇量随服务批大小变化达16倍,从 $B=1$ 时的32k到 $B=64+$ 时的524k,这由 $V \times d$ 去嵌入矩阵读取的摊销驱动;(2)在1.3-2.3B模型规模下,质量(每字节比特数,BPB)在 $V=65$k 时达到最优,证实了词汇表偏好随规模而变化;(3)对于生产部署,生命周期最优词汇量比训练最优词汇量相差最多16倍。质量在最优范围内近似不变(BPB差异<2%),使得词汇表成为一个纯系统优化项,在测量范围内无质量损失。我们的结果提供了可操作的能力规划指导:端侧部署($B=1$)应使用 $V \approx 32$k;数据中心服务($B \geq 64$,$\lambda \geq 10$)应使用 $V \approx 131$-262k。
查看原文
查看缓存全文

缓存时间: 2026/08/13 15:35

# 词汇表大小作为部署模式相关的基础设施参数

## 生命周期最优分词:词汇表大小作为部署模式相关的基础设施参数

Ankit Gubrani(联系邮箱:[email protected])Satyanarayana Kakollu(联系邮箱:[email protected])

###### 摘要

分词器词汇表大小是大语言模型 \(LLM\) 基础设施中的基础设计选择,然而它通常在训练时根据惯例而非部署分析来确定。我们表明,成本最优的词汇表并非一个常数,而是服务模式的函数。我们将总部署成本形式化为 $C_{lifecycle}(V)=C_{train}(V)+\lambda\cdot C_{infer}(V,B)$,其中 $\lambda$ 是推理量,$B$ 是服务批大小。通过在跨越内存受限到计算受限两种模式的两类 GPU 家族(A10G,脊点 $\approx$117 FLOP/byte;A100,脊点 $\approx$183 FLOP/byte)上进行受控实验,我们展示了:(1) 推理最优词汇表随服务批大小发生 $16\times$ 的变化——从 $B=1$ 时的 32k 变化到 $B=64+$ 时的 524k,其驱动力来自 $V\times d$ 解嵌入矩阵读取的摊还;(2) 在 1.3–2.3B 模型规模下,质量(每字节比特数,BPB)在 $V=65$k 时最优,证实了词汇表偏好与模型规模相关;(3) 对于生产部署,生命周期最优词汇表与训练最优词汇表的偏差最高可达 $16\times$。在最优范围内质量近似不变(BPB 差异 $<2\%$),这使得在测量范围内词汇表纯粹是一个系统优化问题,不会带来质量损失。我们的结果为容量规划提供了可操作的指导:端侧部署($B=1$)应使用 $V\approx 32$k;数据中心服务($B\ge 64$,$\lambda\ge 10$)应使用 $V\approx 131$–262k。

###### 关键词:

分词、词汇表优化、LLM 推理、容量规划、roofline 模型、生命周期成本、服务基础设施

## I 引言

每个在生产环境中部署的大语言模型都携带一个词汇表——用于对所有输入和输出文本进行编码的固定子词 token 集合。词汇表大小 $V$ 在分词器训练时就被一次性设定,此时任何推理基础设施尚未规划。然而 $V$ 对训练吞吐量和推理成本都具有一阶影响:它决定了解嵌入矩阵 $W\in \mathbb{R}^{V\times d}$ 的大小,而该矩阵必须在每个解码步骤从高带宽内存(HBM)中读取。

在每个自回归步骤中,模型产生一个 $d$ 维隐藏向量,并通过 $W$ 将其投影以获得覆盖所有 $V$ 个 token 的 logits。该投影在解码阶段的内存流量中占主导地位:对于词汇表 $V=262144$ 和隐藏维度 $d=512$ 的 fp16 模型,仅权重矩阵一项就相当于每一步读取 $262144\times 512\times 2=256$MB。该读取成本在很大程度上取决于服务批大小 $B$。

关键的物理洞见来自 roofline 分析[5 (https://arxiv.org/html/2608.11361#bib.bib5)]。解嵌入矩阵乘 $[\mathbf{h}]_{B\times d}\cdot[W^T]_{d\times V}$ 的算术强度为 $I\approx B$ FLOP/byte(fp16)。当 $B=1$(端侧部署)时,$I=1\ll\rho$,其中 $\rho$ 是 GPU 的脊点,因此该运算属于内存受限:成本随 $V$ 线性增长,权重矩阵以接近峰值带宽的速度被流式读取。当 $B=256$(数据中心)时,$I=256>\rho$,该运算属于计算受限:同样的 $V\times d$ 读取被摊还到 256 个序列上,每序列成本降低约 $\sim$256$\times$。因此,**最优词汇表取决于服务批大小**——而这是一个在分词器冻结很久之后才确定的部署参数。

这一观察对容量规划具有直接启示。为 LLM 服务而配置 GPU 集群的基础设施团队必须考虑词汇表选择如何影响内存带宽需求、每加速器吞吐量以及满足延迟 SLA 所需的加速器数量。词汇表过小的模型在数据中心批大小下浪费 GPU 计算周期;词汇表过大的模型则会恶化端侧延迟。现有的词汇表选择方法都未捕捉到这一点,因为它们只单独优化训练质量[1 (https://arxiv.org/html/2608.11361#bib.bib1)]或单样本推理[2 (https://arxiv.org/html/2608.11361#bib.bib2)]。

当前实践或根据惯例选择 $V$(Llama-2/3 中为 32k[6 (https://arxiv.org/html/2608.11361#bib.bib6)],GPT-4 中为 100k+[7 (https://arxiv.org/html/2608.11361#bib.bib7)],Gemma-2 中为 256k[8 (https://arxiv.org/html/2608.11361#bib.bib8)]),或根据训练时质量指标[1 (https://arxiv.org/html/2608.11361#bib.bib1)]选择。这两者都没有考虑解嵌入步骤的成本如何随服务模式变化。

### I-A 贡献

1. 1. 一个生命周期成本模型 $C_{lifecycle}(V,B,\lambda)$,联合刻画了训练和推理成本随词汇表大小的变化,并以服务批大小 $B$ 和推理量 $\lambda$ 为参数。两个成本分量共享物理单位(ms/byte),因此 $\lambda$ 是一个无量纲且具有物理可解释性的比值。
2. 2. 在两个 GPU 脊点(A10G $\approx$117,A100 $\approx$183 FLOP/byte)上对批大小 $B\in\{1,16,64,256,1024,4096\}$ 的推理最优词汇表进行了经验测量,并通过 CUDA graph 捕获和隔离头部测量消除了内核启动开销。$16\times$ 的最优 $V$ 偏移被确认为无开销干扰。
3. 3. 在 1.3–2.3B 参数规模下,使用 bf16 精度的完全分片数据并行(FSDP)进行了与规模相关的质量测量,表明质量最优词汇表从 16k(100M 规模)移动到 65k(1.5B 规模),与 Tao 等人的 $V^*\propto N^{0.5}$ 缩放律[1 (https://arxiv.org/html/2608.11361#bib.bib1)]一致。
4. 4. 一个生命周期扫描汇总表(表 VI (https://arxiv.org/html/2608.11361#S5.T6))和配置建议,为 $\lambda$ 和 $B$ 的函数关系提供直接指导,适用于基础设施容量规划决策。

## II 背景与相关工作

### II-A 词汇表优化方面的已有工作

Tao 等人(NeurIPS 2024)[1 (https://arxiv.org/html/2608.11361#bib.bib1)]推导出损失最优词汇表随 $V^*\propto N^{0.5}$ 缩放,其中 $N$ 是模型参数量。他们的分析仅考虑训练时的 FLOPs;没有对推理成本、批大小依赖或硬件模式进行建模。我们通过一个以服务批大小为参数的推理成本模型扩展了他们的质量洞见。

Length-MAX(2025)[2 (https://arxiv.org/html/2608.11361#bib.bib2)]通过优化 $\text{score}(t)=\text{freq}(t)\cdot|t|$ 来平衡 token 频率和长度,从而构建推理高效的分词器。其基准测试仅在 A100 上以 $B=1$ 进行;没有批大小扫描,没有生命周期框架,成本函数中也不包含字节搬移项。

Compute-Optimal Tokenization(2026)[3 (https://arxiv.org/html/2608.11361#bib.bib3)]将训练时 FLOPs 与压缩率和损失(BPB)结合考虑。其第 3.5 节明确指出“推理最优边界\[的探索\]不足”。我们直接填补了这一空白。

Hardware Co-Design Scaling Laws(2026)[4 (https://arxiv.org/html/2608.11361#bib.bib4)]在 Jetson Orin 上针对 roofline 模型对深度、宽度和量化进行协同设计,但词汇表保持固定。我们将词汇表作为协同设计变量加入,并在多个硬件脊点之间进行扫描。

Getting the Most Out of Your Tokenizer(2024)[10 (https://arxiv.org/html/2608.11361#bib.bib10)]提供了一个解析的批大小相关词汇表成本模型,并引入 BPB 作为跨分词器的质量指标。这是在成本侧最接近的已有工作;我们通过在多个硬件模式上的经验测量以及一个完整的生命周期框架对其进行了扩展。

### II-B Roofline 模型

Roofline 模型[5 (https://arxiv.org/html/2608.11361#bib.bib5)]限定了任意操作可实现的性能上界:

$\text{performance}=\min(\text{BW}\cdot I,\ \text{peak\_FLOPS})$ (1)

其中 $I$(FLOP/byte)是算术强度。脊点 $\rho=\text{peak\_FLOPS}/\text{BW}$ 区分了内存受限($I<\rho$)和计算受限($I>\rho$)操作。我们在运行时经验测量 $\rho$:峰值带宽通过一次大内存拷贝(64M 个 fp16 元素,128 MB)获得,峰值计算通过一次大正方形 GEMM($4096\times 4096$,fp16)获得。由此得到 $\rho_{A10G}\approx 117$ 和 $\rho_{A100}\approx 183$ FLOP/byte,并被用于将每次测量标记为内存受限或计算受限。

### II-C BPB 作为质量指标

每字节比特数(BPB)对模型质量在不同分词器之间进行归一化:

$\text{BPB}=\frac{\mathcal{L}}{\ln 2}\cdot r(V)$ (2)

其中 $\mathcal{L}$ 是每个 token 的交叉熵损失(以 nats 为单位),$r(V)$ 是每字节 token 数。与原始损失不同,BPB 可在不同词表大小的分词器之间进行比较,因为它表示按原始文本字节计算的预测不确定性,与文本如何被分词无关[10 (https://arxiv.org/html/2608.11361#bib.bib10)]。

## III 成本模型

### III-A 推理成本

每个自回归解码步骤通过以下方式产生一个 token:

$\mathbf{logits}=\mathbf{h}W^{T},\quad\mathbf{h}\in\mathbb{R}^{B\times d},\ W\in\mathbb{R}^{V\times d}$ (3)

从 HBM 搬移的字节数主要由权重矩阵读取主导:$\text{bytes}\approx Vd\cdot\text{bpp}$,其中 fp16 时 bpp = 2。FLOPs 为 $2BVd$。算术强度(在 $V\gg B$ 下简化):

$I=\frac{2BVd}{Vd\cdot\text{bpp}}=\frac{2B}{\text{bpp}}=B\quad\text{(fp16)}$ (4)

每 token 头部成本遵循 roofline:

$h(V,B)=\frac{1}{B}\cdot\max\!\left(\frac{Vd\cdot\text{bpp}}{\text{BW}},\ \frac{2BVd}{\text{peak}}\right)$ (5)

当 $B<\rho$(内存受限)时:$h(V,B)\propto V/B$,随批大小线性下降。当 $B>\rho$(计算受限)时:$h(V,B)\propto V/\text{peak}$,与 $B$ 无关。

Transformer 主体(注意力 + FFN,无头部)贡献一个与 $V$ 无关的成本 $c_{body}(B)$,通过 CUDA graph 捕获测量。每字符总推理成本:

$C_{infer}(V,B)=\frac{c_{body}(B)+h(V,B)}{p(V)}$ (6)

其中 $p(V)=1/r(V)$ 是每 token 字符数(压缩率,来自 Phase A)。

该表达式关于 $V$ 呈 U 形:$V$ 过小时需要大量解码步骤($p(V)$ 小);$V$ 过大时每一步的 $h(V,B)$ 很大。其最小值——即推理最优词汇表——随着 $B$ 增长以及 $h(V,B)$ 缩小而向右移动。

### III-B 训练成本

训练过程对语料中的每个 token 处理一次。每字节训练成本(ms/byte):

$C_{train}(V)=\frac{r(V)}{\tau(V)}\times 1000$ (7)

其中 $r(V)$ 是每字节 token 数,$\tau(V)$ 是训练吞吐量(tok/s)。两者都随 $V$ 增大而下降:更大的 $V$ 压缩效果更好(每字节 token 更少),但也会降低每一步的速度(嵌入层和头部层更大)。在我们的实验中(第 IV-D (https://arxiv.org/html/2608.11361#S4.SS4) 节),两者的比值在 $V\approx 16$k 附近取得最小值。

### III-C 生命周期成本与最优词汇表

模型整个生命周期内的总部署成本:

$C_{lifecycle}(V,B,\lambda)=C_{train}(V)+\lambda\cdot C_{infer}(V,B)$ (8)

$\lambda=\text{inference\_bytes}/\text{training\_bytes}$ 是一个无量纲比值,用于刻画推理量:$\lambda=1$ 表示每个训练字节对应一次推理遍历;$\lambda=1000$ 是生产 API 的典型值;$\lambda=10^{6}$ 代表高流量服务(例如公开聊天机器人)。$C_{train}$ 和 $C_{infer}$ 都以 ms/byte 为单位,因此 $\lambda$ 是两种成本之间的直接权重。

生命周期最优词汇表:

$V^{*}(B,\lambda)=\mathop{\arg\min}_{V}\ C_{lifecycle}(V,B,\lambda)$ (9)

由于两条成本曲线都是凸的(经验验证),$V^{*}(B,\lambda)$ 在 $V^{*}_{train}$($\lambda=0$ 时)和 $V^{*}_{infer}(B)$($\lambda\to\infty$ 时)之间插值。生命周期最优值永远不会落在 $[V^{*}_{train},\,V^{*}_{infer}(B)]$ 范围之外——但该区间本身依赖于 $B$,在数据中心批大小下会急剧变宽。

## IV 实验设置

### IV-A 硬件与校准

表 I:实验中使用的 GPU 硬件。脊点通过经验测量获得。

峰值带宽和峰值计算在启动时通过 `calibrate()` 测量:带宽使用一次 64M 元素的 fp16 内存拷贝(128 MB,太大以至于无法放入 L2 缓存),峰值计算使用一次 $4096\times 4096$ fp16 GEMM(强度 $\approx 1365\gg\rho$)。由于内存刷新周期、缓存压力和热状态,实测值为理论峰值的 67–79%。使用实测值而非规格表值可使脊点预测与观测到的交叉批大小在 $1.6\times$ 以内匹配。

### IV-B Phase A:分词器训练与压缩曲线

我们使用 SentencePiece[11 (https://arxiv.org/html/2608.11361#bib.bib11)]在 500 MB 的 FineWeb-Edu[9 (https://arxiv.org/html/2608.11361#bib.bib9)](一个精选的英文教育网络语料)上训练了 BPE 分词器,词表大小共八个:$V\in\{8192,16384,32768,65536,131072,262144,524288,1048576\}$。训练使用默认的 BPE 算法:从单个字符出发,迭代合并最频繁的相邻 token 对,直到达到目标 $V$。

压缩率 $p(V)$(每 token 字符数)在保留的 10k 行验证集上评估。关键结果:$p(V)$ 从 $V=8$k 时的 4.00 增长到 $V=262$k 时的 5.19,然后趋于饱和——从 262k 到 524k 仅再提升 0.6%,从 524k 到 1M 仅再提升 0.3%。这种饱和至关重要:它在大批大小下形成了 U 形 $C_{infer}$ 曲线的右臂,将推理最优值限制在约 $\approx$524k 而非无穷大。

### IV-C Phase B:推理基准测试

**头部测量。** 我们使用 CUDA events 单独测量解嵌入矩阵乘 $\mathbf{h}W^{T}$(50 次计时的迭代,15 次预热,3 次独立运行的中位数)。在单个 GPU 上扫描 $V\in\{8\text{k}$–1M$\}$ 和 $B\in\{1,16,64,256,512,1024,4096,16384\}$。单独测量至关重要:完整的解码步骤会启动约 $\sim$100 个 GPU 内核(对应 12 个 transformer 层中的每个操作),每个内核都有约 $\sim$15μs 的内核启动开销。在 $B=1$ 时,该开销(总计约 $\sim$1.5 ms)远大于头部成本(约 $\sim$0.015–0.76 ms,取决于 $V$),使得词汇表信号无法被测量。隔离单个头部内核可消除所有启动开销。

对于每个 $(V, B)$ 对,我们记录:总延迟(ms)、每 token 延迟(μs/tok)、已实现带宽(GB/s)、已实现计算量(TFLOP/s)、算术强度(FLOP/byte)、模式标签(内存/计算)、带宽利用率和 FLOP 利用率。

**主体测量。** Transformer 主体(12 层,$d=512$,8 个头,无 LM 头

相似文章

Compute Optimal Tokenization (2分钟阅读)

TLDR AI

本文通过训练近1300个模型,系统推导了压缩感知的神经缩放定律,证明了广泛使用的每参数20个词元的启发式方法是由特定分词器造成的。作者提出了基于字节的分词器无关缩放定律,为跨多样语言和模态的计算高效训练提供了新框架。

寻找最优分词器

Hacker News Top

这篇博客文章提出一个使用整数线性规划的算法来计算语言模型的最优分词器,并将其与解决旅行商问题相类比。文中指出,虽然结果在理论上很有趣,但实际的分词器已经接近最优,并且该方法可能不具备良好的泛化能力。

Token 最大化

Reddit r/singularity

讨论在大型语言模型中最大化 Token 使用以提高效率和输出质量的策略与技术。

随机分词法提高模型鲁棒性

arXiv cs.CL

本论文证明了使用随机分词而非确定性标准分词来训练大型语言模型,可以显著提升模型对对抗攻击和随机扰动的鲁棒性。这种改进在预训练、微调和上下文学习阶段都有表现,且不会增加推理成本。