AI Tools
チュートリアル12 分2026年7月24日執筆:AIGCDev

Nemotron 3 Nano 強化学習:Prime Intellect で LoRA を学習・再評価

NVIDIA は 2026-07-23 に公開した公式チュートリアルで、Prime Intellect Lab を使って Nemotron 3 Nano に100ステップの強化学習を行い、同じ32問のホールドアウト問題で再評価しました。正解数は7問から29問に増えています。この変化を学習の効果として判断するには、ベースラインと再評価で問題、環境、サンプリング設定を同じにする必要があります。本記事は 2026-07-24 時点で内容を確認しています。

同じ条件で再現するには、prime==0.6.17、[email protected]、Nano BF16 モデルを固定します。最初に32問のベースラインを測定し、検証可能な報酬による強化学習(RLVR)を100ステップ実行した後、モデル ID だけを変えて再評価します。学習で生成されるのは LoRA アダプターであり、ベースモデル全体の重みを書き換えるものではありません。

開始前に、Prime Intellect アカウントで Hosted Training を利用でき、請求設定が完了していることを確認してください。タスクには、結果を自動採点できる検証器または報酬関数も必要です。目的を「より良い回答にする」としか定義できない場合は、学習を始める前に評価規則を設計します。公式結果が示すのは math-python での効果だけです。カスタマーサポート、検索、中国語や日本語などの言語、高リスクのタスクでは、独自の学習セット、テストセット、検証器が必要です。

NVIDIA の例で固定する4つの再現条件

公式結果を再現する際は、次の4項目を変更しません。ただし、モデルの提供状況と価格はコマンドライン(CLI)の最新カタログで確認します。

項目 NVIDIA の例で固定された値
Python 3.13
Prime CLI 0.6.17
ベースモデル nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16
学習環境 primeintellect/[email protected]

prime train models と prime inference models を実行し、出力に Nano モデルがあり、現在の学習、入力、出力の価格を確認できた場合だけ先へ進みます。NVIDIA が示した「5ドル未満」は当該実験の総費用であり、継続的に保証される価格ではありません。

初回は公開データまたは合成データだけを使います。本番の個人情報、医療・法律・金融の判断、独立したテストセットがないタスクを、この手順に直接投入しないでください。一時的な推論サービスだけが必要なら、Hugging Face Jobs で vLLM を動かす手順を参照してください。

元の Nano で32問のベースラインを測定する

NVIDIA の例と同じ CLI バージョンをインストールし、Lab ワークスペースを初期化して、環境パッケージを確認します。組織の規定で curl | sh が禁止されている場合は、承認済みの方法で uv をインストールしてください。

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"

prime --version
prime login

mkdir -p nemotron-customization
cd nemotron-customization
prime lab setup

prime env info primeintellect/math-python --version 0.1.10
prime env inspect primeintellect/[email protected] 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

評価コマンドはスクリプトとして保存します。ベースラインと再評価で同じファイルに異なるモデル ID だけを渡せば、手作業のコピーで評価パラメータが変わるのを防げます。

mkdir -p scripts

cat > scripts/run-math-eval.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

eval_model="${1:?使用法:scripts/run-math-eval.sh <model-id>}"
math_eval_args='{"dataset_name":"math","dataset_split":"test","num_train_examples":-1,"max_turns":5,"sandbox_client_max_workers":8}'
math_sampling='{"max_tokens":2048,"temperature":1.0,"extra_body":{"chat_template_kwargs":{"enable_thinking":false}}}'

prime eval run math-python \
  --provider prime \
  --model "$eval_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
EOF

chmod +x scripts/run-math-eval.sh

export BASE_MODEL="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
scripts/run-math-eval.sh "$BASE_MODEL"

--save-results により評価結果ファイルが生成されます。ベースラインの実際の保存先を記録し、再評価の結果は別に保管してください。概要スコアだけでなく、後で問題ごとに比較できる状態にします。

math-python は、Python、NumPy、SymPy、SciPy を使って計算し、最終回答を \boxed{} に入れるようモデルに求めます。この例では各ロールアウトをアシスタント応答5ターンまでに制限します。最終回答を出さずにツール呼び出しを繰り返すと、ターンを使い切るか \boxed{} が欠けるため、報酬は0になります。

