SuperAPI AI 工具集

model-merging

智能体与模型

查看项目

更新于 10-16 07:46

技能介绍

用途

Model Merging 用于将多个微调模型合并,从而在不重新训练的情况下组合它们的能力。当你需要融合多个模型的领域专长(例如数学 + 编程 + 对话)、创建专用模型、提升单模型在基准上的表现、降低训练成本(合并无需 GPU,可在 CPU 上运行)、快速实验生成新模型变体,或在不发生灾难性遗忘的前提下保留多项技能时,可以使用该技能。资料提到 Marcoro14-7B-slerp 曾在 2024 年 2 月的 Open LLM Leaderboard 上取得最佳成绩,许多 HuggingFace 上的顶级模型也使用了合并技术。

主要能力

该技能围绕 mergekit(Arcee AI)展开,同时提及 LazyMergekit 和 Model Soup 等工具。核心合并方法包括:

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

配置结构支持 merge_method、base_model、models(含 weight、density)、parameters、dtype、slices、tokenizer 等字段。高级模式包括逐层合并(passthrough)、从合并模型创建 MoE(专家混合)以及 tokenizer 合并。

使用方式

安装 mergekit:

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

或通过 pip 安装:

pip install mergekit

可选安装 Transformer 库:

pip install transformers torch

快速开始示例(简单线性合并):

merge_method: linear
models:
  - model: mistralai/Mistral-7B-v0.1
    parameters:
      weight: 0.5
  - model: teknium/OpenHermes-2.5-Mistral-7B
    parameters:
      weight: 0.5
dtype: bfloat16

运行合并:

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

使用合并后的模型:

python -m transformers.models.auto --model_name_or_path ./merged-model

SLERP 合并示例:

merge_method: slerp
slices:
  - sources:
      - model: mistralai/Mistral-7B-v0.1
        layer_range: [0, 32]
      - model: teknium/OpenHermes-2.5-Mistral-7B
        layer_range: [0, 32]
parameters:
  t: 0.5
dtype: bfloat16

适用场景

  • 将数学、编程、对话等不同领域专长融合为一个模型。
  • 在无 GPU 或低训练预算下快速生成新模型变体。
  • 合并多个任务专用模型并解决参数冲突。
  • 通过逐层合并或 MoE 方式构建定制模型。
  • 对合并模型进行基准测试(Open LLM Leaderboard、MT-Bench、MMLU、HumanEval、GSM8K)并部署到 HuggingFace Hub 或量化(GGUF、GPTQ)。

限制与注意事项

  • 只能合并架构相同的模型,不同架构(如 Llama 与 Mistral)不兼容。
  • 应避免权重过度偏向单一模型,建议使用 0.3–0.7 的均衡权重范围。
  • 合并后必须进行基准测试再部署,不可直接上线。
  • TIES/DARE 的 density 参数需要调优:可从 0.8 开始,性能良好则提高稀疏度,性能下降则降低稀疏度。
  • 资料未提供具体的收费、价格或平台限制信息。