在过去的一年里,我一直在微调开放的视觉语言模型----9B密集到35B的混合专家----在可核查的奖励方面有监督的微调和GPRO式强化学习。
我学到的大多不是算法 是关于训练如何在无所事事的情况下保持健康 或坠机的原因与你的代码无关 三次失败, 越来越顺序 他们骗了我多久。
失败1:衡量错误的衡量标准(18小时) 我运行了18小时监督的微调 显示信物准确度稳步攀升到99%。
看起来像教科书跑。
真正的评价衡量标准 -- -- 多选择问题的准确性 -- -- 从未移动过。
原因是我所监督的东西 和所评价的东西不匹配。
培训损失超过自由文字推理的痕迹;评价得分单张取出的答复信.
这个模型在复制培训文本的外形方面非常出色——因此99%的符号准确性——而没有转移到我真正关心的决定上。
Token精度是一个代名词,代名词在停止检查时正好从目标漂出.
修复是结构性的,不是超参数: 监督你评价的东西。
如果交付品是一个受限的答案,训练信号必须达到这个答案,而不只是周围的道人.
我所学的通则是: 任何不是您评估度量标准的培训度量度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度 失败2:两个库的崩溃对位置标识有分歧 9B视觉模型的GRPO训练员在前行行道上相撞,深入回转位置嵌入码.
我训练守则里没有任何变化。
诊断花了一段时间,因为bug活在组件之间的边界上:文本序列长度取自令牌型代号,而视觉序列长度取自图像网格-而图像平板符号最终被计算出两次.
同堆的两个部分,每个部分内部一致,对输入时间有多长有不同意见.
对于同一家族的35B MoE变体,一个等效的绳子虫可以通过猴子patching 该模型的位置-ID计算来修复.
我用一个没有GPU的回归测试来运出补丁: 一个很小的脚本,它构造了准确的失败的输入形状,并在CPU上运行只是位置识别路径.
它在数秒内运行,不需要集群,如果上游更新重现错误,则会大声出故障.
二课.
首先,当你在模范家庭工具支持的边缘微调时,被你击中的bug是集成bug,而堆积追踪指向受害者,而不是罪犯.
第二,每个猴子patch都值得一个回归测试,它不需要花费什么运行成本——否则下一次库升级会默默地不固定它.
失败 3: 正在学习相反的 RL 循环( 安静的循环) 在一个单独的项目中,我用强化学习来微调一个9B模型,其中奖励来自已实现的现实世界成果,而不是一个有标签的数据集。
在很长一段时期内,训练信号是平平的,不是分歧,不是倒塌的,只是平平的,这是信息最少的失败。
两个复杂的问题。
一是奖赏过程中的标签噪音:一些结果被归咎于错误的决定,这淡化了任何梯度.
另一个更糟糕:一个标志错误意味着优势信号的一部分被倒置.
该模式被轻而易举地从行之有效的行为中推开。
没有坠毁。
每批处理一次。
每条日志都看起来像是训练 唯一的症状是缺乏学习,而我发现的唯一方法就是从"被搁置的衡量标准应该已经移到现在"向后工作,对奖励的每个阶段进行手工计算的审计.
两次修补之后,我得到了第一个真正单调的学习曲线。
我仍然视之为训练信号 裁决者对基准模型进行搁置评估,