跳转至

TokAlign: Efficient Vocabulary Adaptation via Token Alignment

会议: ACL 2025
arXiv: 2506.03523
领域: LLM 效率 / 词表适配
关键词: 词表替换, Token 对齐, 共现矩阵, 跨语言迁移, 知识蒸馏

一句话总结

提出 TokAlign,基于 Token 共现信息学习两个词表之间的一对一映射矩阵,高效替换 LLM 的词表,实现跨语言知识迁移和跨模型 token 级蒸馏。

研究背景与动机

核心问题

LLM 的 tokenizer 在新领域或新语言上往往效率低下——例如 LLaMA3 的 tokenizer 处理亚美尼亚语时,文本长度是英语的 3.95 倍(相同字节数下)。这直接导致:

  1. 训练和推理速度下降:低压缩率 = 更长的 token 序列 = 更慢的处理
  2. 跨模型知识迁移受阻:不同 LLM 使用不同词表,无法进行 token 级蒸馏或集成
  3. 重新预训练代价巨大:为新 tokenizer 从头训练 LLM 成本极高

现有方法的局限

  • Focus:依赖两个词表的共有 token 来初始化新 token,当词表重叠少时效果差(初始 PPL 高达 2.9e5)
  • WECHSEL:需要双语词典和外部词嵌入,对无词典语言不可用
  • ZeTT:训练额外的超网络(hypernetwork)来生成 token 参数,计算成本极高(Pythia-2.8B 需 661 GPU 小时)
  • OFA:通过矩阵分解和多语言词嵌入组合,流程复杂

方法详解

整体框架

TokAlign 从 token-token 共现的角度出发,分三步完成词表对齐:

Step 1: 语料 Tokenization - 使用混合语料(CulturaX 40% + The Stack 30% + Proof-Pile-2 30%) - 分别用源 tokenizer 和目标 tokenizer 对同一语料进行 tokenize - 默认使用 1B tokens 的语料规模

Step 2: Token 表示学习 - 使用 GloVe 从各自的 token 序列中学习 token 表示向量 - 选择 GloVe 而非 CBOW/FastText 的原因:GloVe 利用全局统计共现信息 - 训练开销极低:128 核 CPU 服务器上不到 2 小时

Step 3: Token 对齐 - 基于学到的 token 表示,计算源/目标词表间的逐对 cosine 相似度 - 构建对齐矩阵 \(M_{s \to t}\),为每个源 token 找到最相似的目标 token - 两个词表共有的 token 直接映射,无需对齐

关键设计

1. 对齐质量评估指标

提出两个新指标评估对齐矩阵质量: - BLEU-1:将源 token ID 序列通过对齐矩阵转换后,与目标 token ID 序列计算 BLEU-1(文本匹配视角) - BERTScore:将转换后的 token 序列解码为文本,与原文计算语义相似度

这两个指标与初始预训练 loss 成正比关系,可作为对齐质量的先验判断。

2. 渐进式适配(Progressive Adaptation)

词表替换后的微调分为两个阶段: - 前半程:仅调整 Embedding 层和 lm_head,避免 loss 剧烈波动 - 后半程:全参数一起微调

这种渐进策略显著提升了训练稳定性,避免了 loss spike。

3. 参数初始化

对齐矩阵确定后,目标词表中每个 token 的参数(embedding 和 lm_head)从最相似的源 token 复制初始化,提供了极好的起点。

实验关键数据

主实验

跨语言迁移(Pythia → Qwen2 词表)

初始化方法 初始 PPL (Avg) + LAT 后 PPL
Focus 3.1e5 12.4
ZeTT 3.4e2 7.8
TokAlign 1.2e2 6.9

→ TokAlign 初始 PPL 比 Focus 低 3 个数量级,比 ZeTT 低 65%

文本压缩率提升:词表替换后,13 种语言的 token 长度平均减少 29.2%

低资源语言惊艳表现:TokAlign 初始化的 Pythia-1B 在 3 种低资源语言上的 PPL 甚至优于同规模 Qwen2

词表适配后性能恢复

