Defuser 0.0.23__tar.gz → 0.0.24__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.
Files changed (43) hide show
  1. {defuser-0.0.23 → defuser-0.0.24}/Defuser.egg-info/PKG-INFO +2 -2
  2. {defuser-0.0.23 → defuser-0.0.24}/PKG-INFO +2 -2
  3. {defuser-0.0.23 → defuser-0.0.24}/README.md +1 -1
  4. {defuser-0.0.23 → defuser-0.0.24}/defuser/model_registry.py +9 -0
  5. {defuser-0.0.23 → defuser-0.0.24}/pyproject.toml +1 -1
  6. {defuser-0.0.23 → defuser-0.0.24}/tests/test_candidate_coverage.py +17 -0
  7. {defuser-0.0.23 → defuser-0.0.24}/tests/test_meta_model_defusion.py +11 -0
  8. {defuser-0.0.23 → defuser-0.0.24}/Defuser.egg-info/SOURCES.txt +0 -0
  9. {defuser-0.0.23 → defuser-0.0.24}/Defuser.egg-info/dependency_links.txt +0 -0
  10. {defuser-0.0.23 → defuser-0.0.24}/Defuser.egg-info/requires.txt +0 -0
  11. {defuser-0.0.23 → defuser-0.0.24}/Defuser.egg-info/top_level.txt +0 -0
  12. {defuser-0.0.23 → defuser-0.0.24}/LICENSE +0 -0
  13. {defuser-0.0.23 → defuser-0.0.24}/defuser/__init__.py +0 -0
  14. {defuser-0.0.23 → defuser-0.0.24}/defuser/checkpoint_ops.py +0 -0
  15. {defuser-0.0.23 → defuser-0.0.24}/defuser/defuser.py +0 -0
  16. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/__init__.py +0 -0
  17. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/glm4v.py +0 -0
  18. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/model_patches.py +0 -0
  19. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/moe_experts_interface.py +0 -0
  20. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/replace_modules.py +0 -0
  21. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/runtime_defusion.py +0 -0
  22. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/__init__.py +0 -0
  23. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/common.py +0 -0
  24. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/glm4_moe.py +0 -0
  25. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/glm4_moe_lite.py +0 -0
  26. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/mixtral.py +0 -0
  27. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/qwen2_moe.py +0 -0
  28. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/qwen3_moe.py +0 -0
  29. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/qwen3_next.py +0 -0
  30. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/unfused_moe/qwen3_omni_moe.py +0 -0
  31. {defuser-0.0.23 → defuser-0.0.24}/defuser/modeling/update_module.py +0 -0
  32. {defuser-0.0.23 → defuser-0.0.24}/defuser/utils/__init__.py +0 -0
  33. {defuser-0.0.23 → defuser-0.0.24}/defuser/utils/common.py +0 -0
  34. {defuser-0.0.23 → defuser-0.0.24}/defuser/utils/device.py +0 -0
  35. {defuser-0.0.23 → defuser-0.0.24}/defuser/utils/hf.py +0 -0
  36. {defuser-0.0.23 → defuser-0.0.24}/defuser/utils/model.py +0 -0
  37. {defuser-0.0.23 → defuser-0.0.24}/setup.cfg +0 -0
  38. {defuser-0.0.23 → defuser-0.0.24}/setup.py +0 -0
  39. {defuser-0.0.23 → defuser-0.0.24}/tests/test_convert_model.py +0 -0
  40. {defuser-0.0.23 → defuser-0.0.24}/tests/test_device_utils.py +0 -0
  41. {defuser-0.0.23 → defuser-0.0.24}/tests/test_filter_rules.py +0 -0
  42. {defuser-0.0.23 → defuser-0.0.24}/tests/test_moe_experts_interface.py +0 -0
  43. {defuser-0.0.23 → defuser-0.0.24}/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.23
3
+ Version: 0.0.24
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.23
3
+ Version: 0.0.24
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. |
@@ -25,6 +25,12 @@ MODEL_CONFIG = {
25
25
  "deepseek_v2": {
26
26
  "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
27
27
  },
28
+ "deepseek_ocr2": {
29
+ "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
30
+ },
31
+ "inkling_mm_model": {
32
+ "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
33
+ },
28
34
  "deepseek_v3": {
29
35
  "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
30
36
  },
@@ -268,6 +274,9 @@ MODEL_CONFIG = {
268
274
  "solar_open": {
269
275
  "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
270
276
  },
277
+ "solar_open2": {
278
+ "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
279
+ },
271
280
  "zamba2": {
272
281
  "min_transformers_version": MIN_SUPPORTED_TRANSFORMERS_VERSION,
273
282
  },
@@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta"
9
9
 
10
10
  [project]
11
11
  name = "Defuser"
12
- version = "0.0.23"
12
+ version = "0.0.24"
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
 
@@ -779,6 +779,17 @@ META_MODEL_CASES = [
779
779
  "target_class_paths": ("transformers.models.solar_open.modeling_solar_open.SolarOpenNaiveMoe",),
780
780
  "validator": "experts",
781
781
  },
782
+ {
783
+ "model_type": "solar_open2",
784
+ "mode": "convert",
785
+ "model_module": "transformers.models.solar_open2.modeling_solar_open2",
786
+ "model_class": "SolarOpen2ForCausalLM",
787
+ "config_module": "transformers.models.solar_open2.configuration_solar_open2",
788
+ "config_class": "SolarOpen2Config",
789
+ "target_class_paths": ("transformers.models.solar_open2.modeling_solar_open2.SolarOpen2Experts",),
790
+ "validator": "experts",
791
+ "min_targets": 2,
792
+ },
782
793
  {
783
794
  "model_type": "zamba2",
784
795
  "mode": "convert",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes