|
17 | 17 | from types import SimpleNamespace |
18 | 18 | from unittest.mock import patch |
19 | 19 |
|
| 20 | +from torch import nn |
| 21 | + |
20 | 22 | from megatron.bridge.models.conversion.utils import conform_config_to_reference |
21 | 23 | from megatron.bridge.models.stepfun import step37_bridge as _step37_bridge_mod |
22 | 24 | from megatron.bridge.models.stepfun.configuration_step37 import Step37Config |
23 | 25 | from megatron.bridge.models.stepfun.modelling_step37 import transformer_block as _step37_block_mod |
| 26 | +from megatron.bridge.models.stepfun.modelling_step37.image_insert_embedding import ImageInsertEmbedding |
24 | 27 | from megatron.bridge.models.stepfun.modelling_step37.transformer_block import get_step37_text_layer_spec |
25 | 28 | from megatron.bridge.models.stepfun.step35_bridge import build_step35_layer_spec |
26 | 29 | from megatron.bridge.models.stepfun.step37_bridge import Step37Bridge |
@@ -96,6 +99,27 @@ def test_checkpoint_mtp_override_is_nested_in_exported_config(self): |
96 | 99 |
|
97 | 100 | assert synthesized_config.text_config.num_nextn_predict_layers == 0 |
98 | 101 |
|
| 102 | + def test_projector_bias_schema_roundtrips(self): |
| 103 | + reference_config = Step37Config(projector_bias=False) |
| 104 | + provider = SimpleNamespace(projector_bias=True) |
| 105 | + |
| 106 | + biased_projector = ImageInsertEmbedding(nn.Identity(), 4, 2, projector_bias=provider.projector_bias) |
| 107 | + unbiased_projector = ImageInsertEmbedding(nn.Identity(), 4, 2, projector_bias=False) |
| 108 | + assert biased_projector.align_projector.bias is not None |
| 109 | + assert unbiased_projector.align_projector.bias is None |
| 110 | + |
| 111 | + mapping = ( |
| 112 | + Step37Bridge().mapping_registry().megatron_to_hf_lookup("image_insert_embedding.align_projector.bias") |
| 113 | + ) |
| 114 | + checkpoint_config = Step37Bridge.megatron_to_hf_config(provider) |
| 115 | + exported_config = conform_config_to_reference(checkpoint_config, reference_config.to_dict()) |
| 116 | + synthesized_config = Step37Config(**exported_config) |
| 117 | + |
| 118 | + assert ( |
| 119 | + mapping.hf_param if mapping is not None else None, |
| 120 | + synthesized_config.projector_bias, |
| 121 | + ) == ("vit_large_projector.bias", True) |
| 122 | + |
99 | 123 |
|
100 | 124 | class TestGetStep37TextLayerSpec: |
101 | 125 | def test_delegates_to_step35_builder(self): |
|
0 commit comments