方法 GPU 小时 恢复步数 Avg @6 tasks
Focus 99.70 >5k 45.29
ZeTT 418.94 ~5k 45.48
TokAlign 99.70 ~5k 48.42

→ 训练速度比 Focus 快 1.92 倍,仅需 5k 步即可恢复原模型 97.6% 性能

Token 级蒸馏

统一词表后可进行 token 级蒸馏,效果远超句子级蒸馏:

方法 ARC-E BoolQ HellaSwag Avg
Pythia-1B 原始 56.82 60.43 37.68 49.55
+ 句子级蒸馏 (Qwen2-7B) 52.27 67.49 39.03 49.90
+ Token 级蒸馏 (Qwen2-7B) 62.33 70.18 41.58 54.02

→ Token 级蒸馏比句子级蒸馏高 4.4%,仅用 235M tokens

→ Pythia-1B 经 token 级蒸馏后性能可比肩原始 Pythia-7B

关键发现

  1. 跨语言 zero-shot ICL:TokAlign 比 Focus 平均高 4.4%,日语 +2.3%,越南语 +2.2%
  2. 英语能力保留:TokAlign 保留 54.2% 英语能力,远超 Focus 的 40.8%
  3. 语料鲁棒性:换用 SlimPajama 训练 GloVe 嵌入,结果基本不变
  4. 初始 loss 大幅降低:Pythia-2.8B 首步 loss 从 17.8(Focus)降至 9.5(TokAlign)
  5. 相对表示改进:使用 300 个共有 anchor token 将 GloVe 嵌入转为相对表示,对齐质量进一步提升

亮点与洞察

  1. 无监督且无需外部资源:不需要双语词典、外部词嵌入或额外超网络,纯粹从共现统计中学习对齐
  2. 计算成本极低:GloVe 训练 + 对齐仅需 CPU 上 2 小时,相比 ZeTT 的 661 GPU 小时降低了 3 个数量级
  3. 打通跨模型知识迁移:统一词表后 token 级蒸馏效果显著,小模型可以高效吸收大模型知识
  4. 分布式假设的成功应用:借鉴经典的分布式语义假设(co-occurrence → semantics),在 subword token 级别验证了其有效性
  5. 全词表替换而非扩展:不同于多数方法仅扩展词表,TokAlign 支持完全替换,适用范围更广

局限性

  1. 依赖 GloVe 训练质量:低频 token 的共现统计可能不充分,影响对齐准确性
  2. 一对一映射限制:源和目标词表 token 粒度不同时,一对一映射可能丢失信息
  3. 仅在 Pythia 系列验证:主实验基于 Pythia(非 SOTA 模型),在更大规模或更强模型上的效果待验证
  4. 混合语料比例需调优:CulturaX/Stack/ProofPile 的 40/30/30 比例是经验值,不同场景可能需要调整
  5. 渐进式微调策略较朴素:简单的两阶段划分可能不是最优,更精细的学习率调度可能有改进空间

相关工作

  • 词表示学习:Word2Vec、GloVe、FastText 等经典方法,TokAlign 借鉴 GloVe 的全局共现矩阵分解思路
  • 词表适配:Focus、WECHSEL、ZeTT、OFA 等方法,各有依赖外部资源或高计算成本的缺点
  • 知识蒸馏:token 级 vs 句子级蒸馏的比较,在 NMT 领域已有讨论,本文将其推广到 LLM
  • 多语言模型:Qwen2、LLaMA3、Gemma 等多语言 LLM,词表设计对低资源语言的影响

评分

维度 分数 说明
新颖性 ⭐⭐⭐⭐ GloVe 共现 + token 级对齐的结合很有创意
理论性 ⭐⭐⭐ 方法直觉合理但理论分析偏少
实验充分性 ⭐⭐⭐⭐⭐ 多规模多语言多下游任务,消融全面
实用价值 ⭐⭐⭐⭐⭐ 成本极低效果好,真正实用的词表替换方案
总体推荐 ⭐⭐⭐⭐ 简洁实用的词表适配方法,打通跨模型蒸馏