Skip to main content

1. Model Introduction

NVIDIA Nemotron-3-Ultra-550B-A55B is the Ultra tier of the nemotron_h family: the same hybrid block pattern as Nano and Super, scaled to 550 B total / 55 B active across 108 layers, with a latent MoE (512 experts, top-22, moe_latent_size=2048) and one shared expert. miles loads it through the megatron.bridge AutoBridge with the shared NemotronH MoE shim (miles_plugins/megatron_bridge/nemotron_h.py), the same path Super-120B uses. There is no offline torch_dist conversion. Key highlights:
  • Hybrid + latent MoE: Mamba2 and attention blocks with a latent-projection MoE FFN, 512 experts at top-22.
  • Bridge-mode load: --megatron-to-hf-mode bridge, straight from the HF checkpoint.
  • Sigmoid routing with aux-free expert-bias load balancing, plus an MTP head in the checkpoint.
  • A single-node 4-layer slice is published alongside the full model, so the recipe can be smoke-tested without 16 nodes.

2. Supported Variants

Tested on H200. Use the radixark/miles:dev image.

3. Environment Setup

3.1 Download model + datasets

--model-dir and --data-dir default to /root/models and /root/datasets. --model-name names the checkpoint directory inside --model-dir; passing a name matching <N>layer selects the pruned slice and switches the recipe to its single-node parallelism automatically.

3.2 No torch_dist conversion

AutoBridge plus the NemotronH shim read the HF checkpoint directly, so --hf-checkpoint and --ref-load both point at the download:

4. Launch

4.1 Single-node smoke test

4.2 Full model

The full 108-layer model needs 16 nodes × 8 GPU. Bring up the ray cluster yourself, tell the launcher it is external, and submit from the head — the launcher has no worker-side subcommand:
Without MILES_SCRIPT_EXTERNAL_RAY=1 the launcher runs ray stop --force and starts a fresh single-node head, tearing down the cluster the workers joined. The recipe defaults to a 30-rollout run (--num-rollout), rollout batch 32 at 8 samples per prompt, global batch 128.

5. Recipe Configuration

5.1 Parallelism

Mamba n_groups=8 caps attention and Mamba tensor parallelism at 8, because Megatron requires n_groups % tp == 0. That constraint drives the whole layout: TP cannot grow past 8, so scale comes from PP and EP instead. The 4-layer slice fits on one node, so it gives every rank to expert parallelism (512 experts over EP=8 is 64 per rank) and keeps attention and Mamba at TP=1. --sequence-parallel is on when TP > 1. Activation checkpointing is enabled, and --log-probs-chunk-size 128 keeps the log-prob pass inside the memory budget.

5.2 Algorithm

GRPO with low-variance KL:

5.3 Rollout & SGLang

The 550 B model is roughly 1.1 TB in BF16 and does not fit one 8-GPU engine, so rollout runs 32-GPU engines with EP=32 and DP-attention. The DP size is chosen so that attn_tp = gpus_per_engine / dp_size lands on 8, satisfying the same Mamba n_groups constraint the training side has. The launcher asserts both divisibility rules rather than letting a bad combination fail deep in SGLang.

5.4 Optimizer

CPU Adam, with the host transfer overlapped:

5.5 Notable quirks

  • Routing replay is not enabled yet. --use-rollout-routing-replay is off for the 108-layer model: the routing capturer needs a fix for per-layer top-22 under DP-attention. Train and rollout log-probs differ by about 0.01 without it. The Super-120B recipe does enable it.
  • No --spec: AutoBridge and the NemotronH shim synthesize the Megatron MoE spec from the HF config.
  • The shim is what wires routed_scaling_factor, n_group and topk_group onto the Megatron provider. Without it the routed output is silently scaled 1.0×, the same drift class the Nano-MoE and Super recipes call out.
  • The checkpoint carries an MTP head (num_nextn_predict_layers=1); the RL recipe does not train it.

6. Pairs Well With