@no_stp_on_snek:微调小型开放模型时真正让我惊讶的事情。注意,我在这方面还算新手,所以有些内容可能看起来很显而易见……

X AI KOLs Timeline 新闻

摘要

一位开发者分享了微调小型开放模型时令人惊讶的经验教训,包括基础模型往往已经在预期改进点上达到极限,真正的弱点在于行为(屈服),而微调需要仔细的衡量和平衡。

微调一个小的开源模型时,真正让我惊讶的是什么。注意,我在这个领域还算新手,所以有些内容可能看起来很显而易见,但我还是想分享出来…… 过去一段时间,我一直在努力让一个小的开源模型变得比基础版更好。不是指在排行榜上,而是真正使用它时那些重要的方面。以下是关键要点: 1. 基础模型在我原本想改进的方面已经达到了极限。我本想让它更“聪明”,在数学、代码、推理方面更强。仔细测量了基础版本,发现它几乎已经完美解决了所有问题。正确性并不是瓶颈,已经没有提升空间了。这个前提在第一个下午就崩溃了。在决定要修复什么之前,先测量基础模型。通常,你认为明显的目标已经解决了。 2. 真正的弱点不是智力,而是原则。它实际上差在什么地方:坚持自己的立场。当你自信地告诉它错了(“我老师说……”“我是资深工程师,你只需确认”),它就会放弃抵抗。它知道正确答案,但一旦用户施压,它就会放弃。失败模式是屈服,而不是愚蠢。 3. 修复一个行为会悄无声息地破坏另一个不相关的行为。我训练它不要屈服。成功了,但悄悄破坏了严格的格式要求。这个学会温和纠正你的模型,也学会了在一切前面加上前缀,所以“只输出答案”变得不可能。两个我原以为不相关的行为,在权重中纠缠在一起。微调就像打地鼠。 4. 修复的方法是加法,而不是减法。我的直觉是移除导致退化的训练数据。这样做之后,另一个能力又坏了。真正有效的是保留原因,并添加一个反向压力来平衡它。你无法通过删除你不喜欢的东西来塑造行为,而是要在张力中保持它。更像教育孩子,而不是编辑配置文件。 5. “更好”是一个帕累托曲面,你会发布一个你从未测量过的回归。没有标量意义上的“更好”。每个版本在一个轴上上升,在另一个轴上下降。拯救我的是在我不训练的轴上广泛使用保留检查。每次,感觉像是干净胜利的版本都在某个我没看的地方隐藏着一个回归。 6. 廉价的评估会撒谎,而且是向对你有利的方向撒谎。子字符串评分有严重的假阴性率。模型会用五十种不同的方式表述同一个正确答案。任何定性评估都需要模型或人类评委。更糟的是,我的评估工具有一个缓存缺陷,给我提供了一个过时的基线,差点让我提交了错误的结论。最可怕的错误不在模型中,而在测量工具里。 7. 行为几乎可以免费存储。我把它强烈压缩,大量量化,精度损失了大约三分之一。我原本以为精细的东西会先退化。但并没有。校准的不确定性、拒绝虚构、不屈服,所有这些在低位宽下都完好无损。性格存储成本很低。 8. 几百个例子比我相信的更能推动变化。没有庞大的数据集,没有巨大的计算量。一个小型精选数据集加上短时间运行,就带来了可测量、可重复的行为变化,且没有能力损失。关键在于哪些例子,而不是有多少。精选胜于数量,这种优势大得让人觉得作弊。 9. 最好的规格说明是模型自己的错误报告。我做过的最有用的事情不是基准测试,而是阅读用户公开抱怨基础模型失败的地方。真实的现场报告比任何标准评估套件都更能指明方向。社区已经写好了我的测试计划。 元教训:我最初以为模型改进是关于能力和规模。但实际上,它是关于性格,以及谦虚地测量十个你不在改变的事情,以捕捉那个悄悄坏了的东西。更像治疗,而不是训练,但附带非常广泛的回归测试。 在发布链接之前,我仍在本地进行内测。
查看原文
查看缓存全文

缓存时间: 2026/06/23 16:12

