NVIDIA Nemotron 3 NanoをPrime Intellect Labでカスタマイズ可能に
NVIDIA は、Prime Intellect Lab を活用して NVIDIA Nemotron 3 Nano モデルを数分でカスタマイズし、LoRA アダプターを生成するチュートリアルを提供した。
キーポイント
カスタマイズの障壁低減
従来のモデルカスタマイズに必要なインフラ構築や専門知識のハードルを、トレーニング・アズ・ア・サービス(TaaS)プラットフォームで解消する。
Nemotron 3 ファミリーの活用
Nano、Super、Ultra のオープンモデルと組み合わせることで、開発者が迅速にドメイン特化型モデルを構築できる環境を整備した。
簡易な実装フローの提示
Python Math という標準的な「Hello World」例題を用い、ベースライン設定からトレーニング、再評価までの流れを実証している。
カスタマイズの定義と手法
モデルの学習可能なパラメータを変更・適応させることで、特定のタスクでの成功率を高めることを指し、ここでは検証可能な報酬を用いた強化学習(RLVR)に焦点を当てています。
Python Math 環境での RLVR
numpy, sympy, scipy を使用して数学的計算を行う Python ツールを活用する環境で、ロールアウトを5ターン以内に制限し、最終回答を出さないツール呼び出しをペナルティとして扱う実験が行われます。
オープンソースの包括性
NVIDIA Nemotron 3 はモデル重みだけでなく、データセットやトレーニングレシピも公開しており、再現性とカスタマイズを可能にしています。
インフラ不要な学習環境
Prime Intellect を利用することで、ローカルの GPU クラスター管理が不要となり、ホスト型トレーニングと推論インフラを即座に利用できます。
重要な引用
"Customization is what enables developers to take a general model and tailor it to use cases, domains, languages, and more."
"The local setup takes about five minutes—that's all."
"Customization 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."
"The basic idea of the environment is simple: Use Python tools (Python, numpy, sympy and scipy) to do some math."
Open 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.
Prime Intellect handles the hosted rollout, training, and inference infrastructure; you don't need to manage a local GPU cluster.
影響分析・編集コメントを表示
影響分析
この記事は、大規模言語モデルのカスタマイズを「専門家の領域」から「開発者の日常業務」へとシフトさせる重要な一歩を示しています。特に、インフラ構築の負担を軽減し、学習プロセスを標準化することで、企業や個人が迅速にドメイン特化型 AI を実装できる環境を整備した点は、AI エコシステムの民主化に寄与します。
編集コメント
NVIDIA は、自社モデルの性能だけでなく、その活用を容易にするエコシステムの整備にも注力しています。このチュートリアルは、開発者が複雑なインフラに悩まされずに即座に価値ある成果を出せるよう支援する、実用的なアプローチと言えます。
カスタマイズとは、汎用モデルを特定のユースケースやドメイン、言語などに最適化し、活用可能にするための鍵となるプロセスです。
しかし、カスタマイズにはいくつかの課題が伴います。これには AI インフラストラクチャ infrastructure の整備、専門的な技術力、ワークフローに特化したソフトウェア、そして GPU などのリソースとその効果的な運用能力が必要です。さらに、ドメイン固有の知識も不可欠です。「どのアルゴリズムを選ぶべきか」「どのような環境を構築すべきか」「モデルが実際に学習したかどうかをどう確認するか」といった問いへの答えが必要になります。
そのため、カスタマイズは daunting(畏怖すべきほど困難)に思えることもあります。
NVIDIA Nemotron 3 ファミリー(Nano、Super、Ultra)のオープンモデルと、トレーニングをサービスとして提供する Prime Intellect Lab を組み合わせることで、完全なカスタマイズループがこれまで以上に身近なものになりました。本チュートリアルでは、Prime Intellect Lab を活用し、ホストされた強化学習を用いて NVIDIA Nemotron 3 Nano をカスタマイズし、ダウンロード可能な LoRA アダプターを生成します。
ローカル環境のセットアップにはわずか 5 分です。
この記事を読み終える頃には、以下の 2 つのポイントが理解できるはずです。
- カスタマイズのハードルはかつてないほど低くなっています。
- オープンモデルへの参入も、これまで以上に容易になっています。
構築するもの
本チュートリアルでは、シンプルかつ明確なフローに沿って進めます。まずベースラインを確立し、次にトレーニングを行い、最後に再評価を行うという流れです。これらすべてに「Nemotron 3 Nano」を使用し、特定のタスクに特化したカスタマイズ済みモデルの完成を目指します。
用意された堅牢なカスタマイズツールがどれほど手軽に使えるかを実感していただくため、ここでは標準的な「Hello World」とも言える例題、「Python Math(Python の数学)」を取り上げます。
なお、本チュートリアルで解説する手法は、Nemotron 3 Super や Nemotron 3 Ultra でも同様に適用可能です。また、このチュートリアルの補完ノートブックに含まれる、より複雑なコーディングタスクについても動画で詳しく解説しています。
*Video 1. このチュートリアルでは、数学 Python 環境における Nemotron 3 Nano のベースライン確認から、検証可能な報酬を用いた強化学習による LoRA アダプターの学習、デプロイ、そして結果の比較に至るまでの完全なカスタマイズワークフローを順を追って解説します*
カスタマイズとは何か
モデルのカスタマイズとは、モデルの学習可能なパラメータを変更または適応させることで、特定のタスクをより成功させやすくするプロセスを指します。
これを実現する方法は多岐にわたります。課題の内容に応じて、教師あり微調整(Supervised Fine-Tuning)、パラメータ効率の高い微調整、選好最適化、強化学習、あるいはこれらの手法を組み合わせたアプローチが選択されます。詳細な比較や選び方については、大規模言語モデルのカスタマイズ手法の選択 に関する記事をご覧ください。
本チュートリアルでは、検証可能な報酬を用いた強化学習(RLVR)に焦点を当てます。対象となるのは Python Math 環境 です。
この環境の基本的な考え方はシンプルです。Python ツール(Python、numpy、sympy、scipy)を活用して数式計算を行います。以下にプロンプトの例を示します。
すべての計算には Python を使用してください。答えは \boxed{} 内に記述してください。
Python の標準ライブラリに加え、以下のライブラリも利用可能です:numpy、sympy、scipy。
問題例:$2^8=4^x$ のとき、$x$ の値はいくつですか?
注意:この環境ではデフォルトで 100 ターンまで許可されていますが、今回の実験では各ロールアウトをアシスタントの応答 5 ターン以内と制限します。直接回答する場合は 1 ターン、ツール呼び出し後に最終回答をする場合は 2 ターンとなります。これは、最終回答を出さずにツールを繰り返し呼び出すモデルに対して厳しくペナルティを与える仕組みです。
AI エージェントにおける強化学習について詳しく知りたい方は、Mastering Agentic Techniques: AI Agent Reinforcement Learning の記事をご覧ください。
オープンであることの重要性
オープンウェイトは重要な要素の一つですが、それだけでは不十分です。データ、評価コード、トレーニングレシピもまた、理解や再現、そして実装の可否を決定づける要因となります。
NVIDIA Nemotron 3 ファミリーは、重み(weights)やデータ、レシピを含むオープンモデルリソースとして公開されています。NVIDIA Nemotron の開発者向けリソース を探索したり、Inside NVIDIA Nemotron 3 で効率性と精度を高めるための技術やツール、データについて読んだり、NVIDIA Nemotron リポジトリ を確認したりできます。
これらのリソースを使えば、Nemotron がどのように構築され、ポストトレーニングされたのか、どのようなデータや環境が使用されたのか、そして独自のカスタマイズでどこを工夫すべきかなどをより深く理解できます。
事前準備
このチュートリアルを実行するには、以下の準備が必要です。
- curl とサポート対象の Python 3 がインストールされた開発環境
- ホスト型トレーニングと課金設定が完了した Prime Intellect アカウント
- Prime CLI、環境パッケージ、ホストモデル、アダプターデプロイメントに必要なインターネット接続
- およそ 5〜15 分
Prime Intellect は、ホスト型の展開、トレーニング、推論インフラストラクチャを管理します。ローカルの GPU クラスターを自分で管理する必要はありません。
※モデルの可用性や料金は時期によって変動します。静的な記事から ID や価格をコピーするのではなく、最新の CLI カタログを信頼すべき情報源として扱ってください。
Nemotron 3 Nano をカスタマイズする 3 つの手順
それでは、あなただけの Nemotron 3 Nano をカスタマイズするために必要な簡単な手順を見ていきましょう。
ステップ 1:ベースラインを取得する
まず、Prime CLI をインストールし、認証を行った上で Prime Intellect Lab のワークスペースを作成します。
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.13
uv tool install --python 3.13 --force "prime==0.6.17"
uv --version
prime --version
prime login
mkdir -p nemotron-customization
cd nemotron-customization
prime lab setup
uv run python --version
Prime Intellect Lab により、ワークスペースの構造が構築され、検証ツールもインストールされます。その後、時間のかかる評価とトレーニングのステップに進みます。
使用前に環境を確認しましょう。
prime env info primeintellect/math-python --version 0.1.10
prime env inspect primeintellect/math-python@0.1.10 README.md
ワークスペース内で使用する環境パッケージを特定のバージョンに固定します。
uv add "math_python==0.1.10" \
--index https://hub.primeintellect.ai/primeintellect/simple/
uv lock --check
これで、ライブでホストされているトレーニングカタログを確認できます。
prime train models
prime inference models
確認ポイント: 出力結果に「nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16」が含まれ、現在のトレーニング料金や入力・出力の価格が表示されていれば、次の手順へ進んでください。
モデルがトレーニング後に改善されたかを確認するため、タスクのベースラインを素早く取得するコマンドは以下の通りです。
export NANO="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
export MATH_EVAL_ARGS='{"dataset_name":"math","dataset_split":"test","num_train_examples":-1,"max_turns":5,"sandbox_client_max_workers":8}'
export MATH_SAMPLING='{"max_tokens":2048,"temperature":1.0,"extra_body":{"chat_template_kwargs":{"enable_thinking":false}}}'
prime eval run math-python \
--provider prime \
--model "$NANO" \
--num-examples 32 \
--rollouts-per-example 1 \
--max-concurrent 8 \
--env-args "$MATH_EVAL_ARGS" \
--sampling-args "$MATH_SAMPLING" \
--timeout 300 \
--max-retries 2 \
--save-results \
--disable-tui \
--abbreviated-summary
実行結果は以下のようになります。このモデルはまだ初期段階であり、精度が低いことがわかります。
... --- All ---
Rewards:
reward: avg - 0.219, std - 0.413
...
これはベースラインモデルにおける失敗例です。サポートされていないツールを呼び出す試行が 5 回続いたため、最終的にボックス囲みの回答を生成できませんでした。
計算はすべて Python で行ってください。答えは \boxed{} の中に記述してください。
Python 標準ライブラリに加え、numpy、sympy、scipy も利用可能です。
$2^8=4^x$ のとき、$x$ の値はいくつですか?
[[EMPTY RESPONSE]]
図 1 は、この初期評価における報酬の分布を示しています。報酬は二値で、1 は正しい回答が生成されたことを、0 は誤った回答や未回答であることを意味します。
image*図 1. Math Python タスクの 32 例における報酬分布。多くのケースで未解決または不正解となっている*
ステップ 2:Nemotron 3 Nano を学習させる
Nemotron 3 Nano のカスタマイズを開始するには、まず configs/rl/nemotron-3-nano-math-python-100step.toml という設定ファイルを作成します。
name = "nemotron-3-nano-math-python-100step"
model = "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
loss = "rl"
max_steps = 100
batch_size = 32
rollouts_per_example = 8
max_inflight_rollouts = 32
learning_rate = 2e-5
lora_alpha = 16
[sampling]
max_tokens = 2048
temperature = 1.0
enable_thinking = false
[adapters]
interval = 0
keep_last = 1
[[env]]
id = "primeintellect/math-python@0.1.10"
args = { dataset_name = "math", dataset_split = "train", num_train_examples = -1, max_turns = 5 }この設定ファイルは、モデルの学習方法を定義しています。トレーニングでは、選択された各タスクに対して 8 回の試行をサンプリングし、ロールアウトグループ内で比較信号を得ます。4 つのグループがバッチ(32)を構成し、小規模な実行において同時に組み立てられるロールアウト数を制限します。
実行を開始するには、以下のコマンドを実行します。
prime train configs/rl/nemotron-3-nano-math-python-100step.tomlPrime は、解析された設定情報、現在の料金、および環境アクションのステータスを表示し、確認を求めます。確認すると、CLI から実行 ID とダッシュボード URL が返されます。その後、評価とトレーニングが継続されます。
チェックポイント: 実行 ID を必ず保存してください。起動時の出力には、対象となる Nano モデル、固定された Math Python 環境、リアルタイムの料金情報、そして環境アクションチェックの成功結果が表示されるはずです。
ダッシュボードには、報酬曲線や報酬の分布、個別のロールアウト結果が表示されます。CLI でも同様の情報が確認可能です。
export RUN_ID="<run-id>"
export STEP="<step>"
prime train logs "$RUN_ID" --follow
prime train progress "$RUN_ID"
prime train distributions "$RUN_ID" --type rewards
prime train usage "$RUN_ID" --watch
prime train rollouts "$RUN_ID" --step "$STEP"
prime train checkpoints "$RUN_ID"
実験を行う際は、まずは小さな変更から始めましょう。すべての試行で同じスコアしか得られない場合、学習アルゴリズムが改善に必要な信号を十分に受け取れているとは限りません。次に、高・中・低の報酬を持つロールアウトをそれぞれ確認し、そのスコアが本当に数学的な問題解決能力の向上を反映しているか検証してください。さらに、トークンの使用量や truncation(途中打ち切り)の有無といった要因もチェックし、設定自体が学習信号に悪影響を与えていないかを確認する必要があります。
報酬曲線はモデルがより多くの報酬を得たのか、それとも少なくなったかを教えてくれますが、ロールアウト結果を見ることで「なぜそうなったのか」の理由がわかります。
image*Figure 2. Nemotron 3 Nano's reward curve over 100 steps*
ステップ 3: Nemotron 3 Nano の学習成果を確認する
トレーニング中の報酬は、モデルの宿題の出来栄えを測るようなものです。実際にテストを行ってみなければ、その性能が本当のものかどうかは判断できません。
ランが正常に完了すると、Prime Intellect Lab は最終的な LoRA アダプターをアップロードします。学習成果物が準備できたことを確認した上で、デプロイ状態を確認しましょう。
prime deployments list
現在、サービスを提供していないアダプターは「NOT_DEPLOYED」と表示されます。デプロイをリクエストすると、ステータスは「DEPLOYING」を経て「DEPLOYED」に遷移します。
チェックポイント: 最終的なアダプターが存在し、デプロイの準備が整ったことを確認してから続行してください。完了したトレーニングプロセスでも、使用可能なアダプターがない場合は、このチュートリアルで約束されている成果物にはなりません。
トレーニングダッシュボードからアダプターをダウンロードできます。ホストされた推論サービスで利用するには、以下のコマンドでデプロイを実行します。
prime deployments list
prime train checkpoints "$RUN_ID" --status READY
export ADAPTER_ID="<adapter-id>"
export ADAPTED_MODEL="$NANO:$ADAPTER_ID"
prime deployments create "$ADAPTER_ID" --plain
COLUMNS=300 NO_COLOR=1 prime deployments list --plainデプロイにより課金対象の推論エンドポイントが作成されます。ステータスが「DEPLOYED」になると、モデル識別子は Nano とアダプター ID を組み合わせた形式になります。
nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16:<adapter-id>次に、ベースラインコマンドを繰り返しますが、モデル識別子のみを変更します。環境設定、タスク数、ロールアウト数、サンプリング設定、報酬関数は変更せず、モデル以外を変えないようにしてください。これにより、比較結果の解釈が容易になります。
prime eval run math-python \
--provider prime \
--model "$ADAPTED_MODEL" \
--num-examples 32 \
--rollouts-per-example 1 \
--max-concurrent 8 \
--env-args "$MATH_EVAL_ARGS" \
--sampling-args "$MATH_SAMPLING" \
--timeout 300 \
--max-retries 2 \
--save-results \
--disable-tui \
--abbreviated-summary得られた結果には、前述の評価設定を反映した内容が含まれています。同じ例題セットにおいてベースラインモデルと比較して平均報酬が向上していることから、本モデルはタスクに対して意味ある改善を学習したことが示されます。
--- すべて ---
報酬:
reward: avg - 0.906, std - 0.291
...
初期モデルでは正解に至らなかった同じプロンプトがこちらです:
すべての計算には Python を使用してください。答えは \boxed{} の中に記述してください。
Python 標準ライブラリに加え、numpy、sympy、scipy も利用可能です。
$2^8=4^x$ のとき、$x$ の値はいくつですか?
sp.solve(sp.Eq(28, 4x), x)
...
この方程式は同じ底で書き換えることができます。
\[
2^8 = 4^x \quad\Longrightarrow\quad 2^8 = (2^2)^x = 2^{2x}.
\]
底が等しいため、指数も等しくなければなりません:
\[
8 = 2x \;\Longrightarrow\; x = \frac{8}{2}=4.
\]
\[
\boxed{4}
\]
図 3 は、前述と同じ評価用プロンプトセットに対する報酬の分布を示しています。ご覧の通り、モデルは正答数を大幅に向上させることができました:
image*
図 3. Math Python タスクにおける 32 の例題に対する報酬分布。多くの問題が正解として解決されていることが確認できます*
同じく32問の保留問題において、正答率は21.9%(7/32)から90.6%(29/32)へと大幅に向上し、絶対値で68.75ポイントもの改善が見られました。ベースラインと最終結果で答えが分かれた24件のプロンプトのうち、23件で精度が向上し、1件のみ低下しました。さらに、Nemotron 3 Nanoはこのタスクにおいて総コスト5ドル未満という低予算で性能を高めることに成功しています。
アダプターのデプロイメントを解除する場合は、以下のコマンドを実行してクリーンアップを行います。
prime deployments delete "$ADAPTER_ID" --plain
デプロイメントの状態やOpenAI互換の推論例については、Prime Intellect の 推論用 LoRA アダプターのデプロイに関するガイド をご確認ください。
Prime Intellect Lab で大規模モデルをトレーニングする
Nemotron 3 Nano の短時間トレーニングを実行する方法について解説しましたが、ここで「より大きなモデルも同様にトレーニングできるのか?難易度はどうなのか?」と疑問に思われるかもしれません。結論から言うと、全く問題ありません。ホスト型トレーニングの利便性を活かせば、単にモデル識別子を変更するだけで、以下の手順で同じワークフローをそのまま実行できます。
Nemotron 3 Super のトレーニング
まず、ライブカタログチェックを再度実行します。
prime train models
利用可能状況と現在の料金を確認した上で、モデル行を以下のように置き換えてください。
model = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"
実験の厳密さは維持し、まずベースラインを設定して報酬の変動を確認。その後、変更のない設定でトレーニングを行い、再テストを行います。
Nemotron 3 Ultra のトレーニング
Nemotron 3 Ultra は同シリーズの大容量モデルであり、Prime Intellect では NVIDIA Blackwell インフラ上でホストされた強化学習にも対応しています。
Ultra モデルの管理トレーニングへのアクセス権限があるか確認するには、以下のコマンドを実行してください。
prime train models
このコマンドで表示される場合、model 行を以下のように書き換えてください。
model = "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4"
Nemotron 3 のカスタマイズを開始する
AI を自社のユースケースに合わせて最適化するのがカスタマイズの目的です。カスタマイズを行わない場合、モデルが初期状態で備えている機能に制限され、本来は低コストのモデルで対応可能なタスクに対して、過剰な性能を持つ高価なモデルを無理に使ってしまうリスクがあります。
NVIDIA Nemotron 3 などのオープンモデルと、Prime Intellect Lab といった管理型トレーニングプラットフォームを組み合わせることで、このプロセスが格段に容易になります。重要なのは単に重み(weights)が公開されていることやインフラが管理されていることだけではありません。改善のサイクル全体を検証可能で、繰り返し実行できる点こそが最大の価値です。
*始め方に関するリソースは *Nemotron 開発者ページ* をご覧ください。オープンな Nemotron モデルやデータセットは *Hugging Face*、また *Blueprints* は *build.nvidia.com* で確認できます。*
Nemotron のライブストリーム、チュートリアル、および開発者コミュニティについては、NVIDIA フォーラム や Discord の Nemotron チャンネル で情報交換しましょう。
NVIDIA Nemotron の最新情報は、NVIDIA ニュース を購読したり、LinkedIn、X (旧 Twitter)、Discord、YouTube で NVIDIA AI の公式アカウントをフォローすることで入手できます。
原文を表示
Customization is what enables developers to take a general model and tailor it to use cases, domains, languages, and more.
However, customization comes with a few challenges. It requires 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 domain knowledge: What algorithm should I use? What environment should I use? How do I know whether the model actually learned?
Customization can appear daunting.
With open models such as the NVIDIA Nemotron 3 family—including Nano, Super, and Ultra—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 and produce a downloadable LoRA adapter.
The local setup takes about five minutes—that’s all.
By the end of this blog, you’ll learn two things:
- Customization is more accessible than ever.
- Getting started with open models is easier than ever.
What you’ll build
We’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.
This 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:
What customization means
Customization 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.
There 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 post.
This tutorial focuses on reinforcement learning with verifiable rewards (RLVR) on the Python Math environment. The basic idea of the environment is simple: Use Python tools (Python, numpy, sympy and scipy) to do some math. Here’s an example of a prompt:
Use Python for all calculations. Give your answer inside \boxed{}.
In addition to the Python standard library, you have access to: numpy sympy scipy.
If $2^8=4^x$, what is the value of $x$?
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.
For a deeper introduction to reinforcement learning for agents, see the post Mastering Agentic Techniques: AI Agent Reinforcement Learning.
Why openness matters
Open 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.
The NVIDIA Nemotron 3 family is published with open model resources, including weights, data, and recipes. You can explore the NVIDIA Nemotron developer resources, read Inside NVIDIA Nemotron 3, and inspect the NVIDIA Nemotron repository.
These 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.
Prerequisites
For this tutorial, you’ll need:
- A development environment with curl and a supported Python 3 installation.
- A Prime Intellect account with access to Hosted Training and billing configured.
- Internet access for the Prime CLI, environment package, hosted model, and adapter deployment.
- About 5-15 minutes.
Prime Intellect handles the hosted rollout, training, and inference infrastructure; you don’t need to manage a local GPU cluster.
Note: 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.
Customize Nemotron 3 Nano in three steps
Let’s get into the simple steps required to customize your very own Nemotron 3 Nano.
Step 1: Get a Baseline
First, install the Prime CLI, authenticate, and create a Prime Intellect Lab workspace:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.13
uv tool install --python 3.13 --force "prime==0.6.17"
uv --version
prime --version
prime login
mkdir -p nemotron-customization
cd nemotron-customization
prime lab setup
uv run python --version
Prime Intellect Lab creates the workspace structure and installs the verifiers tooling. The longer-running evaluation and training steps come next.
Inspect the environment before using it:
prime env info primeintellect/math-python --version 0.1.10
prime env inspect primeintellect/math-python@0.1.10 README.md
Pin the exact environment package in the workspace:
uv add "math_python==0.1.10" \
--index https://hub.primeintellect.ai/primeintellect/simple/
uv lock --check
Now check the live hosted training catalog:
prime train models
prime inference models
Checkpoint: Continue only if the output contains nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 and shows the current training, input, and output prices.
Use the following command to grab a quick baseline on our task so we can show if the model improved after training:
export NANO="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
export MATH_EVAL_ARGS='{"dataset_name":"math","dataset_split":"test","num_train_examples":-1,"max_turns":5,"sandbox_client_max_workers":8}'
export MATH_SAMPLING='{"max_tokens":2048,"temperature":1.0,"extra_body":{"chat_template_kwargs":{"enable_thinking":false}}}'
prime eval run math-python \
--provider prime \
--model "$NANO" \
--num-examples 32 \
--rollouts-per-example 1 \
--max-concurrent 8 \
--env-args "$MATH_EVAL_ARGS" \
--sampling-args "$MATH_SAMPLING" \
--timeout 300 \
--max-retries 2 \
--save-results \
--disable-tui \
--abbreviated-summary
Your results should look similar to the following, which showcases that the model starts off doing rather poorly and has a fairly low accuracy.
...
--- All ---
Rewards:
reward: avg - 0.219, std - 0.413...
This 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:
Use Python for all calculations. Give your answer inside \boxed{}.
In addition to the Python standard library, you have access to: numpy sympy scipy.
If $2^8=4^x$, what is the value of $x$?
[[EMPTY RESPONSE]]
Figure 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.

