SuperAPI AI 工具集

model-merging

智能体与模型

查看项目

更新于 10-30 06:46

技能介绍

用途

Model Merging 用于将多个已微调的模型合并为一个模型,从而在不重新训练的前提下组合它们各自的能力。典型用途包括:融合领域专长(例如数学 + 编程 + 对话)来创建专用模型;尝试获得超过单一模型的性能;降低训练成本(合并无需 GPU,可在 CPU 上运行);快速实验,在几分钟而非几天内生成新的模型变体;在合并过程中保留多项技能,减少灾难性遗忘。

主要能力

该技能基于 mergekit(Arcee AI)等工具,支持多种合并方法:

  • 线性合并(Model Soup):对参数做简单加权平均,速度快,适合相似模型,可合并两个及以上模型。
  • SLERP:在权重空间沿球面插值,保留权重向量的模长,最适合合并两个模型,比线性更平滑。
  • 任务算术(Task Arithmetic):提取“任务向量”(微调模型减基础模型),组合任务向量后加回基础模型,适合合并多个专用模型。
  • TIES-Merging:任务算术加稀疏化,解决参数符号冲突,适合合并多个任务特定模型。
  • DARE(Drop And REscale):随机丢弃微调参数并重新缩放剩余参数,减少冗余并维持性能。

此外还支持层合并(passthrough)、从合并模型构建 MoE(专家混合)、分词器合并等高级模式。

使用方式

安装 mergekit:

git clone https://github.com/arcee-ai/mergekit.git cd mergekit pip install -e .

或通过 pip:

pip install mergekit

可选安装 Transformer 库:

pip install transformers torch

基本流程是编写 YAML 配置文件,指定 merge_method、models、parameters、dtype 等,然后运行:

mergekit-yaml config.yml ./merged-model --cuda

配置结构示例:

merge_method: <method> # linear, slerp, ties, dare_ties, task_arithmetic base_model: <path> # 可选:任务算术的基础模型

models:

  • model: <path/to/model1> parameters: weight: <float> # 合并权重 density: <float> # 用于 TIES/DARE

  • model: <path/to/model2> parameters: weight: <float>

parameters:

方法特定参数

dtype: <dtype> # bfloat16, float16, float32

可选

slices: # 逐层合并 tokenizer: # 分词器配置

适用场景

  • 需要组合多个微调模型的能力而不重新训练。
  • 希望创建融合数学、编程、对话等专长的专用模型。
  • 想以较低成本快速实验新的模型变体。
  • 需要合并多个任务特定模型并处理参数冲突。
  • 希望通过层合并或 MoE 构建更复杂的模型结构。

限制与注意事项

  • 只能合并架构相同的模型;不同架构(如 Llama 与 Mistral)不兼容。
  • 权重选择需注意平衡,避免某一模型权重过高(如 0.95)导致主导。
  • 合并后应进行基准测试再部署,不应未经评估直接上线。
  • TIES/DARE 的 density 参数需要调优:可从保守值(如 0.8)开始,根据性能调整稀疏程度。
  • 资料中未提供具体的收费、价格或平台限制信息。

评估与部署

可使用 transformers 加载合并后的模型进行测试,常见基准包括 Open LLM Leaderboard、MT-Bench、MMLU、HumanEval、GSM8K。部署时可上传至 HuggingFace Hub,或使用 GGUF、GPTQ 进行量化。

资源

  • mergekit GitHub:https://github.com/arcee-ai/mergekit
  • HuggingFace 教程:https://huggingface.co/blog/mlabonne/merge-models
  • TIES 论文:https://arxiv.org/abs/2306.01708
  • DARE 论文:https://arxiv.org/abs/2311.03099
  • 参考文档:references/methods.md、references/examples.md、references/evaluation.md