LLM 合并新思路:进化算法+零训练->新任务
一、背景
我们之前介绍过一些 LLM 模型融合或堆叠的方案,然而这些方案通常需要人工设计或者继续训练、微调,这里我们介绍一篇新的工作试图解决这些问题,其思路很有意思,为后续的模型生产提供了一条思路,也得到了意想不到的结果。
需要说明的是,虽然开源了代码,单开源代码中并没有开放如何合并的代码,导致合并的细节无法获知。此外,相应的代价有多高也没有具体介绍,比如评估成本。
对应的论文为:[2403.13187] Evolutionary Optimization of Model Merging Recipes
对应的代码库:https://github.com/SakanaAI/evolutionary-model-merge
对应的官网:https://sakana.ai/evolutionary-model-merge/
二、摘要
论文中,作者将进化算法应用到 LLM 模型融合场景,通过自动发现各种开源模型的有效组合,充分利用它们已有的知识,在不需要额外训练的情况下获得了不错的效果。具体来说,作者通过参数空间融合(parameter space,PS)和数据流空间融合(data flow space,DFS)相结合的方式获得新的融合模型。这种方式甚至可以实现跨领域合并,作者基于日语模型和英语数学模型生成了日语数学模型,在各种模型上获得了 SOTA 性能。此外也在 VLM(Vision Large Model)和图像生成模型上进行了验证,获得不错的结果。
三、方法
3.1 参数空间融合
参数空间融合在之前的方案中已经有比较多介绍,其核心就是将具有相同模型结构,但是针对不同任务或场景的模型在同一 Transformer 层按照加权平均的方式直接合并模型参数。(混合权重可以通过进化算法来学习,比如 CMA-ES)
比如,在 [2311.07575] SPHINX: The Joint Mixing of Weights, Tasks, and Visual Embeddings for Multi-modal Large Language Models 中,作者提出了将不同领域微调模型融合的策略,如下图所示,作者验证了直接混合 LLM 的效果(GitHub - Alpha-VLLM/WeMix-LLM):
3.2 数据流空间融合
数据流空间融合是指将多个模型的 Transformer 层直接堆叠到一起进行融合,但这种方式往往是人工确定融合方案,而且往往需要再次训练或者微调,以弥补不同模型分布不一致导致的性能下降:
这种方式有点类似 [2312.15166] SOLAR 10.7B: Scaling Large Language Models with Simple yet Effective Depth Up-Scaling 中的堆叠方式,具体来说:
- Step 1-1:将原始 LLM 复制一份,假设包含 n 层 Transformer Block(n=32)。
- Step 1-2:删除原始模型的后 m 层,和副本模型的前 m 层(m=8),并将两个新的模型拼接在一起,新的模型包含 2*(n-m)=48 层 Transformer Block。
- Step 2:在新的模型上继续预训练。
本文的主要工作是通过引入进化算法来避免庞大的人工组合代价。假设多个候选模型,总共有 M 个 Transformer 层,需要组合的模型包含 T 个 Transformer 层,则相应的组合空间为 (M+1)T,其中的 1 表示当前已组合的模型,M 表示每次都可以从 M 层中选一个,可以重复。假设有 2 个 32 层的模型组合为一个 48 层的模型,相应的变种为 (64+1)48,空间非常大,几乎不现实。
所以核心问题就是如何降低上述的搜索空间。作者发现,部分层组合方式可能对模型产生不利的影响,比如重复/交换模型比较靠前的一些层(PS:这里介绍不多,比较困惑)。基于这个发现,作者构建了一个层索引数组 L,其大小为 T=Mxr,其中 r 表示重复的次数。这个数量 L 表明:将模型的层按照顺序排列,一个模型的层顺序不变,然后一个模型接一个模型,类似(模型1:第1层,第2层,。。。),(模型2:第1层,第2层,。。。),然后将上述序列重复 r 次。如果 Li > 0,则表示使用对应的层,否则不使用,这样对应的搜索空间为 2T。(PS:这样是不是意味着评估的代价也很高,比如 MGSM accuracy 和 VQA ROUGE 等指标都要在相应的模型里面评估一次,无法按照每层评估。)
PS:这两个地方的 T 含义是否相同,比如是否表示最终要生成模型的层数 T?
- 如果一样,那 T 可能并不会特别大,比如 2 个 32 层的模型组合为一个 48 层的模型,则对应的 r 为 0.75,此时 L 无法与所有 M 层对应。
- 如果不一样,T 通常大于 M,比如为 2,则如何保证生成特定层数的模型?
此外,作者观察到,如果交换相邻 Transformer 层的顺序,会使性能下降,但是对输入增加一定的 Scaling 可以缓解这一问题。基于此,作者构建了一个权重矩阵 Wi,j,大小为 (M, M),表示任意两层相连的 Scaling 因子。
综上,作者确定了两个优化参数,L 和 W,使用进化算法搜索完即可以合并模型。
3.3 参数空间+数据流空间融合
那么如何将上述两种方案融合呢?作者的思路也很简单:
- 首先使用参数空间融合策略获得一个合并的模型。
- 将候选模型和合并的模型一起作为候选模型。
- 基于以上模型进行数据流空间融合。
四、评估
如下图 Table 1 所示,Shisa Gamma 7B v1 为日语通用模型,WizardMath 7B v1.1 和 Abel 7B 002 都是英语数学模型,它们都是基于 Mistral 7B v0.1 微调而来。4 和 5 表明,PS 和 DFS 能有效帮助提升模型的日语数学能力,将 PS+DFS 结合可以在 MGSM-JA 指标上进一步改善,但 JP-LMEH 指标相比 PS 略有降低,证明了方案的有效性。
如下图 Table 2 所示,作者也进一步证明提出的策略不会导致已有能力的衰退:
如下图 Table 3 所示,作者也在 VLM 上进行了验证,获得了不错的效果:
五、参考链接
- https://arxiv.org/abs/2403.13187
- https://github.com/SakanaAI/evolutionary-model-merge
- https://sakana.ai/evolutionary-model-merge/
本文转载自 AI闲谈,作者: AI闲谈