Skip to content

Commit 414b251

Browse files
committed
fix(perf): remove Nemotron 3.5 Lightning B-series FSDP recipes
Signed-off-by: Raghav Hrishikeshan Mukundan <rmukundan@nvidia.com>
1 parent 39d2cb0 commit 414b251

5 files changed

Lines changed: 6 additions & 109 deletions

File tree

scripts/performance/dump_perf_configs.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,11 +286,9 @@
286286
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "gb200", "nvfp4"),
287287
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b300", "bf16"),
288288
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b300", "fp8_mx"),
289-
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b300", "fp8_mx", "fsdp"),
290289
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b300", "nvfp4"),
291290
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b200", "bf16"),
292291
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b200", "fp8_mx"),
293-
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b200", "fp8_mx", "fsdp"),
294292
("nemotronh", "nemotron_3_5_lightning", "pretrain", 8, "b200", "nvfp4"),
295293
("nemotronh", "nemotron_3_5_lightning", "pretrain", 16, "h100", "bf16"),
296294
("nemotronh", "nemotron_3_5_lightning", "pretrain", 16, "h100", "fp8_cs"),

src/megatron/bridge/perf_recipes/nemotronh/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from megatron.bridge.perf_recipes.nemotronh.b200.nemotronh import (
22
nemotron_3_5_lightning_pretrain_8gpu_b200_bf16_config,
33
nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_config,
4-
nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_fsdp_config,
54
nemotron_3_5_lightning_pretrain_8gpu_b200_nvfp4_config,
65
nemotron_3_nano_pretrain_8gpu_b200_bf16_config,
76
nemotron_3_nano_pretrain_8gpu_b200_fp8mx_config,
@@ -16,7 +15,6 @@
1615
from megatron.bridge.perf_recipes.nemotronh.b300.nemotronh import (
1716
nemotron_3_5_lightning_pretrain_8gpu_b300_bf16_config,
1817
nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_config,
19-
nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_fsdp_config,
2018
nemotron_3_5_lightning_pretrain_8gpu_b300_nvfp4_config,
2119
nemotron_3_nano_pretrain_8gpu_b300_bf16_config,
2220
nemotron_3_nano_pretrain_8gpu_b300_fp8mx_config,

src/megatron/bridge/perf_recipes/nemotronh/b200/nemotronh.py

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -391,41 +391,9 @@ def nemotron_3_5_lightning_pretrain_8gpu_b200_bf16_config() -> ConfigContainer:
391391
return _apply_nemotron_3_5_lightning_defaults(nemotron_3_nano_pretrain_8gpu_b200_bf16_config())
392392

393393

394-
def _build_nemotron_3_5_lightning_b200_mxfp8() -> ConfigContainer:
395-
return _apply_nemotron_3_5_lightning_defaults(nemotron_3_nano_pretrain_8gpu_b200_fp8mx_config())
396-
397-
398394
def nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_config() -> ConfigContainer:
399395
"""Nemotron 3.5 Lightning pretrain: 8× B200, MXFP8."""
400-
return _build_nemotron_3_5_lightning_b200_mxfp8()
401-
402-
403-
def nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_fsdp_config() -> ConfigContainer:
404-
"""Nemotron 3.5 Lightning pretrain: 8× B200, MXFP8, Megatron FSDP."""
405-
cfg = _build_nemotron_3_5_lightning_b200_mxfp8()
406-
407-
# Megatron FSDP registers module hooks that Transformer Engine CUDA graph
408-
# capture rejects.
409-
cfg.train.global_batch_size = 384
410-
cfg.train.micro_batch_size = 3
411-
cfg.model.cuda_graph_impl = "none"
412-
set_cuda_graph_modules(cfg.model, [])
413-
414-
cfg.model.init_model_with_meta_device = True
415-
cfg.mixed_precision.reuse_grad_buf_for_mxfp8_param_ag = False
416-
cfg.dist.use_megatron_fsdp = True
417-
cfg.ddp.use_megatron_fsdp = True
418-
cfg.ddp.num_distributed_optimizer_instances = 1
419-
cfg.ddp.data_parallel_sharding_strategy = "optim_grads_params"
420-
cfg.ddp.outer_dp_sharding_strategy = "no_shard"
421-
cfg.ddp.average_in_collective = False
422-
cfg.ddp.keep_fp8_transpose_cache = False
423-
cfg.ddp.reuse_grad_buf_for_mxfp8_param_ag = False
424-
cfg.optimizer.reuse_grad_buf_for_mxfp8_param_ag = False
425-
426-
cfg.checkpoint.load = None
427-
cfg.checkpoint.ckpt_format = "fsdp_dtensor"
428-
return cfg
396+
return _apply_nemotron_3_5_lightning_defaults(nemotron_3_nano_pretrain_8gpu_b200_fp8mx_config())
429397

430398

431399
def nemotron_3_5_lightning_pretrain_8gpu_b200_nvfp4_config() -> ConfigContainer:

src/megatron/bridge/perf_recipes/nemotronh/b300/nemotronh.py

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -405,41 +405,9 @@ def nemotron_3_5_lightning_pretrain_8gpu_b300_bf16_config() -> ConfigContainer:
405405
return _apply_nemotron_3_5_lightning_defaults(nemotron_3_nano_pretrain_8gpu_b300_bf16_config())
406406

407407

408-
def _build_nemotron_3_5_lightning_b300_mxfp8() -> ConfigContainer:
409-
return _apply_nemotron_3_5_lightning_defaults(nemotron_3_nano_pretrain_8gpu_b300_fp8mx_config())
410-
411-
412408
def nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_config() -> ConfigContainer:
413409
"""Nemotron 3.5 Lightning pretrain: 8× B300, MXFP8."""
414-
return _build_nemotron_3_5_lightning_b300_mxfp8()
415-
416-
417-
def nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_fsdp_config() -> ConfigContainer:
418-
"""Nemotron 3.5 Lightning pretrain: 8× B300, MXFP8, Megatron FSDP."""
419-
cfg = _build_nemotron_3_5_lightning_b300_mxfp8()
420-
421-
# Megatron FSDP registers module hooks that Transformer Engine CUDA graph
422-
# capture rejects.
423-
cfg.train.global_batch_size = 384
424-
cfg.train.micro_batch_size = 3
425-
cfg.model.cuda_graph_impl = "none"
426-
set_cuda_graph_modules(cfg.model, [])
427-
428-
cfg.model.init_model_with_meta_device = True
429-
cfg.mixed_precision.reuse_grad_buf_for_mxfp8_param_ag = False
430-
cfg.dist.use_megatron_fsdp = True
431-
cfg.ddp.use_megatron_fsdp = True
432-
cfg.ddp.num_distributed_optimizer_instances = 1
433-
cfg.ddp.data_parallel_sharding_strategy = "optim_grads_params"
434-
cfg.ddp.outer_dp_sharding_strategy = "no_shard"
435-
cfg.ddp.average_in_collective = False
436-
cfg.ddp.keep_fp8_transpose_cache = False
437-
cfg.ddp.reuse_grad_buf_for_mxfp8_param_ag = False
438-
cfg.optimizer.reuse_grad_buf_for_mxfp8_param_ag = False
439-
440-
cfg.checkpoint.load = None
441-
cfg.checkpoint.ckpt_format = "fsdp_dtensor"
442-
return cfg
410+
return _apply_nemotron_3_5_lightning_defaults(nemotron_3_nano_pretrain_8gpu_b300_fp8mx_config())
443411

444412

445413
def nemotron_3_5_lightning_pretrain_8gpu_b300_nvfp4_config() -> ConfigContainer:

tests/unit_tests/recipes/test_nemotron_3_5_lightning_perf_recipes.py

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@
2424
from megatron.bridge.perf_recipes.nemotronh import (
2525
nemotron_3_5_lightning_pretrain_8gpu_b200_bf16_config,
2626
nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_config,
27-
nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_fsdp_config,
2827
nemotron_3_5_lightning_pretrain_8gpu_b200_nvfp4_config,
2928
nemotron_3_5_lightning_pretrain_8gpu_b300_bf16_config,
3029
nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_config,
31-
nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_fsdp_config,
3230
nemotron_3_5_lightning_pretrain_8gpu_b300_nvfp4_config,
3331
nemotron_3_5_lightning_pretrain_8gpu_gb200_bf16_config,
3432
nemotron_3_5_lightning_pretrain_8gpu_gb200_fp8mx_config,
@@ -77,10 +75,6 @@
7775
nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_config,
7876
nemotron_3_5_lightning_pretrain_8gpu_b300_nvfp4_config,
7977
)
80-
_B_FSDP_RECIPES = (
81-
nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_fsdp_config,
82-
nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_fsdp_config,
83-
)
8478
_GB200_RECIPES = (
8579
nemotron_3_5_lightning_pretrain_8gpu_gb200_bf16_config,
8680
nemotron_3_5_lightning_pretrain_8gpu_gb200_fp8mx_config,
@@ -95,7 +89,6 @@
9589
nemotron_3_5_lightning_pretrain_8gpu_gb200_fp8mx_fsdp_config,
9690
nemotron_3_5_lightning_pretrain_8gpu_gb300_fp8mx_fsdp_config,
9791
)
98-
_ALL_FSDP_RECIPES = (*_B_FSDP_RECIPES, *_GB_FSDP_RECIPES)
9992
_NEMOTRON_3_RECIPES = (
10093
nemotron_3_nano_pretrain_16gpu_h100_bf16_config,
10194
nemotron_3_nano_pretrain_16gpu_h100_fp8cs_config,
@@ -204,10 +197,6 @@
204197
"megatron.bridge.perf_recipes.nemotronh.b200.nemotronh",
205198
"nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_config",
206199
),
207-
(
208-
"megatron.bridge.perf_recipes.nemotronh.b200.nemotronh",
209-
"nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_fsdp_config",
210-
),
211200
(
212201
"megatron.bridge.perf_recipes.nemotronh.b200.nemotronh",
213202
"nemotron_3_5_lightning_pretrain_8gpu_b200_nvfp4_config",
@@ -220,10 +209,6 @@
220209
"megatron.bridge.perf_recipes.nemotronh.b300.nemotronh",
221210
"nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_config",
222211
),
223-
(
224-
"megatron.bridge.perf_recipes.nemotronh.b300.nemotronh",
225-
"nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_fsdp_config",
226-
),
227212
(
228213
"megatron.bridge.perf_recipes.nemotronh.b300.nemotronh",
229214
"nemotron_3_5_lightning_pretrain_8gpu_b300_nvfp4_config",
@@ -285,7 +270,7 @@ def test_standard_perf_recipes_do_not_expose_mtp_flag(recipe_factory: Callable[[
285270

286271
@pytest.mark.parametrize(
287272
"recipe_factory",
288-
(*_H100_RECIPES, *_B200_RECIPES, *_B300_RECIPES, *_GB200_RECIPES, *_GB300_RECIPES, *_ALL_FSDP_RECIPES),
273+
(*_H100_RECIPES, *_B200_RECIPES, *_B300_RECIPES, *_GB200_RECIPES, *_GB300_RECIPES, *_GB_FSDP_RECIPES),
289274
ids=lambda recipe: recipe.__name__,
290275
)
291276
def test_perf_recipes_enable_mtp(recipe_factory: Callable[[], ConfigContainer]) -> None:
@@ -513,9 +498,9 @@ def test_gb300_perf_recipe_topology(recipe_factory: Callable[[], ConfigContainer
513498
assert cfg.env_vars["USE_MNNVL"] == 1
514499

515500

516-
@pytest.mark.parametrize("recipe_factory", _ALL_FSDP_RECIPES, ids=lambda recipe: recipe.__name__)
517-
def test_mxfp8_fsdp_perf_recipe_defaults(recipe_factory: Callable[[], ConfigContainer]) -> None:
518-
"""The Lightning FSDP variants retain their measured 8-GPU performance settings."""
501+
@pytest.mark.parametrize("recipe_factory", _GB_FSDP_RECIPES, ids=lambda recipe: recipe.__name__)
502+
def test_gb_fsdp_perf_recipe_defaults(recipe_factory: Callable[[], ConfigContainer]) -> None:
503+
"""The GB FSDP variants retain their measured 8-GPU performance settings."""
519504
cfg = recipe_factory()
520505

521506
assert cfg.train.global_batch_size == 384
@@ -537,23 +522,3 @@ def test_mxfp8_fsdp_perf_recipe_defaults(recipe_factory: Callable[[], ConfigCont
537522
assert cfg.optimizer.reuse_grad_buf_for_mxfp8_param_ag is False
538523
assert cfg.checkpoint.load is None
539524
assert cfg.checkpoint.ckpt_format == "fsdp_dtensor"
540-
541-
542-
@pytest.mark.parametrize(
543-
("recipe_factory", "expect_b300_affinity"),
544-
(
545-
(nemotron_3_5_lightning_pretrain_8gpu_b200_fp8mx_fsdp_config, False),
546-
(nemotron_3_5_lightning_pretrain_8gpu_b300_fp8mx_fsdp_config, True),
547-
),
548-
ids=lambda value: value.__name__ if callable(value) else str(value),
549-
)
550-
def test_b200_b300_mxfp8_fsdp_topology(
551-
recipe_factory: Callable[[], ConfigContainer], expect_b300_affinity: bool
552-
) -> None:
553-
"""B200 and B300 FSDP variants preserve their NVL8 topology settings."""
554-
cfg = recipe_factory()
555-
556-
assert cfg.model.expert_model_parallel_size == 8
557-
assert cfg.env_vars["NVLINK_DOMAIN_SIZE"] == 8
558-
assert cfg.env_vars["USE_MNNVL"] == 0
559-
assert ("NCCL_IGNORE_CPU_AFFINITY" in cfg.env_vars) is expect_b300_affinity

0 commit comments

Comments
 (0)