{"slug": "start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes", "title": "Start Customizing NVIDIA Nemotron 3 Nano with Prime Intellect Lab in Minutes", "summary": "NVIDIA and Prime Intellect Lab have partnered to enable developers to customize the NVIDIA Nemotron 3 Nano 30B-A3B model using reinforcement learning with verifiable rewards on the Python Math environment, with a local setup taking about five minutes. The tutorial demonstrates how to produce a downloadable LoRA adapter via Prime Intellect Lab's training-as-a-service platform, making model customization more accessible for tasks such as Python math problem-solving.", "body_md": "Customization is what enables developers to take a general model and tailor it to use cases, domains, languages, and more.\n\nHowever, customization comes with a few challenges. It requires [infrastructure](https://www.nvidia.com/en-us/glossary/ai-infrastructure/), technical expertise, and software specific to the workflow, as well as resources such as GPUs and the ability to use them effectively. It also depends on [specialized](https://www.nvidia.com/en-us/glossary/specialized-ai/) domain knowledge: What algorithm should I use? What environment should I use? How do I know whether the model actually learned?\n\nCustomization can appear daunting.\n\nWith open models such as the [NVIDIA Nemotron 3](https://developer.nvidia.com/topics/ai/nemotron?ncid=pa-srch-goog-599191&_bt=797127771541&_bk=nemotron%203%20nano&_bm=p&_bn=g&_bg=194751055082&gad_source=1&gad_campaignid=23551395576&gclid=Cj0KCQjwsMLSBhD9ARIsAIpUTDrOXKpC2yGt-53cC0B7meYuoOhLdAZd2Ull7iBAMGF1NCzuYRkdkqkaAo6DEALw_wcB) family—including [Nano](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16), [Super](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4), and [Ultra](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4)—combined with platforms such as Prime Intellect Lab that offer training as a service, the complete customization loop is much more accessible. In this tutorial, you’ll use Prime Intellect Lab to customize NVIDIA Nemotron 3 Nano with hosted [reinforcement learning](https://www.nvidia.com/en-us/glossary/reinforcement-learning/) and produce a downloadable LoRA adapter.\n\nThe local setup takes about five minutes—that’s all.\n\nBy the end of this blog, you’ll learn two things:\n\n- Customization is more accessible than ever.\n- Getting started with open models is easier than ever.\n\n## What you’ll build\n\nWe’re going to follow a simple flow for this tutorial: Baseline, train, and reevaluate—all using Nemotron 3 Nano—and resulting in a customized model for our task. To show how easy it is to get started with the robust customization tools we have at our disposal, we’ll be using a standard “hello world” example: Python Math.\n\nThis tutorial applies to Nemotron 3 Super and Nemotron 3 Ultra. The video will also walk you through the more involved coding task that’s part of a companion notebook to this tutorial:\n\n## What customization means\n\nCustomization means taking a model and changing or adapting its trainable parameters so that it becomes more likely to do the kinds of tasks you want it to do successfully.\n\nThere are many ways to do this. Depending on the problem, you might use supervised fine-tuning, parameter-efficient fine-tuning, preference optimization, reinforcement learning, or a combination of techniques. For a broader treatment, see the [Selecting Large Language Model Customization Techniques](https://developer.nvidia.com/blog/mastering-agentic-techniques-ai-agent-reinforcement-learning/#rag_prompting_sft_and_rl_when_to_use_what) post.\n\nThis tutorial focuses on reinforcement learning with verifiable rewards (RLVR) on the [Python Math environment](https://app.primeintellect.ai/dashboard/environments/primeintellect/math-python). The basic idea of the environment is simple: Use Python tools (Python, `numpy`\n\n, `sympy`\n\nand `scipy`\n\n) to do some math. Here’s an example of a prompt:\n\n```\n# System: \n\nUse Python for all calculations. Give your answer inside \\boxed{}.\n\nIn addition to the Python standard library, you have access to: numpy sympy scipy.\n\n# User: \n\nIf $2^8=4^x$, what is the value of $x$?\n```\n\n> NOTE: The environment has a default of 100 turns. For this experiment, we cap each rollout at five assistant turns. A direct response is one turn, and so a tool call with the final response is two of the 5 turns. This penalizes the model heavily for repeatedly calling tools without producing a final response.\n\nFor a deeper introduction to reinforcement learning for [agents](https://www.nvidia.com/en-us/glossary/ai-agents/), see the post [Mastering Agentic Techniques: AI Agent Reinforcement Learning](https://developer.nvidia.com/blog/mastering-agentic-techniques-ai-agent-reinforcement-learning/).\n\n## Why openness matters\n\nOpen weights are an important part of the equation, but they aren’t the entire equation. Data, evaluation code, and training recipes also determine what you can understand, reproduce, and deploy.\n\nThe NVIDIA Nemotron 3 family is published with open model resources, including weights, data, and recipes. You can explore the [NVIDIA Nemotron developer resources](https://developer.nvidia.com/topics/ai/nemotron), read [Inside NVIDIA Nemotron 3](https://developer.nvidia.com/blog/inside-nvidia-nemotron-3-techniques-tools-and-data-that-make-it-efficient-and-accurate/), and inspect the [NVIDIA Nemotron repository](https://github.com/NVIDIA-NeMo/Nemotron).\n\nThese resources give a better view into how Nemotron was built and post-trained, the kinds of data and environments that were used, and where your own customization should differ.\n\n## Prerequisites\n\nFor this tutorial, you’ll need:\n\n- A development environment with\n`curl`\n\nand a supported Python 3 installation. - A Prime Intellect account with access to Hosted Training and billing configured.\n- Internet access for the Prime CLI, environment package, hosted model, and adapter deployment.\n- About 5-15 minutes.\n\nPrime Intellect handles the hosted rollout, training, and inference infrastructure; you don’t need to manage a local GPU cluster.\n\nNote: Model availability and pricing change over time. Treat the live CLI catalog as the source of truth rather than copying an identifier or price from a static article.\n\n## Customize Nemotron 3 Nano in three steps\n\nLet’s get into the simple steps required to customize your very own Nemotron 3 Nano.\n\n### Step 1: Get a Baseline\n\nFirst, install the Prime CLI, authenticate, and create a Prime Intellect Lab workspace:\n\n```\ncurl -LsSf https://astral.sh/uv/install.sh | sh\nuv python install 3.13\nuv tool install --python 3.13 --force \"prime==0.6.17\"\n\nuv --version\nprime --version\n\nprime login\nmkdir -p nemotron-customization\ncd nemotron-customization\nprime lab setup\nuv run python --version\n```\n\nPrime Intellect Lab creates the workspace structure and installs the verifiers tooling. The longer-running evaluation and training steps come next.\n\nInspect the environment before using it:\n\n```\nprime env info primeintellect/math-python --version 0.1.10\nprime env inspect primeintellect/math-python@0.1.10 README.md\n```\n\nPin the exact environment package in the workspace:\n\n```\nuv add \"math_python==0.1.10\" \\\n  --index https://hub.primeintellect.ai/primeintellect/simple/\nuv lock --check\n```\n\nNow check the live hosted training catalog:\n\n```\nprime train models\nprime inference models\n```\n\n**Checkpoint:** Continue only if the output contains `nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16`\n\nand shows the current training, input, and output prices.\n\nUse the following command to grab a quick baseline on our task so we can show if the model improved after training:\n\n```\nexport NANO=\"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16\"\nexport MATH_EVAL_ARGS='{\"dataset_name\":\"math\",\"dataset_split\":\"test\",\"num_train_examples\":-1,\"max_turns\":5,\"sandbox_client_max_workers\":8}'\nexport MATH_SAMPLING='{\"max_tokens\":2048,\"temperature\":1.0,\"extra_body\":{\"chat_template_kwargs\":{\"enable_thinking\":false}}}'\n\nprime eval run math-python \\\n  --provider prime \\\n  --model \"$NANO\" \\\n  --num-examples 32 \\\n  --rollouts-per-example 1 \\\n  --max-concurrent 8 \\\n  --env-args \"$MATH_EVAL_ARGS\" \\\n  --sampling-args \"$MATH_SAMPLING\" \\\n  --timeout 300 \\\n  --max-retries 2 \\\n  --save-results \\\n  --disable-tui \\\n  --abbreviated-summary\n```\n\nYour results should look similar to the following, which showcases that the model starts off doing rather poorly and has a fairly low accuracy.\n\n```\n...\n--- All ---\nRewards:\nreward: avg - 0.219, std - 0.413\u000b...\n```\n\nThis is an example of a failing prompt for our baseline model, in which the model fails to produce a boxed response because it exhausted five turns calling unsupported tools:\n\n```\n# System: \n\nUse Python for all calculations. Give your answer inside \\boxed{}.\n\nIn addition to the Python standard library, you have access to: numpy sympy scipy.\n\n# User: \n\nIf $2^8=4^x$, what is the value of $x$?\n\n# Assistant:\n\n[[EMPTY RESPONSE]]\n```\n\nFigure 1 is an example of our reward distribution on this initial evaluation. The reward is binary: 1 means the model produced a correct response, and 0 means the model produced an incorrect or missing response.\n\n### Step 2: Take Nemotron 3 Nano to school\n\nTo get started on customizing Nemotron 3 Nano, the first thing we’ll do is create `configs/rl/nemotron-3-nano-math-python-100step.toml`\n\n:\n\n```\nname = \"nemotron-3-nano-math-python-100step\"\nmodel = \"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16\"\nloss = \"rl\"\nmax_steps = 100\n\nbatch_size = 32\nrollouts_per_example = 8\nmax_inflight_rollouts = 32\nlearning_rate = 2e-5\nlora_alpha = 16\n\n[sampling]\nmax_tokens = 2048\ntemperature = 1.0\nenable_thinking = false\n\n[adapters]\ninterval = 0\nkeep_last = 1\n\n[[env]]\nid = \"primeintellect/math-python@0.1.10\"\nargs = { dataset_name = \"math\", dataset_split = \"train\", num_train_examples = -1, max_turns = 5 }\n```\n\nThis config outlines how we want to train our model. The trainer samples eight attempts for each selected task, giving it a comparative signal inside each rollout group. Four groups form a batch of 32, and caps the number of rollouts being assembled concurrently for this small run.\n\nLaunch the run:\n\n```\nprime train configs/rl/nemotron-3-nano-math-python-100step.toml\n```\n\nPrime prints the parsed configuration, current price, and environment action status before asking for confirmation. After you confirm, the CLI returns a run ID and a dashboard URL. Evaluation and training continue after that point.\n\n**Checkpoint:** Save the run ID. The launch output should show the exact Nano model, the pinned Math Python environment, live pricing, and a successful environment action check.\n\nThe dashboard shows reward curves, reward distributions, and individual rollouts. The CLI exposes the same evidence:\n\n```\nexport RUN_ID=\"<run-id>\"\nexport STEP=\"<step>\"\n\nprime train logs \"$RUN_ID\" --follow\nprime train progress \"$RUN_ID\"\nprime train distributions \"$RUN_ID\" --type rewards\nprime train usage \"$RUN_ID\" --watch\nprime train rollouts \"$RUN_ID\" --step \"$STEP\"\nprime train checkpoints \"$RUN_ID\"\n```\n\nWhen experimenting, begin with small variations. If every attempt receives the same score, the trainer has little signal to work with. Next, check a high-, middle-, and low-reward rollout and ask whether the score reflects genuinely better math problem-solving. Finally, look at factors like token use and truncation to ensure the configuration is not interfering with the training signal.\n\nIf the reward curve tells us if the model got more or less reward; the rollouts help tell you why.\n\n### Step 3: Check how much Nemotron 3 Nano learned\n\nTraining reward is like measuring the model’s performance on homework. It’s not real until you give it a test.\n\nWhen the run completes successfully, Prime Intellect Lab uploads the final LoRA adapter. Confirm that the training artifact is ready, and then inspect its deployment state:\n\n```\nprime deployments list\n```\n\nA ready adapter that isn’t currently serving can appear as `NOT_DEPLOYED`\n\n. After deployment is requested, its serving state moves through `DEPLOYING`\n\nto `DEPLOYED`\n\n.\n\n**Checkpoint:** Continue only after the final adapter exists and is ready to deploy. A completed trainer process without a usable adapter isn’t the artifact this tutorial promises.\n\nYou can download the adapter from the training dashboard. To query it through hosted inference, deploy it:\n\n```\nprime deployments list\nprime train checkpoints \"$RUN_ID\" --status READY\n\nexport ADAPTER_ID=\"<adapter-id>\"\nexport ADAPTED_MODEL=\"$NANO:$ADAPTER_ID\"\n\nprime deployments create \"$ADAPTER_ID\" --plain\nCOLUMNS=300 NO_COLOR=1 prime deployments list --plain\n```\n\nDeployment creates a billable inference endpoint. Once its status is `DEPLOYED`\n\n, the model identifier combines Nano with the adapter ID:\n\n```\nnvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16:<adapter-id>\n```\n\nNow repeat the baseline command, changing only the model identifier\n\nKeep the environment, task count, rollout count, sampling settings, and reward unchanged. Changing more than the model makes the comparison harder to interpret.\n\n```\n# Continue only after the adapter reports DEPLOYED.\nprime eval run math-python \\\n  --provider prime \\\n  --model \"$ADAPTED_MODEL\" \\\n  --num-examples 32 \\\n  --rollouts-per-example 1 \\\n  --max-concurrent 8 \\\n  --env-args \"$MATH_EVAL_ARGS\" \\\n  --sampling-args \"$MATH_SAMPLING\" \\\n  --timeout 300 \\\n  --max-retries 2 \\\n  --save-results \\\n  --disable-tui \\\n  --abbreviated-summary\n```\n\nYour results should contain the following, which showcases the same evaluation configuration used above—showing an increase in the average reward as compared to our baseline model on the same example set—this result shows that our model has learned to be meaningfully better at our task:\n\n```\n...\n--- All ---\nRewards:\nreward: avg - 0.906, std - 0.291\n...\n```\n\nHere’s the same prompt the initial model was unable to correctly solve:\n\n```\n# System: \n\u000bUse Python for all calculations. Give your answer inside \\boxed{}.\n\nIn addition to the Python standard library, you have access to: numpy sympy scipy.\n\u000b# User: \n\nIf $2^8=4^x$, what is the value of $x$?\n\n# Assistant Tool Turn:\n\nsp.solve(sp.Eq(2**8, 4** x), x)\n...\u000b\u000b# Assistant:\n\nWe can rewrite the equation using the same base.\n\n\\[\n2^8 = 4^x \\quad\\Longrightarrow\\quad 2^8 = (2^2)^x = 2^{2x}.\n\\]\n\nSince the bases are equal, the exponents must be equal:\n\n\\[\n8 = 2x \\;\\Longrightarrow\\; x = \\frac{8}{2}=4.\n\\]\n\n\\[\n\\boxed{4}\n\\]\n```\n\nFigure 3 shows the reward distribution on the same set of evaluation prompts we saw before, and as you can see, the model can get a significantly higher number of them correct:\n\nOn the same 32 held-out problems, accuracy increased from 21.9% (7/32) to 90.6% (29/32), an absolute increase of 68.75 percentage points. Of the 24 prompts that had different outcomes between baseline and final, 23 improved, and one regressed. Additionally, Nemotron 3 Nano got better at this task with a total spend of less than $5.\n\nTo remove the adapter deployment, you can issue the following command as cleanup:\n\n```\nprime deployments delete \"$ADAPTER_ID\" --plain\n```\n\nSee the Prime Intellect guide to [deploying LoRA adapters for inference](https://docs.primeintellect.ai/inference/adapter-deployments) for deployment states and OpenAI-compatible inference examples.\n\n## Training larger models with Prime Intellect Lab:\n\nNow that we’ve gone through an example of how we can use Prime Intellect Lab to run a short training of Nemotron 3 Nano, you may be asking yourself: “What if I wanted to train larger models? Is it much harder?” The answer is: not at all. With the convenience of hosted training, we can simply modify the model identifier and run the exact same workflow using the following:\n\n### Train Nemotron 3 Super\n\nRun the live catalog check again:\n\n```\nprime train models\n```\n\nConfirm availability and current pricing, then replace the model line with:\n\n```\nmodel = \"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16\"\n```\n\nKeep the same experimental discipline: baseline first, inspect reward variation, train, and retest under unchanged settings.\n\n### Train Nemotron 3 Ultra\n\nNemotron 3 Ultra is the high-capacity option in the family, and Prime Intellect has support for hosted reinforcement learning on NVIDIA Blackwell infrastructure.\n\nVerify you have access to managed training of Ultra using the following command:\n\n```\nprime train models\n```\n\nIf you see it, replace the model line with:\n\n```\nmodel = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4\"\n```\n\n## Begin customizing Nemotron 3\n\nCustomization is how to custom-tailor AI for our use cases. Without customization, we’re limited to whatever behavior a model has out of the box, and we may overpay for a more broadly capable model when a lower-cost model could be adapted to the task we need.\n\n[Open models](https://www.nvidia.com/en-us/glossary/open-models) such as NVIDIA Nemotron 3, combined with hosted training platforms such as Prime Intellect Lab, make that process much easier to start. The most valuable part isn’t simply that the weights are available or that the infrastructure is managed. It’s that the entire improvement loop can be inspected and repeated.\n\n*Visit the **Nemotron developer page** for resources to get started. Explore open Nemotron models and datasets on **Hugging Face** and **Blueprints** on **build.nvidia.com**.*\n\n*Engage with **Nemotron livestreams**, **tutorials**, and the developer community on the **NVIDIA forum** and the **Nemotron channel** on **Discord**.*\n\n*Stay up to date on **NVIDIA Nemotron** by subscribing to **NVIDIA news** and following NVIDIA AI on **LinkedIn**, **X**, **Discord**, and **YouTube**.*", "url": "https://wpnews.pro/news/start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes", "canonical_source": "https://developer.nvidia.com/blog/start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes/", "published_at": "2026-07-23 16:00:00+00:00", "updated_at": "2026-07-23 16:26:25.029476+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-tools", "ai-infrastructure", "ai-products"], "entities": ["NVIDIA", "Prime Intellect Lab", "NVIDIA Nemotron 3 Nano", "NVIDIA Nemotron 3 Super", "NVIDIA Nemotron 3 Ultra", "Python Math environment"], "alternates": {"html": "https://wpnews.pro/news/start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes", "markdown": "https://wpnews.pro/news/start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes.md", "text": "https://wpnews.pro/news/start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes.txt", "jsonld": "https://wpnews.pro/news/start-customizing-nvidia-nemotron-3-nano-with-prime-intellect-lab-in-minutes.jsonld"}}