Skip to content

Commit 96e9e4d

Browse files
kamran-nvidiaclaude
andcommitted
refactor(model): opt the migrated families into builder-backed model configs
After #6305, MODEL_CONFIG_CLASS defaults to None and each family opts in. Set MODEL_CONFIG_CLASS = BridgeGPTModelConfig on the bridges this PR migrates, matching Qwen3 and Llama, and assert it in their tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Kamran Jafari <kjafarisadeg@nvidia.com>
1 parent 098c1bf commit 96e9e4d

4 files changed

Lines changed: 9 additions & 2 deletions

File tree

‎src/megatron/bridge/models/qwen/qwen2_bridge.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
GatedMLPMapping,
2626
QKVMapping,
2727
)
28+
from megatron.bridge.models.gpt.model_config import BridgeGPTModelConfig
2829

2930

3031
@MegatronModelBridge.register_bridge(source=Qwen2ForCausalLM, target=GPTModel, model_type="qwen2")
@@ -45,6 +46,7 @@ class Qwen2Bridge(MegatronModelBridge):
4546
>>> model_config = bridge.get_model_config()
4647
"""
4748

49+
MODEL_CONFIG_CLASS = BridgeGPTModelConfig
4850
USE_MODEL_CONFIG_FOR_CONVERSION = True
4951

5052
def hf_config_to_model_config_kwargs(self, hf_config: PretrainedConfig) -> dict[str, Any]:

‎tests/unit_tests/models/mimo/test_mimo_bridge.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from transformers import GenerationConfig
2020

2121
from megatron.bridge.models.conversion.model_bridge import MegatronModelBridge, WeightConversionTask
22+
from megatron.bridge.models.gpt.model_config import BridgeGPTModelConfig
2223
from megatron.bridge.models.gpt_provider import GPTModelProvider
2324
from megatron.bridge.models.hf_pretrained.causal_lm import PreTrainedCausalLM
2425
from megatron.bridge.models.mimo.mimo_bridge import MimoBridge
@@ -132,6 +133,7 @@ def test_provider_bridge_is_inherited_compatibility_only(self):
132133
assert "provider_bridge" not in MimoBridge.__dict__
133134

134135
def test_conversion_uses_builder_config(self):
136+
assert MimoBridge.MODEL_CONFIG_CLASS is BridgeGPTModelConfig
135137
assert MimoBridge.USE_MODEL_CONFIG_FOR_CONVERSION is True
136138

137139
def test_model_config_maps_mtp_config(self, mock_pretrained_mimo):

‎tests/unit_tests/models/qwen/test_qwen2_bridge.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def test_provider_bridge_is_inherited_compatibility_only(self):
5555

5656
def test_conversion_uses_builder_config(self):
5757
"""Checkpoint conversion constructs Qwen2 through its ModelBuilder."""
58+
assert Qwen2Bridge.MODEL_CONFIG_CLASS is BridgeGPTModelConfig
5859
assert Qwen2Bridge.USE_MODEL_CONFIG_FOR_CONVERSION is True
5960

6061
def test_hf_config_to_model_config_uses_direct_mapping(self):

‎tests/unit_tests/models/test_gpt_model_config.py‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,12 @@ def test_unmigrated_bridge_keeps_provider_without_warning() -> None:
217217
vocab_size=256,
218218
)
219219

220-
assert Qwen2Bridge.MODEL_CONFIG_CLASS is None
220+
class UnmigratedQwen2Bridge(Qwen2Bridge):
221+
MODEL_CONFIG_CLASS = None
222+
221223
with warnings.catch_warnings():
222224
warnings.simplefilter("error", FutureWarning)
223-
provider = Qwen2Bridge().provider_bridge(Mock(config=hf_config))
225+
provider = UnmigratedQwen2Bridge().provider_bridge(Mock(config=hf_config))
224226

225227
assert provider.position_embedding_type == "rope"
226228
assert provider.add_qkv_bias is True

0 commit comments

Comments
 (0)