跳转至

Tokenizer 编解码不可逆与训练崩溃

LaTeX 源码 · 备用 PDF

字段 内容
作者/整理 基于公开课程资料整理
来源 五道口纳什
日期 2025

Tokenizer 编解码不可逆与训练崩溃

引言

本期介绍 veRL 做 RL post-training 时的一个著名 issue:tokenizer 编解码不可逆导致的训练崩溃。

核心问题

Tokenizer 的编解码在很多情况下不可逆

  • 多个不同的 token ID list 解码后得到相同的文本
  • 但对同一文本编码只会得到唯一的 token ID list
  • 即:decode \(\to\) encode \(\neq\) 原始 token IDs

问题的根源

编解码的多对一关系

对一个文本先 encode 再 decode 是确定的。但对 token IDs 先 decode 再 encode,可能得到不同的 token IDs。这是因为多个 token ID 组合可以解码为相同的文本。

对 RL Training 的影响

在 Multi-turn tool call 场景中:

  1. 模型生成 token IDs(如 tool call 格式)
  2. 工具返回文本结果
  3. 将结果 encode 回 token IDs 拼接到上下文
  4. 如果 encode 结果与原始 IDs 不同,训练分布出现偏差
  5. 严重时导致训练崩溃

以 Qwen2.5-7B 为例

展示了具体的 token ID 不一致案例,说明问题的普遍性。

本章小结

Tokenizer 编解码不可逆是 Multi-turn RL Training 的隐患,需要在数据处理中特别注意。

工程防线:保证 token 与文本往返一致

这节课揭示的是一个非常工程化、但足以毁掉训练的细节:如果 tool call 或工具返回结果在 decode/encode 往返中发生变化,训练上下文就会悄悄偏离原始轨迹。对多轮 RL 来说,这种偏差会在每一轮被进一步放大。

最值得建立的检查项

  • 对关键格式串做 encode/decode 一致性测试
  • 把工具返回文本的重新编码结果写入日志
  • 对高风险 tokenizer 单独做回归测试

本章小结

Tokenizer 的细节并不“底层到可以忽略”。在 Multi-turn RL 里,它直接决定了上下文是否稳定可复现。

总结与延伸

  1. Tokenizer encode-decode 不总是可逆的
  2. 这会导致 Multi-turn RL Training 的分布偏差
  3. 解决方案:确保 token IDs 的一致性处理