nemo-mbridge-mlm-bridge-training
nvidia/skills
Run Megatron-LM and Megatron Bridge training with correlation testing and multi-GPU examples.
What is nemo-mbridge-mlm-bridge-training?
This skill enables you to run and compare Megatron-LM (MLM) and Megatron Bridge training workflows, verify loss-curve correlation between implementations, and scale training across multiple GPUs with tensor parallelism. Use it when translating MLM CLI arguments to Bridge config, investigating loss divergence, or validating training setup equivalence.
- Run single-GPU and multi-GPU GPT pretraining with MLM or Bridge entry points
- Compare loss curves between MLM and Bridge to verify implementation correlation within BF16 rounding
- Translate Megatron-LM CLI arguments to Megatron Bridge YAML config using provided arg-mapping tables
- Execute correlation tests using the minimal vanilla_gpt_pretrain_config recipe
- Scale training with tensor parallelism (TP) and sequence parallelism across 2+ GPUs
- Switch between main and dev versions of the Megatron-Core submodule for feature testing
How to install nemo-mbridge-mlm-bridge-training
npx skills add https://github.com/nvidia/skills --skill nemo-mbridge-mlm-bridge-training- NVIDIA CUDA-capable GPU(s) with PyTorch and torch.distributed support
- uv package manager installed
- Megatron-LM and Megatron Bridge repositories cloned with submodules initialized
- PYTHONPATH configured to include 3rdparty/Megatron-LM for MLM runs
How to use nemo-mbridge-mlm-bridge-training
- 1.Install the skill via npx skills add
- 2.Review the arg-mapping tables in @docs/megatron-lm-to-megatron-bridge.md to understand MLM↔Bridge parameter translation
- 3.For correlation testing: run the MLM correlation run command with mock data on 1 GPU
- 4.Clean up stale checkpoints with rm -rf nemo_experiments before the Bridge correlation run
- 5.Execute the Bridge correlation run with matching hyperparameters and compare lm loss values from both logs
- 6.For multi-GPU: set tensor_model_parallel_size and sequence_parallel flags, then scale nproc_per_node and batch sizes accordingly
- 7.Use ./scripts/switch_mcore.sh to manage Megatron-Core submodule versions if testing dev features
Use cases
- Validating that a new commit did not break loss-curve equivalence between MLM and Bridge implementations
- Setting up a fresh multi-GPU training run with TP=2 and comparing results to a single-GPU baseline
- Migrating an existing MLM training script to Bridge by mapping hyperparameters and verifying matching losses
- Debugging why loss curves diverged after a repository update by running correlation tests on both codepaths
- Testing newer Megatron-Core features by switching to the dev submodule branch
- ML engineers validating Megatron framework implementations
- Researchers comparing training approaches or debugging loss divergence
- DevOps/infrastructure teams setting up multi-GPU distributed training
- Contributors to Megatron-LM or Megatron Bridge repositories
nemo-mbridge-mlm-bridge-training FAQ
Run both the MLM and Bridge correlation-test commands with identical hyperparameters (2L/256H, 1 GPU, mock data, seed=1234). Compare the lm loss values at each iteration; they should agree within BF16 rounding error.
Always run rm -rf nemo_experiments before a fresh Bridge correlation run. Bridge auto-resumes from existing checkpoints without warning.
Set PYTHONPATH=3rdparty/Megatron-LM:$PYTHONPATH before running MLM. The submodule must be in the Python path for imports to work.
When overriding train.train_iters to a small value (e.g., 10), also set scheduler.lr_warmup_iters and scheduler.lr_decay_iters explicitly, or you will hit an assertion error.
Use vanilla_gpt_pretrain_config, which applies bare GPTModelProvider defaults (LayerNorm, GeLU, learned absolute position embeddings) matching MLM pretrain_gpt.py defaults with no arguments.
Full instructions (SKILL.md)
Source of truth, from nvidia/skills.
name: nemo-mbridge-mlm-bridge-training description: Run Megatron-LM (MLM) and Megatron Bridge training with mock or real data. Covers correlation testing, available recipes, and multi-GPU examples. license: Apache-2.0 when_to_use: Running training, comparing MLM vs Bridge loss curves, translating MLM CLI args to Bridge config, or investigating why loss curves diverged after a commit; 'how do I run training', 'MLM vs Bridge', 'correlation test'.
MLM vs Bridge Training
For how they differ, the arg mapping tables, gotchas, and translation script, see:
- @docs/megatron-lm-to-megatron-bridge.md
First Answer Checklist
For MLM-vs-Bridge correlation questions, always name these items up front:
- Bridge recipe:
vanilla_gpt_pretrain_config. - Bridge entry point:
scripts/training/run_recipe.py. - MLM entry point:
3rdparty/Megatron-LM/pretrain_gpt.py. - Launch wrapper for both:
uv run python -m torch.distributed.run. - Fresh-run cleanup:
rm -rf nemo_experimentsbefore the Bridge run.
Also state that MLM needs
PYTHONPATH=3rdparty/Megatron-LM:$PYTHONPATH, matched Bridge and MLM losses
should agree within BF16 rounding, and files under 3rdparty/Megatron-LM/
should not be modified from this repo.
Correlation Testing
Use vanilla_gpt_pretrain_config for loss-correlation testing. This recipe uses
bare GPTModelProvider defaults (LayerNorm, GeLU, learned_absolute position
embeddings, vocab_size inherited from tokenizer) — matching MLM
pretrain_gpt.py defaults with no args.
MLM Correlation Run (2L/256H, 1 GPU)
PYTHONPATH=3rdparty/Megatron-LM:$PYTHONPATH \
uv run python -m torch.distributed.run --nproc_per_node=1 \
3rdparty/Megatron-LM/pretrain_gpt.py \
--num-layers 2 --hidden-size 256 --num-attention-heads 4 \
--ffn-hidden-size 1024 --seq-length 512 --max-position-embeddings 512 \
--micro-batch-size 4 --global-batch-size 32 \
--train-iters 10 --eval-iters 2 --eval-interval 10 \
--mock-data --bf16 --use-mcore-models \
--tokenizer-type NullTokenizer --vocab-size 32000 \
--lr 3e-4 --min-lr 3e-5 --seed 1234 --log-interval 1
Bridge Correlation Run (same config, 1 GPU)
rm -rf nemo_experiments && \
uv run python -m torch.distributed.run --nproc_per_node=1 \
scripts/training/run_recipe.py \
--recipe vanilla_gpt_pretrain_config \
model.num_layers=2 model.hidden_size=256 \
model.num_attention_heads=4 model.ffn_hidden_size=1024 \
model.seq_length=512 dataset.seq_length=512 \
train.train_iters=10 train.global_batch_size=32 train.micro_batch_size=4 \
validation.eval_interval=10 validation.eval_iters=2 \
optimizer.lr=3e-4 optimizer.min_lr=3e-5 \
scheduler.lr_warmup_iters=1 scheduler.lr_decay_iters=10 \
rng.seed=1234 logger.log_interval=1
Verification
With matched parameters the LM losses should be nearly identical at each
iteration. Compare lm loss values from both logs — they should agree to
within BF16 rounding.
Multi-GPU Examples
MLM 2-GPU with TP=2
PYTHONPATH=3rdparty/Megatron-LM:$PYTHONPATH \
uv run python -m torch.distributed.run --nproc_per_node=2 \
3rdparty/Megatron-LM/pretrain_gpt.py \
--tensor-model-parallel-size 2 --sequence-parallel \
--num-layers 4 --hidden-size 256 --num-attention-heads 4 \
--seq-length 1024 --max-position-embeddings 1024 \
--micro-batch-size 2 --global-batch-size 16 \
--train-iters 10 --eval-iters 2 --eval-interval 10 \
--mock-data --bf16 --use-mcore-models \
--tokenizer-type NullTokenizer --vocab-size 1024 \
--lr 1e-4 --log-interval 1
Bridge 2-GPU with TP=2
rm -rf nemo_experiments && \
uv run python -m torch.distributed.run --nproc_per_node=2 \
scripts/training/run_recipe.py \
--recipe vanilla_gpt_pretrain_config \
model.tensor_model_parallel_size=2 model.sequence_parallel=true \
model.num_layers=4 model.hidden_size=256 \
model.num_attention_heads=4 model.ffn_hidden_size=1024 \
model.seq_length=1024 dataset.seq_length=1024 \
train.train_iters=10 train.global_batch_size=16 train.micro_batch_size=2 \
validation.eval_interval=10 validation.eval_iters=2 \
scheduler.lr_warmup_iters=2 scheduler.lr_decay_iters=10 \
logger.log_interval=1
Available Recipes
Common recipes (use with --recipe):
vanilla_gpt_pretrain_config— Minimal GPT (bare GPTModelProvider defaults, ideal for correlation testing and custom configs)llama32_1b_pretrain_config— Llama 3.2 1B (16L, 2048H, GBS=512, seq=8192)llama3_8b_pretrain_config— Llama 3 8Bqwen3_8b_pretrain_config— Qwen3 8Bdeepseek_v2_lite_pretrain_config— DeepSeek-V2-Lite 16B MoE
SFT/PEFT variants use _sft_config / _peft_config suffix.
Megatron-Core Submodule
For what the submodule is and why two versions exist, see @docs/megatron-lm-to-megatron-bridge.md.
Check current version
./scripts/switch_mcore.sh status
Switch to dev for testing newer MCore features
./scripts/switch_mcore.sh dev
# uv sync (without --locked) since lockfile is for main
uv sync
Switch back to main
./scripts/switch_mcore.sh main
After pulling latest main
When you pull the latest Bridge main branch, the submodule pointer may have been updated. Re-sync the submodule:
git submodule update --init 3rdparty/Megatron-LM
Pitfalls
-
Always
rm -rf nemo_experimentsbefore a fresh correlation run. Bridge auto-resumes from stale checkpoints silently. -
uv runrequired: Always useuv run python -m torch.distributed.run(not baretorchrunorpython). -
MLM PYTHONPATH: Must include
3rdparty/Megatron-LMsogpt_builders.pyis importable. -
Scheduler overrides: When overriding
train.train_itersto a small value, also setscheduler.lr_warmup_itersandscheduler.lr_decay_itersor you get an assertion error. -
Use
dataset.seq_lengthin CLI overrides for both pretraining and fine-tuning datasets. -
MoE OOM: Large MoE models require full activation recomputation and typically multi-node EP. TP does NOT reduce per-GPU expert memory.
-
uv sync --lockedfails after switching to dev: The lockfile is generated against the main MCore commit. Useuv sync(without--locked) when on dev.
Related skills
More from nvidia/skills and the wider catalog.

nemo-mbridge-multi-node-slurm
Convert single-node scripts to multi-node Slurm sbatch jobs and debug NCCL/launch failures.

nemo-mbridge-perf-activation-recompute
Reduce GPU memory via selective and full activation recompute in Megatron Bridge training.

nemo-mbridge-perf-cpu-offloading
Validate and use CPU offloading in Megatron Bridge to reduce GPU memory via activation or optimizer state offloading.

nemo-mbridge-perf-cuda-graphs
Validate and optimize CUDA graph capture in Megatron Bridge for reduced host-driver overhead.

nemo-mbridge-perf-expert-parallel-overlap
Validate and optimize MoE expert-parallel communication overlap in Megatron-Bridge using alltoall or flex dispatchers.

nemo-mbridge-perf-hierarchical-context-parallel
Enable hierarchical context parallelism in Megatron-Bridge for scaled sequence-parallel training.