File tree Expand file tree Collapse file tree
src/megatron/bridge/models/stepfun
tests/unit_tests/models/stepfun Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -112,6 +112,15 @@ class Step37Bridge(MegatronModelBridge):
112112 # uses the identical HF schema.
113113 CONFIG_MAPPING = Step35Bridge .CONFIG_MAPPING
114114
115+ @classmethod
116+ def megatron_to_hf_config (cls , provider : Step37ModelProvider ) -> dict :
117+ """Convert a Step3.7 provider into its nested Hugging Face config."""
118+ hf_config = super ().megatron_to_hf_config (provider )
119+ mtp_num_layers = hf_config .pop ("num_nextn_predict_layers" , None )
120+ if mtp_num_layers is not None :
121+ hf_config ["text_config" ] = {"num_nextn_predict_layers" : mtp_num_layers }
122+ return hf_config
123+
115124 def provider_bridge (self , hf_pretrained : PreTrainedCausalLM ) -> Step37ModelProvider :
116125 """Convert a HuggingFace Step3.7 config into a :class:`Step37ModelProvider`.
117126
Original file line number Diff line number Diff line change 1717from types import SimpleNamespace
1818from unittest .mock import patch
1919
20+ from megatron .bridge .models .conversion .utils import conform_config_to_reference
2021from megatron .bridge .models .stepfun import step37_bridge as _step37_bridge_mod
22+ from megatron .bridge .models .stepfun .configuration_step37 import Step37Config
2123from megatron .bridge .models .stepfun .modelling_step37 import transformer_block as _step37_block_mod
2224from megatron .bridge .models .stepfun .modelling_step37 .transformer_block import get_step37_text_layer_spec
2325from megatron .bridge .models .stepfun .step35_bridge import build_step35_layer_spec
@@ -83,6 +85,18 @@ def test_layer_spec_target_passes_checkpoint_load_validation(self):
8385 _validate_target_prefix (target = target , full_key = "transformer_layer_spec" )
8486
8587
88+ class TestStep37BridgeReverseConfig :
89+ def test_checkpoint_mtp_override_is_nested_in_exported_config (self ):
90+ reference_config = Step37Config (text_config = {"num_nextn_predict_layers" : 3 })
91+ provider = SimpleNamespace (mtp_num_layers = 0 )
92+
93+ checkpoint_config = Step37Bridge .megatron_to_hf_config (provider )
94+ exported_config = conform_config_to_reference (checkpoint_config , reference_config .to_dict ())
95+ synthesized_config = Step37Config (** exported_config )
96+
97+ assert synthesized_config .text_config .num_nextn_predict_layers == 0
98+
99+
86100class TestGetStep37TextLayerSpec :
87101 def test_delegates_to_step35_builder (self ):
88102 """Step3.7's text decoder spec is Step-3.5's hybrid layer spec, passed through verbatim."""
You can’t perform that action at this time.
0 commit comments