diff --git a/README.md b/README.md index a03980cd15..2602e15dd0 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ ## π£ News - [08/19/2026] **Megatron Bridge 0.6.0 released!** Highlights include GLM-5.2 with cuDNN fused DSA for 128K THD-packed context-parallel training, new LLM/VLM/diffusion models, more reliable VLM data and sequence packing, improved checkpoint and LoRA workflows, unified training and conversion launchers, and refreshed performance recipes. Huge thanks to our community contributors! See the [full release notes](https://github.com/NVIDIA-NeMo/Megatron-Bridge/releases/tag/v0.6.0). -- [08/11/2026] **NVIDIA Nemotron 3.5 Lightning is released!** Read the technical blog [here](https://developer.nvidia.com/blog/nvidia-nemotron-3-5-lightning-delivers-fast-accurate-specialized-task-execution-for-long-running-agents/). See the [Nemotron 3.5 Lightning README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3/lightning/README.md) for details. +- [08/11/2026] **NVIDIA Nemotron 3.5 Lightning is released!** Read the technical blog [here](https://developer.nvidia.com/blog/nvidia-nemotron-3-5-lightning-delivers-fast-accurate-specialized-task-execution-for-long-running-agents/). See the [Nemotron 3.5 Lightning README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_5_lightning/README.md) for details. - [07/31/2026] **[K-EXAONE-2](https://huggingface.co/LGAI-EXAONE/K-EXAONE-2.0-750B-A37B) is now supported**! Day-0 support for LG AI Research's K-EXAONE-2 (750B-A37B MoE) is now available on the [k-exaone-2 branch](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/k-exaone-2). Users can convert checkpoints, run inference, fine-tune with SFT or PEFT (LoRA), and use the NVFP4 inference-optimized checkpoint released alongside the model. See the branch documentation for setup instructions and examples. @@ -31,13 +31,13 @@ - [05/20/2026] [**DeepSeek V4**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/deepseek_v4) is now merged on **main**! See the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/deepseek_v4/README.md) for conversion and inference details. -- [05/20/2026] [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16) day-0 branch support is now merged on **main**! The 30B-A3B MoE multimodal model supports image, video, audio, and text workflows with checkpoint conversion, inference, SFT, and PEFT (LoRA) examples. Read the [NVIDIA Blog](https://blogs.nvidia.com/blog/nemotron-3-nano-omni-multimodal-ai-agents/) and see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_omni/README.md) for the full walkthrough. +- [05/20/2026] [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16) day-0 branch support is now merged on **main**! The 30B-A3B MoE multimodal model supports image, video, audio, and text workflows with checkpoint conversion, inference, SFT, and PEFT (LoRA) examples. Read the [NVIDIA Blog](https://blogs.nvidia.com/blog/nemotron-3-nano-omni-multimodal-ai-agents/) and see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_nano_omni/README.md) for the full walkthrough. - [05/19/2026] [**Nemotron-Labs Diffusion**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron_labs_diffusion) is now supported on **main** with autoregressive-to-diffusion conversion, continuous pretraining, checkpoint conversion, and inference workflows. Read the [NVIDIA Research blog](https://research.nvidia.com/publication/2026-05_nemotron-labs-diffusion-tri-mode-language-model-unifying-autoregressive) for the tri-mode language model overview. - [05/06/2026] [**Gemma 4 VL 26B-A4B**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/gemma/gemma4_vl) is now supported! Checkpoint conversion, SFT, and PEFT (LoRA) recipes for Google's MoE vision-language model (26B total / 4B active params, 128 experts top-k=8, dual sliding/global attention with K=V tying on full-attention layers) are available on **main**. See the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/gemma/gemma4_vl/README.md) for the full walkthrough. -- [04/28/2026] Day 0 support for [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16), a 30B-A3B MoE multimodal model that jointly processes image, video, audio, and text. Checkpoint conversion, SFT, and LoRA recipes are available on **main** β see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_omni/README.md) for the full walkthrough. +- [04/28/2026] Day 0 support for [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16), a 30B-A3B MoE multimodal model that jointly processes image, video, audio, and text. Checkpoint conversion, SFT, and LoRA recipes are available on **main** β see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_nano_omni/README.md) for the full walkthrough. - [04/19/2026] [**Qwen3.6-35B-A3B**](https://huggingface.co/Qwen/Qwen3.6-35B-A3B) is now supported! Qwen3.6 uses the same architecture as Qwen3.5 VL MoE (`Qwen3_5MoeForConditionalGeneration`) and works with the existing [Qwen3.5-VL bridge](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/src/megatron/bridge/models/qwen_vl) out of the box β no code changes needed. HFβMegatron conversion and inference verified. @@ -55,13 +55,13 @@ - [03/31/2026] **Agent Skills for Megatron Bridge!** We've added a [`skills/`](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/skills) directory with structured guides that AI coding agents (Cursor, Claude Code, Codex, etc.) can use to help you add model support, set up dev environments, tune performance, and more. Try them out, and PRs to improve or add new skills are very welcome! -- [03/26/2026] [**Nemotron 3 Super**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3) is now on **main**! Checkpoint conversion and SFT/LoRA recipes (120B-A12B) are available in the main branch. Read the [blog post](https://developer.nvidia.com/blog/introducing-nemotron-3-super-an-open-hybrid-mamba-transformer-moe-for-agentic-reasoning/). +- [03/26/2026] [**Nemotron 3 Super**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron) is now on **main**! Checkpoint conversion and SFT/LoRA recipes (120B-A12B) are available in the main branch. Read the [blog post](https://developer.nvidia.com/blog/introducing-nemotron-3-super-an-open-hybrid-mamba-transformer-moe-for-agentic-reasoning/). - [03/12/2026] **Deprecating Python 3.10 support:** We're officially dropping Python 3.10 support with the upcoming 0.4.0 release. Downstream applications must raise their lower boundary to 3.12 to stay compatible with Megatron-Bridge. - [12/16/2025] [Mind Lab](https://alpha.macaron.im/mindlab) successfully used Megatron-bridge and [VeRL](https://github.com/volcengine/verl) to trained GRPO Lora for Trillion-parameter model on 64 H800 - See their [techblog](https://alpha.macaron.im/mindlab/research/building-trillion-parameter-reasoning-rl-with-10-gpus). -- [12/15/2025] Day 0 support for [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3/nano) and custom NGC container: [nvcr.io/nvidia/nemo:25.11.nemotron_3_nano](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo?version=25.11.nemotron_3_nano) +- [12/15/2025] Day 0 support for [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3_nano) and custom NGC container: [nvcr.io/nvidia/nemo:25.11.nemotron_3_nano](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo?version=25.11.nemotron_3_nano) ## Overview diff --git a/docs/_static/model-verification/catalog-v1.json b/docs/_static/model-verification/catalog-v1.json index e99a3a2ccf..bbbbda2bc5 100644 --- a/docs/_static/model-verification/catalog-v1.json +++ b/docs/_static/model-verification/catalog-v1.json @@ -3430,59 +3430,49 @@ "title": "moonlight_16b_a3b" }, { - "architecture": "NemotronH_Nano_Omni_Reasoning_V3", - "base_container": "nvcr.io/nvidia/nemo:26.06", - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "architecture": "NemotronHForCausalLM", + "base_container": "nvcr.io/nvidia/nemo:26.08", + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", "entries": [ { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", - "command_topologies": [ - { - "expert_parallel": "1", - "expert_tensor_parallel": "1", - "nodes": "1", - "pipeline_parallel": "1", - "tensor_parallel": "1" - } - ], - "commands": [ - "./scripts/conversion/convert.sh import --executor slurm --device cpu --nodes 1 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/cpu-megatron-clean --torch-dtype bfloat16 --tp 1 --pp 1 --ep 1 --etp 1 --trust-remote-code" - ], + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "command_topologies": [], + "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-hf-to-megatron-cpu", - "expected_result": "The offline, immutable-revision CPU import exits successfully after mapping 7,333 model parameters and creates a reloadable iter_0000000 torch_dist checkpoint with 33,015,546,816 parameters on the single model parallel rank.\n", + "entry_id": "nemotron-3-nano-30b-a3b-hf-to-megatron-cpu", + "expected_result": "This workflow remains unverified and requires a public run against the pinned Hugging Face revision with all applicable verification gates.\n", "hardware": null, - "last_verified": "2026-07-30", + "last_verified": null, "metrics": {}, "precision": "bf16", "source_pointer": "items.hf_to_megatron_cpu", - "status": "verified", + "status": "unverified", "variant": null, "workflow": "hf_to_megatron_cpu" }, { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", "command_topologies": [ { - "expert_parallel": "4", + "expert_parallel": "8", "expert_tensor_parallel": "1", "gpus_per_node": "8", "nodes": "1", "pipeline_parallel": "1", - "tensor_parallel": "2", + "tensor_parallel": "1", "total_gpus": 8 } ], "commands": [ - "./scripts/conversion/convert.sh import --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean --torch-dtype bfloat16 --tp 2 --pp 1 --ep 4 --etp 1 --trust-remote-code --low-memory-save" + "./scripts/conversion/convert.sh import --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron-path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu --torch-dtype bfloat16 --tp 1 --pp 1 --ep 8 --etp 1 --distributed-timeout-minutes 120 --trust-remote-code --low-memory-save" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-hf-to-megatron-gpu", - "expected_result": "The command exits successfully at TP2/PP1/EP4/ETP1 and creates a reloadable iter_0000000 checkpoint. The paired strict GPU export contains the source checkpoint's exact 7,349-key set, shapes, dtypes, and values.\n", + "entry_id": "nemotron-3-nano-30b-a3b-hf-to-megatron-gpu", + "expected_result": "The pinned one-node 8-H100 import exits successfully at TP1/PP1/EP8/ETP1, persists iter_0000000, and reloads it for inference. A separate public GPU round-trip at the same topology exhaustively compares all 6,243 exported BF16 weights against the immutable source: 6,243 of 6,243 match with no skipped FP8 tensors or mismatches.\n", "hardware": null, - "last_verified": "2026-07-30", + "last_verified": "2026-08-25", "metrics": {}, "precision": "bf16", "source_pointer": "items.hf_to_megatron_gpu", @@ -3491,19 +3481,19 @@ "workflow": "hf_to_megatron_gpu" }, { - "bridge_commit": "7783fc356b7d4768525eabf9825f9108c6544f4c", + "bridge_commit": "60442bb9adb5435b47db22c6c20aacdf772fbddc", "command_topologies": [ { "nodes": "1" } ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device cpu --nodes 1 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/cpu-megatron-clean/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/cpu-hf-export-clean --torch-dtype bfloat16 --trust-remote-code" + "./scripts/conversion/convert.sh export --executor slurm --device cpu --nodes 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron-path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-30b-a3b/cpu-hf-export --torch-dtype bfloat16 --trust-remote-code" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-megatron-to-hf-cpu", - "expected_result": "CPU export completes in 14 indexed shards totaling 66,031,270,520 bytes. Its exact comparison contains all 7,349 source tensors and 33,015,632,238 values, with identical keys, shapes, dtypes, and values and no dtype conversions. Transformers reloads the local custom-code export natively with the source-equivalent warning set: one generated vision summary buffer is missing and four source-only audio/vision buffers are unexpected.\n", + "entry_id": "nemotron-3-nano-30b-a3b-megatron-to-hf-cpu", + "expected_result": "The synchronous CPU export writes a complete indexed checkpoint. All 6,243 source keys and shapes match across 31,577,940,288 values. The 46 source FP32 tensors cast to BF16 are the 23 per-layer mixer A_log tensors and 23 per-layer mixer D tensors; each equals the export exactly after that declared cast, and every remaining tensor matches exactly at zero tolerance. Native loading succeeds as NemotronHForCausalLM with no missing, unexpected, mismatched, or errored weights, and the tokenizer reloads from the export.\n", "hardware": null, "last_verified": "2026-08-25", "metrics": {}, @@ -3514,25 +3504,25 @@ "workflow": "megatron_to_hf_cpu" }, { - "bridge_commit": "7783fc356b7d4768525eabf9825f9108c6544f4c", + "bridge_commit": "60442bb9adb5435b47db22c6c20aacdf772fbddc", "command_topologies": [ { - "expert_parallel": "4", + "expert_parallel": "8", "expert_tensor_parallel": "1", "gpus_per_node": "8", "nodes": "1", "pipeline_parallel": "1", - "tensor_parallel": "2", + "tensor_parallel": "1", "total_gpus": 8 } ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-hf-export-clean --torch-dtype bfloat16 --tp 2 --pp 1 --ep 4 --etp 1 --trust-remote-code --distributed-save --save-every-n-ranks 1" + "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron-path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-30b-a3b/gpu-hf-export --torch-dtype bfloat16 --tp 1 --pp 1 --ep 8 --etp 1 --distributed-save --save-every-n-ranks 1 --trust-remote-code" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-megatron-to-hf-gpu", - "expected_result": "Distributed export completes in 17 indexed shards totaling 66,031,270,520 bytes. All 7,349 tensors and 33,015,632,238 values match the immutable HF source exactly in keys, shapes, dtypes, and values with no dtype conversions. Transformers reloads the local custom-code export natively with the same one missing generated buffer and four unexpected source-only buffers reported when reloading the pinned source itself.\n", + "entry_id": "nemotron-3-nano-30b-a3b-megatron-to-hf-gpu", + "expected_result": "The synchronous TP1/PP1/EP8/ETP1 export writes a complete indexed checkpoint. All 6,243 source keys and shapes match across 31,577,940,288 values. The 69 source FP32 tensors cast to BF16 are the same 46 mixer A_log and D tensors plus 23 per-layer mixer gate e_score_correction_bias tensors. The legacy distributed GPU export model wrapper downcast those gate biases to BF16, while the CPU export preserved them in FP32; all 69 equal the export exactly after this declared cast, and every remaining tensor matches exactly at zero tolerance. Native loading succeeds as NemotronHForCausalLM with no missing, unexpected, mismatched, or errored weights, and the tokenizer reloads from the export.\n", "hardware": null, "last_verified": "2026-08-25", "metrics": {}, @@ -3543,22 +3533,13 @@ "workflow": "megatron_to_hf_gpu" }, { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", - "command_topologies": [ - { - "expert_parallel": "2", - "expert_tensor_parallel": "1", - "pipeline_parallel": "4", - "tensor_parallel": "1" - } - ], - "commands": [ - "uv run python -m torch.distributed.run --standalone --nproc_per_node=8 examples/conversion/compare_hf_and_megatron/compare.py --hf_model_path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron_model_path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --tp 1 --pp 4 --ep 2 --etp 1 --prompt \"The capital of France is \" --trust-remote-code" - ], + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "command_topologies": [], + "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-manual-forward-pass", - "expected_result": "The pinned one-step run exits successfully and both implementations predict token ID 6993 (\" Paris\"), but cosine similarity is 0.969760 and therefore does not satisfy the required 0.99 verification gate. The maximum and mean absolute logit differences are 3.527344 and 0.527820, respectively.\n", + "entry_id": "nemotron-3-nano-30b-a3b-manual-forward-pass", + "expected_result": "This workflow remains unverified and requires a public run against the pinned Hugging Face revision with all applicable verification gates.\n", "hardware": null, "last_verified": null, "metrics": {}, @@ -3569,24 +3550,27 @@ "workflow": "manual_forward_pass" }, { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", "command_topologies": [ { - "expert_parallel": "2", + "expert_parallel": "8", "expert_tensor_parallel": "1", - "pipeline_parallel": "4", - "tensor_parallel": "1" + "gpus_per_node": "8", + "nodes": "1", + "pipeline_parallel": "1", + "tensor_parallel": "1", + "total_gpus": 8 } ], "commands": [ - "uv run python -m torch.distributed.run --standalone --nproc_per_node=8 examples/models/nemotron/nemotron_3_omni/hf_to_megatron_generate_nemotron_omni.py --hf_model_path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron_model_path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --prompt \"The capital of France is\" --max_new_tokens 4 --tp 1 --pp 4 --ep 2 --etp 1" + "./scripts/inference/infer.sh --nodes 1 --gpus-per-node 8 --task legacy-full-prefix-generation --hf_model_path nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron_model_path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu/iter_0000000 --tp 1 --pp 1 --ep 8 --etp 1 --prompt \"Explain why the sky appears blue in one sentence.\" --max_new_tokens 32 --apply-chat-template --thinking-mode disabled --trust-remote-code --legacy-full-prefix" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-inference", - "expected_result": "Deterministic greedy decoding returns the exact 4-token result and\nterminates with the model end token. Literal completion: \"\nParis.\"", + "entry_id": "nemotron-3-nano-30b-a3b-inference", + "expected_result": "The public launcher reloaded the pinned BF16 checkpoint and produced exactly 32 generated tokens across generation steps 0 through 31, using the 32-token maximum without an earlier EOS. The literal completion is 'User asks: \"Explain why the sky appears blue in one sentence.\" So we need to give a single sentence explanation. Provide concise answer. Probably: \"'.\n", "hardware": null, - "last_verified": "2026-07-30", + "last_verified": "2026-08-25", "metrics": {}, "precision": "bf16", "source_pointer": "items.inference", @@ -3595,14 +3579,14 @@ "workflow": "inference" }, { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", "command_topologies": [], "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-pretrain-all", - "expected_result": "Megatron Bridge does not publish a pretraining recipe for this multimodal conditional-generation model; the supported package provides supervised CORD v2 SFT and LoRA PEFT workflows.\n", - "hardware": "all", + "entry_id": "nemotron-3-nano-30b-a3b-pretrain-h100", + "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "hardware": "H100", "last_verified": null, "metrics": { "final_loss": null, @@ -3611,68 +3595,43 @@ "last_10_steps_step_time_ms_avg": null, "last_10_steps_tokens_per_second_per_gpu_avg": null }, - "precision": null, - "source_pointer": "items.pretrain.all", - "status": "unsupported", + "precision": "bf16", + "source_pointer": "items.pretrain.H100", + "status": "unverified", "variant": null, "workflow": "pretrain" }, { - "bridge_commit": "9b69b47a321de14b0453c230dd130e18ae0f00f7", - "command_topologies": [ - { - "gpus_per_node": "8", - "nodes": "1", - "recipe": "nemotron_omni_cord_v2_sft_8gpu_h100_bf16_config", - "total_gpus": 8 - } - ], - "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_omni_cord_v2_sft_8gpu_h100_bf16_config --mode sft --step_func nemotron_omni_step --pretrained_checkpoint work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --max_steps 100 --save_dir work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-4k-checkpoints --save_interval 50 'dataset.source.load_kwargs={revision:\"7f0115a4b758a71d6473b8d085751692da2fef98\"}' dataset.do_validation=false dataset.do_test=false validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null logger.log_interval=1 logger.log_throughput=true rng.seed=5678" - ], + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "command_topologies": [], + "commands": [], "dimensions": {}, - "enabled_features": { - "moe_dispatcher": "hybridep" - }, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-sft-h100", - "expected_result": "The immutable-revision, real image-text CORD v2 run completes exactly 100 full-SFT optimizer steps on eight H100 GPUs at TP2/PP1/CP1/EP8/ETP1 and GBS/MBS 64/4 with natural-routing HybridEP. Execution uses selective MoE/layernorm recompute, fused attention, TE cross entropy, fused weighted squared-ReLU, and router fusion without changing the image-text objective or routing policy. Model parameters, main gradients, and Adam moments use BF16; optimizer main parameters use scaled FP16 without parameter remainders. LM loss is finite from 1.281308 to 0.03330838, the final ten steps average 3,603.67 ms and 197.10 TFLOP/s/GPU, sampled peak memory is 76,349 MiB, and no iteration is skipped or NaN. Complete optimizer and RNG checkpoints are saved at steps 50 and 100. Direct step-50 resume loads the complete state and reaches step 100 at 197.07 final-ten TFLOP/s/GPU with finite loss and zero skipped or NaN iterations.\n", + "enabled_features": {}, + "entry_id": "nemotron-3-nano-30b-a3b-sft-h100", + "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", "hardware": "H100", - "last_verified": "2026-08-12", + "last_verified": null, "metrics": { - "final_loss": 0.03330838, - "initial_loss": 1.281308, - "last_10_steps_model_tflops_per_gpu_avg": 197.1, - "last_10_steps_step_time_ms_avg": 3603.67, - "last_10_steps_tokens_per_second_per_gpu_avg": 9092.952 + "final_loss": null, + "initial_loss": null, + "last_10_steps_model_tflops_per_gpu_avg": null, + "last_10_steps_step_time_ms_avg": null, + "last_10_steps_tokens_per_second_per_gpu_avg": null }, "precision": "bf16", "source_pointer": "items.sft.H100", - "status": "verified", + "status": "unverified", "variant": null, "workflow": "sft" }, { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", - "command_topologies": [ - { - "expert_parallel": "8", - "expert_tensor_parallel": "1", - "gpus_per_node": "8", - "nodes": "1", - "pipeline_parallel": "1", - "tensor_parallel": "2", - "total_gpus": 8 - }, - {} - ], - "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-4k-checkpoints/iter_0000100 --hf-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-hf-export-clean --torch-dtype bfloat16 --tp 2 --pp 1 --ep 8 --etp 1 --trust-remote-code --distributed-save --not-strict", - "uv run python skills/create-model-verification-card/scripts/verify_hf_inference.py --hf-model work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-hf-export-clean --prompt \"The capital of France is\" --max-new-tokens 32 --chat-template --disable-thinking --trust-remote-code --device cuda --dtype bfloat16" - ], + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "command_topologies": [], + "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-sft-export-inference-h100", - "expected_result": "Non-strict export succeeds and writes 6,637 indexed tensors in 17 shards. The CORD v2 recipe intentionally disables sound, so 712 source audio tensors are absent. Native Transformers generation remains unverified because local dynamic-code loading omits configuration_nemotron_h before model weights can reload.\n", + "entry_id": "nemotron-3-nano-30b-a3b-sft-export-inference-h100", + "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", "hardware": "H100", "last_verified": null, "metrics": {}, @@ -3683,83 +3642,60 @@ "workflow": "sft_export_inference" }, { - "bridge_commit": "eb7cf72392ac07e7a095b87d9b1d6bf2b38c5b6e", - "command_topologies": [ - { - "gpus_per_node": "8", - "nodes": "1", - "recipe": "nemotron_omni_cord_v2_long_context_sft_8gpu_h100_bf16_config", - "total_gpus": 8 - } - ], - "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_omni_cord_v2_long_context_sft_8gpu_h100_bf16_config --mode sft --step_func nemotron_omni_step --pretrained_checkpoint work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --max_steps 100 --save_dir work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-8k-packed-checkpoints --save_interval 50 'dataset.source.load_kwargs={revision:\"7f0115a4b758a71d6473b8d085751692da2fef98\"}' dataset.do_validation=false dataset.do_test=false validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null logger.log_interval=1 logger.log_throughput=true rng.seed=5678" - ], + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "command_topologies": [], + "commands": [], "dimensions": {}, - "enabled_features": { - "context_parallel_size": 2, - "sequence_packing": "in_batch" - }, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-sft-long-context-h100", - "expected_result": "The immutable-revision, real image-text CORD v2 run completes exactly 100 full-SFT optimizer steps on eight H100 GPUs at TP4/PP1/CP2/EP8/ETP1 and GBS/MBS 64/2 with 8K in-batch packing and the standard all-to-all dispatcher. Model parameters, main gradients, and Adam moments use BF16; optimizer main parameters use scaled FP16 without parameter remainders. LM loss is finite from 1.251364 to 0.01020405, the final ten steps average 15,577.9 ms and 93.73 TFLOP/s/GPU, sampled peak memory is 75,197 MiB, and no iteration is skipped or NaN. Complete optimizer and RNG checkpoints are saved at steps 50 and 100. Direct step-50 resume loads the complete state and reaches step 100 with finite loss and zero skipped or NaN iterations.\n", + "enabled_features": {}, + "entry_id": "nemotron-3-nano-30b-a3b-sft-long-context-h100", + "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", "hardware": "H100", - "last_verified": "2026-08-11", + "last_verified": null, "metrics": { - "final_loss": 0.01020405, - "initial_loss": 1.251364, - "last_10_steps_model_tflops_per_gpu_avg": 93.73, - "last_10_steps_step_time_ms_avg": 15577.9, - "last_10_steps_tokens_per_second_per_gpu_avg": 4206.986 + "final_loss": null, + "initial_loss": null, + "last_10_steps_model_tflops_per_gpu_avg": null, + "last_10_steps_step_time_ms_avg": null, + "last_10_steps_tokens_per_second_per_gpu_avg": null }, "precision": "bf16", "source_pointer": "items.sft_long_context.H100", - "status": "verified", + "status": "unverified", "variant": null, "workflow": "sft_long_context" }, { - "bridge_commit": "eb7cf72392ac07e7a095b87d9b1d6bf2b38c5b6e", - "command_topologies": [ - { - "gpus_per_node": "8", - "nodes": "1", - "recipe": "nemotron_omni_cord_v2_peft_8gpu_h100_bf16_config", - "total_gpus": 8 - } - ], - "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_omni_cord_v2_peft_8gpu_h100_bf16_config --mode lora --step_func nemotron_omni_step --pretrained_checkpoint work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --max_steps 100 --save_dir work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/peft-checkpoints --save_interval 50 'dataset.source.load_kwargs={revision:\"7f0115a4b758a71d6473b8d085751692da2fef98\"}' dataset.do_validation=false dataset.do_test=false validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null logger.log_interval=1 logger.log_throughput=true rng.seed=5678" - ], + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "command_topologies": [], + "commands": [], "dimensions": {}, - "enabled_features": { - "moe_dispatcher": "hybridep" - }, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-peft-h100", - "expected_result": "The immutable-revision, real image-text CORD v2 run completes exactly 100 LoRA optimizer steps on eight H100 GPUs at TP2/PP1/CP1/EP8/ETP1 and GBS/MBS 64/1 with natural-routing HybridEP. Model parameters, main gradients, and Adam moments use BF16; optimizer main parameters use scaled FP16 without parameter remainders. LM loss is finite from 1.282941 to 0.02634745, the final ten steps average 11,621.42 ms and 61.25 TFLOP/s/GPU, sampled peak memory is 44,873 MiB, and no iteration is skipped or NaN. Complete optimizer and RNG checkpoints are saved at steps 50 and 100. Direct step-50 resume loads the complete state and reaches step 100 with finite loss and zero skipped or NaN iterations.\n", + "enabled_features": {}, + "entry_id": "nemotron-3-nano-30b-a3b-peft-h100", + "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", "hardware": "H100", - "last_verified": "2026-08-11", + "last_verified": null, "metrics": { - "final_loss": 0.02634745, - "initial_loss": 1.282941, - "last_10_steps_model_tflops_per_gpu_avg": 61.25, - "last_10_steps_step_time_ms_avg": 11621.42, - "last_10_steps_tokens_per_second_per_gpu_avg": 2819.621 + "final_loss": null, + "initial_loss": null, + "last_10_steps_model_tflops_per_gpu_avg": null, + "last_10_steps_step_time_ms_avg": null, + "last_10_steps_tokens_per_second_per_gpu_avg": null }, "precision": "bf16", "source_pointer": "items.peft.H100", - "status": "verified", + "status": "unverified", "variant": null, "workflow": "peft" }, { - "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", "command_topologies": [], "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-checkpoint-resume-all", - "expected_result": "There is no supported pretraining reference workflow for this model, so no model-wide optimizer and RNG checkpoint-resume contract is available for sentinel comparison.\n", - "hardware": "all", + "entry_id": "nemotron-3-nano-30b-a3b-checkpoint-resume-h100", + "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "hardware": "H100", "last_verified": null, "metrics": { "final_loss": null, @@ -3768,65 +3704,101 @@ "last_10_steps_step_time_ms_avg": null, "last_10_steps_tokens_per_second_per_gpu_avg": null }, - "precision": null, - "source_pointer": "items.checkpoint_resume.all", - "status": "unsupported", + "precision": "bf16", + "source_pointer": "items.checkpoint_resume.H100", + "status": "unverified", "variant": null, "workflow": "checkpoint_resume" + }, + { + "bridge_commit": "0480586879f2513958fd8634fc529693ae13e536", + "command_topologies": [ + { + "gpus_per_node": "4", + "nodes": "2", + "recipe": "nemotron_3_nano_pretrain_8gpu_gb300_fp8mx_config", + "sequence_length": "8192", + "total_gpus": 8 + } + ], + "commands": [ + "./scripts/training/train.sh --wait --nodes 2 --gpus-per-node 4 --recipe nemotron_3_nano_pretrain_8gpu_gb300_fp8mx_config --mode pretrain --max_steps 50 --seq_length 8192 logger.save_config_filepath=work/model-verification/nemotron-3-nano-30b-a3b/gb300-performance/ConfigContainer.yaml" + ], + "dimensions": {}, + "enabled_features": {}, + "entry_id": "nemotron-3-nano-30b-a3b-pretrain-performance-gb300", + "expected_result": "On exactly 8 GB300s, the canonical MXFP8 mock-data recipe completes exactly 50 optimizer steps at TP1/PP1/CP1/EP8/ETP1, GBS/MBS 512/4, and sequence length 8192. All 50 keyed rows have finite loss with zero skipped or NaN iterations. Loss moves from 12.18025 to 0.004964447; the final ten steps average 12455.140 ms, 937.770 TFLOP/s/GPU, and 42094.107 tokens/s/GPU. The resolved configuration persists.\n", + "hardware": "GB300", + "last_verified": "2026-08-18", + "metrics": { + "final_loss": 0.004964447, + "initial_loss": 12.18025, + "last_10_steps_model_tflops_per_gpu_avg": 937.77, + "last_10_steps_step_time_ms_avg": 12455.14, + "last_10_steps_tokens_per_second_per_gpu_avg": 42094.107 + }, + "precision": "fp8_mx", + "source_pointer": "items.pretrain_performance.GB300", + "status": "verified", + "variant": null, + "workflow": "pretrain_performance" } ], - "hf_id": "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16", - "hf_revision": "24e67ea000b7c2837fc8f9488aa2008524fac8ba", - "min_transformers_version": "5.8.0", - "slug": "nemotron-3-nano-omni-30b-a3b-reasoning", - "source_card": "examples/model_verification_cards/nemotron-3-nano-omni-30b-a3b-reasoning/card.yaml", - "summary": "Performance disclaimer: this model has not been performance-tuned; reported timing and throughput metrics are sanity checks, not optimized performance results. Verification uses the immutable public model and CORD v2 revisions. CPU and distributed GPU import and export, deterministic Megatron inference, 100-step one-node H100 full-model SFT, in-batch-packed 8K SFT, and LoRA PEFT runs completed. The H100 fine-tuning variants preserve real image-text samples and natural routing while using lower-precision optimizer state; 4K SFT and PEFT use HybridEP, while packed CP2 uses the standard all-to-all dispatcher. Strict CPU and GPU round trips preserve all 7,349 tensors bitwise and reload with the same native-loader notices as the pinned Hugging Face source. The one-step HF/Megatron comparison predicts the same token but remains below the 0.99 cosine gate. Unsupported and incomplete workflows remain explicitly identified rather than inferred from focused unit coverage.\n", - "title": "nemotron_3_nano_omni_30b_a3b_reasoning" + "hf_id": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16", + "hf_revision": "2d59de1cbd51c0adf384eb906b766d1aee0e0517", + "min_transformers_version": "5.8.1", + "slug": "nemotron-3-nano-30b-a3b", + "source_card": "examples/model_verification_cards/nemotron-3-nano-30b-a3b/card.yaml", + "summary": "The pinned checkpoint has verified one-node GPU import, independent CPU and distributed GPU BF16 export, and checkpoint-backed deterministic inference. Both exports strictly reload with Transformers and exhaustively match the source after the explicitly requested BF16 casts. Performance scope: pretrain_performance.GB300 uses the tuned canonical 8-GPU MXFP8 recipe. CPU import, manual forward, and functional training workflows remain unverified in this card.\n", + "title": "nemotron_3_nano_30b_a3b" }, { "architecture": "NemotronHForCausalLM", - "base_container": "nvcr.io/nvidia/nemo:26.08", - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "base_container": "nvcr.io/nvidia/pytorch:26.04-py3", + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", "entries": [ { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "nodes": "1" + } + ], + "commands": [ + "./scripts/conversion/convert.sh import --executor slurm --device cpu --nodes 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/cpu-megatron --torch-dtype bfloat16" + ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-hf-to-megatron-cpu", - "expected_result": "This workflow remains unverified and requires a public run against the pinned Hugging Face revision with all applicable verification gates.\n", + "entry_id": "nemotron-3-nano-4b-hf-to-megatron-cpu", + "expected_result": "The command exits successfully and creates iter_0000000. After the paired CPU export, all 263 tensors and 3,973,556,832 parameters match the pinned source exactly in name, shape, dtype, and value, with maximum difference zero.\n", "hardware": null, - "last_verified": null, + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.hf_to_megatron_cpu", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "hf_to_megatron_cpu" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", "command_topologies": [ { - "expert_parallel": "8", - "expert_tensor_parallel": "1", - "gpus_per_node": "8", + "gpus_per_node": "1", "nodes": "1", - "pipeline_parallel": "1", "tensor_parallel": "1", - "total_gpus": 8 + "total_gpus": 1 } ], "commands": [ - "./scripts/conversion/convert.sh import --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron-path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu --torch-dtype bfloat16 --tp 1 --pp 1 --ep 8 --etp 1 --distributed-timeout-minutes 120 --trust-remote-code --low-memory-save" + "./scripts/conversion/convert.sh import --executor slurm --device gpu --nodes 1 --gpus-per-node 1 --tp 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/imported-megatron --torch-dtype bfloat16" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-hf-to-megatron-gpu", - "expected_result": "The pinned one-node 8-H100 import exits successfully at TP1/PP1/EP8/ETP1, persists iter_0000000, and reloads it for inference. A separate public GPU round-trip at the same topology exhaustively compares all 6,243 exported BF16 weights against the immutable source: 6,243 of 6,243 match with no skipped FP8 tensors or mismatches.\n", + "entry_id": "nemotron-3-nano-4b-hf-to-megatron-gpu", + "expected_result": "The command exits successfully and creates a reloadable iter_0000000. After the paired GPU export, all 263 tensors and 3,973,556,832 parameters match the pinned source exactly in name, shape, dtype, and value.\n", "hardware": null, - "last_verified": "2026-08-25", + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.hf_to_megatron_gpu", @@ -3835,21 +3807,21 @@ "workflow": "hf_to_megatron_gpu" }, { - "bridge_commit": "60442bb9adb5435b47db22c6c20aacdf772fbddc", + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", "command_topologies": [ { "nodes": "1" } ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device cpu --nodes 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron-path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-30b-a3b/cpu-hf-export --torch-dtype bfloat16 --trust-remote-code" + "./scripts/conversion/convert.sh export --executor slurm --device cpu --nodes 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/cpu-megatron --hf-path work/model-verification/nemotron-3-nano-4b/cpu-hf-export --torch-dtype bfloat16" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-megatron-to-hf-cpu", - "expected_result": "The synchronous CPU export writes a complete indexed checkpoint. All 6,243 source keys and shapes match across 31,577,940,288 values. The 46 source FP32 tensors cast to BF16 are the 23 per-layer mixer A_log tensors and 23 per-layer mixer D tensors; each equals the export exactly after that declared cast, and every remaining tensor matches exactly at zero tolerance. Native loading succeeds as NemotronHForCausalLM with no missing, unexpected, mismatched, or errored weights, and the tokenizer reloads from the export.\n", + "entry_id": "nemotron-3-nano-4b-megatron-to-hf-cpu", + "expected_result": "Strict export exits successfully; all 263 BF16 tensors match the pinned source bitwise, the 171-byte generation configuration is preserved byte-for-byte, and Transformers reloads the output natively as NemotronHForCausalLM.\n", "hardware": null, - "last_verified": "2026-08-25", + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.megatron_to_hf_cpu", @@ -3858,27 +3830,24 @@ "workflow": "megatron_to_hf_cpu" }, { - "bridge_commit": "60442bb9adb5435b47db22c6c20aacdf772fbddc", + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", "command_topologies": [ { - "expert_parallel": "8", - "expert_tensor_parallel": "1", - "gpus_per_node": "8", + "gpus_per_node": "1", "nodes": "1", - "pipeline_parallel": "1", "tensor_parallel": "1", - "total_gpus": 8 + "total_gpus": 1 } ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron-path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-30b-a3b/gpu-hf-export --torch-dtype bfloat16 --tp 1 --pp 1 --ep 8 --etp 1 --distributed-save --save-every-n-ranks 1 --trust-remote-code" + "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 1 --tp 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/imported-megatron --hf-path work/model-verification/nemotron-3-nano-4b/hf-export --torch-dtype bfloat16" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-megatron-to-hf-gpu", - "expected_result": "The synchronous TP1/PP1/EP8/ETP1 export writes a complete indexed checkpoint. All 6,243 source keys and shapes match across 31,577,940,288 values. The 69 source FP32 tensors cast to BF16 are the same 46 mixer A_log and D tensors plus 23 per-layer mixer gate e_score_correction_bias tensors. The legacy distributed GPU export model wrapper downcast those gate biases to BF16, while the CPU export preserved them in FP32; all 69 equal the export exactly after this declared cast, and every remaining tensor matches exactly at zero tolerance. Native loading succeeds as NemotronHForCausalLM with no missing, unexpected, mismatched, or errored weights, and the tokenizer reloads from the export.\n", + "entry_id": "nemotron-3-nano-4b-megatron-to-hf-gpu", + "expected_result": "Strict export exits successfully; all 263 BF16 tensors match the pinned source bitwise, the generation configuration is exact, and Transformers reloads the output natively as NemotronHForCausalLM. A_log, D, dt_bias, and out_proj are exact for all 21 Mamba layers.\n", "hardware": null, - "last_verified": "2026-08-25", + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.megatron_to_hf_gpu", @@ -3887,44 +3856,44 @@ "workflow": "megatron_to_hf_gpu" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "tensor_parallel": "1" + } + ], + "commands": [ + "uv run python -m torch.distributed.run --standalone --nproc_per_node=1 examples/conversion/compare_hf_and_megatron/compare.py --hf_model_path nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron_model_path work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --tp 1 --prompt \"The capital of France is the city of\"" + ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-manual-forward-pass", - "expected_result": "This workflow remains unverified and requires a public run against the pinned Hugging Face revision with all applicable verification gates.\n", + "entry_id": "nemotron-3-nano-4b-manual-forward-pass", + "expected_result": "The eight-token one-step comparison exits successfully using native Transformers Nemotron-H and a real Megatron inference context. Both paths have next-token predictions that match at token ID 6993 (\" Paris\"); cosine similarity is 0.999982 and the maximum and mean absolute logit differences are 0.093750 and 0.018522.\n", "hardware": null, - "last_verified": null, + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.manual_forward_pass", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "manual_forward_pass" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", + "bridge_commit": "78ecfad7644ee67efa4e8af4b0e7cf09f6bc9ecc", "command_topologies": [ { - "expert_parallel": "8", - "expert_tensor_parallel": "1", - "gpus_per_node": "8", - "nodes": "1", - "pipeline_parallel": "1", - "tensor_parallel": "1", - "total_gpus": 8 + "tensor_parallel": "1" } ], "commands": [ - "./scripts/inference/infer.sh --nodes 1 --gpus-per-node 8 --task legacy-full-prefix-generation --hf_model_path nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 --hf-revision 2d59de1cbd51c0adf384eb906b766d1aee0e0517 --megatron_model_path work/model-verification/nemotron-3-nano-30b-a3b/import-gpu/iter_0000000 --tp 1 --pp 1 --ep 8 --etp 1 --prompt \"Explain why the sky appears blue in one sentence.\" --max_new_tokens 32 --apply-chat-template --thinking-mode disabled --trust-remote-code --legacy-full-prefix" + "uv run python -m torch.distributed.run --standalone --nproc_per_node=1 examples/conversion/hf_to_megatron_generate_text.py --hf_model_path nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron_model_path work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --tp 1 --prompt \"The capital of France is\" --max_new_tokens 2" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-inference", - "expected_result": "The public launcher reloaded the pinned BF16 checkpoint and produced exactly 32 generated tokens across generation steps 0 through 31, using the 32-token maximum without an earlier EOS. The literal completion is 'User asks: \"Explain why the sky appears blue in one sentence.\" So we need to give a single sentence explanation. Provide concise answer. Probably: \"'.\n", + "entry_id": "nemotron-3-nano-4b-inference", + "expected_result": "Two independent runs use greedy decoding, produce byte-identical token IDs, and return exactly 2 generated tokens with this literal completion, including its leading space: ' Paris.\"'.\n", "hardware": null, - "last_verified": "2026-08-25", + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.inference", @@ -3933,200 +3902,241 @@ "workflow": "inference" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "gpus_per_node": "8", + "nodes": "1", + "recipe": "nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config", + "sequence_length": "4096", + "total_gpus": 8 + } + ], + "commands": [ + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config --mode pretrain --dataset megatron-indexed --seq_length 4096 --max_steps 100 --lr 3e-4 --min_lr 3e-5 --warmup_iters 40 'dataset.blend=[[\"work/data/rp2/head_01\"],null]' dataset.path_to_cache=work/cache/nemotron-3-nano-4b/rp2 tokenizer.tokenizer_type=SentencePieceTokenizer tokenizer.tokenizer_model=work/data/rp2/tokenizer.model rng.seed=1234 dataset.random_seed=1234 scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 dist.distributed_timeout_minutes=30 ddp.check_for_nan_in_grad=true ddp.check_for_large_grads=true rerun_state_machine.check_for_nan_in_loss=true checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/pretrain-reference-checkpoints --save_interval 50 logger.log_interval=1 logger.log_throughput=true logger.tensorboard_dir=null" + ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-pretrain-h100", - "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "entry_id": "nemotron-3-nano-4b-pretrain-h100", + "expected_result": "The uninterrupted bounded random-initialization RP2 reference finishes all 100 steps at recipe-owned GBS/MBS 1024/1 with the five recorded metrics, finite loss, and no skipped or NaN iterations. It reaches peak learning rate 3e-4 at step 40 and completes cosine decay to 3e-5 at step 100. Both iter_0000050 and iter_0000100 contain all eight distributed shards plus metadata, optimizer/RNG train state, run config, and tokenizer; iter_0000100 reloads at step 100 without an extra optimizer step.\n", "hardware": "H100", - "last_verified": null, + "last_verified": "2026-07-20", "metrics": { - "final_loss": null, - "initial_loss": null, - "last_10_steps_model_tflops_per_gpu_avg": null, - "last_10_steps_step_time_ms_avg": null, - "last_10_steps_tokens_per_second_per_gpu_avg": null + "final_loss": 5.511951, + "initial_loss": 12.4325, + "last_10_steps_model_tflops_per_gpu_avg": 402.51, + "last_10_steps_step_time_ms_avg": 26775.11, + "last_10_steps_tokens_per_second_per_gpu_avg": 19581.171 }, "precision": "bf16", "source_pointer": "items.pretrain.H100", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "pretrain" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "gpus_per_node": "8", + "nodes": "1", + "recipe": "nemotron_3_nano_4b_sft_8gpu_h100_bf16_config", + "sequence_length": "2048", + "total_gpus": 8 + } + ], + "commands": [ + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_sft_8gpu_h100_bf16_config --mode sft --dataset tulu3 --pretrained_checkpoint work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --max_steps 100 --seq_length 2048 --lr 5e-6 --min_lr 0 --warmup_iters 10 'dataset.hf_dataset.split=\"train[:10000]\"' 'dataset.hf_dataset.load_kwargs={revision:\"b14afda60f1bbebe55d5d2fa1e4df5042f97f8be\"}' dataset.hf_output_root=work/data/tulu3/nemotron-3-nano-4b-sft-b14afda60f1b dataset.hf_rewrite=true dataset.seed=1234 rng.seed=5678 dataset.do_validation=false dataset.hf_validation_proportion=null dataset.enable_offline_packing=true 'dataset.offline_packing_specs={packed_sequence_size:2048,pad_seq_to_mult:1}' scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/sft-checkpoints --save_interval 100 logger.log_interval=1 logger.log_throughput=true" + ], "dimensions": {}, - "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-sft-h100", - "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "enabled_features": { + "sequence_packing": "offline" + }, + "entry_id": "nemotron-3-nano-4b-sft-h100", + "expected_result": "Pad-1 offline packing is 99.27% efficient. The TP1/DP8 run uses four microbatches per optimizer step and completes all 100 steps with the four recorded metrics, finite loss, and no skipped or NaN iterations. Across 6,553,600 token slots, assistant-only loss masks contain 4,187,630 supervised tokens. The complete eight-shard iter_0000100 full-model checkpoint is saved and reloads for export.\n", "hardware": "H100", - "last_verified": null, + "last_verified": "2026-07-20", "metrics": { - "final_loss": null, - "initial_loss": null, - "last_10_steps_model_tflops_per_gpu_avg": null, - "last_10_steps_step_time_ms_avg": null, - "last_10_steps_tokens_per_second_per_gpu_avg": null + "final_loss": 1.234906, + "initial_loss": 1.839282, + "last_10_steps_model_tflops_per_gpu_avg": 262.89, + "last_10_steps_step_time_ms_avg": 627.0, + "last_10_steps_tokens_per_second_per_gpu_avg": 13065.391 }, "precision": "bf16", "source_pointer": "items.sft.H100", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "sft" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "gpus_per_node": "1", + "nodes": "1", + "tensor_parallel": "1", + "total_gpus": 1 + }, + {} + ], + "commands": [ + "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 1 --tp 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/sft-checkpoints/iter_0000100 --hf-path work/model-verification/nemotron-3-nano-4b/sft-hf-export --torch-dtype bfloat16 --export-weight-dtype bfloat16", + "uv run python skills/create-model-verification-card/scripts/verify_hf_inference.py --hf-model work/model-verification/nemotron-3-nano-4b/sft-hf-export --prompt \"Name the capital of France and explain its role in one sentence.\" --max-new-tokens 45 --chat-template --disable-thinking" + ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-sft-export-inference-h100", - "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "entry_id": "nemotron-3-nano-4b-sft-export-inference-h100", + "expected_result": "The final full-SFT checkpoint exports as one BF16 safetensors file with 263 weights and reloads natively as NemotronHForCausalLM. The helper runs greedy generation twice, obtains identical token IDs and exactly 45 new tokens, and produces this literal completion with twelve trailing newline characters: \"The capital of France is Paris, which serves as the country's political, cultural, and economic center.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\".\n", "hardware": "H100", - "last_verified": null, + "last_verified": "2026-07-20", "metrics": {}, "precision": "bf16", "source_pointer": "items.sft_export_inference.H100", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "sft_export_inference" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "context_parallel": "2", + "gpus_per_node": "8", + "nodes": "1", + "recipe": "nemotron_3_nano_4b_sft_8gpu_h100_bf16_32k_config", + "sequence_length": "32768", + "tensor_parallel": "2", + "total_gpus": 8 + } + ], + "commands": [ + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_sft_8gpu_h100_bf16_32k_config --mode sft --dataset tulu3 --pretrained_checkpoint work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --max_steps 100 --seq_length 32768 --tensor_model_parallel_size 2 --context_parallel_size 2 --lr 5e-6 --min_lr 0 --warmup_iters 10 'dataset.hf_dataset.split=\"train[:10000]\"' 'dataset.hf_dataset.load_kwargs={revision:\"b14afda60f1bbebe55d5d2fa1e4df5042f97f8be\"}' dataset.hf_output_root=work/data/tulu3/nemotron-3-nano-4b-long-b14afda60f1b dataset.hf_rewrite=true dataset.seed=1234 rng.seed=5678 dataset.do_validation=false dataset.hf_validation_proportion=null dataset.enable_offline_packing=true 'dataset.offline_packing_specs={packed_sequence_size:32768,pad_seq_to_mult:4}' model.sequence_parallel=true model.cp_comm_type=a2a model.cross_entropy_loss_fusion=false model.calculate_per_token_loss=true ddp.average_in_collective=false scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/long-sft-checkpoints --save_interval 100 logger.log_interval=1 logger.log_throughput=true" + ], "dimensions": {}, - "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-sft-long-context-h100", - "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "enabled_features": { + "context_parallel_size": 2, + "sequence_packing": "offline" + }, + "entry_id": "nemotron-3-nano-4b-sft-long-context-h100", + "expected_result": "Pad-4 offline packing is 99.35% efficient. The TP2/CP2/SP-on/DP2 run uses four microbatches per optimizer step and completes all 100 32K steps with the five recorded metrics, finite loss, and no skipped or NaN iterations. Across 26,214,400 token slots, assistant-only loss masks contain 16,734,347 supervised tokens. The complete eight-shard iter_0000100 checkpoint is saved and reloads at the same topology.\n", "hardware": "H100", - "last_verified": null, + "last_verified": "2026-07-20", "metrics": { - "final_loss": null, - "initial_loss": null, - "last_10_steps_model_tflops_per_gpu_avg": null, - "last_10_steps_step_time_ms_avg": null, - "last_10_steps_tokens_per_second_per_gpu_avg": null + "final_loss": 1.100197, + "initial_loss": 1.65866, + "last_10_steps_model_tflops_per_gpu_avg": 142.06, + "last_10_steps_step_time_ms_avg": 5575.59, + "last_10_steps_tokens_per_second_per_gpu_avg": 5877.046 }, "precision": "bf16", "source_pointer": "items.sft_long_context.H100", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "sft_long_context" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "command_topologies": [ + { + "gpus_per_node": "8", + "nodes": "1", + "recipe": "nemotron_3_nano_4b_peft_8gpu_h100_bf16_config", + "sequence_length": "2048", + "total_gpus": 8 + } + ], + "commands": [ + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_peft_8gpu_h100_bf16_config --mode lora --dataset tulu3 --pretrained_checkpoint work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --max_steps 100 --seq_length 2048 --lr 1e-4 --min_lr 0 --warmup_iters 10 'dataset.hf_dataset.split=\"train[:10000]\"' 'dataset.hf_dataset.load_kwargs={revision:\"b14afda60f1bbebe55d5d2fa1e4df5042f97f8be\"}' dataset.hf_output_root=work/data/tulu3/nemotron-3-nano-4b-peft-b14afda60f1b dataset.hf_rewrite=true dataset.seed=1234 rng.seed=5678 dataset.do_validation=false dataset.hf_validation_proportion=null dataset.enable_offline_packing=true 'dataset.offline_packing_specs={packed_sequence_size:2048,pad_seq_to_mult:4}' scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/peft-checkpoints --save_interval 100 logger.log_interval=1 logger.log_throughput=true" + ], "dimensions": {}, - "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-peft-h100", - "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", + "enabled_features": { + "sequence_packing": "offline" + }, + "entry_id": "nemotron-3-nano-4b-peft-h100", + "expected_result": "Pad-4 offline packing is 99.36% efficient. The frozen-base LoRA run uses rank 8, alpha 16, zero dropout, and linear_qkv/linear_proj targets. Its TP1/DP8 layout uses four microbatches per optimizer step and completes all 100 steps with finite loss and no skipped or NaN iterations. Across 6,553,600 token slots, assistant-only loss masks contain 4,178,503 supervised tokens. The complete eight-shard iter_0000100 adapter checkpoint reloads over the pinned base model at step 100.\n", "hardware": "H100", - "last_verified": null, + "last_verified": "2026-07-20", "metrics": { - "final_loss": null, - "initial_loss": null, - "last_10_steps_model_tflops_per_gpu_avg": null, - "last_10_steps_step_time_ms_avg": null, - "last_10_steps_tokens_per_second_per_gpu_avg": null + "final_loss": 1.256916, + "initial_loss": 1.769892, + "last_10_steps_model_tflops_per_gpu_avg": 431.9, + "last_10_steps_step_time_ms_avg": 381.69, + "last_10_steps_tokens_per_second_per_gpu_avg": 21462.443 }, "precision": "bf16", "source_pointer": "items.peft.H100", - "status": "unverified", + "status": "verified", "variant": null, "workflow": "peft" }, { - "bridge_commit": "d352aceda8ed4136f1db787bcf449c1b210a2438", - "command_topologies": [], - "commands": [], - "dimensions": {}, - "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-checkpoint-resume-h100", - "expected_result": "This workflow remains unverified and requires a bounded public run with the model's pinned revision and all applicable verification gates.\n", - "hardware": "H100", - "last_verified": null, - "metrics": { - "final_loss": null, - "initial_loss": null, - "last_10_steps_model_tflops_per_gpu_avg": null, - "last_10_steps_step_time_ms_avg": null, - "last_10_steps_tokens_per_second_per_gpu_avg": null - }, - "precision": "bf16", - "source_pointer": "items.checkpoint_resume.H100", - "status": "unverified", - "variant": null, - "workflow": "checkpoint_resume" - }, - { - "bridge_commit": "0480586879f2513958fd8634fc529693ae13e536", + "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", "command_topologies": [ { - "gpus_per_node": "4", - "nodes": "2", - "recipe": "nemotron_3_nano_pretrain_8gpu_gb300_fp8mx_config", - "sequence_length": "8192", + "gpus_per_node": "8", + "nodes": "1", + "recipe": "nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config", + "sequence_length": "4096", "total_gpus": 8 } ], "commands": [ - "./scripts/training/train.sh --wait --nodes 2 --gpus-per-node 4 --recipe nemotron_3_nano_pretrain_8gpu_gb300_fp8mx_config --mode pretrain --max_steps 50 --seq_length 8192 logger.save_config_filepath=work/model-verification/nemotron-3-nano-30b-a3b/gb300-performance/ConfigContainer.yaml" + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config --mode pretrain --dataset megatron-indexed --seq_length 4096 --max_steps 100 --lr 3e-4 --min_lr 3e-5 --warmup_iters 40 'dataset.blend=[[\"work/data/rp2/head_01\"],null]' dataset.path_to_cache=work/cache/nemotron-3-nano-4b/rp2 tokenizer.tokenizer_type=SentencePieceTokenizer tokenizer.tokenizer_model=work/data/rp2/tokenizer.model rng.seed=1234 dataset.random_seed=1234 scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 dist.distributed_timeout_minutes=30 ddp.check_for_nan_in_grad=true ddp.check_for_large_grads=true rerun_state_machine.check_for_nan_in_loss=true --load_dir work/model-verification/nemotron-3-nano-4b/pretrain-reference-checkpoints checkpoint.ckpt_step=50 --save_dir work/model-verification/nemotron-3-nano-4b/pretrain-resumed-checkpoints --save_interval 50 logger.log_interval=1 logger.log_throughput=true logger.tensorboard_dir=null" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-30b-a3b-pretrain-performance-gb300", - "expected_result": "On exactly 8 GB300s, the canonical MXFP8 mock-data recipe completes exactly 50 optimizer steps at TP1/PP1/CP1/EP8/ETP1, GBS/MBS 512/4, and sequence length 8192. All 50 keyed rows have finite loss with zero skipped or NaN iterations. Loss moves from 12.18025 to 0.004964447; the final ten steps average 12455.140 ms, 937.770 TFLOP/s/GPU, and 42094.107 tokens/s/GPU. The resolved configuration persists.\n", - "hardware": "GB300", - "last_verified": "2026-08-18", + "entry_id": "nemotron-3-nano-4b-checkpoint-resume-h100", + "expected_result": "The continuation restores optimizer, scheduler, data-order, and RNG state directly from iter_0000050 and executes exactly steps 51 through 100 into a distinct output root with the five recorded metrics, finite loss, and no skipped or NaN iterations. Step 51 matches the uninterrupted reference exactly at 6.173212. At step 100, resumed loss 5.512038 differs from reference loss 5.511951 by 0.000087 (0.00158%), inside the declared 1% tolerance. Its complete eight-shard iter_0000100 checkpoint contains metadata, optimizer/RNG train state, run config, and tokenizer, and reloads at step 100 without an extra optimizer step.\n", + "hardware": "H100", + "last_verified": "2026-07-20", "metrics": { - "final_loss": 0.004964447, - "initial_loss": 12.18025, - "last_10_steps_model_tflops_per_gpu_avg": 937.77, - "last_10_steps_step_time_ms_avg": 12455.14, - "last_10_steps_tokens_per_second_per_gpu_avg": 42094.107 + "final_loss": 5.512038, + "initial_loss": 6.173212, + "last_10_steps_model_tflops_per_gpu_avg": 400.11, + "last_10_steps_step_time_ms_avg": 26943.07, + "last_10_steps_tokens_per_second_per_gpu_avg": 19459.104 }, - "precision": "fp8_mx", - "source_pointer": "items.pretrain_performance.GB300", + "precision": "bf16", + "source_pointer": "items.checkpoint_resume.H100", "status": "verified", "variant": null, - "workflow": "pretrain_performance" + "workflow": "checkpoint_resume" } ], - "hf_id": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16", - "hf_revision": "2d59de1cbd51c0adf384eb906b766d1aee0e0517", + "hf_id": "nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16", + "hf_revision": "dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f", "min_transformers_version": "5.8.1", - "slug": "nemotron-3-nano-30b-a3b", - "source_card": "examples/model_verification_cards/nemotron-3-nano-30b-a3b/card.yaml", - "summary": "The pinned checkpoint has verified one-node GPU import, independent CPU and distributed GPU BF16 export, and checkpoint-backed deterministic inference. Both exports strictly reload with Transformers and exhaustively match the source after the explicitly requested BF16 casts. Performance scope: pretrain_performance.GB300 uses the tuned canonical 8-GPU MXFP8 recipe. CPU import, manual forward, and functional training workflows remain unverified in this card.\n", - "title": "nemotron_3_nano_30b_a3b" + "slug": "nemotron-3-nano-4b", + "source_card": "examples/model_verification_cards/nemotron-3-nano-4b/card.yaml", + "summary": "Performance disclaimer: this model has not been performance-tuned; reported timing and throughput metrics are sanity checks, not optimized performance results. Nemotron 3 Nano 4B support verification covers conversion, inference, and training.\n", + "title": "nemotron_3_nano_4b" }, { - "architecture": "NemotronHForCausalLM", - "base_container": "nvcr.io/nvidia/pytorch:26.04-py3", - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "architecture": "NemotronH_Nano_Omni_Reasoning_V3", + "base_container": "nvcr.io/nvidia/nemo:26.06", + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", "entries": [ { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", "command_topologies": [ { - "nodes": "1" + "expert_parallel": "1", + "expert_tensor_parallel": "1", + "nodes": "1", + "pipeline_parallel": "1", + "tensor_parallel": "1" } ], "commands": [ - "./scripts/conversion/convert.sh import --executor slurm --device cpu --nodes 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/cpu-megatron --torch-dtype bfloat16" + "./scripts/conversion/convert.sh import --executor slurm --device cpu --nodes 1 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/cpu-megatron-clean --torch-dtype bfloat16 --tp 1 --pp 1 --ep 1 --etp 1 --trust-remote-code" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-hf-to-megatron-cpu", - "expected_result": "The command exits successfully and creates iter_0000000. After the paired CPU export, all 263 tensors and 3,973,556,832 parameters match the pinned source exactly in name, shape, dtype, and value, with maximum difference zero.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-hf-to-megatron-cpu", + "expected_result": "The offline, immutable-revision CPU import exits successfully after mapping 7,333 model parameters and creates a reloadable iter_0000000 torch_dist checkpoint with 33,015,546,816 parameters on the single model parallel rank.\n", "hardware": null, - "last_verified": "2026-07-20", + "last_verified": "2026-07-30", "metrics": {}, "precision": "bf16", "source_pointer": "items.hf_to_megatron_cpu", @@ -4135,24 +4145,27 @@ "workflow": "hf_to_megatron_cpu" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", "command_topologies": [ { - "gpus_per_node": "1", + "expert_parallel": "4", + "expert_tensor_parallel": "1", + "gpus_per_node": "8", "nodes": "1", - "tensor_parallel": "1", - "total_gpus": 1 + "pipeline_parallel": "1", + "tensor_parallel": "2", + "total_gpus": 8 } ], "commands": [ - "./scripts/conversion/convert.sh import --executor slurm --device gpu --nodes 1 --gpus-per-node 1 --tp 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/imported-megatron --torch-dtype bfloat16" + "./scripts/conversion/convert.sh import --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean --torch-dtype bfloat16 --tp 2 --pp 1 --ep 4 --etp 1 --trust-remote-code --low-memory-save" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-hf-to-megatron-gpu", - "expected_result": "The command exits successfully and creates a reloadable iter_0000000. After the paired GPU export, all 263 tensors and 3,973,556,832 parameters match the pinned source exactly in name, shape, dtype, and value.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-hf-to-megatron-gpu", + "expected_result": "The command exits successfully at TP2/PP1/EP4/ETP1 and creates a reloadable iter_0000000 checkpoint. The paired strict GPU export contains the source checkpoint's exact 7,349-key set, shapes, dtypes, and values.\n", "hardware": null, - "last_verified": "2026-07-20", + "last_verified": "2026-07-30", "metrics": {}, "precision": "bf16", "source_pointer": "items.hf_to_megatron_gpu", @@ -4161,21 +4174,21 @@ "workflow": "hf_to_megatron_gpu" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "7783fc356b7d4768525eabf9825f9108c6544f4c", "command_topologies": [ { "nodes": "1" } ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device cpu --nodes 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/cpu-megatron --hf-path work/model-verification/nemotron-3-nano-4b/cpu-hf-export --torch-dtype bfloat16" + "./scripts/conversion/convert.sh export --executor slurm --device cpu --nodes 1 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/cpu-megatron-clean/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/cpu-hf-export-clean --torch-dtype bfloat16 --trust-remote-code" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-megatron-to-hf-cpu", - "expected_result": "Strict export exits successfully; all 263 BF16 tensors match the pinned source bitwise, the 171-byte generation configuration is preserved byte-for-byte, and Transformers reloads the output natively as NemotronHForCausalLM.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-megatron-to-hf-cpu", + "expected_result": "CPU export completes in 14 indexed shards totaling 66,031,270,520 bytes. Its exact comparison contains all 7,349 source tensors and 33,015,632,238 values, with identical keys, shapes, dtypes, and values and no dtype conversions. Transformers reloads the local custom-code export natively with the source-equivalent warning set: one generated vision summary buffer is missing and four source-only audio/vision buffers are unexpected.\n", "hardware": null, - "last_verified": "2026-07-20", + "last_verified": "2026-08-25", "metrics": {}, "precision": "bf16", "source_pointer": "items.megatron_to_hf_cpu", @@ -4184,24 +4197,27 @@ "workflow": "megatron_to_hf_cpu" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "7783fc356b7d4768525eabf9825f9108c6544f4c", "command_topologies": [ { - "gpus_per_node": "1", + "expert_parallel": "4", + "expert_tensor_parallel": "1", + "gpus_per_node": "8", "nodes": "1", - "tensor_parallel": "1", - "total_gpus": 1 + "pipeline_parallel": "1", + "tensor_parallel": "2", + "total_gpus": 8 } ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 1 --tp 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/imported-megatron --hf-path work/model-verification/nemotron-3-nano-4b/hf-export --torch-dtype bfloat16" + "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --hf-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-hf-export-clean --torch-dtype bfloat16 --tp 2 --pp 1 --ep 4 --etp 1 --trust-remote-code --distributed-save --save-every-n-ranks 1" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-megatron-to-hf-gpu", - "expected_result": "Strict export exits successfully; all 263 BF16 tensors match the pinned source bitwise, the generation configuration is exact, and Transformers reloads the output natively as NemotronHForCausalLM. A_log, D, dt_bias, and out_proj are exact for all 21 Mamba layers.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-megatron-to-hf-gpu", + "expected_result": "Distributed export completes in 17 indexed shards totaling 66,031,270,520 bytes. All 7,349 tensors and 33,015,632,238 values match the immutable HF source exactly in keys, shapes, dtypes, and values with no dtype conversions. Transformers reloads the local custom-code export natively with the same one missing generated buffer and four unexpected source-only buffers reported when reloading the pinned source itself.\n", "hardware": null, - "last_verified": "2026-07-20", + "last_verified": "2026-08-25", "metrics": {}, "precision": "bf16", "source_pointer": "items.megatron_to_hf_gpu", @@ -4210,44 +4226,50 @@ "workflow": "megatron_to_hf_gpu" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", "command_topologies": [ { + "expert_parallel": "2", + "expert_tensor_parallel": "1", + "pipeline_parallel": "4", "tensor_parallel": "1" } ], "commands": [ - "uv run python -m torch.distributed.run --standalone --nproc_per_node=1 examples/conversion/compare_hf_and_megatron/compare.py --hf_model_path nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron_model_path work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --tp 1 --prompt \"The capital of France is the city of\"" + "uv run python -m torch.distributed.run --standalone --nproc_per_node=8 examples/conversion/compare_hf_and_megatron/compare.py --hf_model_path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron_model_path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --tp 1 --pp 4 --ep 2 --etp 1 --prompt \"The capital of France is \" --trust-remote-code" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-manual-forward-pass", - "expected_result": "The eight-token one-step comparison exits successfully using native Transformers Nemotron-H and a real Megatron inference context. Both paths have next-token predictions that match at token ID 6993 (\" Paris\"); cosine similarity is 0.999982 and the maximum and mean absolute logit differences are 0.093750 and 0.018522.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-manual-forward-pass", + "expected_result": "The pinned one-step run exits successfully and both implementations predict token ID 6993 (\" Paris\"), but cosine similarity is 0.969760 and therefore does not satisfy the required 0.99 verification gate. The maximum and mean absolute logit differences are 3.527344 and 0.527820, respectively.\n", "hardware": null, - "last_verified": "2026-07-20", + "last_verified": null, "metrics": {}, "precision": "bf16", "source_pointer": "items.manual_forward_pass", - "status": "verified", + "status": "unverified", "variant": null, "workflow": "manual_forward_pass" }, { - "bridge_commit": "78ecfad7644ee67efa4e8af4b0e7cf09f6bc9ecc", + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", "command_topologies": [ { + "expert_parallel": "2", + "expert_tensor_parallel": "1", + "pipeline_parallel": "4", "tensor_parallel": "1" } ], "commands": [ - "uv run python -m torch.distributed.run --standalone --nproc_per_node=1 examples/conversion/hf_to_megatron_generate_text.py --hf_model_path nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron_model_path work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --tp 1 --prompt \"The capital of France is\" --max_new_tokens 2" + "uv run python -m torch.distributed.run --standalone --nproc_per_node=8 examples/models/nemotron/nemotron_3_nano_omni/hf_to_megatron_generate_nemotron_omni.py --hf_model_path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron_model_path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --prompt \"The capital of France is\" --max_new_tokens 4 --tp 1 --pp 4 --ep 2 --etp 1" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-inference", - "expected_result": "Two independent runs use greedy decoding, produce byte-identical token IDs, and return exactly 2 generated tokens with this literal completion, including its leading space: ' Paris.\"'.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-inference", + "expected_result": "Deterministic greedy decoding returns the exact 4-token result and\nterminates with the model end token. Literal completion: \"\nParis.\"", "hardware": null, - "last_verified": "2026-07-20", + "last_verified": "2026-07-30", "metrics": {}, "precision": "bf16", "source_pointer": "items.inference", @@ -4256,66 +4278,55 @@ "workflow": "inference" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", - "command_topologies": [ - { - "gpus_per_node": "8", - "nodes": "1", - "recipe": "nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config", - "sequence_length": "4096", - "total_gpus": 8 - } - ], - "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config --mode pretrain --dataset megatron-indexed --seq_length 4096 --max_steps 100 --lr 3e-4 --min_lr 3e-5 --warmup_iters 40 'dataset.blend=[[\"work/data/rp2/head_01\"],null]' dataset.path_to_cache=work/cache/nemotron-3-nano-4b/rp2 tokenizer.tokenizer_type=SentencePieceTokenizer tokenizer.tokenizer_model=work/data/rp2/tokenizer.model rng.seed=1234 dataset.random_seed=1234 scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 dist.distributed_timeout_minutes=30 ddp.check_for_nan_in_grad=true ddp.check_for_large_grads=true rerun_state_machine.check_for_nan_in_loss=true checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/pretrain-reference-checkpoints --save_interval 50 logger.log_interval=1 logger.log_throughput=true logger.tensorboard_dir=null" - ], + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "command_topologies": [], + "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-pretrain-h100", - "expected_result": "The uninterrupted bounded random-initialization RP2 reference finishes all 100 steps at recipe-owned GBS/MBS 1024/1 with the five recorded metrics, finite loss, and no skipped or NaN iterations. It reaches peak learning rate 3e-4 at step 40 and completes cosine decay to 3e-5 at step 100. Both iter_0000050 and iter_0000100 contain all eight distributed shards plus metadata, optimizer/RNG train state, run config, and tokenizer; iter_0000100 reloads at step 100 without an extra optimizer step.\n", - "hardware": "H100", - "last_verified": "2026-07-20", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-pretrain-all", + "expected_result": "Megatron Bridge does not publish a pretraining recipe for this multimodal conditional-generation model; the supported package provides supervised CORD v2 SFT and LoRA PEFT workflows.\n", + "hardware": "all", + "last_verified": null, "metrics": { - "final_loss": 5.511951, - "initial_loss": 12.4325, - "last_10_steps_model_tflops_per_gpu_avg": 402.51, - "last_10_steps_step_time_ms_avg": 26775.11, - "last_10_steps_tokens_per_second_per_gpu_avg": 19581.171 + "final_loss": null, + "initial_loss": null, + "last_10_steps_model_tflops_per_gpu_avg": null, + "last_10_steps_step_time_ms_avg": null, + "last_10_steps_tokens_per_second_per_gpu_avg": null }, - "precision": "bf16", - "source_pointer": "items.pretrain.H100", - "status": "verified", + "precision": null, + "source_pointer": "items.pretrain.all", + "status": "unsupported", "variant": null, "workflow": "pretrain" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "9b69b47a321de14b0453c230dd130e18ae0f00f7", "command_topologies": [ { "gpus_per_node": "8", "nodes": "1", - "recipe": "nemotron_3_nano_4b_sft_8gpu_h100_bf16_config", - "sequence_length": "2048", + "recipe": "nemotron_omni_cord_v2_sft_8gpu_h100_bf16_config", "total_gpus": 8 } ], "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_sft_8gpu_h100_bf16_config --mode sft --dataset tulu3 --pretrained_checkpoint work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --max_steps 100 --seq_length 2048 --lr 5e-6 --min_lr 0 --warmup_iters 10 'dataset.hf_dataset.split=\"train[:10000]\"' 'dataset.hf_dataset.load_kwargs={revision:\"b14afda60f1bbebe55d5d2fa1e4df5042f97f8be\"}' dataset.hf_output_root=work/data/tulu3/nemotron-3-nano-4b-sft-b14afda60f1b dataset.hf_rewrite=true dataset.seed=1234 rng.seed=5678 dataset.do_validation=false dataset.hf_validation_proportion=null dataset.enable_offline_packing=true 'dataset.offline_packing_specs={packed_sequence_size:2048,pad_seq_to_mult:1}' scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/sft-checkpoints --save_interval 100 logger.log_interval=1 logger.log_throughput=true" + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_omni_cord_v2_sft_8gpu_h100_bf16_config --mode sft --step_func nemotron_omni_step --pretrained_checkpoint work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --max_steps 100 --save_dir work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-4k-checkpoints --save_interval 50 'dataset.source.load_kwargs={revision:\"7f0115a4b758a71d6473b8d085751692da2fef98\"}' dataset.do_validation=false dataset.do_test=false validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null logger.log_interval=1 logger.log_throughput=true rng.seed=5678" ], "dimensions": {}, "enabled_features": { - "sequence_packing": "offline" + "moe_dispatcher": "hybridep" }, - "entry_id": "nemotron-3-nano-4b-sft-h100", - "expected_result": "Pad-1 offline packing is 99.27% efficient. The TP1/DP8 run uses four microbatches per optimizer step and completes all 100 steps with the four recorded metrics, finite loss, and no skipped or NaN iterations. Across 6,553,600 token slots, assistant-only loss masks contain 4,187,630 supervised tokens. The complete eight-shard iter_0000100 full-model checkpoint is saved and reloads for export.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-sft-h100", + "expected_result": "The immutable-revision, real image-text CORD v2 run completes exactly 100 full-SFT optimizer steps on eight H100 GPUs at TP2/PP1/CP1/EP8/ETP1 and GBS/MBS 64/4 with natural-routing HybridEP. Execution uses selective MoE/layernorm recompute, fused attention, TE cross entropy, fused weighted squared-ReLU, and router fusion without changing the image-text objective or routing policy. Model parameters, main gradients, and Adam moments use BF16; optimizer main parameters use scaled FP16 without parameter remainders. LM loss is finite from 1.281308 to 0.03330838, the final ten steps average 3,603.67 ms and 197.10 TFLOP/s/GPU, sampled peak memory is 76,349 MiB, and no iteration is skipped or NaN. Complete optimizer and RNG checkpoints are saved at steps 50 and 100. Direct step-50 resume loads the complete state and reaches step 100 at 197.07 final-ten TFLOP/s/GPU with finite loss and zero skipped or NaN iterations.\n", "hardware": "H100", - "last_verified": "2026-07-20", + "last_verified": "2026-08-12", "metrics": { - "final_loss": 1.234906, - "initial_loss": 1.839282, - "last_10_steps_model_tflops_per_gpu_avg": 262.89, - "last_10_steps_step_time_ms_avg": 627.0, - "last_10_steps_tokens_per_second_per_gpu_avg": 13065.391 + "final_loss": 0.03330838, + "initial_loss": 1.281308, + "last_10_steps_model_tflops_per_gpu_avg": 197.1, + "last_10_steps_step_time_ms_avg": 3603.67, + "last_10_steps_tokens_per_second_per_gpu_avg": 9092.952 }, "precision": "bf16", "source_pointer": "items.sft.H100", @@ -4324,64 +4335,64 @@ "workflow": "sft" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", "command_topologies": [ { - "gpus_per_node": "1", + "expert_parallel": "8", + "expert_tensor_parallel": "1", + "gpus_per_node": "8", "nodes": "1", - "tensor_parallel": "1", - "total_gpus": 1 + "pipeline_parallel": "1", + "tensor_parallel": "2", + "total_gpus": 8 }, {} ], "commands": [ - "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 1 --tp 1 --hf-model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 --hf-revision dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f --megatron-path work/model-verification/nemotron-3-nano-4b/sft-checkpoints/iter_0000100 --hf-path work/model-verification/nemotron-3-nano-4b/sft-hf-export --torch-dtype bfloat16 --export-weight-dtype bfloat16", - "uv run python skills/create-model-verification-card/scripts/verify_hf_inference.py --hf-model work/model-verification/nemotron-3-nano-4b/sft-hf-export --prompt \"Name the capital of France and explain its role in one sentence.\" --max-new-tokens 45 --chat-template --disable-thinking" + "./scripts/conversion/convert.sh export --executor slurm --device gpu --nodes 1 --gpus-per-node 8 --hf-model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --hf-revision 24e67ea000b7c2837fc8f9488aa2008524fac8ba --megatron-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-4k-checkpoints/iter_0000100 --hf-path work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-hf-export-clean --torch-dtype bfloat16 --tp 2 --pp 1 --ep 8 --etp 1 --trust-remote-code --distributed-save --not-strict", + "uv run python skills/create-model-verification-card/scripts/verify_hf_inference.py --hf-model work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-hf-export-clean --prompt \"The capital of France is\" --max-new-tokens 32 --chat-template --disable-thinking --trust-remote-code --device cuda --dtype bfloat16" ], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-sft-export-inference-h100", - "expected_result": "The final full-SFT checkpoint exports as one BF16 safetensors file with 263 weights and reloads natively as NemotronHForCausalLM. The helper runs greedy generation twice, obtains identical token IDs and exactly 45 new tokens, and produces this literal completion with twelve trailing newline characters: \"The capital of France is Paris, which serves as the country's political, cultural, and economic center.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\".\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-sft-export-inference-h100", + "expected_result": "Non-strict export succeeds and writes 6,637 indexed tensors in 17 shards. The CORD v2 recipe intentionally disables sound, so 712 source audio tensors are absent. Native Transformers generation remains unverified because local dynamic-code loading omits configuration_nemotron_h before model weights can reload.\n", "hardware": "H100", - "last_verified": "2026-07-20", + "last_verified": null, "metrics": {}, "precision": "bf16", "source_pointer": "items.sft_export_inference.H100", - "status": "verified", + "status": "unverified", "variant": null, "workflow": "sft_export_inference" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "eb7cf72392ac07e7a095b87d9b1d6bf2b38c5b6e", "command_topologies": [ { - "context_parallel": "2", "gpus_per_node": "8", "nodes": "1", - "recipe": "nemotron_3_nano_4b_sft_8gpu_h100_bf16_32k_config", - "sequence_length": "32768", - "tensor_parallel": "2", + "recipe": "nemotron_omni_cord_v2_long_context_sft_8gpu_h100_bf16_config", "total_gpus": 8 } ], "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_sft_8gpu_h100_bf16_32k_config --mode sft --dataset tulu3 --pretrained_checkpoint work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --max_steps 100 --seq_length 32768 --tensor_model_parallel_size 2 --context_parallel_size 2 --lr 5e-6 --min_lr 0 --warmup_iters 10 'dataset.hf_dataset.split=\"train[:10000]\"' 'dataset.hf_dataset.load_kwargs={revision:\"b14afda60f1bbebe55d5d2fa1e4df5042f97f8be\"}' dataset.hf_output_root=work/data/tulu3/nemotron-3-nano-4b-long-b14afda60f1b dataset.hf_rewrite=true dataset.seed=1234 rng.seed=5678 dataset.do_validation=false dataset.hf_validation_proportion=null dataset.enable_offline_packing=true 'dataset.offline_packing_specs={packed_sequence_size:32768,pad_seq_to_mult:4}' model.sequence_parallel=true model.cp_comm_type=a2a model.cross_entropy_loss_fusion=false model.calculate_per_token_loss=true ddp.average_in_collective=false scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/long-sft-checkpoints --save_interval 100 logger.log_interval=1 logger.log_throughput=true" + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_omni_cord_v2_long_context_sft_8gpu_h100_bf16_config --mode sft --step_func nemotron_omni_step --pretrained_checkpoint work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --max_steps 100 --save_dir work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/sft-8k-packed-checkpoints --save_interval 50 'dataset.source.load_kwargs={revision:\"7f0115a4b758a71d6473b8d085751692da2fef98\"}' dataset.do_validation=false dataset.do_test=false validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null logger.log_interval=1 logger.log_throughput=true rng.seed=5678" ], "dimensions": {}, "enabled_features": { "context_parallel_size": 2, - "sequence_packing": "offline" + "sequence_packing": "in_batch" }, - "entry_id": "nemotron-3-nano-4b-sft-long-context-h100", - "expected_result": "Pad-4 offline packing is 99.35% efficient. The TP2/CP2/SP-on/DP2 run uses four microbatches per optimizer step and completes all 100 32K steps with the five recorded metrics, finite loss, and no skipped or NaN iterations. Across 26,214,400 token slots, assistant-only loss masks contain 16,734,347 supervised tokens. The complete eight-shard iter_0000100 checkpoint is saved and reloads at the same topology.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-sft-long-context-h100", + "expected_result": "The immutable-revision, real image-text CORD v2 run completes exactly 100 full-SFT optimizer steps on eight H100 GPUs at TP4/PP1/CP2/EP8/ETP1 and GBS/MBS 64/2 with 8K in-batch packing and the standard all-to-all dispatcher. Model parameters, main gradients, and Adam moments use BF16; optimizer main parameters use scaled FP16 without parameter remainders. LM loss is finite from 1.251364 to 0.01020405, the final ten steps average 15,577.9 ms and 93.73 TFLOP/s/GPU, sampled peak memory is 75,197 MiB, and no iteration is skipped or NaN. Complete optimizer and RNG checkpoints are saved at steps 50 and 100. Direct step-50 resume loads the complete state and reaches step 100 with finite loss and zero skipped or NaN iterations.\n", "hardware": "H100", - "last_verified": "2026-07-20", + "last_verified": "2026-08-11", "metrics": { - "final_loss": 1.100197, - "initial_loss": 1.65866, - "last_10_steps_model_tflops_per_gpu_avg": 142.06, - "last_10_steps_step_time_ms_avg": 5575.59, - "last_10_steps_tokens_per_second_per_gpu_avg": 5877.046 + "final_loss": 0.01020405, + "initial_loss": 1.251364, + "last_10_steps_model_tflops_per_gpu_avg": 93.73, + "last_10_steps_step_time_ms_avg": 15577.9, + "last_10_steps_tokens_per_second_per_gpu_avg": 4206.986 }, "precision": "bf16", "source_pointer": "items.sft_long_context.H100", @@ -4390,33 +4401,32 @@ "workflow": "sft_long_context" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", + "bridge_commit": "eb7cf72392ac07e7a095b87d9b1d6bf2b38c5b6e", "command_topologies": [ { "gpus_per_node": "8", "nodes": "1", - "recipe": "nemotron_3_nano_4b_peft_8gpu_h100_bf16_config", - "sequence_length": "2048", + "recipe": "nemotron_omni_cord_v2_peft_8gpu_h100_bf16_config", "total_gpus": 8 } ], "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_peft_8gpu_h100_bf16_config --mode lora --dataset tulu3 --pretrained_checkpoint work/model-verification/nemotron-3-nano-4b/imported-megatron/iter_0000000 --max_steps 100 --seq_length 2048 --lr 1e-4 --min_lr 0 --warmup_iters 10 'dataset.hf_dataset.split=\"train[:10000]\"' 'dataset.hf_dataset.load_kwargs={revision:\"b14afda60f1bbebe55d5d2fa1e4df5042f97f8be\"}' dataset.hf_output_root=work/data/tulu3/nemotron-3-nano-4b-peft-b14afda60f1b dataset.hf_rewrite=true dataset.seed=1234 rng.seed=5678 dataset.do_validation=false dataset.hf_validation_proportion=null dataset.enable_offline_packing=true 'dataset.offline_packing_specs={packed_sequence_size:2048,pad_seq_to_mult:4}' scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null --save_dir work/model-verification/nemotron-3-nano-4b/peft-checkpoints --save_interval 100 logger.log_interval=1 logger.log_throughput=true" + "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_omni_cord_v2_peft_8gpu_h100_bf16_config --mode lora --step_func nemotron_omni_step --pretrained_checkpoint work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/gpu-megatron-clean/iter_0000000 --max_steps 100 --save_dir work/model-verification/nemotron-3-nano-omni-30b-a3b-reasoning/peft-checkpoints --save_interval 50 'dataset.source.load_kwargs={revision:\"7f0115a4b758a71d6473b8d085751692da2fef98\"}' dataset.do_validation=false dataset.do_test=false validation.eval_iters=0 validation.eval_interval=0 checkpoint.load=null logger.log_interval=1 logger.log_throughput=true rng.seed=5678" ], "dimensions": {}, "enabled_features": { - "sequence_packing": "offline" + "moe_dispatcher": "hybridep" }, - "entry_id": "nemotron-3-nano-4b-peft-h100", - "expected_result": "Pad-4 offline packing is 99.36% efficient. The frozen-base LoRA run uses rank 8, alpha 16, zero dropout, and linear_qkv/linear_proj targets. Its TP1/DP8 layout uses four microbatches per optimizer step and completes all 100 steps with finite loss and no skipped or NaN iterations. Across 6,553,600 token slots, assistant-only loss masks contain 4,178,503 supervised tokens. The complete eight-shard iter_0000100 adapter checkpoint reloads over the pinned base model at step 100.\n", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-peft-h100", + "expected_result": "The immutable-revision, real image-text CORD v2 run completes exactly 100 LoRA optimizer steps on eight H100 GPUs at TP2/PP1/CP1/EP8/ETP1 and GBS/MBS 64/1 with natural-routing HybridEP. Model parameters, main gradients, and Adam moments use BF16; optimizer main parameters use scaled FP16 without parameter remainders. LM loss is finite from 1.282941 to 0.02634745, the final ten steps average 11,621.42 ms and 61.25 TFLOP/s/GPU, sampled peak memory is 44,873 MiB, and no iteration is skipped or NaN. Complete optimizer and RNG checkpoints are saved at steps 50 and 100. Direct step-50 resume loads the complete state and reaches step 100 with finite loss and zero skipped or NaN iterations.\n", "hardware": "H100", - "last_verified": "2026-07-20", + "last_verified": "2026-08-11", "metrics": { - "final_loss": 1.256916, - "initial_loss": 1.769892, - "last_10_steps_model_tflops_per_gpu_avg": 431.9, - "last_10_steps_step_time_ms_avg": 381.69, - "last_10_steps_tokens_per_second_per_gpu_avg": 21462.443 + "final_loss": 0.02634745, + "initial_loss": 1.282941, + "last_10_steps_model_tflops_per_gpu_avg": 61.25, + "last_10_steps_step_time_ms_avg": 11621.42, + "last_10_steps_tokens_per_second_per_gpu_avg": 2819.621 }, "precision": "bf16", "source_pointer": "items.peft.H100", @@ -4425,46 +4435,36 @@ "workflow": "peft" }, { - "bridge_commit": "0e6c1837edeb442b07c9175b855b3d288c5cad33", - "command_topologies": [ - { - "gpus_per_node": "8", - "nodes": "1", - "recipe": "nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config", - "sequence_length": "4096", - "total_gpus": 8 - } - ], - "commands": [ - "./scripts/training/train.sh --wait --nodes 1 --gpus-per-node 8 --recipe nemotron_3_nano_4b_pretrain_8gpu_h100_bf16_config --mode pretrain --dataset megatron-indexed --seq_length 4096 --max_steps 100 --lr 3e-4 --min_lr 3e-5 --warmup_iters 40 'dataset.blend=[[\"work/data/rp2/head_01\"],null]' dataset.path_to_cache=work/cache/nemotron-3-nano-4b/rp2 tokenizer.tokenizer_type=SentencePieceTokenizer tokenizer.tokenizer_model=work/data/rp2/tokenizer.model rng.seed=1234 dataset.random_seed=1234 scheduler.lr_decay_iters=100 validation.eval_iters=0 validation.eval_interval=0 dist.distributed_timeout_minutes=30 ddp.check_for_nan_in_grad=true ddp.check_for_large_grads=true rerun_state_machine.check_for_nan_in_loss=true --load_dir work/model-verification/nemotron-3-nano-4b/pretrain-reference-checkpoints checkpoint.ckpt_step=50 --save_dir work/model-verification/nemotron-3-nano-4b/pretrain-resumed-checkpoints --save_interval 50 logger.log_interval=1 logger.log_throughput=true logger.tensorboard_dir=null" - ], + "bridge_commit": "fbbafc7ddfa818ef91d5eb64c8a00dcaa7bee78d", + "command_topologies": [], + "commands": [], "dimensions": {}, "enabled_features": {}, - "entry_id": "nemotron-3-nano-4b-checkpoint-resume-h100", - "expected_result": "The continuation restores optimizer, scheduler, data-order, and RNG state directly from iter_0000050 and executes exactly steps 51 through 100 into a distinct output root with the five recorded metrics, finite loss, and no skipped or NaN iterations. Step 51 matches the uninterrupted reference exactly at 6.173212. At step 100, resumed loss 5.512038 differs from reference loss 5.511951 by 0.000087 (0.00158%), inside the declared 1% tolerance. Its complete eight-shard iter_0000100 checkpoint contains metadata, optimizer/RNG train state, run config, and tokenizer, and reloads at step 100 without an extra optimizer step.\n", - "hardware": "H100", - "last_verified": "2026-07-20", + "entry_id": "nemotron-3-nano-omni-30b-a3b-reasoning-checkpoint-resume-all", + "expected_result": "There is no supported pretraining reference workflow for this model, so no model-wide optimizer and RNG checkpoint-resume contract is available for sentinel comparison.\n", + "hardware": "all", + "last_verified": null, "metrics": { - "final_loss": 5.512038, - "initial_loss": 6.173212, - "last_10_steps_model_tflops_per_gpu_avg": 400.11, - "last_10_steps_step_time_ms_avg": 26943.07, - "last_10_steps_tokens_per_second_per_gpu_avg": 19459.104 + "final_loss": null, + "initial_loss": null, + "last_10_steps_model_tflops_per_gpu_avg": null, + "last_10_steps_step_time_ms_avg": null, + "last_10_steps_tokens_per_second_per_gpu_avg": null }, - "precision": "bf16", - "source_pointer": "items.checkpoint_resume.H100", - "status": "verified", + "precision": null, + "source_pointer": "items.checkpoint_resume.all", + "status": "unsupported", "variant": null, "workflow": "checkpoint_resume" } ], - "hf_id": "nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16", - "hf_revision": "dfaf35de3e30f1867dd8dbc38a7fc9fb52d3914f", - "min_transformers_version": "5.8.1", - "slug": "nemotron-3-nano-4b", - "source_card": "examples/model_verification_cards/nemotron-3-nano-4b/card.yaml", - "summary": "Performance disclaimer: this model has not been performance-tuned; reported timing and throughput metrics are sanity checks, not optimized performance results. Nemotron 3 Nano 4B support verification covers conversion, inference, and training.\n", - "title": "nemotron_3_nano_4b" + "hf_id": "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16", + "hf_revision": "24e67ea000b7c2837fc8f9488aa2008524fac8ba", + "min_transformers_version": "5.8.0", + "slug": "nemotron-3-nano-omni-30b-a3b-reasoning", + "source_card": "examples/model_verification_cards/nemotron-3-nano-omni-30b-a3b-reasoning/card.yaml", + "summary": "Performance disclaimer: this model has not been performance-tuned; reported timing and throughput metrics are sanity checks, not optimized performance results. Verification uses the immutable public model and CORD v2 revisions. CPU and distributed GPU import and export, deterministic Megatron inference, 100-step one-node H100 full-model SFT, in-batch-packed 8K SFT, and LoRA PEFT runs completed. The H100 fine-tuning variants preserve real image-text samples and natural routing while using lower-precision optimizer state; 4K SFT and PEFT use HybridEP, while packed CP2 uses the standard all-to-all dispatcher. Strict CPU and GPU round trips preserve all 7,349 tensors bitwise and reload with the same native-loader notices as the pinned Hugging Face source. The one-step HF/Megatron comparison predicts the same token but remains below the 0.99 cosine gate. Unsupported and incomplete workflows remain explicitly identified rather than inferred from focused unit coverage.\n", + "title": "nemotron_3_nano_omni_30b_a3b_reasoning" }, { "architecture": "NemotronHForCausalLM", diff --git a/docs/fern/versions/0.4.2/pages/index.mdx b/docs/fern/versions/0.4.2/pages/index.mdx index fd84f1a195..ffa1b15f2c 100644 --- a/docs/fern/versions/0.4.2/pages/index.mdx +++ b/docs/fern/versions/0.4.2/pages/index.mdx @@ -20,13 +20,13 @@ - [03/31/2026] **Agent Skills for Megatron Bridge!** We've added a [`skills/`](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/skills) directory with structured guides that AI coding agents (Cursor, Claude Code, Codex, etc.) can use to help you add model support, set up dev environments, tune performance, and more. Try them out, and PRs to improve or add new skills are very welcome! -- [03/26/2026] [**Nemotron 3 Super**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3) is now on **main**! Checkpoint conversion and SFT/LoRA recipes (120B-A12B) are available in the main branch. Read the [blog post](https://developer.nvidia.com/blog/introducing-nemotron-3-super-an-open-hybrid-mamba-transformer-moe-for-agentic-reasoning/). +- [03/26/2026] [**Nemotron 3 Super**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron) is now on **main**! Checkpoint conversion and SFT/LoRA recipes (120B-A12B) are available in the main branch. Read the [blog post](https://developer.nvidia.com/blog/introducing-nemotron-3-super-an-open-hybrid-mamba-transformer-moe-for-agentic-reasoning/). - [03/12/2026] **Deprecating Python 3.10 support:** We're officially dropping Python 3.10 support with the upcoming 0.4.0 release. Downstream applications must raise their lower boundary to 3.12 to stay compatible with Megatron-Bridge. - [12/16/2025] [Mind Lab](https://macaron.im/mindlab) successfully used Megatron-bridge and [VeRL](https://github.com/volcengine/verl) to trained GRPO Lora for Trillion-parameter model on 64 H800 - See their [techblog](https://macaron.im/mindlab/research/building-trillion-parameter-reasoning-rl-with-10-gpus). -- [12/15/2025] Day 0 support for [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3/nano) and custom NGC container: [nvcr.io/nvidia/nemo:25.11.nemotron_3_nano](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo?version=25.11.nemotron_3_nano) +- [12/15/2025] Day 0 support for [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3_nano) and custom NGC container: [nvcr.io/nvidia/nemo:25.11.nemotron_3_nano](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo?version=25.11.nemotron_3_nano) ## Overview diff --git a/docs/fern/versions/0.4.2/pages/models/llm/nemotron3-super.mdx b/docs/fern/versions/0.4.2/pages/models/llm/nemotron3-super.mdx index 61da73db8a..88c57937c5 100644 --- a/docs/fern/versions/0.4.2/pages/models/llm/nemotron3-super.mdx +++ b/docs/fern/versions/0.4.2/pages/models/llm/nemotron3-super.mdx @@ -123,7 +123,7 @@ torchrun --nproc-per-node=8 examples/conversion/compare_hf_and_megatron/compare. BLEND_PATH=/path/to/dataset/blend.json CHECKPOINT_DIR=/path/to/checkpoints -torchrun --nproc-per-node=8 examples/models/nemotron_3/pretrain_nemotron_3_super.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/super/pretrain_nemotron_3_super.py \ --per-split-data-args-path=${BLEND_PATH} \ logger.wandb_project=your_project \ logger.wandb_entity=nvidia \ @@ -156,7 +156,7 @@ For quick testing without a dataset: ```bash CHECKPOINT_DIR=/path/to/checkpoints -torchrun --nproc-per-node=8 examples/models/nemotron_3/pretrain_nemotron_3_super.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/super/pretrain_nemotron_3_super.py \ logger.wandb_project=your_project \ logger.wandb_entity=nvidia \ checkpoint.load=${CHECKPOINT_DIR} \ @@ -181,7 +181,7 @@ Notes: MEGATRON_PATH=/path/to/pretrained/megatron/ckpt CHECKPOINT_DIR=/path/to/finetuned/checkpoints -torchrun --nproc-per-node=8 examples/models/nemotron_3/finetune_nemotron_3_super.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/super/finetune_nemotron_3_super.py \ logger.wandb_project=your_project \ logger.wandb_entity=nvidia \ logger.log_interval=5 \ @@ -209,7 +209,7 @@ To enable LoRA fine-tuning, pass `--peft lora` to the script: MEGATRON_PATH=/path/to/pretrained/megatron/ckpt CHECKPOINT_DIR=/path/to/lora/checkpoints -torchrun --nproc-per-node=8 examples/models/nemotron_3/finetune_nemotron_3_super.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/super/finetune_nemotron_3_super.py \ --peft lora \ logger.wandb_project=your_project \ logger.wandb_entity=nvidia \ @@ -304,7 +304,7 @@ After quantization, further improve model quality with QAT by continuing trainin MEGATRON_PATH=/path/to/quantized/megatron/ckpt CHECKPOINT_DIR=/path/to/qat/checkpoints -torchrun --nproc-per-node=8 examples/models/nemotron_3/qat_nemotron_3_super.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/super/qat_nemotron_3_super.py \ --megatron-load-path=${MEGATRON_PATH} \ --seq-length=8192 \ --packed-sequence \ diff --git a/docs/fern/versions/0.4.2/pages/models/llm/nemotron3.mdx b/docs/fern/versions/0.4.2/pages/models/llm/nemotron3.mdx index b97ba2455a..025381ddf2 100644 --- a/docs/fern/versions/0.4.2/pages/models/llm/nemotron3.mdx +++ b/docs/fern/versions/0.4.2/pages/models/llm/nemotron3.mdx @@ -41,7 +41,7 @@ python examples/conversion/convert_checkpoints.py export \ BLEND_PATH=/path/to/dataset/blend TOKENIZER_MODEL=/path/to/tiktok/tokenizer/model -torchrun --nproc-per-node=8 examples/models/nemotron_3/pretrain_nemotron_3_nano.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/nano/pretrain_nemotron_3_nano.py \ --per-split-data-args-path=${BLEND_PATH} \ --tokenizer-model=${TOKENIZER_MODEL} \ train.global_batch_size=3072 \ @@ -58,7 +58,7 @@ Notes: ### Full Parameter Fine-Tuning ```bash -torchrun --nproc-per-node=8 examples/models/nemotron_3/finetune_nemotron_3_nano.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/nano/finetune_nemotron_3_nano.py \ train.global_batch_size=128 \ train.train_iters=100 \ scheduler.lr_warmup_iters=10 \ @@ -73,7 +73,7 @@ Notes: ### LoRA Fine-Tuning To enable LoRA fine-tuning, pass `--peft lora` to script ```bash -torchrun --nproc-per-node=8 examples/models/nemotron_3/finetune_nemotron_3_nano.py \ +torchrun --nproc-per-node=8 examples/models/nemotron_3/nano/finetune_nemotron_3_nano.py \ --peft lora \ train.global_batch_size=128 \ train.train_iters=100 \ diff --git a/docs/fern/versions/_nav_order.yml b/docs/fern/versions/_nav_order.yml index 7e45e569f2..a001d1c2e1 100644 --- a/docs/fern/versions/_nav_order.yml +++ b/docs/fern/versions/_nav_order.yml @@ -67,7 +67,7 @@ "./versions/nightly/pages/models/gemma/gemma3-vl.mdx": 4 "./versions/nightly/pages/models/glm/glm5.mdx": 4 "./versions/nightly/pages/models/glm/glm5-2.mdx": 5 -"./versions/nightly/pages/models/nemotron/nemotron3-super.mdx": 5 +"./versions/nightly/pages/models/nemotron/nemotron3-super.mdx": 6 "./versions/nightly/pages/models/qwen/qwen2.5-vl.mdx": 6 "./versions/nightly/pages/nemo2-migration-guide.mdx": 4 "./versions/nightly/pages/releases/changelog.mdx": 4 @@ -75,13 +75,13 @@ "./versions/nightly/pages/megatron-lm-to-megatron-bridge.mdx": 5 "./versions/nightly/pages/models/gemma/gemma4-vl.mdx": 5 "./versions/nightly/pages/models/gemma/index.mdx": 5 -"./versions/nightly/pages/models/nemotron/nemotron3.5-lightning.mdx": 6 -"./versions/nightly/pages/models/nemotron/nemotron-nano-v2-vl.mdx": 7 +"./versions/nightly/pages/models/nemotron/nemotron3.5-lightning.mdx": 8 +"./versions/nightly/pages/models/nemotron/nemotron-nano-v2-vl.mdx": 11 "./versions/nightly/pages/models/qwen/qwen3-vl.mdx": 7 "./versions/nightly/pages/releases/known-issues.mdx": 5 "./versions/nightly/pages/training/optimizer-scheduler.mdx": 5 "./versions/nightly/pages/models/glm/index.mdx": 6 -"./versions/nightly/pages/models/nemotron/nemotron-3-omni.mdx": 8 +"./versions/nightly/pages/models/nemotron/nemotron-3-omni.mdx": 5 "./versions/nightly/pages/models/qwen/qwen3.6-35b-a3b.mdx": 8 "./versions/nightly/pages/models/qwen/qwen3.8-27b.mdx": 9 "./versions/nightly/pages/training/logging.mdx": 6 @@ -118,3 +118,6 @@ "./versions/nightly/pages/training/packed-sequences.mdx": 21 "./versions/nightly/pages/training/multi-token-prediction.mdx": 22 "./versions/nightly/pages/training/callbacks.mdx": 23 +"./versions/nightly/pages/models/nemotron/nemotron3-ultra.mdx": 7 +"./versions/nightly/pages/models/nemotron/nemotron3.5-super-vl.mdx": 9 +"./versions/nightly/pages/models/nemotron/nemotron3.5-super-vl-text-only.mdx": 10 diff --git a/docs/fern/versions/nightly.yml b/docs/fern/versions/nightly.yml index 8440d055ad..77fb26f210 100644 --- a/docs/fern/versions/nightly.yml +++ b/docs/fern/versions/nightly.yml @@ -130,17 +130,17 @@ navigation: path: ./nightly/pages/models/nemotron/nemotron3-nano.mdx - page: Nemotron 3 Nano 4B path: ./nightly/pages/models/nemotron/nemotron3-nano-4b.mdx + - page: Nemotron-3 Nano Omni + path: ./nightly/pages/models/nemotron/nemotron-3-omni.mdx - page: Nemotron 3 Super path: ./nightly/pages/models/nemotron/nemotron3-super.mdx + - page: Nemotron 3 Ultra + path: ./nightly/pages/models/nemotron/nemotron3-ultra.mdx - page: Nemotron 3.5 Lightning path: ./nightly/pages/models/nemotron/nemotron3.5-lightning.mdx # Super VL guides remain in GitHub, but are excluded from publication. - - page: Nemotron 3 Ultra - path: ./nightly/pages/models/nemotron/nemotron3-ultra.mdx - page: Nemotron Nano V2 VL path: ./nightly/pages/models/nemotron/nemotron-nano-v2-vl.mdx - - page: Nemotron-3 Nano Omni - path: ./nightly/pages/models/nemotron/nemotron-3-omni.mdx section: Nemotron - contents: - page: OLMoE diff --git a/docs/fern/versions/nightly/pages/index.mdx b/docs/fern/versions/nightly/pages/index.mdx index 450eec4263..766fc0d0f5 100644 --- a/docs/fern/versions/nightly/pages/index.mdx +++ b/docs/fern/versions/nightly/pages/index.mdx @@ -21,13 +21,13 @@ - [05/20/2026] [**DeepSeek V4**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/deepseek_v4) is now merged on **main**! See the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/deepseek_v4/README.md) for conversion and inference details. -- [05/20/2026] [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16) day-0 branch support is now merged on **main**! The 30B-A3B MoE multimodal model supports image, video, audio, and text workflows with checkpoint conversion, inference, SFT, and PEFT (LoRA) examples. Read the [NVIDIA Blog](https://blogs.nvidia.com/blog/nemotron-3-nano-omni-multimodal-ai-agents/) and see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_omni/README.md) for the full walkthrough. +- [05/20/2026] [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16) day-0 branch support is now merged on **main**! The 30B-A3B MoE multimodal model supports image, video, audio, and text workflows with checkpoint conversion, inference, SFT, and PEFT (LoRA) examples. Read the [NVIDIA Blog](https://blogs.nvidia.com/blog/nemotron-3-nano-omni-multimodal-ai-agents/) and see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_nano_omni/README.md) for the full walkthrough. - [05/19/2026] [**Nemotron-Labs Diffusion**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron_labs_diffusion) is now supported on **main** with autoregressive-to-diffusion conversion, continuous pretraining, checkpoint conversion, and inference workflows. Read the [NVIDIA Research blog](https://research.nvidia.com/publication/2026-05_nemotron-labs-diffusion-tri-mode-language-model-unifying-autoregressive) for the tri-mode language model overview. - [05/06/2026] [**Gemma 4 VL 26B-A4B**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/gemma/gemma4_vl) is now supported! Checkpoint conversion, SFT, and PEFT (LoRA) recipes for Google's MoE vision-language model (26B total / 4B active params, 128 experts top-k=8, dual sliding/global attention with K=V tying on full-attention layers) are available on **main**. See the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/gemma/gemma4_vl/README.md) for the full walkthrough. -- [04/28/2026] Day 0 support for [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16), a 30B-A3B MoE multimodal model that jointly processes image, video, audio, and text. Checkpoint conversion, SFT, and LoRA recipes are available on **main** β see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_omni/README.md) for the full walkthrough. +- [04/28/2026] Day 0 support for [**Nemotron-3 Nano Omni**](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16), a 30B-A3B MoE multimodal model that jointly processes image, video, audio, and text. Checkpoint conversion, SFT, and LoRA recipes are available on **main** β see the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_nano_omni/README.md) for the full walkthrough. - [04/19/2026] [**Qwen3.6-35B-A3B**](https://huggingface.co/Qwen/Qwen3.6-35B-A3B) is now supported! Qwen3.6 uses the same architecture as Qwen3.5 VL MoE (`Qwen3_5MoeForConditionalGeneration`) and works with the existing [Qwen3.5-VL bridge](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/src/megatron/bridge/models/qwen_vl) out of the box β no code changes needed. HFβMegatron conversion and inference verified. @@ -45,13 +45,13 @@ - [03/31/2026] **Agent Skills for Megatron Bridge!** We've added a [`skills/`](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/skills) directory with structured guides that AI coding agents (Cursor, Claude Code, Codex, etc.) can use to help you add model support, set up dev environments, tune performance, and more. Try them out, and PRs to improve or add new skills are very welcome! -- [03/26/2026] [**Nemotron 3 Super**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3) is now on **main**! Checkpoint conversion and SFT/LoRA recipes (120B-A12B) are available in the main branch. Read the [blog post](https://developer.nvidia.com/blog/introducing-nemotron-3-super-an-open-hybrid-mamba-transformer-moe-for-agentic-reasoning/). +- [03/26/2026] [**Nemotron 3 Super**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron) is now on **main**! Checkpoint conversion and SFT/LoRA recipes (120B-A12B) are available in the main branch. Read the [blog post](https://developer.nvidia.com/blog/introducing-nemotron-3-super-an-open-hybrid-mamba-transformer-moe-for-agentic-reasoning/). - [03/12/2026] **Deprecating Python 3.10 support:** We're officially dropping Python 3.10 support with the upcoming 0.4.0 release. Downstream applications must raise their lower boundary to 3.12 to stay compatible with Megatron-Bridge. - [12/16/2025] [Mind Lab](https://macaron.im/mindlab) successfully used Megatron-bridge and [VeRL](https://github.com/volcengine/verl) to trained GRPO Lora for Trillion-parameter model on 64 H800 - See their [techblog](https://macaron.im/mindlab/research/building-trillion-parameter-reasoning-rl-with-10-gpus). -- [12/15/2025] Day 0 support for [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3/nano) and custom NGC container: [nvcr.io/nvidia/nemo:25.11.nemotron_3_nano](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo?version=25.11.nemotron_3_nano) +- [12/15/2025] Day 0 support for [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/examples/models/nemotron/nemotron_3_nano) and custom NGC container: [nvcr.io/nvidia/nemo:25.11.nemotron_3_nano](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nemo?version=25.11.nemotron_3_nano) ## Overview diff --git a/docs/fern/versions/nightly/pages/models/README.mdx b/docs/fern/versions/nightly/pages/models/README.mdx index 0897365610..9af151354d 100644 --- a/docs/fern/versions/nightly/pages/models/README.mdx +++ b/docs/fern/versions/nightly/pages/models/README.mdx @@ -115,10 +115,6 @@ Choose a model to inspect its recorded import/export, training, and precision co 6 models