Step 2: Take Nemotron 3 Nano to school
To get started on customizing Nemotron 3 Nano, the first thing we’ll do is create configs/rl/nemotron-3-nano-math-python-100step.toml:
name = "nemotron-3-nano-math-python-100step"
model = "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
loss = "rl"
max_steps = 100
batch_size = 32
rollouts_per_example = 8
max_inflight_rollouts = 32
learning_rate = 2e-5
lora_alpha = 16
[sampling]
max_tokens = 2048
temperature = 1.0
enable_thinking = false
[adapters]
interval = 0
keep_last = 1
[[env]]
id = "primeintellect/math-python@0.1.10"
args = { dataset_name = "math", dataset_split = "train", num_train_examples = -1, max_turns = 5 }
This 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.
Launch the run:
prime train configs/rl/nemotron-3-nano-math-python-100step.toml
Prime 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.
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.
The dashboard shows reward curves, reward distributions, and individual rollouts. The CLI exposes the same evidence:
export RUN_ID="<run-id>"
export STEP="<step>"
prime train logs "$RUN_ID" --follow
prime train progress "$RUN_ID"
prime train distributions "$RUN_ID" --type rewards
prime train usage "$RUN_ID" --watch
prime train rollouts "$RUN_ID" --step "$STEP"
prime train checkpoints "$RUN_ID"
When 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.
If the reward curve tells us if the model got more or less reward; the rollouts help tell you why.

