蒸馏训练效果停滞时,温度 T、软损失权重和硬标签损失权重经常被一起修改。这样做很快,却很难知道结果由哪项变化带来。温度改变教师输出分布的平滑程度,权重决定学生更信任教师信号还是参考标签。它们都属于训练目标的一部分,调整前应先确认教师输出、标签质量和学生基线是否可靠。
PyTorch 教程使用温度平滑教师与学生的 logits,并将软损失与交叉熵按权重相加。NVIDIA 的公开配置也把温度、蒸馏损失比例和是否保留语言模型损失分别列出。文档给出的是实现方式,不是一套适用于所有任务的最佳数值。企业需要用自己的验证集和失败样本决定方向。
温度改变了学生看到的信号
温度较低时,教师分布更集中,学生更容易围绕最高概率答案学习。温度提高以后,次高概率类别之间的差异更明显,学生能看到更多相对关系。对于类别边界清楚的任务,过高温度可能让分布过于平,训练信号变弱;对于类别相近或答案存在多种合理表达的任务,适度平滑可能更有帮助。
温度不能脱离实现细节讨论。软损失通常对教师和学生 logits 同时除以 T,有些实现再乘以 T 的平方来保持梯度尺度。若训练代码没有这样处理,直接照搬其他项目的温度范围,比较结果没有意义。记录实际传入损失函数的温度,而不只记录配置文件里的默认值。
权重决定训练时听谁的
蒸馏损失权重较高,学生会更努力接近教师分布;硬标签权重较高,学生会更多依赖人工标签或参考答案。教师在某些边界问题上经常出错时,盲目提高软损失权重会把错误放大。标签本身含有噪声时,完全依赖硬损失也可能让学生学到不稳定的规则。
可以先建立一张小型对照表。
| 实验 | 保持不变的内容 | 只改变的内容 | 观察重点 |
|---|---|---|---|
| 基线 | 数据、学生、评测、随机种子 | 不改配置 | 训练前后差异 |
| 软信号对照 | 其他配置 | 温度 | 边界类别与长输入 |
| 权重对照 | 温度与数据 | 软硬损失比例 | 教师正确而学生错误的样本 |
| 标签复核 | 学生与配置 | 小批人工复核数据 | 教师错误和标签冲突 |
每次只改一项。训练轮数、学习率、数据顺序和随机种子尽量固定。小样本实验只能用于筛选方向,不能用来宣称线上收益。结果记录任务指标、软损失、硬损失和严重错误,不能只保留总损失。
还要检查温度和权重是否真的作用在预期位置。部分代码在计算 logits 前就做了截断或归一化,部分代码把权重施加在 batch 平均之后。配置文件写着同一个数,实际梯度可能完全不同。调试时抽取一小批样本,打印教师和学生的温度后分布、各项损失以及最终加权结果,确认公式和日志一致。这个小检查常常比继续跑完整训练更省时间。
类别不均衡时,权重调节还可能掩盖少数类问题。软损失主要由高频类别贡献,少数高风险类别的错误对总数影响很小。可以按类别或任务切片计算软损失和硬损失,再看目标类别的任务指标。若只有总体曲线改善,目标类别没有变化,先调整采样或补充审核数据,不要只在温度范围内反复搜索。
调参前先确认学生是否真的能承接任务
学生容量不足时,温度和权重只能改变学习压力,无法凭空增加上下文处理或推理能力。可以先把任务拆成较窄的子任务,比较学生在短输入、固定格式和高频类别上的基线。如果这些基础场景也无法完成,先检查模型、分词器、上下文限制和训练数据格式。
教师输出也要经过审核。高质量教师不等于每条回答都正确,API生成批次中可能出现格式错、依据缺失和拒答边界不一致。企业可用147AI作为多模型教师调用的统一入口,按项目或提示版本建立不同API Key,结合调用量、消耗和日志回看批次。平台记录只能说明调用过程,样本是否合格仍要依靠企业的审核规则。
怎样判断一次调参值得保留
先定义停止条件。目标切片的任务指标有改善,严重错误没有增加,旧回归集没有超过允许退化范围,才进入下一轮。若总损失变好但目标切片不动,停止继续扫温度,回到教师数据和指标脚本。若离线结果改善而线上不变,优先查请求模板、截断和后处理。
调参报告还要写明失败的组合。某个温度和权重没有效果,不代表它在所有任务中都无效,只说明在当前数据、学生和评测条件下没有得到支持。把实验编号、配置、输出和样本判定一起保存,后续换教师或换学生时才能解释差异。
温度和损失权重确实重要,但它们只能回答训练目标怎样分配,不能替代任务定义、数据审核和独立评测。先把证据补齐,再做小步对照,通常比一次改动所有参数更快接近可解释的结果。
参考资料
323



被折叠的 条评论
为什么被折叠?



