「自社インフラでGPT-4クラスのモデルを動かせるのか?」という問いに、NVIDIAが明確な答えを出してきました。
2026年3月11日、GTC 2026でNVIDIAが発表したNemotron 3 Superは、120Bパラメータ・12B有効パラメータのMoEモデルです。フル精度での推論では8枚のH100が必要ですが、vLLMやNIMを使ったセルフホストが可能で、OpenAI互換のAPIとしてエンドポイントを立てられます。MMLU 86.01、HumanEval 79.40、PinchBench 85.6%というベンチマークは、オープンモデルとしては現時点でトップクラスの水準です。
この記事では、既存の概要解説とは異なり、実際にセルフホストするための手順とコードを中心に解説します。マルチエージェントのオーケストレーター(LLM)として組み込む方法まで、コピペ可能なコードつきでお届けします。
ベンチマーク:他のオープンモデルとの比較
まず数字を整理します。Nemotron 3 Superのベンチマーク結果(NVIDIA発表・2026年3月)は以下の通りです。
| ベンチマーク | Nemotron 3 Super 120B | Qwen3 122B | GPT-4o | 備考 |
|---|---|---|---|---|
| MMLU | 86.01 | 87.1 | 87.2 | 一般知識・推論 |
| HumanEval | 79.40 | 83.6 | 90.2 | Pythonコード生成 |
| SWE-Bench Verified | 60.5 | 65.0 | — | ソフトウェアエンジニアリング |
| PinchBench(エージェント) | 85.6 | 公開なし | — | AIエージェント向け独自ベンチ |
| スループット(B200/NVFP4) | 449〜478 tok/s | — | — | 8K in / 64K out |
測定環境メモ: NVIDIAが公表した数値を使用。測定日: 2026年3月11日(GTC 2026発表時)。最終確認日: 2026-03-27。
注目すべきはPinchBench(エージェント向けベンチマーク)の85.6%です。これはAIエージェントの「脳」として使った場合のタスク完了率に相当します。コーディング系のHumanEvalではQwen3 122BやGPT-4oに劣りますが、マルチエージェント運用を前提とした総合性能では差が縮まります。
AIエージェントの設計パターン全体については、AIエージェント構築完全ガイドも参考にしてください。
アーキテクチャ:なぜ120Bで12Bしか動かないのか
Nemotron 3 Superは「Hybrid Latent MoE」アーキテクチャを採用しています。3種類のレイヤーを交互に積み重ねた構造です。
- Mamba-2レイヤー: 線形時間計算量でシーケンスを処理。1Mトークンのコンテキスト窓を実現している中核。
- Transformer Attentionレイヤー: 重要な深度に配置。正確な連想記憶を担う。
- MoEレイヤー: トークンごとに一部のエキスパートだけ起動。12B相当の計算量で推論できる。
「Latent MoE」の工夫は、トークンの埋め込みをルーティング前に低ランク潜在空間に圧縮する点です。これにより「同じ計算コストで4倍多いエキスパート」を持てるようになっています。正直、これは巧妙な設計で、H100 4枚での運用が可能になった主因です。
セルフホストの手順:vLLMを使う場合
vLLMは現時点でNemotron 3 SuperのOpenAI互換APIサーバーを立てる最も実用的な方法です。ただしH100を最低4枚要求します(フル精度BF16では8枚)。FP8量子化を使えば4枚で動作します。
Step 1: vLLMのインストール
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+, CUDA 12.4+, H100-80GB × 4枚以上
pip install vllm==0.17.1
# Hugging Faceからモデルをダウンロード(約240GB、BF16の場合)
huggingface-cli download nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16
--local-dir ./models/nemotron-3-super-bf16
Step 2: vLLMサーバーの起動(H100 × 4枚)
# FP8 KVキャッシュで4枚H100に収める設定
# --tensor-parallel-size: GPUの枚数に合わせて変更
vllm serve nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16
--kv-cache-dtype fp8
--tensor-parallel-size 4
--trust-remote-code
--served-model-name nemotron
--enable-auto-tool-choice
--tool-call-parser qwen3_coder
--reasoning-parser nemotron_v3
--port 5000
# 起動確認(モデルロードに5〜10分かかる)
curl -s http://127.0.0.1:5000/v1/models | python3 -m json.tool
ポイント: --reasoning-parser nemotron_v3と--tool-call-parser qwen3_coderはNemotron 3 Super固有の設定です。これを省くと思考プロセス(reasoning_content)とツール呼び出しが正しくパースされません。
Step 3: OpenAI互換APIとして利用する
# OpenAI SDKでローカルのNemotron 3 Superに接続する
# 動作環境: Python 3.11+, openai>=1.30.0
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
from openai import OpenAI
# ローカルvLLMサーバーに接続(api_keyはダミー値でOK)
client = OpenAI(
base_url="http://127.0.0.1:5000/v1",
api_key="null"
)
resp = client.chat.completions.create(
model="nemotron",
messages=[
{"role": "system", "content": "あなたはPythonエキスパートです。"},
{"role": "user", "content": "FastAPIでJWT認証を実装するコードを書いてください。"}
],
temperature=0.7,
max_tokens=2048,
)
# reasoning_contentで思考プロセスを確認できる
if hasattr(resp.choices[0].message, 'reasoning_content'):
print("推論プロセス:", resp.choices[0].message.reasoning_content[:200], "...")
print("回答:", resp.choices[0].message.content)
マルチエージェントでの活用パターン
Nemotron 3 Superは単体での性能よりも、マルチエージェントシステムのオーケストレーターとして使う場合に真価を発揮します。1Mトークンのコンテキスト窓があるため、複数のサブエージェントの出力を全て受け取り、整合性を判断する「統合エージェント」の役割に適しています。
# Nemotron 3 Superをオーケストレーターに使うマルチエージェント例
# 動作環境: Python 3.11+, openai>=1.30.0
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
from openai import OpenAI
import concurrent.futures
# ローカルNemotron(オーケストレーター)
orchestrator = OpenAI(base_url="http://127.0.0.1:5000/v1", api_key="null")
# 専門サブエージェント(コスト効率優先で小モデルをAPI呼び出し)
specialist_client = OpenAI(api_key="sk-...") # OpenAI APIキーを環境変数で管理
def run_specialist_agent(task: str, specialty: str) -> str:
"""専門サブエージェントを並列実行"""
resp = specialist_client.chat.completions.create(
model="gpt-4o-mini", # コスト効率優先
messages=[
{"role": "system", "content": f"あなたは{specialty}の専門家です。"},
{"role": "user", "content": task}
],
max_tokens=1024
)
return resp.choices[0].message.content
def orchestrate_task(main_task: str) -> str:
"""Nemotron 3 Superがタスクを分解し、サブエージェントを並列実行して統合する"""
# Step 1: Nemotronがタスクを分解
decomposition_resp = orchestrator.chat.completions.create(
model="nemotron",
messages=[
{"role": "system", "content": "タスクを3つの専門的なサブタスクに分解してください。JSON形式で出力。"},
{"role": "user", "content": main_task}
],
response_format={"type": "json_object"},
max_tokens=512
)
import json
subtasks = json.loads(decomposition_resp.choices[0].message.content)
# Step 2: サブエージェントを並列実行
specialties = ["コード品質", "セキュリティ", "パフォーマンス"]
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
futures = {
executor.submit(run_specialist_agent, subtask, specialty): specialty
for subtask, specialty in zip(subtasks.get("subtasks", []), specialties)
}
results = {spec: future.result() for future, spec in
[(f, specialties[i]) for i, f in enumerate(futures)]}
# Step 3: Nemotronが結果を統合・最終判断
integration_prompt = f"""
以下の3つの専門家レポートを統合し、最終的な推奨事項を提示してください。
コード品質: {results.get('コード品質', '')}
セキュリティ: {results.get('セキュリティ', '')}
パフォーマンス: {results.get('パフォーマンス', '')}
"""
final_resp = orchestrator.chat.completions.create(
model="nemotron",
messages=[
{"role": "system", "content": "複数の専門家の意見を統合し、バランスの取れた最終推奨を出してください。"},
{"role": "user", "content": integration_prompt}
],
max_tokens=2048
)
return final_resp.choices[0].message.content
# 実行例
result = orchestrate_task("ECサイトのバックエンドAPIをFastAPIで設計・実装するための計画を作成してください")
print(result)
NIMAでのエンタープライズデプロイ
vLLMによるセルフホストに加え、NVIDIAはNIM(NVIDIA Inference Microservices)でコンテナ化されたデプロイメントも提供しています。
# NVIDIA NIMコンテナでNemotron 3 Superを起動
# 必要: NVIDIA NGC API Token、H100-80GB × 8枚(BF16フル精度)
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# NGC APIトークンを環境変数に設定(ハードコード禁止)
export NGC_API_KEY=your_ngc_api_key_here
docker run --gpus all
-e NGC_API_KEY=$NGC_API_KEY
-p 8000:8000
nvcr.io/nim/nvidia/nemotron-3-super-120b-a12b:1.8.0
# NIMはOpenAI互換APIとして動作する
curl -s http://localhost:8000/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "nvidia/nemotron-3-super-120b-a12b",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 100
}' | python3 -m json.tool
NIMの利点は、推論のバッチング、リクエスト管理、最適化がすべてNVIDIAによって設定済みな点です。セルフホストで推論インフラを自前で管理したくない場合はNIMが現実的です。
【要注意】セルフホストでよくある失敗パターン
–reasoning-parserを省略してしまう
❌ reasoning_contentがnullになり、思考プロセスが取得できない
⭕ --reasoning-parser nemotron_v3と--tool-call-parser qwen3_coderを両方指定する
Nemotron 3 SuperはReasoning model機能を持つため、専用パーサーが必要です。省くとツール呼び出しの解析も失敗します。
tensor-parallel-sizeを過小設定する
❌ H100 2枚で --tensor-parallel-size 2を試みる → OOM
⭕ BF16フル精度では最低4枚(FP8)または8枚(BF16)が必要。まずFP8から試す
BF16の全ウェイトはおよそ240GBです。H100 80GB × 3枚では収まりません。
KVキャッシュのメモリ不足
❌ 長いコンテキスト(100K+トークン)を使うと推論途中でCUDA OOMが発生する
⭕ --kv-cache-dtype fp8を指定し、KVキャッシュをFP8で圧縮する
1Mトークンコンテキストのフル活用にはH100クラスタが必要です。コンシューマー用途ではコンテキスト長を32K〜64Kに制限する運用が現実的です。
コスト試算を見誤る
NVIDIAのAPIクラウド(build.nvidia.com)経由なら、セルフホスト不要でOpenRouter経由の無料枠から試せます。セルフホストのコスト試算をする前に、まずクラウドAPIで動作確認することをおすすめします。
セキュリティと運用
- APIキー管理: vLLMサーバーは
api_key="null"でアクセスできます。本番環境では必ずnginxかAPIゲートウェイ(Kong等)でAuthentication layerを追加してください。 - ネットワーク分離: vLLMのポート(5000)を外部公開しないこと。内部ネットワーク限定にする。
- モニタリング:
/metricsエンドポイントがPrometheus形式でスループット・レイテンシを提供します。 - コスト管理: 1MトークンコンテキストはVRAMを大量消費します。長期バッチ処理と対話型推論でエンドポイントを分けることをおすすめします。
参考・出典
- Introducing Nemotron 3 Super — NVIDIA Technical Blog(参照日: 2026-03-27)
- New NVIDIA Nemotron 3 Super Delivers 5x Higher Throughput — NVIDIA Blog(参照日: 2026-03-27)
- Run Highly Efficient Multi-Agent AI with Nemotron 3 Super Using vLLM — vLLM Blog(参照日: 2026-03-27)
- nemotron-3-super-120b-a12b Model Card — NVIDIA NIM(参照日: 2026-03-27)
- Nemotron 3 Super ベンチマークスコア — BenchLM.ai(参照日: 2026-03-27)
まとめ:今日から始める3つのアクション
- 今日やること: build.nvidia.comの無料APIまたはOpenRouter経由でNemotron 3 Superを試す。自社のユースケース(コード生成、マルチエージェント等)で体感性能を確認する
- 今週中: vLLM 0.17.1 + H100環境(クラウド借用可)でStep 2のコマンドを実行し、OpenAI互換APIとしてローカルエンドポイントを立てる
- 今月中: マルチエージェントのオーケストレーターとして組み込み、GPT-4oとコスト・品質を比較評価する
あわせて読みたい:
- AIエージェント構築完全ガイド — オーケストレーターとサブエージェントの設計パターン
- AIエージェントツール比較ガイド — LLMバックエンドの選び方
AIエージェント開発・LLMインフラ構築のご相談は 株式会社Uravation(お問い合わせ) からどうぞ。