@@ -102,6 +102,45 @@ class _DummyClass:
102102 save_sharded_modelopt_state = None
103103
104104
105+ @pytest .mark .unit
106+ @pytest .mark .parametrize ("per_rank_objects" , [False , True ])
107+ def test_global_checkpoint_load_forwards_per_rank_objects (per_rank_objects ):
108+ """The configured object-loading policy must reach the real Core strategy."""
109+ from megatron .bridge .training import checkpointing
110+
111+ config = CheckpointConfig (
112+ async_save = False ,
113+ fully_parallel_load = True ,
114+ ckpt_fully_parallel_load_per_rank_objects = per_rank_objects ,
115+ )
116+ group = Mock ()
117+ pg = SimpleNamespace (dp_cp = Mock (), dp_cp_gtp_remat = group )
118+ context = {}
119+ with (
120+ patch .object (checkpointing , "TorchDistLoadShardedStrategy" ) as base_strategy ,
121+ patch .object (checkpointing .dist_checkpointing , "load" , return_value = {"model" : {}}) as load ,
122+ ):
123+ result = checkpointing ._load_global_dist_base_checkpoint (
124+ "checkpoint" ,
125+ config ,
126+ False ,
127+ {"model" : {}},
128+ 1 ,
129+ False ,
130+ checkpoint_path_override = "checkpoint/iter_0000001" ,
131+ checkpointing_context = context ,
132+ pg_collection = pg ,
133+ )
134+
135+ strategy = load .call_args .args [2 ]
136+ assert isinstance (strategy , checkpointing .FullyParallelLoadStrategyWrapper )
137+ assert strategy .per_rank_object_load is per_rank_objects
138+ assert strategy .parallelization_group is group
139+ assert strategy .base_strategy is base_strategy .return_value
140+ assert context ["load_strategy" ] is strategy
141+ assert result [0 ] == {"model" : {}}
142+
143+
105144def test_checkpoint_group_includes_gtp_and_supports_older_collections ():
106145 replica_group = Mock ()
107146 distribution_group = Mock ()
0 commit comments