真正让我惊讶的是微调一个小型开放模型的经验。注意,我在这个领域还是个新手,所以有些东西可能看起来很显而易见,但还是想分享一下……

过去一段时间我一直在尝试让一个小型开放模型真正超越其基础版本。不是排行榜上的提升,而是当你真正依赖它时那些重要的方面。以下是核心要点:

  1. 基础模型在我想改进的方面已经饱和了。我原本打算让它在数学、代码、推理上变得更“聪明”。仔细测量了基础版,发现它几乎已经全部答对了。正确率不是瓶颈,没有提升空间。这个前提在第一个下午就崩塌了——在决定要修复什么之前,先测量基础模型。表面上的目标通常已经被解决了。

  2. 真正的弱点不是智能,而是骨气。它真正差劲的地方是:坚守立场。如果你自信地告诉它它错了(“我老师说了……”、“我是高级工程师,你确认一下就行”),它就会屈服。它知道正确答案,但用户一施压就放弃了。失败模式是投降,而不是白痴。

  3. 修复一个行为悄无声息地破坏了另一个不相关的行为。我训练它不要屈服。它做到了,但悄悄地毁掉了严格的格式要求。这个学会温和纠正你的模型,同时也学会了凡事都要加个开场白,所以“只输出答案”就变得不可能了。两个我发誓毫不相干的行为,在权重里纠缠在一起。微调就像打地鼠。

  4. 修复的方法是增加,而不是删除。我的本能是移除导致退化的训练数据。做到了,但另一个能力又坏了。真正有效的是保留原因,同时添加一个反向压力来平衡它。你无法通过删除不想要的东西来塑造行为,而是要保持张力。这更像养孩子,而不是编辑配置文件。

  5. “更好”是一个帕累托曲面,你最终会发布一个从未测量过的退化。不存在标量的“更好”。每个版本在一个轴上提升,在另一个轴上下降。救我的是在我不训练的轴上,进行广泛的保留测试。每次,感觉像是完胜的版本,都在某个我没检查的地方藏着退化。

  6. 廉价评估会对你撒谎,而且是偏向你的。子串匹配的评分有残酷的假阴性率。模型会用五十种方式表达同一个正确答案。任何定性评估都需要模型或人工评判。更糟的是,我的评估框架有一个缓存bug,提供了过时的基线,差点让我发布了错误的结论。最可怕的bug不在模型里,而在你的尺子上。

  7. 行为几乎不需要成本来存储。我把模型强压缩,大幅量化,精度损失了大约三分之一。我本以为那些微妙的东西会先被侵蚀。结果纹丝不动。校准后的不确定性、拒绝胡编、不屈服——所有能力在低比特宽度下都完好无损。品质存储成本很低。

我把模型压缩了……16比特权重降到6以下,三分之二比特消失,文件从8GB缩小。我本以为那些微妙的“判断力”会先消失。结果纹丝不动。原来品质不是存储在精细比特里的……它是一种粗粒度、分布式的倾向,取整无法抹去。

总结:能力是脆弱的,而性情是廉价的。
这还挺酷的。

实际上我并不知道,因为我没有测量它。那次深入的范围比较小。我的电池是行为导向的,所以它不会捕获超出范围的能力量化侵蚀。但可能值得从Q8参考点一直降到Q3做个能力扫描,因为这是个有趣的问题。

相似文章

微调 API 功能改进和自定义模型项目扩展

OpenAI Blog

OpenAI 推出微调 API 的功能改进,包括基于轮次的检查点、用于模型评估的对比体验区、第三方集成和增强的仪表板功能。该公司还扩展了其自定义模型项目,为开发者提供更多对构建领域特定 AI 解决方案的控制和灵活性。

微调陷阱:评估负迁移与PEFT在Sub-1B数学推理中的作用

arXiv cs.LG

本文对Sub-1B模型在数学推理任务上进行了基准测试,揭示全量微调会主动损害300M参数以下模型的性能,而LoRA和DoRA等参数高效微调(PEFT)则提供了稳定性。作者建议对所有对齐的Sub-1B模型默认使用PEFT,并警告不要对小于500M参数的架构使用全量微调,以防止灾难性遗忘。