返回顶部
f

fusion-bench融合基准

Use FusionBench to run model fusion experiments. Covers running benchmarks, adding new merging algorithms, evaluating fused models, and managing model pools. Use when the user wants to merge models, run fusion experiments, evaluate fusion methods, or work with the FusionBench framework.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
174
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

fusion-bench

FusionBench 技能

FusionBench 是一个用于深度模型融合(模型合并)的综合基准测试/工具包。

论文: arXiv:2406.03280
PyPI: pip install fusion-bench
仓库: https://code.tanganke.com/tanganke/fusion_bench
文档: https://tanganke.github.io/fusion_bench/

快速开始

bash

安装


pip install fusion-bench

运行简单实验(CLIP ViT-B/32,8个任务上的任务算术)

fusionbench method=taskarithmetic modelpool=clip-vit-base-patch32 taskpool=clip-vit-base-patch32_8tasks

使用不同的合并方法运行

fusionbench method=tiesmerging modelpool=clip-vit-base-patch32 taskpool=clip-vit-base-patch32_8tasks

架构概览

fusion_bench/
├── method/ # 合并算法(30+)
├── modelpool/ # 模型加载与管理
├── config/ # Hydra YAML 配置
├── tasks/ # 任务评估
├── utils/ # 辅助工具(state_dict 操作、懒加载等)
└── scripts/ # CLI 和 Web UI

核心组件

  1. 1. ModelPool:加载和管理预训练/微调模型
- AutoModelPool:根据配置自动选择 - CLIPVisionModelPool:用于 CLIP ViT 模型 - CausalLMPool:用于 Llama、GPT-2 等
  1. 2. Method:合并算法
- 继承自 BaseModelFusionAlgorithm - 实现 run(modelpool) → 合并后的模型
  1. 3. TaskPool:评估任务
- CLIP:8-38 个分类任务 - LLM:ARC、HellaSwag、MMLU 等

支持的合并方法

基础方法
方法配置名称描述
简单平均simpleaverage均匀权重平均
加权平均
weightedaverage | 可学习的任务权重 |

| 任务算术 | task_arithmetic | 任务向量 = 微调 - 基础 | | Slerp | slerp | 球面插值 |

稀疏/剪枝方法
方法配置名称描述
TIESties_merging修剪、选择、符号 + 合并
DARE
dare | 丢弃并重新缩放 |

| 幅度剪枝 | magnitude_pruning | 按幅度剪枝 |

高级方法
方法配置名称描述
AdaMergingadamerging学习逐层系数
Fisher Merging
fisher_merging | Fisher 加权合并 |

| RegMean | regmean | 回归均值(闭式解) | | RegMean++ | regmean_plusplus | 增强版 RegMean,带跨层依赖 |

基于 MoE 的方法
方法配置名称描述
WE-MoEwemoe权重集成 MoE
PWE-MoE
pwemoe | 帕累托最优 WE-MoE |

| RankOne-MoE | rankone_moe | 秩-1 专家分解 | | Sparse-WE-MoE | sparsewemoe | 稀疏权重集成 |

持续合并方法
方法配置名称描述
OPCMopcm正交投影持续合并
DOP
dop | 双正交投影 |

| Gossip | gossip | 基于 Gossip 的持续合并 |

专用方法
方法配置名称描述
ISO-C/CTSisotropicmerging公共/任务子空间中的各向同性合并
AdaSVD
adasvd | 基于 SVD 的自适应合并 |

| WUDI | wudi | Wasserstein 距离合并 | | ExPO | expo | 指数任务向量 |

运行实验

1. 基础合并(CLI)

bash

CLIP ViT-B/32 上的任务算术


fusion_bench \
method=task_arithmetic \
modelpool=clip-vit-base-patch32 \
taskpool=clip-vit-base-patch32_8tasks

带自定义缩放的 TIES 合并

