手撕大模型:MergeKit模型合并工具,排列组合提升大模型性能

手撕大模型:MergeKit模型合并工具,排列组合提升大模型性能

首页角色扮演合并角色扮演更新时间:2024-09-13

近年来,随着开源大语言模型(LLM)的快速发展,我们如何最大化利用这些模型成为了业界关注的焦点。本文将向您详细介绍一个创新的开源工具——MergeKit,该工具专门设计用于无缝整合大语言模型。通过模型合并技术,我们可以有效整合多个模型的参数,从而在不重新训练的情况下创建出更强有力的多任务模型。本文将深入解析MergeKit的功能原理,以及如何利用它来改进大语言模型。

Github: GitHub - arcee-ai/mergekit: Tools for merging pretrained large language models.

论文地址:https://arxiv.org/abs/2403.13257

添加图片注释,不超过 140 字(可选)

具体介绍:

一、引言

近年来,开源LLM的数量急剧增长,提供了丰富的模型选择。模型合并技术可以有效整合多个模型的参数,创建出多任务模型,避免灾难性遗忘。MergeKit是一个专门用于模型合并的开源工具,已在业界引起了广泛关注。

二、背景与相关工作

模型合并的目的是将多个模型的参数整合到一个统一模型中,使其保留所有原始模型的优点。合并技术主要分为三类:相同架构和初始化的模型合并、相同架构不同初始化的模型合并、不同架构的模型合并。模型合并技术在多个领域都有应用,如医疗、编程等。

Figure 1: Classification of model merging methods. We currently support the model merging methods outlined onthe left, and we are actively working to incorporate additional merging techniques such as ZipIt, OT Fusion, and GitRebasin.

2.1 模型合并的概念

模型合并(Model Merging)是一个相对较新的研究领域,但其核心思想建立在大量前期研究的基础之上。模型合并的基本思想是将两个或更多预训练模型的参数整合到一个统一的模型中,同时保留所有原始模型的优势和能力。这一概念在模型权重的线性平均(weight averaging)和模型汤(Model Soups)等文献中已有体现。模型合并的成功在很大程度上依赖于模型连接性(mode connectivity)的概念,即两个模型之间可以通过一系列连接的模型状态进行平滑插值。

2.2 不同类型的模型合并

2.2.1 合并具有相同架构和初始化的模型

这类方法主要利用了线性模型连接性(Linear Mode Connectivity, LMC)来推导最终合并模型。关键要求是待合并的模型必须具有相同的架构和初始化。常用的方法包括线性权重平均、任务算术(Task Arithmetic)、TIES合并、模型面包屑(Model Breadcrumbs)、DARE等。这些方法不需要训练数据即可完成合并,也不需要后续微调。

2.2.2 合并具有相同架构不同初始化的模型

当处理来自不同初始化的检查点时,简单的线性模型组合方法往往效果不佳。这类工作主要利用了检查点权重的排列对称性(permutation symmetry)来降低插值障碍。常见方法包括Git-Rebasin、通过神经元对齐优化模型连接性、最优传输融合(Optimal Transport Fusion)、ZipIt等。这些方法允许合并来自不同训练过程或预训练的模型。

2.2.3 合并具有不同架构的模型

虽然这严格意义上不算模型合并,但相关方法如CALM和FUSELLM等已经朝着不同架构模型融合的方向取得了进展。CALM利用交叉注意力机制融合不同模型的表示,而FUSELLM则关注融合源LLM的概率分布,以实现外部化和放大每个模型的集体知识和独特优势。这些方法通常需要额外的持续预训练。

2.3 模型合并的实际应用案例

模型合并已经在各种实际应用中发挥作用,对HuggingFace的模型存储库等平台上的可用模型产生了重大影响。一些通过MergeKit合并得到的模型在性能评估中取得了优异的成绩。例如,BioMistral项目通过合并领域适应的检查点,显著提升了在特定领域中的性能。OpenPipe的Mistral 7B Fine-Tune Optimized展示了合并微调模型作为进一步调整的基础的潜力。Wei等人通过使用MergeKit进行模型融合,成功提升了幻觉检测的性能。这些成功案例表明,模型合并技术在持续学习和多任务学习场景中具有重要价值。通过利用开源LLM的广泛范围,模型合并能够创建出既强大又灵活的模型,同时适应新的领域而不需要从头开始训练。

三、MergeKit的设计原则

MergeKit的设计以用户为中心,提供直观的YAML配置文件接口。采用模块化设计,便于添加和移除组件。与HuggingFace的Transformers库兼容,方便整合各种开源模型。采用基于图的任务调度,实现高效的内存利用。

3.1 用户为中心的设计:直观的接口和YAML配置控制

MergeKit的主要接口是通过YAML配置文件实现的,允许用户定义复杂的合并操作,而无需编写代码。这种设计降低了用户的使用门槛,让更多研究者能够轻松上手。配置文件中可以定义合并方法、输入模型和所需参数。参数可以全局设置,也可以针对特定模型组件设置,支持常量标量值或随层变化的插值梯度。这种不同粒度的参数设置既适合初学者使用,也能满足高级用户的复杂需求。

