Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run the Nemotron-3 Ultra Text2SQL LoRA fine-tuning tutorial (NeMo Megatron-Bridge) end-to-end for the user on their SLURM cluster: data prep, distributed checkpoint conversion, and packed LoRA fine-tuning of the 550B hybrid Mamba-Transformer MoE, ending at a saved adapter. Use when the user wants to run this cookbook, fine-tune Nemotron-3 Ultra with LoRA, or adapt the notebook to their own cluster.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 2% | 0% |
This skill helps you run the cookbook in this directory (mbridge_lora_cookbook.ipynb) on the user's behalf. The notebook is generic and ships with placeholders; your job is to gather the user's environment details, fill them in, launch the SLURM jobs, watch them, and report results.
Three steps, in order, each a SLURM job:
training.jsonl from both the no-reasoning and reasoningsplits, formatted with Ultra's tokenizer/chat template. Short CPU job.
A multi-node GPU job (CPU import is not feasible for a 550B model).
A multi-node GPU job.
node, so every heavy step is a multi-node SLURM job submitted with sbatch and run in a container via Pyxis/enroot. Run everything from a cluster login node where sbatch/squeue/ sacct are available.
is derived automatically as 48 / GPUS_PER_NODE (e.g. 12 nodes at 4 GPUs/node). The user's QOS must permit a job of that size — an interactive or small-node-capped QOS will not work.
config.env, which the notebook's setupcell generates from the values you fill in. Every step and every slurm/*.sbatch script sources it. You can run the notebook cell, or write config.env directly with the same keys.
WORKSPACE is the single output root; everything generated lands under$WORKSPACE/{base, dataprep, trained, cache/hf, logs}. The base checkpoint (HF_MODEL_PATH) is the only separate, read-only path.
status (sacct/squeue), and a sanity cell confirms the expected output exists before you move on. Follow this loop; don't skip the sanity check.
Before launching anything, ask the user for the following and confirm the prerequisites. Don't guess these — a wrong value wastes a large multi-node allocation. Prefer asking all of them up front in one batch.
How to reach the cluster
SLURM settings
48 / GPUS_PER_NODE nodes (not aninteractive or small-node-capped QOS). Confirm the wall-clock limit is enough (convert is short; training is well under a couple of hours by default).
derives from this).
Paths (all on a shared filesystem the compute nodes can mount)
WORKSPACE — the output root to create/use.HF_MODEL_PATH — where the already-downloaded Ultra base checkpoint lives (read-onlyinput). The tutorial does not download the base model; confirm it is present.
WORKSPACEand HF_MODEL_PATH).
Container & credentials
ships a placeholder; this must be filled with a real Ultra-capable image.
${WORKSPACE}/cache/hf/token; ask the user to place it there (or provide it so you can), and reference it by path — never print or echo a token.
If the user has an environment-reference document for their cluster, ask for it first and pull these values from there instead of asking one by one.
cd into this cookbook directory (it must be on the shared filesystem).write config.env directly with the values gathered above. The setup cell has a guard that refuses to proceed while any placeholder (<...>) remains — make sure none are left.
sbatch, poll the checkcell until the job reaches COMPLETED, then run the sanity cell.
periodically with sacct/squeue — do not hold an interactive session open waiting, and do not stream logs live.
$WORKSPACE/dataprep/training.jsonl exists and has many rows; a sampled recordshows the Nemotron-3 chat template.
$WORKSPACE/base/latest_checkpointed_iteration.txt plus an iter_* checkpoint direxist.
$WORKSPACE/trained/<experiment-name>/ there is alatest_checkpointed_iteration.txt and an iter_* adapter checkpoint; the training log shows the loss trending down and ends with a LORA_TRAIN_DONE marker.
Report per-step status and elapsed time (from sacct) and the final training loss.
async_save=False). Under some containerruntimes the async-save path can hang; leave it as configured.
the tensor-parallel degree differs, so the converted checkpoint reshards cleanly on load. Don't retune these unless you change GPUS_PER_NODE, in which case keep the world size at 48 GPUs.
the Ultra recipe — no need to configure them.
training.jsonl exists; convert skips if thecheckpoint already exists. Safe to re-run.
~15 minutes with no log output and the GPUs at 100%. This is normal; do not cancel the job. Later iterations are fast.
progress for far longer than the warmup window can be cancelled and resubmitted; a fresh allocation usually clears it.
a crash — judge success by the job state and the sanity check, not by log chatter.
Other measured skills in the registry, with their headline benchmark lift.