Step 3: Check how much Nemotron 3 Nano learned
Training reward is like measuring the model’s performance on homework. It’s not real until you give it a test.
When 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:
prime deployments list
A ready adapter that isn’t currently serving can appear as NOT_DEPLOYED. After deployment is requested, its serving state moves through DEPLOYING to DEPLOYED.
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.
You can download the adapter from the training dashboard. To query it through hosted inference, deploy it:
prime deployments list
prime train checkpoints "$RUN_ID" --status READY
export ADAPTER_ID="<adapter-id>"
export ADAPTED_MODEL="$NANO:$ADAPTER_ID"
prime deployments create "$ADAPTER_ID" --plain
COLUMNS=300 NO_COLOR=1 prime deployments list --plain
Deployment creates a billable inference endpoint. Once its status is DEPLOYED, the model identifier combines Nano with the adapter ID:
nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16:<adapter-id>
Now repeat the baseline command, changing only the model identifier
Keep the environment, task count, rollout count, sampling settings, and reward unchanged. Changing more than the model makes the comparison harder to interpret.
prime eval run math-python \
--provider prime \
--model "$ADAPTED_MODEL" \
--num-examples 32 \
--rollouts-per-example 1 \
--max-concurrent 8 \
--env-args "$MATH_EVAL_ARGS" \
--sampling-args "$MATH_SAMPLING" \
--timeout 300 \
--max-retries 2 \
--save-results \
--disable-tui \
--abbreviated-summary
Your 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:
...
--- All ---
Rewards:
reward: avg - 0.906, std - 0.291
...
Here’s the same prompt the initial model was unable to correctly solve:
Use Python for all calculations. Give your answer inside \boxed{}.
In addition to the Python standard library, you have access to: numpy sympy scipy.
If $2^8=4^x$, what is the value of $x$?
sp.solve(sp.Eq(2**8, 4**x), x)
...
We can rewrite the equation using the same base.
\[
2^8 = 4^x \quad\Longrightarrow\quad 2^8 = (2^2)^x = 2^{2x}.
\]
Since the bases are equal, the exponents must be equal:
\[
8 = 2x \;\Longrightarrow\; x = \frac{8}{2}=4.
\]
\[
\boxed{4}
\]
Figure 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:

