同一个预训练模型微调十次,学习率、训练轮数和随机种子各有变化,最后常见做法是挑验证集分数最高的一份,其余权重不再使用。2022 年的一项研究换了个处理办法。研究者把多份微调权重平均,得到一份新的模型,并把它叫作模型汤。

我查了 ICML 论文、论文正文和作者公开仓库。这里有前提。论文中的候选从同一个预训练初始化出发,再用不同超参数微调。权重必须一一对应,结构不同、参数名称不同的模型不能直接放在一起平均。

合并的是权重,不是多跑几次再投票

传统集成会在推理时同时运行 k 个模型,再合并它们的输出。模型汤先在权重层面形成一份结果,部署时仍只加载这个合并后的模型。论文对比表把模型汤的推理计算与内存记为 O(1),传统 k 模型集成则为 O(k)。这里的 O(1) 是相对候选数量而言,单个模型自身当然仍有推理成本。

均匀模型汤很直接。它会平均全部候选。论文也写到,某个超参数配置若训练出表现很差的模型,均匀平均可能被它拖累。作者因此给出贪心做法,先按验证集表现排序,从最好的候选开始逐个试着加入,只有新平均结果没有让验证表现变差,才保留这一份权重。

验证集决定取舍。验证题过窄或已经参与反复调试,合并结果也可能只对这批题好看。论文使用的主要模型包括 CLIP、ALIGN 与 ViT-G,重点实验在图像分类,同时报告了自然语言处理任务上的延伸。它为权重平均提供了研究证据,不能保证任意大语言模型合并都会提升。

省下推理份数之前要付训练和验证成本

训练和验证没有省掉。团队仍需训练或取得多份候选,保存权重,并逐个跑验证。作者仓库的复现流程分成下载模型、评估单模型、生成均匀汤、生成贪心汤和画结果几个步骤。最终部署一份模型,前期工作量并没有随名字一起变轻。

合并后也要重测原来在意的任务。某个候选擅长中文摘要,另一份擅长分类,平均权重会不会同时保住两项,需要同一批验收题回答。安全限制、输出格式和旧能力也要一起复测,不能只看一个平均分。

实际采用时,我会先确认所有候选来自同一基础模型与兼容结构,留出没有参与挑选的测试题,再比较最佳单模型、均匀汤和贪心汤。若合并没有稳定改善,就部署已经通过验证的单模型。模型汤提供的是一种可试的权重利用方法,验证记录仍决定它能不能进生产。

参考资料