准确定位问题,就成功了一半——读 MiniMax “嘉祺事件“ 排查报告
写在最前
AI 时代真正的稀缺能力,不是解决问题,而是准确地把问题说出来。
问题一旦被准确提出,就已经成功了一大半——解决只是时间问题。
但是绝大多数 AI 项目里,对"出问题"的描述都停留在几个似是而非的标签:
- “模型偷懒了”
- “模型不稳定”
- “模型最近变笨了”
- “Prompt 写得不好”
- “对 X 语种支持差”
这些标签听起来像在说原因,其实只是把感受换了套说法。它们最大的副作用是——关闭了进一步排查的可能性:既然已经"知道"是哪里的问题,那还查什么?
最近 MiniMax 发布了一篇关于"马嘉祺事件" 的内部排查报告(原文链接)。这篇报告值得读的地方,不在结论本身,而在它演示了一件少有人做的事——真正准确、系统地定位 AI 系统中的问题。
把它当一次完整 case study 拆开看,能很清楚地看到:"准确定位问题"在 AI 时代到底是怎么做的、又为什么这么稀缺。
现象很小,根因藏得深
事情起因很简单:用户发现 MiniMax M2 模型说不出"马嘉祺" 这个名字。
如果就停在这里,最容易做的事是给它贴个标签——“模型把名字嚼坏了”、“中文小众人名训练不够”、“模型在做安全过滤”。每一个都"听起来对",每一个都能让排查就此终止。
但这些标签都不是答案——它们只是用更熟悉的语言重述了同一个现象。
MiniMax 没有停在这里。他们做了一件更费劲、也更值钱的事:从分词器(tokenizer)一路到 lm_head(输出层)的完整全链路排查。
6 个排查维度
文章里写得很清楚,他们走了 6 个排查维度:
| 维度 | 在查什么 |
|---|---|
| 分词器版本对齐 | 确认不是因为版本不同导致 token 被错切 |
| embedding 统计分布 | 这个 token 在预训练里学过吗?还是从未学过? |
| 语义近邻检索 | 它在向量空间里漂到了哪里? |
| 预训练 vs 后训练 few-shot 对比 | 是哪个阶段出的问题? |
| 后训练数据频次统计 | 这个 token 在后训练里出现了几次? |
| 全词表 lm_head 变化幅度扫描 | 是个例,还是系统性问题? |
一个一个维度查下来,问题被精确钉到一个非常具体的位置:
- “嘉祺” 在预训练里学得很好(embedding 范数正常)
- 但在后训练里出现不到 5 次(频次统计)
- 后训练时 lm_head 的相关权重显著偏移(cosine 相似度大幅下降)
- 周围那些被频繁练到的 token,把它"挤"出了正常输出区域
到这一步,所有标签化的猜测都被一个更精确的机制替代:
- 不是"模型不知道"——预训练学过,理解能力完全没受损(提问马嘉祺的信息,模型答得很全)
- 不是"中文支持差"——是更底层的 token 频次问题
- 不是"模型偷懒"——是参数被挤压到错误方向
- 不是"安全过滤"——纯技术问题,跟话题无关
这就是"准确定位"和"标签化归因"的差别:前者让所有竞争性假设都被实验排除,后者只是给现象贴一个让自己舒服的名字。
真正的根因:token 遗忘
用一个比喻就能讲清楚——
想象一个健身房,每个 token 都是一块肌肉。
预训练阶段,模型把全身练遍了。
后训练阶段,只猛练胸和腿(聊天指令)。
几个月下来,"嘉祺"那块肌肉萎缩了——不是没长过,是用进废退。
等用户需要它时,它已经反应不过来,模型只好用旁边练过的"佳琪 / 琪琪"代替输出。
这就是大模型版的"舌尖现象"——人类常有的"话到嘴边说不出"。
模型仍然知道马嘉祺是谁、属于哪个组合、唱过什么歌——理解能力完全没受损。只是输出这个特定 token 的能力被磨损了。
这个结论的关键,不在结论本身——而在结论"可被证伪":
- 它可以被验证(预训练版本能输出 vs 后训练版本不能)
- 它可以被推广(不只是"嘉祺"一个 token 有这个问题)
- 它可以指导修复(让这个 token 在后训练阶段被练到)
这是"准确定位"的标志——结论既有解释力,也有验证路径,还能指导下一步行动。
顺带破解的一个老 bug
MiniMax 真正惊艳的部分还没结束。
定位完"嘉祺"之后,他们顺手把整个词表(约 20 万 token)扫了一遍,发现 4.9% 的 token 都退化了。其中按语种统计——
日语: 29.7% ⚠️
中文: 3.9%
英文: 3.5%
俄语: 3.7%
韩语: 3.3%
日语的退化率远远超过其他语言。
而这一下子解释了 MiniMax 此前一个一直没找到根因的老问题:
用户用日语跟模型对话,回答里偶尔会混进俄语或韩语字符。
原因和"嘉祺"完全一样:日文 token 在后训练里几乎没被练到,参数漂移到了其他语言 token 的向量空间附近——输出时被"邻居"挤了出去。
两个看似毫无关联的 bug,本质上是同一个机制。
这是"准确定位问题"的奖励性收益——当你真正搞清楚一个问题,你顺便就解决了其他几个看起来不相关的问题。
反过来想:如果当初只停在某个标签层面,这个"日语混杂俄韩"的老 bug 永远不会有答案。
修复方案:根因清楚之后,修复必然简洁
定位完根因,修复就清晰了。
MiniMax 用的主方案是:构造一份覆盖全词表的合成数据——一个简单的"复读任务",给一个 token 让模型复述。每个 token 至少都被练几次,建立"生成频率下限"。
效果惊人:
- 日语回答中混入俄文字符的比例 从 47% 降到 1%
- 全词表 20 万 token 的输出稳定度(lm_head cosine similarity)从最低 0.329 提升到全部 > 0.97
文章里还提了 3 个备选方案,每一个都对应一种思路:
- 混入预训练数据 —— SFT 数据中按比例混入预训练语料,缓解灾难性遗忘
- 定向合成低频 token 样本 —— 统计后训练数据中覆盖不足的 token,针对性补
- 词表裁剪 + 继续预训练 —— 从源头干掉无用 token,重建 embedding 空间
每一个方案都直接对应根因。不是"试试看哪个有效",而是"根因清楚了,每个方案修复机制清楚了,剩下的是工程选择"。
这就是"问题被准确提出 → 解决只是时间问题" 的真实样子。
沉淀方法论:从模糊感受,到可执行修复
复盘整个 case,"准确定位问题"其实是一条完整的路径——
模糊感受
↓
转化为具体观察
↓
提出可证伪假设
↓
用对比实验验证
↓
定位精确根因
↓
制定修复方案
MiniMax 的全链路排查,就是这条路径的完整示范:
- 模糊感受:“模型说不出’马嘉祺’”
- 具体观察:“马嘉祺被切成了 [‘马’, ‘嘉祺’] 两个 token;模型输出时把’嘉祺’替换成了’佳琪’”
- 可证伪假设:“是后训练阶段把’嘉祺’练丢了”
- 对比实验:“对比预训练版本(能输出)和后训练版本(不能输出)”
- 精确根因:“'嘉祺’在后训练数据中出现不到 5 次,参数被挤压到错误方向”
- 修复方案:“构造全词表合成数据,让每个 token 都被练到”
每一步都比前一步更精确。每一步都在为下一步铺路。
这条路径和标签化归因的差别,在下面这张对比表里一目了然:
| 标签化归因(似是而非) | 它真正在说的是 |
|---|---|
| “模型偷懒了” | 看到了一个不喜欢的输出 |
| “模型不稳定” | 没有完全相同的复现路径 |
| “模型理解力差” | 没找到能让它正确输出的 prompt |
| “Prompt 写得不好” | 不知道该改哪里 |
| “对 X 支持差” | 观察到了 X 维度上的一些问题 |
标签化归因很舒服——让人觉得"已经知道是哪里的问题"。
但它很没用——它关闭了进一步排查的可能性。
而机制化归因每一步都在让"模糊"变成"精确"——这才是真正能驱动工程进展的方式。
写在最后
复盘整个 case,"准确定位问题"的核心其实只有 3 个动作:
- 拒绝接受似是而非的解释——它舒服,但关闭了排查的可能
- 把模糊感受落到具体、可观察、可验证的现象——每一个"我感觉" 都翻译成"在某条件下,模型输出了某结果"
- 把竞争性假设一一用实验排除——直到只剩一个可验证的机制
这件事在传统软件工程里其实也成立——“能复现的 bug 就不算 bug,是个待办事项”。
但在 AI 时代,它的杠杆要大得多——因为 AI 系统的不确定性更高,似是而非的归因有更多"看起来合理"的空间,真正能把问题精确说出来的人,反而最稀缺。
下次面对一个"AI 出毛病了" 的反馈,不妨从问几个具体问题开始:
它具体做了什么?在什么 input 下做的?怎么复现?
如果这个假设是对的,应该能观察到什么验证现象?
这两个问题,比 100 次"换个 prompt 试试"更接近真正的工程。
回到开头那个感悟——
AI 时代真正的稀缺能力,不是解决问题,而是准确地把问题说出来。
问题一旦被准确提出,就已经成功了一大半。
剩下的,只是时间问题。
本文参考资料:
《大模型不认识马嘉祺?我们做了一次全链路排查》,原文来自 MiniMax 稀宇科技 2026 年 5 月发布的技术博客。
文章里完整披露了 6 个排查维度的实验数据、退化 token 的具体分布、修复方案的对比效果。强烈建议读原文。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)