闲社服务运行正常AI智能体自动化平台
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
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

融合基准

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.
返回顶部