事情是这样的。

在此之前,我在Agent系统的质量门禁上投入了大量精力——包括训练前的环境自检、训练过程中的停滞检测、产出之后的行为对比,以及实验审计日志。这四道门从Agent推理管线一直延伸到模型微调管线。
随后,我直接用 Qwen2.5-1.5B-Instruct 跑了一轮 LoRA 微调。使用了80条中文指令数据,loss从9.13降至8.78。
然而,行为对比的结果令人大跌眼镜。
微调后的模型在三个prompt上竟然直接输出了纯数字序列。这不是"回答得不好"的问题,而是纯数字,比如 199999... 这样的内容。
loss降了,但模型却崩了。
loss指标根本不会告诉你模型在说什么。它只关注下一个token的概率分布,但如果模型被训练成了一个重复输出数字的机器,从概率角度来看,它甚至可能表现得更加"确定"。
基于这个发现,我在训练流程中加入了三个行为漂移指标:
- self-BLEU:衡量同一batch内所有输出之间的相似度。当数值超过0.8时触发警报,表明模型正在发生崩溃(collapse)。
- digit density:输出中数字字符所占比例。当这个比例超过0.3时触发警报,说明模型已经退化为数字复读机。
- repetition ratio:即唯一token数与总token数的比值。当该比值低于0.3时触发警报,说明模型陷入了循环。
这三个指标结合起来,构成了loss曲线完全看不到的维度。在那个实验中,loss明明在下降,但 behavioral test 通过率直接掉到了0.0。
这就是核心桥段:Agent质量门禁告诉你"推理有没有跑歪",微调质量门禁告诉你"模型有没有学歪"。问题结构一样,只是检查对象从推理输出转为了模型参数。
