模型合并是开源社区的秘密武器。它零计算成本(仅对权重张量做数学运算),可以产生超越其组件的模型。Open LLM排行榜上的许多顶级模型都是合并产物。它也是从业者将多个LoRA微调合并为单个多功能模型的方式。理解合并为任何使用开源模型的人解锁了一项强大的免费能力。
最简单的合并:线性插值。New_weight = α · A_weight + (1−α) · B_weight,其中α控制平衡。当模型共享相同的基础模型(例如两个不同的Llama微调)时,这效果出奇地好。合并后的模型在两个来源的行为之间进行插值。SLERP(球面线性插值)沿超球面表面而非线性插值,通常产生略好的结果。
更有原则的方法:计算"任务向量"(微调模型与基础模型的差异),然后将任务向量添加到基础模型。这让你组合能力:base + coding_vector + writing_vector = 一个同时具有两种技能的模型。TIES通过解决任务向量之间的符号冲突(当两个任务想把同一权重向相反方向移动)来改进。DARE通过随机丢弃大部分任务向量条目来改进,减少干扰。
合并之所以有效,是因为微调通常修改模型行为的一小部分,同时保留大部分通用能力。不同微调的修改通常占据参数空间的不同"区域",冲突很小。当微调直接冲突(两个训练为相反行为的模型)、基础模型差异过大(不能将Llama与Mistral合并)或某个组件的修改过大以至于主导合并时,它会失败。