fusion_bench \ method=ties_merging \ method.scaling_coefficient=0.3 \ modelpool=clip-vit-base-patch32 \ taskpool=clip-vit-base-patch32_8tasks

2. LLM 合并

bash

合并 Llama 模型


fusion_bench \
method=task_arithmetic \
modelpool=llama2-7b \
taskpool=llama2-7b_tasks

使用 DARE

fusion_bench \ method=dare \ method.type=task_arithmetic \ modelpool=llama2-7b

3. 使用 Fabric(分布式/混合精度)

bash
fusion_bench \
fabric=deepspeedstage2 \
method=adamerging \
modelpool=clip-vit-base-patch32

添加新方法

步骤 1:创建方法文件

python

fusionbench/method/mymethod.py


from fusionbench.method.basealgorithm import BaseModelFusionAlgorithm
from fusion_bench.modelpool import BaseModelPool
import torch

class MyMergingAlgorithm(BaseModelFusionAlgorithm):

我的自定义合并算法。

def init(self, scaling_coefficient: float = 1.0, kwargs):
super().init(kwargs)
self.scalingcoefficient = scalingcoefficient

@torch.no_grad()
def run(self, modelpool: BaseModelPool):
# 1. 加载基础模型
basemodel = modelpool.loadmodel(base)
basesd = basemodel.state_dict()

# 2. 计算合并后的任务向量
merged_tv = {}
for modelname in modelpool.modelnames:
if modelname == base_:
continue
model = modelpool.loadmodel(modelname)
tv = {k: v - basesd[k] for k, v in model.statedict().items()}
# 在此处编写合并逻辑
for k in tv:
if k not in merged_tv:
mergedtv[k] = tv[k] * self.scalingcoefficient
else:
mergedtv[k] += tv[k] * self.scalingcoefficient

# 3. 应用合并后的任务向量
for k in base_sd:
basesd[k] += mergedtv.get(k, 0)

basemodel.loadstatedict(basesd)
return base_model

步骤 2:在 init.py 中注册

python

fusion_bench/method/init.py


importstructure = {
...
my_method: [MyMergingAlgorithm],
}

步骤 3:创建配置

yaml

config/method/my_method.yaml


target: fusionbench.method.mymethod.MyMergingAlgorithm
scaling_coefficient: 1.0

步骤 4:运行

bash
fusionbench method=mymethod modelpool=clip-vit-base-patch32

模型池配置

CLIP 模型

yaml

config/modelpool/clip-vit-base-patch32.yaml


target: fusion_bench.modelpool.CLIPVisionModelPool
model_names:
- base
- Cars
- DTD
- EuroSAT
- GTSRB
- MNIST
- RESISC45
- SUN397
- SVHN
modeldir: ${oc.env:HOME}/.cache/fusionbench/models

LLM 模型

yaml

config/modelpool/llama2-7b.yaml


target: fusion_bench.modelpool.CausalLMPool
model_names:
- base
- arc
- hellaswag
- mmlu
modeldir: ${oc.env:HOME}/.cache/fusionbench/llama_models

工具函数

状态字典算术

python
from fusionbench.utils.statedict_arithm

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 fusion-bench-1776072782 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 fusion-bench-1776072782 技能

通过命令行安装

skillhub install fusion-bench-1776072782

下载

⬇ 下载 fusion-bench v1.0.0(免费)

文件大小: 3.79 KB | 发布时间: 2026-4-15 12:49

v1.0.0 最新 2026-4-15 12:49
FusionBench skill v1.0.0 initial release:

- Provides a comprehensive toolkit for deep model fusion and benchmarking.
- Supports 30+ merging algorithms (simple average, TIES, AdaMerging, MoE-based, continual, specialized, and more).
- Enables benchmarking and evaluation for CLIP models and LLMs on a wide variety of tasks.
- Includes utilities for state dict arithmetic and lazy loading for large model files.
- Offers clear architecture, extensibility guides, and step-by-step instructions for adding new model merging methods.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部