SFT推理结果分析 | AI生成和翻译
以下是完整分析。
d12 SFT 推理结果 — 7 个提示词
表现良好的情况
| 提示词 | 结果 | 结论 |
|---|---|---|
| 法国首都 | “巴黎” | 正确 — 简单事实回忆 |
| 回文函数 | 正确的 Python 代码,含解释 + 示例 | 良好 — SFT 代码数据有效 |
| 聊天格式 | 所有回复均包裹在 < | assistant_start | > / < | assistant_end | > 中 |
SFT 成功教会了对话结构 |
表现失败的情况
| 提示词 | 结果 | 失败模式 |
|---|---|---|
| 2+2 | 谈论高斯、”配对效应”,从未说出 4 | 算术 — 完全幻觉 |
| 1,1,2,3,5,8(斐波那契) | 胡扯”星与条”、欧几里得、柱状图高度 | 模式识别 — 未能识别序列 |
| 梯度下降 | “通过移动空气来下降一个表面” | 事实性 — 完全偏离 |
| SQL:2023 年入职的员工 | WHERE name = 'John Doe' |
语义 — 忽略日期过滤 |
| 关于机器学习的一首诗 | 重复”机器学习工具”15 次以上 | 重复循环 |
| 火车平均速度 | 120+80=200 英里,3 小时 → 200/3=66.7,但计算为 120/3=60 然后 60/120=0.933 | 推理中途出现算术错误 |
| 三种机器学习类型 | 列出了线性回归、决策树、随机森林,而非监督/无监督/强化学习 | 事实性 — 错误分类 |
| 神经网络定义 | “一种使用神经网络的机器学习” | 循环定义 |
根本原因分析
验证集 bpb 为 0.4053 的检查点在其规模上训练良好,但约 1.4 亿参数从根本上来说太小,无法支撑可靠的知识或推理——这是一个 Chinchilla 缩放问题。该模型在 12 层 / 768 嵌入维度上拥有约 5.89 亿个 SFT 数据 token,数据与参数之比约为 4:1——低于 Chinchilla 推荐的最佳计算比约 20:1。
具体的失败模式:
-
算术 — 小模型无法天生进行数学运算。前向传播将
2+2视为在未见过的分布中进行 token 预测。一个 1.4 亿参数的模型基本上没有用于多步计算的工作记忆。 -
重复循环 — 在此规模的自回归模型中很常见。softmax 头的容量有限;一旦进入概率陷井(”机器学习工具”),就没有机制可以跳出。在推理时使用重复惩罚(
--repetition-penalty 1.1)会有所帮助。 -
事实回忆 — LLM 中的事实知识大致随参数数量缩放。该模型只能存储在训练数据中出现非常频繁的事实(”巴黎是法国的首都”)。其他一切都是记忆噪声。
-
代码表现更好 — 代码具有高度的统计规律性。
def is_palindrome(s):→return s == s[::-1]是一个高概率的延续。模型学习了这种模式,而无需”理解”回文是什么。
如果你想提高推理质量,有以下选择
- 重复惩罚:
engine.generate(... repetition_penalty=1.1)可以修复诗歌循环 - 扩大规模:d24 或 d32 配合 n_embd=1024+ 将赋予模型推理能力
- 工具使用:在此规模下,给模型提供一个计算器工具用于算术,而不是期望原始计算
- 思维链微调:在思维链轨迹上进行训练,将多步推理外化为 token
