写在最前

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 个备选方案,每一个都对应一种思路:

  1. 混入预训练数据 —— SFT 数据中按比例混入预训练语料,缓解灾难性遗忘
  2. 定向合成低频 token 样本 —— 统计后训练数据中覆盖不足的 token,针对性补
  3. 词表裁剪 + 继续预训练 —— 从源头干掉无用 token,重建 embedding 空间

每一个方案都直接对应根因。不是"试试看哪个有效",而是"根因清楚了,每个方案修复机制清楚了,剩下的是工程选择"。

这就是"问题被准确提出 → 解决只是时间问题" 的真实样子。


沉淀方法论:从模糊感受,到可执行修复

复盘整个 case,"准确定位问题"其实是一条完整的路径——

模糊感受 
   ↓
转化为具体观察
   ↓
提出可证伪假设
   ↓
用对比实验验证
   ↓
定位精确根因
   ↓
制定修复方案

MiniMax 的全链路排查,就是这条路径的完整示范:

  1. 模糊感受:“模型说不出’马嘉祺’”
  2. 具体观察:“马嘉祺被切成了 [‘马’, ‘嘉祺’] 两个 token;模型输出时把’嘉祺’替换成了’佳琪’”
  3. 可证伪假设:“是后训练阶段把’嘉祺’练丢了”
  4. 对比实验:“对比预训练版本(能输出)和后训练版本(不能输出)”
  5. 精确根因:“'嘉祺’在后训练数据中出现不到 5 次,参数被挤压到错误方向”
  6. 修复方案:“构造全词表合成数据,让每个 token 都被练到”

每一步都比前一步更精确。每一步都在为下一步铺路。

这条路径和标签化归因的差别,在下面这张对比表里一目了然:

标签化归因(似是而非) 它真正在说的是
“模型偷懒了” 看到了一个不喜欢的输出
“模型不稳定” 没有完全相同的复现路径
“模型理解力差” 没找到能让它正确输出的 prompt
“Prompt 写得不好” 不知道该改哪里
“对 X 支持差” 观察到了 X 维度上的一些问题

标签化归因很舒服——让人觉得"已经知道是哪里的问题"。
但它很没用——它关闭了进一步排查的可能性。
而机制化归因每一步都在让"模糊"变成"精确"——这才是真正能驱动工程进展的方式。


写在最后

复盘整个 case,"准确定位问题"的核心其实只有 3 个动作:

  1. 拒绝接受似是而非的解释——它舒服,但关闭了排查的可能
  2. 把模糊感受落到具体、可观察、可验证的现象——每一个"我感觉" 都翻译成"在某条件下,模型输出了某结果"
  3. 把竞争性假设一一用实验排除——直到只剩一个可验证的机制

这件事在传统软件工程里其实也成立——“能复现的 bug 就不算 bug,是个待办事项”。
但在 AI 时代,它的杠杆要大得多——因为 AI 系统的不确定性更高,似是而非的归因有更多"看起来合理"的空间,真正能把问题精确说出来的人,反而最稀缺

下次面对一个"AI 出毛病了" 的反馈,不妨从问几个具体问题开始:

它具体做了什么?在什么 input 下做的?怎么复现?
如果这个假设是对的,应该能观察到什么验证现象?

这两个问题,比 100 次"换个 prompt 试试"更接近真正的工程。

回到开头那个感悟——

AI 时代真正的稀缺能力,不是解决问题,而是准确地把问题说出来。
问题一旦被准确提出,就已经成功了一大半。
剩下的,只是时间问题


本文参考资料
《大模型不认识马嘉祺?我们做了一次全链路排查》,原文来自 MiniMax 稀宇科技 2026 年 5 月发布的技术博客。
文章里完整披露了 6 个排查维度的实验数据、退化 token 的具体分布、修复方案的对比效果。强烈建议读原文。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