On 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.
To remove the adapter deployment, you can issue the following command as cleanup:
prime deployments delete "$ADAPTER_ID" --plain
See the Prime Intellect guide to deploying LoRA adapters for inference for deployment states and OpenAI-compatible inference examples.
Training larger models with Prime Intellect Lab:
Now 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:
Train Nemotron 3 Super
Run the live catalog check again:
prime train models
Confirm availability and current pricing, then replace the model line with:
model = "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"
Keep the same experimental discipline: baseline first, inspect reward variation, train, and retest under unchanged settings.
Train Nemotron 3 Ultra
Nemotron 3 Ultra is the high-capacity option in the family, and Prime Intellect has support for hosted reinforcement learning on NVIDIA Blackwell infrastructure.
Verify you have access to managed training of Ultra using the following command:
prime train models
If you see it, replace the model line with:
model = "nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4"
Begin customizing Nemotron 3
Customization 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.
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.
*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*.*
*Engage with *Nemotron livestreams*, *tutorials*, and the developer community on the *NVIDIA forum* and the *Nemotron channel* on *Discord*.*
*Stay up to date on *NVIDIA Nemotron* by subscribing to *NVIDIA news* and following NVIDIA AI on *LinkedIn*, *X*, *Discord*, and *YouTube*.*
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み