NVIDIA が公表したベースラインは、平均報酬 0.219、標準偏差 0.413 です。この環境の報酬は二値で、正解なら1、不正解または回答なしなら0です。したがって、0.219 は 7/32、正解率21.9% に相当します。少なくとも各問題の成否と全軌跡を保存し、出力長と打ち切りの有無も平均値とは別に記録します。出典:NVIDIA 公式チュートリアル

100ステップの RLVR で Nano の LoRA を学習する

configs/rl/nemotron-3-nano-math-python-100step.toml を作成します。学習側は dataset_split = "train" を使い、前節の test から分離します。思考モードを無効にし、各軌跡をアシスタント応答最大5ターン、各ターンを最大2,048トークンに制限して、ベースラインと条件をそろえます。

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/[email protected]"
args = { dataset_name = "math", dataset_split = "train", num_train_examples = -1, max_turns = 5 }

NVIDIA の prime==0.6.17 固定バージョン例に合わせ、ここでは run を省略します。

prime train configs/rl/nemotron-3-nano-math-python-100step.toml

このバージョンでは、現在のドキュメントにある prime train run <config> も利用でき、どちらも同じ学習フローを開始します。固定例を再現する際は、上記の省略形を使います。CLI を更新する前に prime train --help を実行し、Prime Intellect Hosted Training ドキュメントに従って調整してください。

実行を確定する前に、モデル ID と [email protected] 環境を再確認します。CLI 出力に許容できる最新価格と、成功した環境アクションチェックが表示されることも確認し、実行 ID とダッシュボード URL を保存します。

export RUN_ID="&#x3C;run-id>"

# ターミナル A:学習終了または Ctrl-C までログを追跡
prime train logs "$RUN_ID" --follow

# ターミナル B:Ctrl-C まで費用を監視
prime train usage "$RUN_ID" --watch

# 任意のターミナル:進捗と報酬分布を確認
prime train progress "$RUN_ID"
prime train distributions "$RUN_ID" --type rewards

# 任意のターミナル:選択した学習ステップのロールアウトを確認
export STEP="&#x3C;step>"
prime train rollouts "$RUN_ID" --step "$STEP"

これらは順番に一括実行するスクリプトではありません。ログと費用の継続監視は別々のターミナルで実行します。progress で参照可能な学習ステップを確認し、distributions で報酬に差が出ているかを見てから、STEP を設定して該当する軌跡を確認します。高報酬の軌跡が本当に正解しているか確認し、低報酬は計算、形式、ツール利用のどこで失敗したかを分けてください。すべての試行が同じ報酬なら、ステップ数を増やす前に環境または問題を調整します。報酬が上がっても解法が悪化している場合は、学習・テスト間の漏えい、打ち切り、報酬ハッキングを確認します。

最終アダプターをデプロイし、モデル ID だけを変えて再評価する

学習プロセスが終了したら、最終チェックポイントに READY 状態の LoRA アダプターが生成されていることを確認します。学習プロセスが停止していても READY のアダプターがなければ、必要な学習成果物は完成していません。

export RUN_ID="&#x3C;run-id>"

prime train checkpoints "$RUN_ID" --status READY
prime deployments list

export ADAPTER_ID="&#x3C;adapter-id>"
export BASE_MODEL="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
export ADAPTED_MODEL="$BASE_MODEL:$ADAPTER_ID"

prime deployments create "$ADAPTER_ID" --plain
COLUMNS=300 NO_COLOR=1 prime deployments list --plain

状態が DEPLOYED になったら、同じスクリプトに新しいモデル ID だけを渡して再評価します。テストセット、環境、サンプリング設定はファイル内で固定済みです。評価コマンドを別ファイルにコピーしないでください。

scripts/run-math-eval.sh "$ADAPTED_MODEL"

NVIDIA の二値評価では、平均報酬が正解率と一致します。21.9% から90.6% への変化は約68.7パーセントポイントの上昇であり、68.7% の相対的な増加ではありません。

指標 元の Nano LoRA 適用後
正解数 7/32 29/32
平均報酬 / 正解率 21.9% 90.6%
標準偏差 0.413 0.291
結果が変わった問題 — 23問改善、1問悪化

NVIDIA の100ステップ実行にかかった総費用は 5ドル未満 でした。この結果が示すのは、固定バージョンの数学実験が成功したことだけです。他のデータセットでの改善幅を予測するものでも、対象タスクの評価を置き換えるものでもありません。出典:NVIDIA 公式チュートリアル

推論デプロイには継続して料金が発生します。実験が終わったら、不要なアダプターをアンロードします。

export ADAPTER_ID="&#x3C;adapter-id>"

prime deployments delete "$ADAPTER_ID" --plain
prime deployments list

ここでの delete は推論サービスをアンロードしますが、アダプターファイルは残すため、後から再デプロイできます。状態は DEPLOYED から UNLOADING に移り、最終的に NOT_DEPLOYED に戻る必要があります。出典:Prime Intellect の LoRA アダプター推論デプロイ手順

Nano が動いてから Super または Ultra を検討する

Nano の設定と費用を、そのまま大きなモデルに適用しないでください。NVIDIA のチュートリアルには次の2つのモデル ID が示されていますが、毎回 prime train models を実行し、アカウント権限、最新価格、ハードウェアの提供状況を確認する必要があります。

モデル NVIDIA の例にあるモデル ID
Nemotron 3 Super nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16
Nemotron 3 Ultra nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4

まず Nano で環境、報酬、再評価の一連の手順を検証します。検証器の誤り、データ漏えい、打ち切りを除外しても、Nano が同じ難しい問題群で繰り返し失敗する場合に、モデル容量の制約を検討してください。Super または Ultra を実行する前に、費用上限と最低改善幅を決め、同じ条件で小規模なベースラインを測定します。事前に決めた改善幅に届かなければ中止します。モデルが一覧に表示されても学習権限がない場合は、別のモデル ID を推測して代用しないでください。

数学の例を業務タスクへ移す前に検証器を作り直す

RLVR は、プログラムや規則で結果を判定できるタスクに適しています。数学、コードテスト、構造化データ変換、スキーマ検証付き SQL などです。引用チェッカーは「指定資料にある引用か」を確認できますが、結論の質まで自動で保証することはできません。カスタマーサポートの口調、自由度の高い文章、高リスクな助言は、最初の RLVR 移行先には向きません。

次の順序で実験を組み直します。

  1. 業務上の成功条件を実行可能な検証器にし、許容できる失敗の境界を決める。
  2. 学習セット、開発セット、調整に一度も使わない最終テストセットを分離する。
  3. 元のモデルでベースラインを繰り返し測り、スコアが全問0でも満点近くでもないことを確認する。
  4. 学習後は、タスク群ごとに悪化、費用、出力長を比較してから継続を判断する。

高品質な入力と正解の組があっても、信頼できる検証器がない場合は、RLVR より先に教師あり微調整(SFT)を検討します。どちらにも独立したテストセットが必要で、学習報酬や学習損失をリリース判定の代わりにはできません。

本番トラフィックを流す前に判定可能な基準を決める

NVIDIA の32問の結果が示すのは、例が正常に動いたことだけです。業務で本番投入する前にテストセットを固定し、再評価の結果を見る前に、全体スコアの下限、重要タスク群の下限、許容する悪化数、1日あたりの推論予算を決めます。以下は AIGCDev の推奨基準であり、NVIDIA または Prime Intellect が示した本番承認基準ではありません。

確認項目 リリース条件
再現性と回帰 同じアダプターを少なくとも3回独立して再評価し、毎回事前設定した全体スコアに到達する。高リスクのタスク群は悪化を認めず、その他の悪化は事前に決めた件数以内に収める
データ 学習・評価データとログが、プライバシー、ライセンス、社内保持規則の確認を通過する
運用 元のモデルへ戻す手順を実際に試し、費用アラートが有効で、不要な推論デプロイをアンロードできる

すべてを確認できるまでは、アダプターを実験環境に残します。平均スコアの上昇で重要問題の悪化を相殺することはできず、中国語や日本語などの言語、長いコンテキスト、複数ツールのタスクも改善したとは判断できません。

症状別に問題を切り分ける

症状 最初に確認すること
ベースラインがすべて0 モデルと環境が利用可能かを確認し、失敗した軌跡から回答形式、ターン超過、問題の難しさを切り分ける
学習報酬は上がるが再評価は改善しない 学習セットだけを評価していないか、評価パラメータを変えていないか、報酬ハッキングがないかを確認する
平均スコアは上がるが重要問題が悪化する テスト問題を業務リスク別に分け、全体平均で重要な失敗を隠さない
実験終了後も課金が続く prime deployments list が最終的に NOT_DEPLOYED を示すか確認する。特に UNLOADING または UNLOAD_FAILED を含む他の状態では、クリーンアップは完了していない
nvidianemotronprime-intellectmodel-customizationreinforcement-learning