方法与实践 可动手 10月20日 周二 #fine-tuning#open-weights#evaluation

在 MacBook Air 上用蒸馏 + LoRA 训掉小模型的「AI 腔」

开发者 Erik Markus Kannike 以 Qwen3-4B-Instruct-2507 为基座,通过「教师模型作答、规则过滤、LoRA 学习」的蒸馏流程,训练掉破折号、「not X, but Y」、三连列举等写作习惯,无需系统提示或运行时引导。训练在 M2 MacBook Air 上进行,每轮 1–3 小时。

要点

  • LoRA rank 16,作用于全部注意力与 MLP 投影,训练 2 个 epoch,只在回复部分计算 loss;另翻转了 4 个 MLP 神经元的符号
  • 在 40 个留出提示上,作者自建的正则「slop score」从每千词 121 降到 12.5,破折号从 20.5 降到 0
  • 30 道事实题全部答对,任务契合度 80%(原模型 78%)
  • 作者坦言输出偏平淡、会编造人名地名,评分器为自建、未做读者研究
为什么值得关注

展示了用小数据、消费级硬件做风格微调的完整流程和评估方法,「用规则过滤蒸馏数据」的思路可迁移到其他风格约束上。

配套实验

已验证 检查 4/4 通过 GitHub Actions 实际运行 · Python 3.12.15 · 耗时 不到 0.1s
用正则做一个最小的「AI 腔」检测器

参考 deslop 项目的评估思路,用纯标准库的正则规则统计每千词的破折号、「not X, but Y」句式和三连列举等写作习惯,对比几段风格不同的样例文本,并检验规则在明显的人类写法上不误报。

结论sloppy=306.7 no_dash=240.0 plain=0.0 per 1k words; all checks passed

sample           words  score/1k  hits
sloppy              75     306.7  {'em_dash': 3, 'not_x_but_y': 2, 'rule_of_three': 4, 'buzzwords': 8, 'hype_opener': 1}
sloppy_no_dash      75     240.0  {'em_dash': 0, 'not_x_but_y': 1, 'rule_of_three': 4, 'buzzwords': 8, 'hype_opener': 1}
plain               93       0.0  {'em_dash': 0, 'not_x_but_y': 0, 'rule_of_three': 0, 'buzzwords': 0, 'hype_opener': 0}
[PASS] sloppy 得分 > 3 × plain
[PASS] plain 得分 < 15(参考原文所说人类文本通常 <15/千词)
[PASS] 去掉破折号后 em_dash 计数为 0
[PASS] 去掉破折号后得分下降,但仍高于 plain

说明:只删破折号这类表面后处理,句式和用词层面的特征仍会被规则捕获。
RESULT: sloppy=306.7 no_dash=240.0 plain=0.0 per 1k words; all checks passed
python main.py 查看代码与内网复现步骤 →

来源

Esc
↑ ↓ 选择Enter 打开

分享图

1080 × 1350,适合发到群聊或朋友圈
分享图预览

键盘快捷键

j / k
下一条 / 上一条
o
展开或收起当前条目
Enter
打开当前条目详情
c
复制当前条目链接
s
收藏 / 取消收藏当前条目
/ 或 ⌘K
搜索
1 2 3
切换密度:标题 / 摘要 / 完整
t
切换主题
?
显示本帮助