添加图片注释,不超过 140 字(可选)

3.2 模块化:可插拔组件

MergeKit遵循模块化和可重用性原则,其合并方法设计为可互换和易于添加。组件之间可以轻松地添加、删除或互换,以实现定制化和实验。此外,MergeKit的许多组件都是独立可用的,例如其懒加载张量的功能。

3.3 互操作性:框架兼容

MergeKit与HuggingFace的Transformers库及其模型存储库兼容,允许用户轻松组合各种开源检查点,实现不同模型之间的无缝整合。

3.4 可扩展性:支持新的合并技术

MergeKit具有很好的可扩展性,支持添加新的合并方法。其架构模块、计划模块、图模块等扮演着不同的角色,确保了新方法的兼容性。

3.4.1 计算图调度

MergeKit内部使用有向无环图来表示合并操作,每个操作作为一个任务实例。这种表示用于调度任务的执行,以最小化任何时候所需的working set。图执行还隐式地处理不再需要的中间值的驱逐。这种基础设施使得开发人员可以轻松地构建新的合并方法,而无需额外努力即可受益于MergeKit的内存效率和硬件可扩展性。

通过上述设计原则,MergeKit不仅实现了用户友好、可插拔、框架兼容、可扩展等特性,还提供了高效的内存管理和硬件可扩展性,为模型合并领域的研究和实践提供了强大支持。

四、MergeKit的扩展性

MergeKit提供了详细的指南,支持添加新的合并方法。主要模块包括graph.py、merge_methods/base.py、plan.py和architecture.py等。

添加新合并方法的步骤

每个模块在合并管道中都扮演着独特的角色,需要考虑它们之间的协同作用,以确保新合并方法的顺利集成。

五、MergeKit的流行度和有效性

MergeKit越来越受欢迎,用户数和贡献者持续增长。在OpenLLM排行榜上,大量高排名的模型都是通过MergeKit合并得到的。合并模型在多项基准测试中取得了优异的性能。

5.1 MergeKit的快速流行

添加图片注释,不超过 140 字(可选)

图3显示了MergeKit在GitHub上获得星标数量的急剧增长,这反映了其在开发者社区中的受欢迎程度和影响力的持续上升。MergeKit的快速增长得益于其在模型合并领域的开创性工作,为研究人员和开发者提供了强大的工具支持。

5.2 合并模型在性能评估中的表现

根据Open LLM Leaderboard的数据,截至2024年3月15日,合并模型在性能评估中表现出色。在Open LLM Leaderboard的前50名和前100名模型中,合并模型分别占据了20%和34%。这表明模型合并技术在当前LLM的发展中扮演着重要角色。

添加图片注释,不超过 140 字(可选)

5.3 参数规模与性能的关系

图4比较了Open LLM Leaderboard上排名前50的模型的平均性能得分,其中合并模型以红色突出显示。黑色虚线表示每个模型的参数数量。大多数领先的合并模型通常包含大约70亿到130亿个参数。目前表现最好的3B、7B和13B开源模型都是通过MergeKit合并得到的。

添加图片注释,不超过 140 字(可选)

5.4 合并模型的优势

目前表现最佳的合并模型“RubielLabarta/LogoS-7Bx2-MoE-13B-v0.2”在排行榜上排名第17,而大多数未合并的模型要想达到这一性能,需要大约350亿到700亿个参数。这表明合并模型,特别是采用专家混合(MoE)架构的模型,在优化计算资源的同时提供了卓越的性能。模型合并技术在推动自然语言处理的前沿方面具有变革性的潜力。

5.5、模型合并在医疗领域的应用案例

为了展示MergeKit在医学领域的实际应用,作者使用MergeKit中可用的各种合并技术,包括线性插值(LERP)、球形线性插值(SLERP)、TIES和DARE-TIES,将Meditron-7B(基于Llama2-7B基础模型)检查点与Llama2-7B聊天模型进行了合并。

模型简介

Meditron-7B:基于Llama2-7B基础模型,在全面的医学语料库上进行广泛预训练。

Llama2-7B聊天模型:使用Llama2-7B基础模型,在对话领域进行了进一步微调。

合并模型的表现

表1比较了原始Meditron-7B模型、Llama2-7B聊天模型以及使用MergeKit技术合并得到的各种变体在医学和通用基准测试中的表现。

结论:

通过以上内容,我们深入了解了MergeKit这个创新的模型合并工具。它为开源LLM的整合提供了强大支持,让我们能够在不重新训练的情况下创建出更强大的多任务模型。MergeKit的功能和性能证明了其在推动LLM发展方面的重要价值,值得广大研究者和开发者关注和使用。我们期待看到MergeKit未来会带来更多的创新和突破,为LLM的发展注入新的活力。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved