TIESMERGING多任务高效合并
编辑
TIES-MERGING多任务高效合并
❝ 大家好,我是 Bob! 😊 一个想和大家慢慢变富的 AI 程序员💸 分享 AI 前沿技术、项目经验、面试技巧!
欢迎关注我,一起探索,一起破圈!💪
迁移学习——即在下游任务上进一步微调预先训练的模型——可以带来显着的优势,包括改进的下游性能、更快的收敛和更好的样本效率。这些优势导致了针对特定任务的微调模型的激增,这些模型通常只能执行一项任务,并且不能相互受益。
最近,模型合并技术已经成为一种解决方案,可以将多个特定于任务的模型组合成单个多任务模型,而无需执行额外的训练。然而,现有的合并方法往往忽略了不同模型参数之间的干扰,导致合并多个模型时性能大幅下降。
现有合并影响因素:
(a)由于冗余参数值引起的干扰;
(b)跨模型给定参数值的符号不一致
该研究解决问题的方法:
(1) 重置在微调期间仅改变少量的参数
(2) 解决符号冲突
(3) 仅合并与最终商定的符号一致的参数。
第一步:修剪冗余参数
在模型微调过程中,许多参数的变化对任务性能的影响很小,甚至可以忽略不计。这些冗余参数在合并多个任务特定模型时会引起干扰,从而降低合并后模型的性能。为了解决这一问题,TIES-
MERGING方法首先通过“修剪”步骤来去除这些冗余参数。具体来说,对于每个任务特定的模型,我们计算其任务向量(task
vector),该向量表示模型参数在微调过程中发生的变化。然后,我们只保留任务向量中变化幅度较大的前k%参数(根据其
magnitude),而将剩余的变化较小的参数重置为0。这一步骤有效地减少了冗余参数对合并模型的干扰。
第二步:解决参数符号不一致的问题
在多个任务特定模型中,同一个参数可能在不同的模型中具有不同的符号(正负号)。这种符号不一致会导致简单的参数平均合并方法失效,因为正负号相反的参数值会相互抵消,从而降低合并后模型的性能。为了解决这一问题,TIES-
MERGING方法引入了一个“选符号”步骤。在这一步骤中,对于每个参数,我们比较其在不同模型中的符号,并选择具有最大总变化幅度的符号作为最终符号。这一步骤确保了合并后模型的参数符号一致,从而避免了符号不一致引起的干扰。
第三步:仅对符号一致的参数进行合并
在解决了符号不一致的问题后,TIES-MERGING方法的最后一步是“ disjoint
merge”,即仅对符号一致的参数进行合并。具体来说,对于每个参数,我们只计算那些在不同模型中符号相同的参数值的平均值,而忽略符号不一致的参数值。这一步骤确保了合并后模型的参数值只包含那些对任务性能有积极贡献的部分,从而进一步提升了合并模型的性能。
有关修建与合并的参数
density
:密度,密度越大,所保留的重要参数就越多,比如0.5。那就保存前50%的重要参数,其余的追随基座模型,减少冗余。
weight
:权重,配置中的权重总和不等于 1,但normalize: true参数会在内部自动对它们进行归一化。使得不同的任务重要性占比不同。
实验结果证明,20%以上的保留比率不会降低性能!
我的实验
有点失败,可以不做参考
- 0
- 0
-
分享