fusion-bench 0.2.18__py3-none-any.whl → 0.2.20__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fusion_bench/__init__.py +6 -0
- fusion_bench/constants/banner.py +12 -0
- fusion_bench/method/__init__.py +2 -0
- fusion_bench/method/linear/simple_average_for_llama.py +30 -5
- fusion_bench/method/regmean_plusplus/__init__.py +3 -0
- fusion_bench/method/regmean_plusplus/clip_regmean_plusplus.py +192 -0
- fusion_bench/method/regmean_plusplus/regmean_plusplus.py +365 -0
- fusion_bench/method/simple_average.py +29 -3
- fusion_bench/modelpool/causal_lm/causal_lm.py +37 -6
- fusion_bench/modelpool/clip_vision/modelpool.py +45 -12
- fusion_bench/scripts/cli.py +1 -1
- fusion_bench/tasks/clip_classification/imagenet.py +1008 -2004
- fusion_bench/utils/lazy_state_dict.py +75 -3
- fusion_bench/utils/misc.py +66 -2
- fusion_bench/utils/modelscope.py +146 -0
- fusion_bench/utils/state_dict_arithmetic.py +10 -5
- {fusion_bench-0.2.18.dist-info → fusion_bench-0.2.20.dist-info}/METADATA +9 -1
- {fusion_bench-0.2.18.dist-info → fusion_bench-0.2.20.dist-info}/RECORD +50 -43
- fusion_bench_config/method/regmean/clip_regmean.yaml +1 -1
- fusion_bench_config/method/regmean_plusplus/clip_regmean_plusplus.yaml +11 -0
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL20.yaml +73 -8
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL20_model_only.yaml +27 -7
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8.yaml +34 -4
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8_control_task.yaml +14 -17
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8_model_only.yaml +14 -3
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL10.yaml +39 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL12.yaml +49 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL14.yaml +55 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL14_model_only.yaml +21 -4
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL16.yaml +61 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL18.yaml +67 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL20.yaml +73 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL20_model_only.yaml +26 -3
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_single_finetuned.yaml +7 -5
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_single_task_projection.yaml +6 -10
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_and_cars.yaml +6 -7
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_and_dtd.yaml +6 -7
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_cars_and_dtd.yaml +7 -8
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_svhn_and_mnist.yaml +8 -0
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_two_tasks_control_task.yaml +4 -6
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TA8.yaml +32 -7
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TA8_model_only.yaml +14 -6
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL20.yaml +73 -8
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL20_model_only.yaml +27 -7
- fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_individual.yaml +6 -10
- fusion_bench_config/modelpool/CausalLMPool/Qwen2.5-1.5B_math_and_coder.yaml +11 -0
- {fusion_bench-0.2.18.dist-info → fusion_bench-0.2.20.dist-info}/WHEEL +0 -0
- {fusion_bench-0.2.18.dist-info → fusion_bench-0.2.20.dist-info}/entry_points.txt +0 -0
- {fusion_bench-0.2.18.dist-info → fusion_bench-0.2.20.dist-info}/licenses/LICENSE +0 -0
- {fusion_bench-0.2.18.dist-info → fusion_bench-0.2.20.dist-info}/top_level.txt +0 -0
|
@@ -14,6 +14,7 @@ from torch import nn
|
|
|
14
14
|
from transformers import AutoConfig
|
|
15
15
|
|
|
16
16
|
from fusion_bench.utils.dtype import parse_dtype
|
|
17
|
+
from fusion_bench.utils.packages import import_object
|
|
17
18
|
|
|
18
19
|
if TYPE_CHECKING:
|
|
19
20
|
from transformers import PretrainedConfig
|
|
@@ -54,10 +55,13 @@ class LazyStateDict:
|
|
|
54
55
|
"""
|
|
55
56
|
|
|
56
57
|
_local_path: str
|
|
58
|
+
"""local path to the checkpoint."""
|
|
57
59
|
_state_dict_cache: Optional[Dict]
|
|
60
|
+
"""Cache for the state dict, if enabled."""
|
|
58
61
|
_index_filename: Optional[str]
|
|
59
62
|
_checkpoint_files: Optional[List[str]]
|
|
60
|
-
_index: Optional[Dict]
|
|
63
|
+
_index: Optional[Dict[str, str]]
|
|
64
|
+
"""Mapping of parameter names to checkpoint files."""
|
|
61
65
|
|
|
62
66
|
def __init__(
|
|
63
67
|
self,
|
|
@@ -71,7 +75,22 @@ class LazyStateDict:
|
|
|
71
75
|
hf_cache_dir: Optional[str] = None,
|
|
72
76
|
hf_proxies: Optional[Dict] = None,
|
|
73
77
|
):
|
|
78
|
+
"""
|
|
79
|
+
Args:
|
|
80
|
+
checkpoint (str): Path to the checkpoint file or directory.
|
|
81
|
+
meta_module_class (Type[nn.Module], optional): Class of the meta module to instantiate.
|
|
82
|
+
meta_module (nn.Module, optional): Pre-initialized meta module.
|
|
83
|
+
cache_state_dict (bool): Whether to cache the state dict in memory.
|
|
84
|
+
torch_dtype (torch.dtype, optional): The dtype to use for the tensors.
|
|
85
|
+
device (str): The device to load the tensors onto.
|
|
86
|
+
hf_revision (str, optional): The revision of the model to download from Hugging Face Hub.
|
|
87
|
+
hf_cache_dir (str, optional): The cache directory for Hugging Face models.
|
|
88
|
+
hf_proxies (Dict, optional): Proxies to use for downloading from Hugging Face Hub.
|
|
89
|
+
"""
|
|
90
|
+
self.cache_state_dict = cache_state_dict
|
|
74
91
|
self.meta_module_class = meta_module_class
|
|
92
|
+
if isinstance(self.meta_module_class, str):
|
|
93
|
+
self.meta_module_class = import_object(self.meta_module_class)
|
|
75
94
|
self.meta_module = meta_module
|
|
76
95
|
if self.meta_module_class is not None:
|
|
77
96
|
if self.meta_module is not None:
|
|
@@ -110,6 +129,18 @@ class LazyStateDict:
|
|
|
110
129
|
self._state_dict_cache = {}
|
|
111
130
|
else:
|
|
112
131
|
self._state_dict_cache = None
|
|
132
|
+
elif len(self._checkpoint_files) == 1 and self._checkpoint_files[0].endswith(
|
|
133
|
+
SAFE_WEIGHTS_NAME
|
|
134
|
+
):
|
|
135
|
+
# let the keys of self._index be the keys of the state dict, the values are the checkpoint file
|
|
136
|
+
with safe_open(
|
|
137
|
+
self._checkpoint_files[0], framework="pt", device=device
|
|
138
|
+
) as f:
|
|
139
|
+
self._index = {key: self._checkpoint_files[0] for key in f.keys()}
|
|
140
|
+
if cache_state_dict:
|
|
141
|
+
self._state_dict_cache = {}
|
|
142
|
+
else:
|
|
143
|
+
self._state_dict_cache = None
|
|
113
144
|
elif len(self._checkpoint_files) == 1 and self._checkpoint_files[0].endswith(
|
|
114
145
|
WEIGHTS_NAME
|
|
115
146
|
):
|
|
@@ -137,7 +168,11 @@ class LazyStateDict:
|
|
|
137
168
|
def config(self) -> "PretrainedConfig":
|
|
138
169
|
return AutoConfig.from_pretrained(self._checkpoint)
|
|
139
170
|
|
|
140
|
-
def state_dict(self) -> "LazyStateDict":
|
|
171
|
+
def state_dict(self, keep_vars: bool = False) -> "LazyStateDict":
|
|
172
|
+
"""
|
|
173
|
+
Args:
|
|
174
|
+
keep_vars (bool): Ignored, as LazyStateDict does not support keep_vars. Just for compatibility.
|
|
175
|
+
"""
|
|
141
176
|
return self
|
|
142
177
|
|
|
143
178
|
def _resolve_checkpoint_files(self, checkpoint: str):
|
|
@@ -255,6 +290,21 @@ class LazyStateDict:
|
|
|
255
290
|
)
|
|
256
291
|
return tensor
|
|
257
292
|
|
|
293
|
+
def __setitem__(self, key: str, value: torch.Tensor) -> None:
|
|
294
|
+
"""
|
|
295
|
+
Set a tensor in the LazyStateDict. This will update the state dict cache if it is enabled.
|
|
296
|
+
"""
|
|
297
|
+
assert key in list(
|
|
298
|
+
self.keys()
|
|
299
|
+
), "KeyError: Cannot set a tensor for a key that does not exist in the LazyStateDict."
|
|
300
|
+
if self._state_dict_cache is not None:
|
|
301
|
+
self._state_dict_cache[key] = value
|
|
302
|
+
else:
|
|
303
|
+
log.warning(
|
|
304
|
+
"State dict cache is disabled, setting a tensor will not update the cache."
|
|
305
|
+
)
|
|
306
|
+
self._state_dict_cache = {key: value}
|
|
307
|
+
|
|
258
308
|
def __contains__(self, key: str) -> bool:
|
|
259
309
|
if self._state_dict_cache is not None and key in self._state_dict_cache:
|
|
260
310
|
return True
|
|
@@ -314,7 +364,7 @@ class LazyStateDict:
|
|
|
314
364
|
|
|
315
365
|
def __repr__(self) -> str:
|
|
316
366
|
if self._index is not None:
|
|
317
|
-
return f"{self.__class__.__name__}(
|
|
367
|
+
return f"{self.__class__.__name__}(keys={list(self.keys())})"
|
|
318
368
|
else:
|
|
319
369
|
return (
|
|
320
370
|
f"{self.__class__.__name__}(checkpoint_files={self._checkpoint_files})"
|
|
@@ -336,3 +386,25 @@ class LazyStateDict:
|
|
|
336
386
|
raise RuntimeError(
|
|
337
387
|
"Cannot get submodule because meta_module is not provided."
|
|
338
388
|
)
|
|
389
|
+
|
|
390
|
+
def load_state_dict(
|
|
391
|
+
self, state_dict: Dict[str, torch.Tensor], strict: bool = True
|
|
392
|
+
) -> None:
|
|
393
|
+
"""
|
|
394
|
+
Load a state dict into this LazyStateDict.
|
|
395
|
+
This method is only for compatibility with nn.Module and it overrides the cache of LazyStateDict.
|
|
396
|
+
|
|
397
|
+
Args:
|
|
398
|
+
state_dict (Dict[str, torch.Tensor]): The state dict to load.
|
|
399
|
+
strict (bool): Whether to enforce that all keys in the state dict are present in this LazyStateDict.
|
|
400
|
+
"""
|
|
401
|
+
log.warning(
|
|
402
|
+
"Loading state dict into LazyStateDict is not recommended, as it may lead to unexpected behavior. "
|
|
403
|
+
"Use with caution."
|
|
404
|
+
)
|
|
405
|
+
if strict:
|
|
406
|
+
for key in state_dict:
|
|
407
|
+
if key not in self:
|
|
408
|
+
raise KeyError(f"Key {key} not found in LazyStateDict.")
|
|
409
|
+
for key, value in state_dict.items():
|
|
410
|
+
self[key] = value
|
fusion_bench/utils/misc.py
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
from
|
|
1
|
+
from difflib import get_close_matches
|
|
2
|
+
from typing import Any, Iterable, List, Optional
|
|
2
3
|
|
|
3
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"first",
|
|
6
|
+
"has_length",
|
|
7
|
+
"join_list",
|
|
8
|
+
"attr_equal",
|
|
9
|
+
"validate_and_suggest_corrections",
|
|
10
|
+
]
|
|
4
11
|
|
|
5
12
|
|
|
6
13
|
def first(iterable: Iterable):
|
|
@@ -23,3 +30,60 @@ def join_list(list_of_list: List[List]):
|
|
|
23
30
|
for item in list_of_list:
|
|
24
31
|
ans.extend(item)
|
|
25
32
|
return ans
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def attr_equal(obj, attr: str, value):
|
|
36
|
+
"""
|
|
37
|
+
Check if the attribute of the object is equal to the given value.
|
|
38
|
+
Returns False if the attribute does not exist or is not equal to the value.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
obj: The object to check.
|
|
42
|
+
attr (str): The attribute name to check.
|
|
43
|
+
value: The value to compare against.
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
bool: True if the attribute exists and is equal to the value, False otherwise.
|
|
47
|
+
"""
|
|
48
|
+
if not hasattr(obj, attr):
|
|
49
|
+
return False
|
|
50
|
+
return getattr(obj, attr) == value
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def validate_and_suggest_corrections(
|
|
54
|
+
obj: Any, values: Iterable[Any], *, max_suggestions: int = 3, cutoff: float = 0.6
|
|
55
|
+
) -> Any:
|
|
56
|
+
"""
|
|
57
|
+
Return *obj* if it is contained in *values*.
|
|
58
|
+
Otherwise raise a helpful ``ValueError`` that lists the closest matches.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
obj : Any
|
|
62
|
+
The value to validate.
|
|
63
|
+
values : Iterable[Any]
|
|
64
|
+
The set of allowed values.
|
|
65
|
+
max_suggestions : int, optional
|
|
66
|
+
How many typo-hints to include at most (default 3).
|
|
67
|
+
cutoff : float, optional
|
|
68
|
+
Similarity threshold for suggestions (0.0-1.0, default 0.6).
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
The original *obj* if it is valid.
|
|
72
|
+
|
|
73
|
+
Raises:
|
|
74
|
+
ValueError: With a friendly message that points out possible typos.
|
|
75
|
+
"""
|
|
76
|
+
# Normalise to a list so we can reuse it
|
|
77
|
+
value_list = list(values)
|
|
78
|
+
|
|
79
|
+
if obj in value_list:
|
|
80
|
+
return obj
|
|
81
|
+
|
|
82
|
+
# Build suggestions
|
|
83
|
+
str_values = list(map(str, value_list))
|
|
84
|
+
matches = get_close_matches(str(obj), str_values, n=max_suggestions, cutoff=cutoff)
|
|
85
|
+
|
|
86
|
+
msg = f"Invalid value {obj!r}. Allowed values: {value_list}"
|
|
87
|
+
if matches:
|
|
88
|
+
msg += f". Did you mean {', '.join(repr(m) for m in matches)}?"
|
|
89
|
+
raise ValueError(msg)
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Literal, Optional
|
|
3
|
+
|
|
4
|
+
from datasets import load_dataset as datasets_load_dataset
|
|
5
|
+
from fusion_bench.utils import validate_and_suggest_corrections
|
|
6
|
+
|
|
7
|
+
try:
|
|
8
|
+
from modelscope import snapshot_download as modelscope_snapshot_download
|
|
9
|
+
except ImportError:
|
|
10
|
+
|
|
11
|
+
def modelscope_snapshot_download(*args, **kwargs):
|
|
12
|
+
raise ImportError(
|
|
13
|
+
"ModelScope is not installed. Please install it using `pip install modelscope` to use ModelScope models."
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
try:
|
|
18
|
+
from huggingface_hub import snapshot_download as huggingface_snapshot_download
|
|
19
|
+
except ImportError:
|
|
20
|
+
|
|
21
|
+
def huggingface_snapshot_download(*args, **kwargs):
|
|
22
|
+
raise ImportError(
|
|
23
|
+
"Hugging Face Hub is not installed. Please install it using `pip install huggingface_hub` to use Hugging Face models."
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"load_dataset",
|
|
29
|
+
"resolve_repo_path",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
AVAILABLE_PLATFORMS = ["hf", "huggingface", "modelscope"]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def load_dataset(
|
|
36
|
+
name: str,
|
|
37
|
+
split: str = "train",
|
|
38
|
+
platform: Literal["hf", "huggingface", "modelscope"] = "hf",
|
|
39
|
+
):
|
|
40
|
+
"""
|
|
41
|
+
Load a dataset from Hugging Face or ModelScope.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
platform (Literal['hf', 'modelscope']): The platform to load the dataset from.
|
|
45
|
+
name (str): The name of the dataset.
|
|
46
|
+
split (str): The split of the dataset to load (default is "train").
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
Dataset: The loaded dataset.
|
|
50
|
+
"""
|
|
51
|
+
validate_and_suggest_corrections(platform, AVAILABLE_PLATFORMS)
|
|
52
|
+
if platform == "hf" or platform == "huggingface":
|
|
53
|
+
return datasets_load_dataset(name, split=split)
|
|
54
|
+
elif platform == "modelscope":
|
|
55
|
+
dataset_dir = modelscope_snapshot_download(name, repo_type="dataset")
|
|
56
|
+
return datasets_load_dataset(dataset_dir, split=split)
|
|
57
|
+
else:
|
|
58
|
+
raise ValueError(
|
|
59
|
+
f"Unsupported platform: {platform}. Supported platforms are 'hf', 'huggingface', and 'modelscope'."
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def resolve_repo_path(
|
|
64
|
+
repo_id: str,
|
|
65
|
+
repo_type: Optional[str] = "model",
|
|
66
|
+
platform: Literal["hf", "huggingface", "modelscope"] = "hf",
|
|
67
|
+
**kwargs,
|
|
68
|
+
):
|
|
69
|
+
"""
|
|
70
|
+
Resolve and download a repository from various platforms to a local path.
|
|
71
|
+
|
|
72
|
+
This function handles multiple repository sources including local paths, Hugging Face,
|
|
73
|
+
and ModelScope. It automatically downloads remote repositories to local cache and
|
|
74
|
+
returns the local path for further use.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
repo_id (str): Repository identifier. Can be:
|
|
78
|
+
- Local file/directory path (returned as-is if exists)
|
|
79
|
+
- Hugging Face model/dataset ID (e.g., "bert-base-uncased")
|
|
80
|
+
- ModelScope model/dataset ID
|
|
81
|
+
- URL-prefixed ID (e.g., "hf://model-name", "modelscope://model-name").
|
|
82
|
+
The prefix will override the platform argument.
|
|
83
|
+
repo_type (str, optional): Type of repository to download. Defaults to "model".
|
|
84
|
+
Common values include "model" and "dataset".
|
|
85
|
+
platform (Literal["hf", "huggingface", "modelscope"], optional):
|
|
86
|
+
Platform to download from. Defaults to "hf". Options:
|
|
87
|
+
- "hf" or "huggingface": Hugging Face Hub
|
|
88
|
+
- "modelscope": ModelScope platform
|
|
89
|
+
**kwargs: Additional arguments passed to the underlying download functions.
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
str: Local path to the repository (either existing local path or downloaded cache path).
|
|
93
|
+
|
|
94
|
+
Raises:
|
|
95
|
+
FileNotFoundError: If the repository cannot be found or downloaded from any platform.
|
|
96
|
+
ValueError: If an unsupported platform is specified.
|
|
97
|
+
ImportError: If required dependencies for the specified platform are not installed.
|
|
98
|
+
|
|
99
|
+
Examples:
|
|
100
|
+
>>> # Local path (returned as-is)
|
|
101
|
+
>>> resolve_repo_path("/path/to/local/model")
|
|
102
|
+
"/path/to/local/model"
|
|
103
|
+
|
|
104
|
+
>>> # Hugging Face model
|
|
105
|
+
>>> resolve_repo_path("bert-base-uncased")
|
|
106
|
+
"/home/user/.cache/huggingface/hub/models--bert-base-uncased/..."
|
|
107
|
+
|
|
108
|
+
>>> # ModelScope model with explicit platform
|
|
109
|
+
>>> resolve_repo_path("damo/nlp_bert_backbone_base_std", platform="modelscope")
|
|
110
|
+
"/home/user/.cache/modelscope/hub/damo/nlp_bert_backbone_base_std/..."
|
|
111
|
+
|
|
112
|
+
>>> # URL-prefixed repository ID
|
|
113
|
+
>>> resolve_repo_path("hf://microsoft/DialoGPT-medium")
|
|
114
|
+
"/home/user/.cache/huggingface/hub/models--microsoft--DialoGPT-medium/..."
|
|
115
|
+
"""
|
|
116
|
+
# If it's a HuggingFace Hub model id, download snapshot
|
|
117
|
+
if repo_id.startswith("hf://") or repo_id.startswith("huggingface://"):
|
|
118
|
+
repo_id = repo_id.replace("hf://", "").replace("huggingface://", "")
|
|
119
|
+
platform = "hf"
|
|
120
|
+
# If it's a ModelScope model id, download snapshot
|
|
121
|
+
elif repo_id.startswith("modelscope://"):
|
|
122
|
+
repo_id = repo_id.replace("modelscope://", "")
|
|
123
|
+
platform = "modelscope"
|
|
124
|
+
|
|
125
|
+
# If it's a local file or directory, return as is
|
|
126
|
+
if os.path.exists(repo_id):
|
|
127
|
+
return repo_id
|
|
128
|
+
|
|
129
|
+
try:
|
|
130
|
+
validate_and_suggest_corrections(platform, AVAILABLE_PLATFORMS)
|
|
131
|
+
# This will download the model to the cache and return the local path
|
|
132
|
+
if platform in ["hf", "huggingface"]:
|
|
133
|
+
local_path = huggingface_snapshot_download(
|
|
134
|
+
repo_id=repo_id, repo_type=repo_type, **kwargs
|
|
135
|
+
)
|
|
136
|
+
elif platform == "modelscope":
|
|
137
|
+
local_path = modelscope_snapshot_download(
|
|
138
|
+
repo_id=repo_id, repo_type=repo_type, **kwargs
|
|
139
|
+
)
|
|
140
|
+
else:
|
|
141
|
+
raise ValueError(
|
|
142
|
+
f"Unsupported platform: {platform}. Supported platforms are 'hf', 'huggingface', and 'modelscope'."
|
|
143
|
+
)
|
|
144
|
+
return local_path
|
|
145
|
+
except Exception as e:
|
|
146
|
+
raise FileNotFoundError(f"Could not resolve checkpoint: {repo_id}. Error: {e}")
|
|
@@ -4,6 +4,7 @@ from typing import Callable, Dict, List, Literal, Union, cast
|
|
|
4
4
|
|
|
5
5
|
import torch
|
|
6
6
|
from torch import Tensor
|
|
7
|
+
from tqdm.auto import tqdm
|
|
7
8
|
|
|
8
9
|
from .parameters import check_parameters_all_equal
|
|
9
10
|
from .type import BoolStateDictType, StateDictType
|
|
@@ -124,7 +125,11 @@ def state_dict_sub(
|
|
|
124
125
|
|
|
125
126
|
|
|
126
127
|
def state_dict_add(
|
|
127
|
-
a: StateDictType,
|
|
128
|
+
a: StateDictType,
|
|
129
|
+
b: StateDictType,
|
|
130
|
+
strict: bool = True,
|
|
131
|
+
device=None,
|
|
132
|
+
show_pbar: bool = False,
|
|
128
133
|
):
|
|
129
134
|
"""
|
|
130
135
|
Returns the sum of two state dicts.
|
|
@@ -140,10 +145,10 @@ def state_dict_add(
|
|
|
140
145
|
ans = {}
|
|
141
146
|
if strict:
|
|
142
147
|
check_parameters_all_equal([a, b])
|
|
143
|
-
for key in a:
|
|
148
|
+
for key in tqdm(tuple(a.keys())) if show_pbar else a:
|
|
144
149
|
ans[key] = a[key] + b[key]
|
|
145
150
|
else:
|
|
146
|
-
for key in a:
|
|
151
|
+
for key in tqdm(tuple(a.keys())) if show_pbar else a:
|
|
147
152
|
if key in b:
|
|
148
153
|
ans[key] = a[key] + b[key]
|
|
149
154
|
if device is not None:
|
|
@@ -175,7 +180,7 @@ def state_dict_mul(state_dict: StateDictType, scalar: float):
|
|
|
175
180
|
return diff
|
|
176
181
|
|
|
177
182
|
|
|
178
|
-
def state_dict_div(state_dict: StateDictType, scalar: float):
|
|
183
|
+
def state_dict_div(state_dict: StateDictType, scalar: float, show_pbar: bool = False):
|
|
179
184
|
"""
|
|
180
185
|
Returns the division of a state dict by a scalar.
|
|
181
186
|
|
|
@@ -187,7 +192,7 @@ def state_dict_div(state_dict: StateDictType, scalar: float):
|
|
|
187
192
|
Dict: The division of the state dict by the scalar.
|
|
188
193
|
"""
|
|
189
194
|
diff = OrderedDict()
|
|
190
|
-
for k in state_dict:
|
|
195
|
+
for k in tqdm(tuple(state_dict.keys())) if show_pbar else state_dict:
|
|
191
196
|
diff[k] = state_dict[k] / scalar
|
|
192
197
|
return diff
|
|
193
198
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fusion_bench
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.20
|
|
4
4
|
Summary: A Comprehensive Benchmark of Deep Model Fusion
|
|
5
5
|
Author-email: Anke Tang <tang.anke@foxmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -72,6 +72,14 @@ FusionBench is a benchmark suite designed to evaluate the performance of various
|
|
|
72
72
|
|
|
73
73
|
Projects based on FusionBench and news from the community (descending order of date. If you have any work based on FusionBench, please feel free to let us know, we are willing to add it to the list. :partying_face:):
|
|
74
74
|
|
|
75
|
+
<details>
|
|
76
|
+
<summary>The-Hai Nguyen, Dang Huu-Tien, Takeshi Suzuki, and Le-Minh Nguyen. RegMean++: Enhancing Effectiveness and Generalization of Regression Mean for Model Merging. Aug, 2025. https://www.arxiv.org/abs/2508.03121</summary>
|
|
77
|
+
|
|
78
|
+
Regression Mean (RegMean), an approach that formulates model merging as a linear regression problem, aims to find the optimal weights for each linear layer in the merge model by minimizing the discrepancy in predictions between the merge and candidate models. RegMean provides a precise closed-form solution for the merging problem; therefore, it offers explainability and computational efficiency. However, RegMean merges each linear layer independently, overlooking how the features and information in the earlier layers propagate through the layers and influence the final prediction in the merge model. In this paper, we introduce RegMean++, a simple yet effective alternative to RegMean, that explicitly incorporates both intra- and cross-layer dependencies between merge models' layers into RegMean's objective. By accounting for these dependencies, RegMean++ better captures the behaviors of the merge model. Extensive experiments demonstrate that RegMean++ consistently outperforms RegMean across diverse settings, including in-domain (ID) and out-of-domain (OOD) generalization, sequential merging, large-scale tasks, and robustness under several types of distribution shifts. Furthermore, RegMean++ achieves competitive or state-of-the-art performance compared to various recent advanced model merging methods.
|
|
79
|
+
|
|
80
|
+
<img width="1000" alt="image" src="docs/algorithms/images/regmean_vs_regmean_plusplus.png">
|
|
81
|
+
</details>
|
|
82
|
+
|
|
75
83
|
<details>
|
|
76
84
|
<summary>Hao Mark Chen, et al. FW-Merging: Scaling Model Merging with Frank-Wolfe Optimization. Mar 2025. https://arxiv.org/abs/2503.12649</summary>
|
|
77
85
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
fusion_bench/__init__.py,sha256=
|
|
1
|
+
fusion_bench/__init__.py,sha256=vu3nMzKuiiHkbH13m8SOzj8qYU-n1PreBipWs_xjZig,1937
|
|
2
2
|
fusion_bench/__main__.py,sha256=weUjxpP3ULnDgUxCehdbmoCM9cqfkhDhGB85tAF5qoE,81
|
|
3
3
|
fusion_bench/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
fusion_bench/compat/method/__init__.py,sha256=A9pbskEYB4_ryD6sVrR0qI4eVYsbI7sExbhPeypP3fQ,5757
|
|
@@ -12,6 +12,7 @@ fusion_bench/compat/taskpool/base_pool.py,sha256=1AIZBxqUJgshq0Xo3Yo9es4b-8X8ksN
|
|
|
12
12
|
fusion_bench/compat/taskpool/clip_image_classification.py,sha256=ZYZsbsE-fPzm6yafA0p-6wcDwVGryLmtXXtuEXeQbTY,7425
|
|
13
13
|
fusion_bench/compat/taskpool/flan_t5_glue_text_generation.py,sha256=JsdAE72V1C1eDcA1WCa0PIcSDTrGPclNKFDQ9G-hYts,5786
|
|
14
14
|
fusion_bench/constants/__init__.py,sha256=Pyc4dLbl6oNduOCdnpeXQ9LDyVoIrkdl9eZ_l2axIv8,41
|
|
15
|
+
fusion_bench/constants/banner.py,sha256=fuIO36ETKlS6a3wbwZn-rA2OswSCfOYyyhZ0Fnal1s4,1656
|
|
15
16
|
fusion_bench/constants/clip_vision.py,sha256=k0NRfiacxRaswdxUj91-e3jcP1u-RmvsaaYdqohcQVU,310
|
|
16
17
|
fusion_bench/constants/paths.py,sha256=DVZyQ9FLhkyUdw6ARpXUCAMf_B8hFyJ6UNI-oYly3pE,591
|
|
17
18
|
fusion_bench/dataset/__init__.py,sha256=OJiYmcqz0Vm5O7mE4PB5QFJeL_KjrsseQTRsQATGTm4,1050
|
|
@@ -42,12 +43,12 @@ fusion_bench/dataset/llama/stanford_shp.py,sha256=6ueXKnFXIBBobacU1h5WxGLZrSOtBk
|
|
|
42
43
|
fusion_bench/dataset/llama/ultrachat.py,sha256=Go7WvrDAYnm184fdazHGRYLbSY6Xd7jrESyQeUJtOww,1736
|
|
43
44
|
fusion_bench/dataset/llama/wikitext.py,sha256=9ZHR-nMfXRumd3o-PIj3n7B83YlVeqpGkZ2zJs2B-9Y,2883
|
|
44
45
|
fusion_bench/dataset/llama/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
-
fusion_bench/method/__init__.py,sha256=
|
|
46
|
+
fusion_bench/method/__init__.py,sha256=o8t4R4fSTVaYuv2c0uD0_5ZolGuRk3nLawanYZghoCk,8015
|
|
46
47
|
fusion_bench/method/base_algorithm.py,sha256=UuITuGnSskcKEwUVINuPoWJUwqGm9AIgyQIOCu8BMks,1162
|
|
47
48
|
fusion_bench/method/dummy.py,sha256=hb1y6LR_geRZ5eRgGwt5zJUcHYorCeIbs5i76CvurUc,1031
|
|
48
49
|
fusion_bench/method/ensemble.py,sha256=rGxvJTeorfcBuE_e0XO-0-MAc9un7ZCC46ikKGuAcN4,3077
|
|
49
50
|
fusion_bench/method/model_recombination.py,sha256=2tviqmYSPOL0_Ktv8_gt_YzQ4tyCANHxXquUot_3Cgo,5360
|
|
50
|
-
fusion_bench/method/simple_average.py,sha256=
|
|
51
|
+
fusion_bench/method/simple_average.py,sha256=omUIZn7VnrerAHbo9lNGUlL5EcpUeGv3C-fJczcXaOk,5458
|
|
51
52
|
fusion_bench/method/ada_svd/__init__.py,sha256=4XzQbbvE9HI3NtEmEFvo8iC3ds_85vJXe7P7qJfL7kk,77
|
|
52
53
|
fusion_bench/method/ada_svd/clip_vision.py,sha256=XvXgIdlShAREMsubRgphyycGrhWqSnuVBo6S9bNYSd0,12581
|
|
53
54
|
fusion_bench/method/adamerging/__init__.py,sha256=nt0saBT_3bqghk-pINQ-XCWm9UWwSZllu4R1sDuAJAA,376
|
|
@@ -120,7 +121,7 @@ fusion_bench/method/linear/__init__.py,sha256=ChfkoOEAb-rUKwpowFPel-a1hRfS8gCrbn
|
|
|
120
121
|
fusion_bench/method/linear/expo.py,sha256=LCHTWlsPm1Mjhrq0mfpWLVC7skkI9ZksGduy3TxULoU,3939
|
|
121
122
|
fusion_bench/method/linear/linear_interpolation.py,sha256=IONw9BPiRJouY8bE9Abfyz7qVI_1B1n8KGZa0f7Pza8,2157
|
|
122
123
|
fusion_bench/method/linear/llama_expo.py,sha256=ccECjhAqcFmzOIDyZ7e_aPzTM2Kj8u2D8TJytyz18YM,8476
|
|
123
|
-
fusion_bench/method/linear/simple_average_for_llama.py,sha256=
|
|
124
|
+
fusion_bench/method/linear/simple_average_for_llama.py,sha256=ZbkTEgTNYBq8p3q_cxA6gky0mdZs7FaGfHlZKfFEbiQ,2952
|
|
124
125
|
fusion_bench/method/linear/task_arithmetic_for_llama.py,sha256=4SZpiTD7OzhWUXtcdK3PYdXbBGyDqiZd7oZOQ0lraN0,1963
|
|
125
126
|
fusion_bench/method/lm_finetune/__init__.py,sha256=IFGAqXujX3Fabzl_tC6zZyOyPFJfVziL0qFtj5MVxj0,149
|
|
126
127
|
fusion_bench/method/lm_finetune/bradley_terry_rm.py,sha256=ys_td1IeL3bzPTE0Cixlj2JooCaB7qseRwSDwroAk5A,18777
|
|
@@ -182,6 +183,9 @@ fusion_bench/method/regmean/__init__.py,sha256=VVqAkdHkb005Sc2XmeiedQYzb3q5aQNI8
|
|
|
182
183
|
fusion_bench/method/regmean/clip_regmean.py,sha256=xhT7dYSCg9sPLL5ZUCCtcA-Ypw4PBHsOivrnz-3fDso,4931
|
|
183
184
|
fusion_bench/method/regmean/gpt2_regmean.py,sha256=p2D3E8YAZsltsI6GM474UWNqPZfBqihLZ93ZLUpOJ_c,5565
|
|
184
185
|
fusion_bench/method/regmean/regmean.py,sha256=IqkweSS4WXGbMquWaHWHijiZ6rMIaHfFSje8C8bbb6g,16587
|
|
186
|
+
fusion_bench/method/regmean_plusplus/__init__.py,sha256=TD_KeTGXkbsh7tIsFDAnTDmYSvkc1ii2HfYQeNCu58A,141
|
|
187
|
+
fusion_bench/method/regmean_plusplus/clip_regmean_plusplus.py,sha256=s0HMUHTg6MV8B_WnF6D8LHRhrbr9aHChxMhnDj8qweE,7385
|
|
188
|
+
fusion_bench/method/regmean_plusplus/regmean_plusplus.py,sha256=and0YbngsWdq3zLBPOqTkhsCxR4WI9FjuoDQbLQfR4M,16069
|
|
185
189
|
fusion_bench/method/slerp/__init__.py,sha256=Wgl9gg01Xou6jyZeBRD98kRnB_dAADDaPqRTHoONx9o,59
|
|
186
190
|
fusion_bench/method/slerp/slerp.py,sha256=2_n10REnRoV5DuwCC0bDX8RM3MLL4Q_5rZiU0hICw2w,3406
|
|
187
191
|
fusion_bench/method/slerp/slerp_utils.py,sha256=vksRo6n7FqY7By9aqbwTL4XV3BjcU_GrUl_r85Kpfjc,3504
|
|
@@ -252,9 +256,9 @@ fusion_bench/modelpool/huggingface_gpt2_classification.py,sha256=j8nicVwtoLXY4RP
|
|
|
252
256
|
fusion_bench/modelpool/lazy_state_dict_pool.py,sha256=HtEA85rqSCHfsIddI5sKDcZf5kSuHNwrb8fF1TUSTr0,652
|
|
253
257
|
fusion_bench/modelpool/nyuv2_modelpool.py,sha256=btuXmYxwfjI6MnGakhoOf53Iyb9fxYH20CavGTrTcnA,1375
|
|
254
258
|
fusion_bench/modelpool/causal_lm/__init__.py,sha256=F432-aDIgAbUITj4GNZS9dgUKKhaDMCbTeHB-9MecaQ,99
|
|
255
|
-
fusion_bench/modelpool/causal_lm/causal_lm.py,sha256=
|
|
259
|
+
fusion_bench/modelpool/causal_lm/causal_lm.py,sha256=7-mUWVGVsXyljH_06CmIyReClKx_xVjy5zeXTJcLQIk,8085
|
|
256
260
|
fusion_bench/modelpool/clip_vision/__init__.py,sha256=3b9gN2bWUsoA1EmpitnIMnIlX7nklxbkn4WJ0QJtS2c,43
|
|
257
|
-
fusion_bench/modelpool/clip_vision/modelpool.py,sha256=
|
|
261
|
+
fusion_bench/modelpool/clip_vision/modelpool.py,sha256=eemYxDPCovbdKo1yr96UJqieWxr7l_n0rQHsJT4JMno,7117
|
|
258
262
|
fusion_bench/modelpool/openclip_vision/__init__.py,sha256=QDmAitKqUwRygN9QncdS_kGWZdfTKL4uUifC8xh9c10,47
|
|
259
263
|
fusion_bench/modelpool/openclip_vision/modelpool.py,sha256=2MieB4PMvg85DaiYu49m3BzuBjib1xozJHTpYyHhRTs,11102
|
|
260
264
|
fusion_bench/modelpool/seq2seq_lm/__init__.py,sha256=FnfSMHcwNHDQEMdB2HdK4WphQ6MufsRLUkczuALjM4Q,57
|
|
@@ -342,7 +346,7 @@ fusion_bench/programs/__init__.py,sha256=oGoRp2TMI6ELxyfkeTg2h27hZJEDz9x31Asmvwv
|
|
|
342
346
|
fusion_bench/programs/base_program.py,sha256=0dX_KcMWASo53pr-ldzfUBWIjEXy6oeDWZBrfc7FIk8,195
|
|
343
347
|
fusion_bench/programs/fabric_fusion_program.py,sha256=978t9Fw9kvw-Il7rJLR2jNI1OfSxkhq1c5-5D4BgnYU,13813
|
|
344
348
|
fusion_bench/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
345
|
-
fusion_bench/scripts/cli.py,sha256=
|
|
349
|
+
fusion_bench/scripts/cli.py,sha256=gjNghi2VSW2gg41bn-WjzSkmTE3pDLoFk9c61zLJNso,1154
|
|
346
350
|
fusion_bench/scripts/imgui.py,sha256=r9Glbfbwu3JCsX9TKQFwcHarvwA_G7ff0jWBUPW1S1U,7613
|
|
347
351
|
fusion_bench/scripts/nyuv2_mtl_train.py,sha256=W1C45R9NdF4O-UjCx1bUxRTdFE0-FlRpwJHZ5gY18rI,3602
|
|
348
352
|
fusion_bench/scripts/webui.py,sha256=ryA-2leSnHcYA88tTAYzJGDhiljbi0vl1Fibejzndlw,14398
|
|
@@ -384,7 +388,7 @@ fusion_bench/tasks/clip_classification/fer2013.py,sha256=_oc2fdV308ywcb16rLZxBAd
|
|
|
384
388
|
fusion_bench/tasks/clip_classification/flower102.py,sha256=p_JMs6HCCPZBKe7PTXt0WABsd-KcgmpBkxDSlJJaVVY,2096
|
|
385
389
|
fusion_bench/tasks/clip_classification/food101.py,sha256=Oepvws5byGxrHswXt3ILG3UEPiZaFXYqK1yJqm1uYVE,1968
|
|
386
390
|
fusion_bench/tasks/clip_classification/gtsrb.py,sha256=Dsaz-XNz6oA9nNTF2C2iXmmhhVz-gsw-WcGuFTqjzl4,2677
|
|
387
|
-
fusion_bench/tasks/clip_classification/imagenet.py,sha256=
|
|
391
|
+
fusion_bench/tasks/clip_classification/imagenet.py,sha256=EhZ2iYAc8oApr5BU_vgM3cDY879anTkvb-5hfi-B7m4,48826
|
|
388
392
|
fusion_bench/tasks/clip_classification/kmnist.py,sha256=Ohce6aVaXkPnviDaZYXANMhhBNHZXO3FnXYxYG-ISVg,311
|
|
389
393
|
fusion_bench/tasks/clip_classification/mnist.py,sha256=-gQpHz_kCXmUOtAsM8FBUYFjlwcbAgnqpuVtRfCJ3JM,129
|
|
390
394
|
fusion_bench/tasks/clip_classification/mongo_leaf_disease.py,sha256=L_2IgnzbZdGZrX27VNGu1rC-N3Aj4fetIXB9HM1QZkI,519
|
|
@@ -417,15 +421,16 @@ fusion_bench/utils/hydra_utils.py,sha256=TklUDKDEZlg4keI-TEZiqh4gFjr9-61Rt1RMlqk
|
|
|
417
421
|
fusion_bench/utils/instantiate_utils.py,sha256=57D8YP25OO-ArltOSsHDKtnNcA44m1yAq-1wKZc2YVI,17523
|
|
418
422
|
fusion_bench/utils/json.py,sha256=sVCqbm9mmyHybiui-O57KFt_ULrjLtN2wipSo6VDvqE,2533
|
|
419
423
|
fusion_bench/utils/lazy_imports.py,sha256=v5l9cpHXPMaz1IVBmB5oOqefYr9vA3XvP340xT7Wy18,2796
|
|
420
|
-
fusion_bench/utils/lazy_state_dict.py,sha256=
|
|
421
|
-
fusion_bench/utils/misc.py,sha256=
|
|
424
|
+
fusion_bench/utils/lazy_state_dict.py,sha256=Hu8PkhbJcUikXJxWUJ7vabu2uDbnUUF6UsRS0k8i71U,16841
|
|
425
|
+
fusion_bench/utils/misc.py,sha256=93q0m-HYWkPK91Co5lll_J0Dxs6YahW2lD_X8fUAyTk,2420
|
|
426
|
+
fusion_bench/utils/modelscope.py,sha256=EZfvP6ExpagQXX2s0mbyE_yfmMHntQwvBN9taznnRmE,5705
|
|
422
427
|
fusion_bench/utils/packages.py,sha256=L64paDi1SmeT3gRvRV6LaqB8AeGdzIYWIRI31qSQbSk,2110
|
|
423
428
|
fusion_bench/utils/parameters.py,sha256=2vs8vo2o-nRA9NOMOYFye-X8-aHQZoYe54tM6n0r0RE,11757
|
|
424
429
|
fusion_bench/utils/path.py,sha256=hRA1CPHNnTYBUmzbftH77sHvn4aTuybEK5Tth1skP-k,531
|
|
425
430
|
fusion_bench/utils/pylogger.py,sha256=amlRsdqHpOjxmBl6f9TA8y0LaWelEWgQNcGgEGsVOIc,3333
|
|
426
431
|
fusion_bench/utils/rich_utils.py,sha256=B8DhAYuVp23pG6ZnnYrUhcL-ikHZoQeTNqlM7u4pwwU,5786
|
|
427
432
|
fusion_bench/utils/set.py,sha256=_43ZvGKJ_BK9sUslsSNhi7xEfuAQuyj3vViImnGpnCY,134
|
|
428
|
-
fusion_bench/utils/state_dict_arithmetic.py,sha256=
|
|
433
|
+
fusion_bench/utils/state_dict_arithmetic.py,sha256=7iWb9cy-eYJgiltGJXnVCrLoNHfIMXZEL_AOg6OY0dw,11613
|
|
429
434
|
fusion_bench/utils/tensorboard.py,sha256=9fkgNYR9LM38nPNkudcxL9TjLUseW-280M0k2nLff7o,1669
|
|
430
435
|
fusion_bench/utils/timer.py,sha256=RC2hP8JqaibdL0FnRyUCBRf4m7CXyfn5tE16zBWZ7hg,1338
|
|
431
436
|
fusion_bench/utils/type.py,sha256=2iu8PQzSzI2KopYwg4Pay7qpq7s_LKkl6Rhj-tjG3u0,630
|
|
@@ -436,7 +441,7 @@ fusion_bench/utils/plot/token_notebook.py,sha256=bsntXf46Zz_RavTxNiB9c3-KvHw7LFw
|
|
|
436
441
|
fusion_bench/utils/strenum/__init__.py,sha256=id9ORi1uXrDxhbmVxitJ1KDwLS4H3AAwFpaK5h1cQzw,8531
|
|
437
442
|
fusion_bench/utils/strenum/_name_mangler.py,sha256=o11M5-bURW2RBvRTYXFQIPNeqLzburdoWLIqk8X3ydw,3397
|
|
438
443
|
fusion_bench/utils/strenum/_version.py,sha256=6JQRo9LcvODbCOeVFYQb9HNJ_J9XiG_Zbn8ws2A3BV8,18466
|
|
439
|
-
fusion_bench-0.2.
|
|
444
|
+
fusion_bench-0.2.20.dist-info/licenses/LICENSE,sha256=nhnOJlw4CPuPVE0qvkGmxfFgHmKi-6nzXvTu8t0NUdg,1066
|
|
440
445
|
fusion_bench_config/README.md,sha256=Lc8YSBJ5oxf9KV5kKDivJ9LRyGuraGQPmBbgbdVA-j4,703
|
|
441
446
|
fusion_bench_config/clip-vit-base-patch32_robustness_corrupted.yaml,sha256=7IxLQoLRz-sRWyV8Vqc5kQcmYE_9YQz2_77pmvAkum8,1207
|
|
442
447
|
fusion_bench_config/fabric_model_fusion.yaml,sha256=YwJx_aUXm4ca4_mVItKVUOesMvmBBRGudQIOqgc1EP8,974
|
|
@@ -621,9 +626,10 @@ fusion_bench_config/method/randes/superposed_model_soup.yaml,sha256=7M9qV_wCgrE3
|
|
|
621
626
|
fusion_bench_config/method/randes/superposed_task_arithmetic.yaml,sha256=Pw0pZtwoMIPiqHfFNbN8wqNDyYb4L5p6fIOaaDSzJQg,498
|
|
622
627
|
fusion_bench_config/method/randes/superposed_task_arithmetic_lora.yaml,sha256=xH8IkGnjvKLEWsms64toWhOrKIJG9dYfqQGOsVT4GDc,539
|
|
623
628
|
fusion_bench_config/method/rankone_moe/rankone_moe.yaml,sha256=rYas_GFFHvn3AgKNrI0Zp4ElL9e3SppGPrFAMa_u9r8,863
|
|
624
|
-
fusion_bench_config/method/regmean/clip_regmean.yaml,sha256=
|
|
629
|
+
fusion_bench_config/method/regmean/clip_regmean.yaml,sha256=QfkCHCLK9wbyB1Tq1S7YT3351MbWzOjUQiALE-EJBgw,426
|
|
625
630
|
fusion_bench_config/method/regmean/gpt2_regmean.yaml,sha256=n94aTboDdwSA7Tki8l_o8tYQkhXxPV8lRf-dRNPIsOs,422
|
|
626
631
|
fusion_bench_config/method/regmean/regmean.yaml,sha256=ZgVVLx-lHwVgjtjTl4VZUlthh8yyua87QvoJfmNHud4,101
|
|
632
|
+
fusion_bench_config/method/regmean_plusplus/clip_regmean_plusplus.yaml,sha256=A034ryEwvosqyQzA3KWs7kdp-3CUnoJtCujVywV-uzA,434
|
|
627
633
|
fusion_bench_config/method/slerp/slerp.yaml,sha256=xldDUULtfCdwzAkQUb0C8-TmbW7FqcAlIOsPX8p4n6w,116
|
|
628
634
|
fusion_bench_config/method/smile_upscaling/singular_projection_merging.yaml,sha256=ZMn_ImRjjc2uozf7ocQIzbgvFDpBV7S-34KptbBXVGo,200
|
|
629
635
|
fusion_bench_config/method/smile_upscaling/smile_mistral_upscaling.yaml,sha256=VFMrkbO69d0wCjTQCuKysYGVe6hEwNu792g1QkhU5Mk,383
|
|
@@ -759,21 +765,21 @@ fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TA8_lora
|
|
|
759
765
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TA8_model_only.yaml,sha256=4_fQ7O6vUzIxLe-3mfY6qapx1rg5icQe_ODCbMspVRU,236
|
|
760
766
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL14.yaml,sha256=jBFj9O84KGWOwAI8a_In3Cq_C2caNE7JPYxhKaVDjsE,508
|
|
761
767
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL14_model_only.yaml,sha256=fvebppOvcZkVQfsCRllZzEU3ifbes4y7PHqS_gy0SYY,384
|
|
762
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL20.yaml,sha256=
|
|
763
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL20_model_only.yaml,sha256=
|
|
768
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL20.yaml,sha256=oPsGZjPxfb9wqmKzZv9MFeZNCtTh1AOY-01GK5fxMA4,2454
|
|
769
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_TALL20_model_only.yaml,sha256=pYoIPL2ebZGv7_dUQZQCDFVlU68K_VqUHQU0asYccmA,1384
|
|
764
770
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_individual.yaml,sha256=-jdB4ctj_NJcgbdYgog2-cighUSufAfpUvMOrGDblog,547
|
|
765
771
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch16_individual_lora.yaml,sha256=si8oNdCzCE_UDsHevyPGXxcJ0IZfRWHrrykHryazIvY,435
|
|
766
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8.yaml,sha256=
|
|
767
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8_control_task.yaml,sha256=
|
|
768
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8_model_only.yaml,sha256=
|
|
769
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL10.yaml,sha256=
|
|
770
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL12.yaml,sha256=
|
|
771
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL14.yaml,sha256=
|
|
772
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL14_model_only.yaml,sha256=
|
|
773
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL16.yaml,sha256=
|
|
774
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL18.yaml,sha256=
|
|
775
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL20.yaml,sha256=
|
|
776
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL20_model_only.yaml,sha256=
|
|
772
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8.yaml,sha256=FUJYnr8pRVYEKoPLGrgGf6FH7ctbpCntG1YSYQV130Q,1013
|
|
773
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8_control_task.yaml,sha256=5nq8kWxu6rc5LJ83yVtzbTqaaLol_lymkbePVmGFo94,667
|
|
774
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TA8_model_only.yaml,sha256=vz1rmOT-bt56eDmWLT21NFq-Si_qE8EHcbWWi67VbGE,568
|
|
775
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL10.yaml,sha256=rwbWzJnWmVNiwxfyNFDVc-5neIZToQm9N1VZLBt55Kk,1290
|
|
776
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL12.yaml,sha256=vSiHAIRJI-p7V8u2BS45f20AfIPccjFZ2oImGUFvytg,1742
|
|
777
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL14.yaml,sha256=VfrDzBIDRZcBXl1PwRiB04HcvwEARAIweHvlGGNhNmk,1902
|
|
778
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL14_model_only.yaml,sha256=xh2lwb8sKMqdd6VZNj1lA2r063XXtQG0vUCXv76slNQ,1048
|
|
779
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL16.yaml,sha256=qHUHlJCfYm1oxgb4gzaS0BBQ5akmdAO8g1kvO2FPxCw,2066
|
|
780
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL18.yaml,sha256=383zCvjWgs5VmwBKWXcHfqqO8Fk75tD7IyhcvJ590ZU,2270
|
|
781
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL20.yaml,sha256=YRv9FFqWnY4yOEtEAL91TRf2xgPB8P7Y0CAOgtX31Kk,2454
|
|
782
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_TALL20_model_only.yaml,sha256=gEHHb4LVHUteJ-MKlupbZXktff6_wvGVL0CLv4cfrk0,1385
|
|
777
783
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_cars_and_dtd.yaml,sha256=V93v7cjxF0ZPJj0wX76Q-hSNvolUaTtoeWuAImSU53g,524
|
|
778
784
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_generalization_exp1.yaml,sha256=2WtCV1cJEEK3R-t4Tf-YB1AIZl-d0FkE6C0CsUBm9fw,625
|
|
779
785
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_generalization_exp2.yaml,sha256=BmQ0JP8Oa5_V5pJ55nJS1xR-OIPmvySSqQ36l2jAB1w,625
|
|
@@ -781,20 +787,21 @@ fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_individu
|
|
|
781
787
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_mtl.yaml,sha256=pQr8lF-hIFrPXPcZYlbSxx8PF8EClZ6nm2L4yqEmHTk,176
|
|
782
788
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_robustness_clean.yaml,sha256=7oQtoqXs37fctajb6E7UOB0GT515eEGzFNm93dWOKKk,509
|
|
783
789
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_robustness_corrupted.yaml,sha256=txMh1k0O3Spusqewp7zV0N0L9e2fg87lviDEnNJSHGQ,900
|
|
784
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_single_finetuned.yaml,sha256=
|
|
785
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_single_task_projection.yaml,sha256=
|
|
786
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_and_cars.yaml,sha256=
|
|
787
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_and_dtd.yaml,sha256=
|
|
788
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_cars_and_dtd.yaml,sha256=
|
|
789
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_svhn_and_mnist.yaml,sha256=
|
|
790
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_two_tasks_control_task.yaml,sha256=
|
|
791
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TA8.yaml,sha256
|
|
792
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TA8_model_only.yaml,sha256=
|
|
790
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_single_finetuned.yaml,sha256=nm22fkXYUGAgZ39N2AzSE4CUVaODHgi8HTIxBWuTz3M,240
|
|
791
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_single_task_projection.yaml,sha256=i78xIL-vP28dYZaXntLsm7e9IdI2yAeUwZZze5fd9Do,288
|
|
792
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_and_cars.yaml,sha256=gDEzNfwsMtIu2xH8WSIUblx4ZyL1FsLXoSEpXPHiMaI,482
|
|
793
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_and_dtd.yaml,sha256=Ej1NOsPJzLVZmBI9jK3QMhZg198IqThUZwt8_6GizUM,442
|
|
794
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_sun397_cars_and_dtd.yaml,sha256=V1KSVfjY0hqbJFnnOkoe7SD3qKBWmYyx2fqrLTX05bE,548
|
|
795
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_svhn_and_mnist.yaml,sha256=jOTbHpyqBVepW7KhorStMjH9cVzHZvq6K7osgYnsVIU,443
|
|
796
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-base-patch32_two_tasks_control_task.yaml,sha256=dFVylgWlqWWW_Hh0N7b1m5A8WYK-r-tO7TxEviR5dCY,382
|
|
797
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TA8.yaml,sha256=ZuH1oweRcl08OeXNIxsb68PxYwdrUfliaHYa4s64ljo,939
|
|
798
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TA8_model_only.yaml,sha256=LmILwWINU8cRVvxx3IKZPFcAzPyMnr8OlCJ0TDs1WMg,573
|
|
793
799
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL14.yaml,sha256=TyF7CKXpBOiDoLtDVvZuBzPI9gEJo_c99j3Gwkl3FWw,510
|
|
794
800
|
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL14_model_only.yaml,sha256=i5XGxa2FoW2464R4k5AG-7r5qmzjHXkCSm1Om2cshik,386
|
|
795
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL20.yaml,sha256=
|
|
796
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL20_model_only.yaml,sha256=
|
|
797
|
-
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_individual.yaml,sha256=
|
|
801
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL20.yaml,sha256=FuPWQbC9xEV5wZjuo835gOMNgbzmpK9RbjFjA_HOzqo,2476
|
|
802
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_TALL20_model_only.yaml,sha256=9PCkbrNnQSKTsm4eoUvVgjGd3IY7wHBC4LWj4kOdY4Y,1406
|
|
803
|
+
fusion_bench_config/modelpool/CLIPVisionModelPool/clip-vit-large-patch14_individual.yaml,sha256=bqnyzgwIvDtV3Fb-uLf9mdFv0NW1C392lxGsGUPLsKE,400
|
|
804
|
+
fusion_bench_config/modelpool/CausalLMPool/Qwen2.5-1.5B_math_and_coder.yaml,sha256=HZXjqbZKpSZCHb-G8qjj03PcvXg_8mrAuewDHZp0oEw,263
|
|
798
805
|
fusion_bench_config/modelpool/CausalLMPool/deepseek-v2-lite.yaml,sha256=8gr8ZtgegSHV0GHtJBiEgdYbRe8UHhO4_y8dayxZChk,506
|
|
799
806
|
fusion_bench_config/modelpool/CausalLMPool/llama_alpaca_cleaned.yaml,sha256=oDsZkuAoh1mWUC7jZNzw8794zgX2bV5Z0esXpvbTs-c,643
|
|
800
807
|
fusion_bench_config/modelpool/CausalLMPool/llama_codealpaca.yaml,sha256=FuUsBrvk3_bQiciMRlNsO5vp6AKHQM_-g-8bmU8251w,641
|
|
@@ -875,8 +882,8 @@ fusion_bench_config/taskpool/LMEvalHarnessTaskPool/lm_eval.yaml,sha256=3q-KMuFaM
|
|
|
875
882
|
fusion_bench_config/taskpool/OpenCLIPVisionModelTaskPool/ViT-B-16_TA8.yaml,sha256=GjpiiRownrBCpl-TNwWRW2PYePbF-Cl99jlLNPrK5T4,1017
|
|
876
883
|
fusion_bench_config/taskpool/OpenCLIPVisionModelTaskPool/ViT-B-32_TA8.yaml,sha256=WwiYMQKehtJixDPnu5o3vcWe4yJksXTWRqOzm3uVWXQ,1017
|
|
877
884
|
fusion_bench_config/taskpool/OpenCLIPVisionModelTaskPool/ViT-L-14_TA8.yaml,sha256=xGRt0J9joXTzWUew6DvoYprAWlPXhaVFw5AX4im5VQw,1017
|
|
878
|
-
fusion_bench-0.2.
|
|
879
|
-
fusion_bench-0.2.
|
|
880
|
-
fusion_bench-0.2.
|
|
881
|
-
fusion_bench-0.2.
|
|
882
|
-
fusion_bench-0.2.
|
|
885
|
+
fusion_bench-0.2.20.dist-info/METADATA,sha256=fa8CMvPeD8fg_R8YuvjM_AggXMAVsqg63fZy3I4TMmc,23634
|
|
886
|
+
fusion_bench-0.2.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
887
|
+
fusion_bench-0.2.20.dist-info/entry_points.txt,sha256=iUQ8MCJvda7HP4vYh2n1Teoapb4G9PBVYZkAfcc5SHU,116
|
|
888
|
+
fusion_bench-0.2.20.dist-info/top_level.txt,sha256=BuO4TL6iHL_2yPBUX9-LlIrHRczA_BNMIFwweK0PQEI,13
|
|
889
|
+
fusion_bench-0.2.20.dist-info/RECORD,,
|