AI研究与开发
马嘉祺给MiniMax工程师上了难忘的一课:被遗忘的token
MiniMax对M2模型无法输出“马嘉祺”这一名字的内部调查发现,预训练词汇表与后训练数据分布之间存在结构性不匹配。根本原因在于:低频率token的lm_head向量在SFT过程中发生漂移,丧失了生成能力,但保留了理解能力。全词汇覆盖修复方案解决了该问题,同时也缓解了日语中的语言混杂现象。

最近几周,使用MiniMax M2系列大语言模型的开发者偶然发现了一个可复现的奇怪bug。该模型能够回答关于中国歌手马嘉祺的事实性问题,能说出他的组合或出道年份,但无法生成“嘉祺”这一token序列。这一异常现象在中国的小红书和知乎等平台上引发了热烈讨论,社区开发者自己进行了严格分析,包括分词器比较和采样参数测试。
初步假设:分词器不匹配被排除
第一个怀疑对象是预训练和后训练之间的分词器不对齐。使用后训练分词器,“马嘉祺”编码为token ID [4143, 190467],其中“嘉祺”成为一个单独的token(ID 190467)。显而易见的问题是:这个token在预训练期间是否得到正确训练,还是仅在后训练阶段才新增?
MiniMax工程师检查了预训练模型的词嵌入层。他们发现token 190467在嵌入空间中的最近邻包括“亚轩”、“千玺”、“祺”、“耀文”和“王一博”,这些都是合理的姓名token。统计分析确认该token在基础模型中训练良好且语义连贯,从而排除了分词器不匹配的假设。
确定真正原因:后训练数据分布
在后训练数据集中搜索token 190467的出现次数,发现包含“嘉祺”的样本少于五个。这种稀缺性就是关键证据:由于表示不足,该token在监督微调(SFT)过程中实际上被“遗忘”了。
但为什么模型保留了理解能力却失去了生成能力?答案在于直接处理token级映射的两个层之间的不对称行为:输入嵌入层(词嵌入层)和输出投影层(lm_head)。
词嵌入层:几乎不变
比较预训练和SFT后的词嵌入层,差异几乎为零。梯度范数在Transformer各层中衰减,对于极其稀有的token,嵌入层从损失函数接收到的梯度更新可以忽略不计。只有权重衰减会产生轻微的规范化效果,导致输入嵌入层基本冻结。
lm_head:显著漂移
相比之下,lm_head,即每个生成步骤中将隐藏状态投影到token概率的线性层,显示出显著变化。“嘉祺”的权重向量在SFT过程中发生了大幅漂移,这通过预训练和后训练向量之间的L2距离来衡量。这种漂移导致该token的生成概率低于推理过程中常用的top-p=0.95采样阈值,从而有效地使其“沉默”。
系统分析:哪些token漂移最严重?
为了了解这是否是孤立案例,MiniMax计算了整个SFT过程中词汇表中每个token的L2差异,并按变化幅度排序。受影响最严重的类别包括:
- 特殊token(预期之内)
- 日语口语化表达和网络模板(约占总高漂移token的40%)
- LaTeX和网页元数据token
- 中文SEO及垃圾文本
日语token的主导地位出乎意料,但立即解释了M2.5模型中一个长期存在的bug:在日语对话上下文中偶尔出现的语言混杂,即输出会突然切换为俄语或韩语。这先前被归类为一个独立的“小语言混杂”问题,但根本原因不明。
该分析将两个问题统一归因于一个框架:后训练数据中日语token覆盖不足,导致其lm_head向量发生漂移,并在向量空间中与其他语言的token表示混合。恰好与漂移的日语token在空间上相邻的低频中文token(如“嘉祺”)也被推离高概率区域,这就是稀疏token遗忘的机制。
修复实验:全词汇覆盖
MiniMax设计了一种最小的干预措施:针对词汇表中每个token生成合成重复数据,并将其作为标准SFT数据集的一小部分附加。合成任务很简单:每个token作为“复制此文本”提示的目标出现一次,确保每个token在训练过程中至少作为生成目标接收一次梯度更新。
结果
| 测试 | 实验组 | 基准线 |
|---|---|---|
| 日语→俄语混杂率 | 1% | 47% |
| “马嘉祺”基本召回 | 正确 | 正确 |
| “马嘉祺”引导召回 | 正确 | 未能输出“嘉祺” |
| “无痛人流”复制测试 | 正确 | 输出“人流”(丢失“无痛”) |
| “据介绍”复制测试 | 正确 | 输出“介绍”(丢失“据”) |
| “地税”复制测试 | 正确 | 输出“地利”(语义漂移) |
定量验证:实验组lm_head与预训练基础模型的余弦相似度平均值为0.9992,最小值为0.9711,且没有token低于0.95。基准线平均余弦相似度为0.9837,有9,805个token(4.9%)低于0.95,4,234个token(2.1%)低于0.90。日语token受影响最严重:平均余弦相似度0.9502,其中29.7%低于0.95。
更广泛的影响
预训练词汇表与后训练数据分布之间的结构性不匹配并非MiniMax独有。随着模型规模增长,分词器在庞大且多样化的语料库上训练,不可避免地包含稀有或特定语言的token。相反,后训练数据集是为指令遵循和安全性而精心策划的,其分布自然地对低频token采样不足。
MiniMax认为,后训练数据质量应从两个维度衡量:语义多样性(任务和领域覆盖)和token级覆盖(确保每个token至少作为生成目标出现一次)。将token覆盖作为常规监控指标,可以防止此类问题在生产环境中出现。
随着其他模型如Opus 4.7的发布也宣布了分词器变更,业界显然意识到分词器设计和后训练数据对齐仍是具有显著优化潜力的领域。
结论
稀疏token遗忘现象具有清晰的机制:在SFT过程中,低频token的lm_head向量在没有梯度更新修正的情况下发生漂移,导致其生成概率降至可用阈值以下。输入嵌入保持稳定,从而保留了理解能力。一种简单的全词汇覆盖策略,即添加合成重复数据,能够有效锚定所有token表示,同时解决了马嘉祺案例和日语语言混杂bug。