Defuser 0.0.23__tar.gz → 0.0.25__tar.gz
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.
- {defuser-0.0.23 → defuser-0.0.25}/Defuser.egg-info/PKG-INFO +2 -2
- {defuser-0.0.23 → defuser-0.0.25}/PKG-INFO +2 -2
- {defuser-0.0.23 → defuser-0.0.25}/README.md +1 -1
- {defuser-0.0.23 → defuser-0.0.25}/defuser/model_registry.py +12 -0
- {defuser-0.0.23 → defuser-0.0.25}/pyproject.toml +2 -2
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_candidate_coverage.py +17 -0
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_meta_model_defusion.py +22 -0
- {defuser-0.0.23 → defuser-0.0.25}/Defuser.egg-info/SOURCES.txt +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/Defuser.egg-info/dependency_links.txt +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/Defuser.egg-info/requires.txt +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/Defuser.egg-info/top_level.txt +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/LICENSE +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/__init__.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/checkpoint_ops.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/defuser.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/__init__.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/glm4v.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/model_patches.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/moe_experts_interface.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/replace_modules.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/runtime_defusion.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/__init__.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/common.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/glm4_moe.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/glm4_moe_lite.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/mixtral.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/qwen2_moe.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/qwen3_moe.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/qwen3_next.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/unfused_moe/qwen3_omni_moe.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/modeling/update_module.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/utils/__init__.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/utils/common.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/utils/device.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/utils/hf.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/defuser/utils/model.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/setup.cfg +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/setup.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_convert_model.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_device_utils.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_filter_rules.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_moe_experts_interface.py +0 -0
- {defuser-0.0.23 → defuser-0.0.25}/tests/test_replace_modules_tracker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Defuser
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.25
|
|
4
4
|
Summary: Model defuser helper for HF Transformers.
|
|
5
5
|
Author-email: ModelCloud <qubitium@modelcloud.ai>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -92,7 +92,7 @@ Defuser currently supports the following `transformers>=5.3.0` `model_type` valu
|
|
|
92
92
|
|
|
93
93
|
| Pattern | Supported model types | Defused op performed ⚙️ |
|
|
94
94
|
| --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- |
|
|
95
|
-
| Standard routed expert tensors 🧱 | `deepseek_v2`, `dots1`, `ernie4_5_moe`, `ernie4_5_vl_moe`, `exaone_moe`, `flex_olmo`, `glm4_moe_lite`, `glm4v_moe`, `hunyuan_v1_moe`, `jamba`, `laguna`, `lfm2_moe`, `minimax`, `minimax_m2`, `olmoe`, `qwen3_vl_moe`, `solar_open` | Splits fused expert tensors or registered expert buffers into numbered expert `nn.Linear` modules with per-expert `gate_proj`, `up_proj`, and `down_proj`. |
|
|
95
|
+
| Standard routed expert tensors 🧱 | `deepseek_v2`, `dots1`, `ernie4_5_moe`, `ernie4_5_vl_moe`, `exaone_moe`, `flex_olmo`, `glm4_moe_lite`, `glm4v_moe`, `hunyuan_v1_moe`, `jamba`, `laguna`, `lfm2_moe`, `minimax`, `minimax_m2`, `olmoe`, `qwen3_vl_moe`, `solar_open`, `solar_open2` | Splits fused expert tensors or registered expert buffers into numbered expert `nn.Linear` modules with per-expert `gate_proj`, `up_proj`, and `down_proj`. |
|
|
96
96
|
| Mixed sparse and shared experts | `deepseek_v3`, deepseek_v4`, `glm_moe_dsa`, `qwen3_5_moe`, `qwen3_5_moe_text` | Runtime expert tensor defusion for routed experts while preserving the model's shared-expert path. |
|
|
97
97
|
| Transposed or packed expert tensors | `gpt_oss`, `phimoe` | Splits transposed fused expert `gate_up_proj` tensors into per-expert `gate_proj` + `up_proj`, preserves expert bias when present, and converts expert tensors into numbered expert `nn.Linear` modules. |
|
|
98
98
|
| Flattened expert layout | `dbrx` | Rebuilds the flattened DBRX expert FFN weights into numbered expert `gate_proj`, `up_proj`, and `down_proj` `nn.Linear` modules. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Defuser
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.25
|
|
4
4
|
Summary: Model defuser helper for HF Transformers.
|
|
5
5
|
Author-email: ModelCloud <qubitium@modelcloud.ai>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -92,7 +92,7 @@ Defuser currently supports the following `transformers>=5.3.0` `model_type` valu
|
|
|
92
92
|
|
|
93
93
|
| Pattern | Supported model types | Defused op performed ⚙️ |
|
|
94
94
|
| --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- |
|
|
95
|
-
| Standard routed expert tensors 🧱 | `deepseek_v2`, `dots1`, `ernie4_5_moe`, `ernie4_5_vl_moe`, `exaone_moe`, `flex_olmo`, `glm4_moe_lite`, `glm4v_moe`, `hunyuan_v1_moe`, `jamba`, `laguna`, `lfm2_moe`, `minimax`, `minimax_m2`, `olmoe`, `qwen3_vl_moe`, `solar_open` | Splits fused expert tensors or registered expert buffers into numbered expert `nn.Linear` modules with per-expert `gate_proj`, `up_proj`, and `down_proj`. |
|
|
95
|
+
| Standard routed expert tensors 🧱 | `deepseek_v2`, `dots1`, `ernie4_5_moe`, `ernie4_5_vl_moe`, `exaone_moe`, `flex_olmo`, `glm4_moe_lite`, `glm4v_moe`, `hunyuan_v1_moe`, `jamba`, `laguna`, `lfm2_moe`, `minimax`, `minimax_m2`, `olmoe`, `qwen3_vl_moe`, `solar_open`, `solar_open2` | Splits fused expert tensors or registered expert buffers into numbered expert `nn.Linear` modules with per-expert `gate_proj`, `up_proj`, and `down_proj`. |
|
|
96
96
|
| Mixed sparse and shared experts | `deepseek_v3`, deepseek_v4`, `glm_moe_dsa`, `qwen3_5_moe`, `qwen3_5_moe_text` | Runtime expert tensor defusion for routed experts while preserving the model's shared-expert path. |
|
|
97
97
|
| Transposed or packed expert tensors | `gpt_oss`, `phimoe` | Splits transposed fused expert `gate_up_proj` tensors into per-expert `gate_proj` + `up_proj`, preserves expert bias when present, and converts expert tensors into numbered expert `nn.Linear` modules. |
|
|
98
98
|
| Flattened expert layout | `dbrx` | Rebuilds the flattened DBRX expert FFN weights into numbered expert `gate_proj`, `up_proj`, and `down_proj` `nn.Linear` modules. |
|
|
@@ -66,7 +66,7 @@ Defuser currently supports the following `transformers>=5.3.0` `model_type` valu
|
|
|
66
66
|
|
|
67
67
|
| Pattern | Supported model types | Defused op performed ⚙️ |
|
|
68
68
|
| --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- |
|
|
69
|
-
| Standard routed expert tensors 🧱 | `deepseek_v2`, `dots1`, `ernie4_5_moe`, `ernie4_5_vl_moe`, `exaone_moe`, `flex_olmo`, `glm4_moe_lite`, `glm4v_moe`, `hunyuan_v1_moe`, `jamba`, `laguna`, `lfm2_moe`, `minimax`, `minimax_m2`, `olmoe`, `qwen3_vl_moe`, `solar_open` | Splits fused expert tensors or registered expert buffers into numbered expert `nn.Linear` modules with per-expert `gate_proj`, `up_proj`, and `down_proj`. |
|
|
69
|
+
| Standard routed expert tensors 🧱 | `deepseek_v2`, `dots1`, `ernie4_5_moe`, `ernie4_5_vl_moe`, `exaone_moe`, `flex_olmo`, `glm4_moe_lite`, `glm4v_moe`, `hunyuan_v1_moe`, `jamba`, `laguna`, `lfm2_moe`, `minimax`, `minimax_m2`, `olmoe`, `qwen3_vl_moe`, `solar_open`, `solar_open2` | Splits fused expert tensors or registered expert buffers into numbered expert `nn.Linear` modules with per-expert `gate_proj`, `up_proj`, and `down_proj`. |
|
|
70
70
|
| Mixed sparse and shared experts | `deepseek_v3`, deepseek_v4`, `glm_moe_dsa`, `qwen3_5_moe`, `qwen3_5_moe_text` | Runtime expert tensor defusion for routed experts while preserving the model's shared-expert path. |
|
|
71
71
|
| Transposed or packed expert tensors | `gpt_oss`, `phimoe` | Splits transposed fused expert `gate_up_proj` tensors into per-expert `gate_proj` + `up_proj`, preserves expert bias when present, and converts expert tensors into numbered expert `nn.Linear` modules. |
|
|
72
72
|
| Flattened expert layout | `dbrx` | Rebuilds the flattened DBRX expert FFN weights into numbered expert `gate_proj`, `up_proj`, and `down_proj` `nn.Linear` modules. |
|
|
@@ -16,6 +16,9 @@ class PATCH(str, Enum):
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
MODEL_CONFIG = {
|
|
19
|
+
"axk2": {
|
|
20
|
+
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
21
|
+
},
|
|
19
22
|
"cohere2_moe": {
|
|
20
23
|
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
21
24
|
},
|
|
@@ -25,6 +28,12 @@ MODEL_CONFIG = {
|
|
|
25
28
|
"deepseek_v2": {
|
|
26
29
|
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
27
30
|
},
|
|
31
|
+
"deepseek_ocr2": {
|
|
32
|
+
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
33
|
+
},
|
|
34
|
+
"inkling_mm_model": {
|
|
35
|
+
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
36
|
+
},
|
|
28
37
|
"deepseek_v3": {
|
|
29
38
|
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
30
39
|
},
|
|
@@ -268,6 +277,9 @@ MODEL_CONFIG = {
|
|
|
268
277
|
"solar_open": {
|
|
269
278
|
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
270
279
|
},
|
|
280
|
+
"solar_open2": {
|
|
281
|
+
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
282
|
+
},
|
|
271
283
|
"zamba2": {
|
|
272
284
|
"min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
|
|
273
285
|
},
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
# Contact: qubitium@modelcloud.ai, x.com/qubitium
|
|
5
5
|
|
|
6
6
|
[build-system]
|
|
7
|
-
requires = ["setuptools>=77.0.1,<
|
|
7
|
+
requires = ["setuptools>=77.0.1,<84"]
|
|
8
8
|
build-backend = "setuptools.build_meta"
|
|
9
9
|
|
|
10
10
|
[project]
|
|
11
11
|
name = "Defuser"
|
|
12
|
-
version = "0.0.
|
|
12
|
+
version = "0.0.25"
|
|
13
13
|
description = "Model defuser helper for HF Transformers."
|
|
14
14
|
readme = "README.md"
|
|
15
15
|
requires-python = ">=3.9"
|
|
@@ -351,6 +351,22 @@ STANDARD_MOE_CASES = [
|
|
|
351
351
|
"route_indices": [[0], [1], [2], [3], [0]],
|
|
352
352
|
"expert_attrs": ("gate_proj", "up_proj", "down_proj"),
|
|
353
353
|
},
|
|
354
|
+
{
|
|
355
|
+
"model_type": "solar_open2",
|
|
356
|
+
"module_path": "transformers.models.solar_open2.modeling_solar_open2",
|
|
357
|
+
"class_name": "SolarOpen2Experts",
|
|
358
|
+
"config_module": "transformers.models.solar_open2.configuration_solar_open2",
|
|
359
|
+
"config_name": "SolarOpen2Config",
|
|
360
|
+
"config_updates": {
|
|
361
|
+
"hidden_size": 64,
|
|
362
|
+
"moe_intermediate_size": 32,
|
|
363
|
+
"n_routed_experts": 4,
|
|
364
|
+
"hidden_act": "silu",
|
|
365
|
+
},
|
|
366
|
+
"input_dim": 64,
|
|
367
|
+
"route_indices": [[0], [1], [2], [3], [0]],
|
|
368
|
+
"expert_attrs": ("gate_proj", "up_proj", "down_proj"),
|
|
369
|
+
},
|
|
354
370
|
{
|
|
355
371
|
"model_type": "dbrx",
|
|
356
372
|
"module_path": "transformers.models.dbrx.modeling_dbrx",
|
|
@@ -571,6 +587,7 @@ ALL_CANDIDATE_MODEL_TYPES = {
|
|
|
571
587
|
"qwen3_omni_moe",
|
|
572
588
|
"qwen3_vl_moe",
|
|
573
589
|
"solar_open",
|
|
590
|
+
"solar_open2",
|
|
574
591
|
"zamba2",
|
|
575
592
|
}
|
|
576
593
|
|
|
@@ -300,6 +300,17 @@ def _validate_defused_module(case: dict, module) -> None:
|
|
|
300
300
|
|
|
301
301
|
|
|
302
302
|
META_MODEL_CASES = [
|
|
303
|
+
{
|
|
304
|
+
"model_type": "axk2",
|
|
305
|
+
"mode": "convert",
|
|
306
|
+
"model_module": "transformers.models.axk2.modeling_axk2",
|
|
307
|
+
"model_class": "AXK2ForCausalLM",
|
|
308
|
+
"config_module": "transformers.models.axk2.configuration_axk2",
|
|
309
|
+
"config_class": "AXK2Config",
|
|
310
|
+
"target_class_paths": ("transformers.models.axk2.modeling_axk2.AXK2Experts",),
|
|
311
|
+
"validator": "experts",
|
|
312
|
+
"min_targets": 1,
|
|
313
|
+
},
|
|
303
314
|
{
|
|
304
315
|
"model_type": "dbrx",
|
|
305
316
|
"mode": "convert",
|
|
@@ -779,6 +790,17 @@ META_MODEL_CASES = [
|
|
|
779
790
|
"target_class_paths": ("transformers.models.solar_open.modeling_solar_open.SolarOpenNaiveMoe",),
|
|
780
791
|
"validator": "experts",
|
|
781
792
|
},
|
|
793
|
+
{
|
|
794
|
+
"model_type": "solar_open2",
|
|
795
|
+
"mode": "convert",
|
|
796
|
+
"model_module": "transformers.models.solar_open2.modeling_solar_open2",
|
|
797
|
+
"model_class": "SolarOpen2ForCausalLM",
|
|
798
|
+
"config_module": "transformers.models.solar_open2.configuration_solar_open2",
|
|
799
|
+
"config_class": "SolarOpen2Config",
|
|
800
|
+
"target_class_paths": ("transformers.models.solar_open2.modeling_solar_open2.SolarOpen2Experts",),
|
|
801
|
+
"validator": "experts",
|
|
802
|
+
"min_targets": 2,
|
|
803
|
+
},
|
|
782
804
|
{
|
|
783
805
|
"model_type": "zamba2",
|
|
784
806
|
"mode": "convert",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|