記事のサマリー(TL;DR)
- Granite 4.2 は 3B・8B・30B の3サイズ構成で、約15兆トークンから事前学習しコンテキスト長を512Kトークンに拡張
- SFT(約720万サンプル・100Bトークン)ののち、数学・コード・エージェント行動など多段階GRPOで強化学習を実施
- 8B・30B はソフトウェアエンジニアリング・ターミナル・Web検索の実環境エージェントRLを追加し、SWE-Bench Verified で 30B が57.00%を達成
国内の生成AI基盤・エージェント開発環境への影響
Granite 4.2 は Apache 2.0 で公開されており、商用利用・改変・再配布が制限なく行えます。3B〜30B という幅広いサイズ展開と、FP8・NVFP4・MXFP4・GGUF の多様な量子化形式により、クラウドからエッジまでの幅広い推論環境に対応します。
日本企業にとって注目すべき点は2つあります。第一に、OpenAI 互換エンドポイントを vLLM で提供するだけで OpenCode・OpenHands・Pi といったエージェントハーネスをそのまま接続できる設計です。業務システムへのエージェント接続(kintone や Salesforce への自動操作や、ターミナル経由でのサーバー操作など)を検討する場合、追加のアダプタなしに既存ハーネスを流用できます。第二に、ツール呼び出しが OpenAI function-calling フォーマットに完全準拠しているため、MCP 対応アーキテクチャやすでに OpenAI API を前提に設計した自社エージェント基盤への差し替えが比較的低コストで試せます。オンプレミスや VPC 内での LLM 展開を優先する情報システム部門にとっては、ライセンスと量子化選択肢の豊富さが選定理由になりえます。
詳細
Granite 4.2 の概要
Granite 4.2 は、Granite 言語モデルファミリーにおける推論重視リリースです。従来の Granite は高精度な指示追従アシスタントでしたが、Granite 4.2 は明示的な推論能力を追加しました。回答前にチェーン・オブ・ソートを生成でき、タスクに必要な思考量に応じて thinking(思考あり)モード と non-thinking(思考なし)モード を切り替えられます。また、簡単な質問に短い推論バジェットを費やす low-effort モード も備えます。
3サイズ(3B・8B・30B)は同一のアーキテクチャ設計と学習パイプライン(事前学習→SFT→多段階RL)を共有します。8B・30B はさらにエージェントRLブロックを経て、ツール呼び出し・コード編集・ターミナル操作・Web検索を実環境で習得します。全モデルがネイティブツール呼び出しをサポートし、OpenAI 互換エンドポイント(vLLM など)で function-calling フォーマットに準拠したツール呼び出しを出力します。SGLang にも対応済みです。
モデルアーキテクチャ
Granite 4.2 はデコーダーオンリーの Dense Transformer 構造を採用しています。
| コンポーネント | 仕様 |
|---|---|
| Attention | GQA(Grouped Query Attention)、40 attention heads / 8 KV heads |
| 位置埋め込み | RoPE(θ = 10,000,000) |
| Feed-Forward | SwiGLU 活性化の MLP |
| 正規化 | RMSNorm(ε = 1e-5) |
| 埋め込み | 入出力を分離(tied なし) |
| 精度 | bfloat16 |
| 3B Dense | 8B Dense | 30B Dense | |
|---|---|---|---|
| 埋め込みサイズ | 2560 | 4096 | 4096 |
| 層数 | 40 | 40 | 64 |
| Attention head サイズ | 64 | 128 | 128 |
| Attention heads 数 | 40 | 32 | 32 |
| KV heads 数 | 8 | 8 | 8 |
| MLP 隠れ層サイズ | 8192 | 12800 | 32768 |
| シーケンス長 | 131072 | 131072 | 131072 |
事前学習
Granite 4.2 は約 15兆トークン を用い、5フェーズの学習戦略でゼロから学習されています。
- フェーズ1〜2:広範な Web スケールデータによる基盤事前学習
- フェーズ3〜4:段階的に高品質データへのアニーリングを行うミッドトレーニング
- フェーズ5:長文脈学習。コンテキスト長を 512K トークン に拡張
各フェーズは固有のデータ混合と学習率スケジュールを持ち、広範な Web データから厳選された高品質データへと段階的に移行します。詳細なデータブレンドやフェーズスケジュールは Granite 4.1 ブログを参照してください。
SFT:データ準備と品質管理
Supervised Fine-Tuning(SFT)はベースモデルを信頼性の高い指示追従・推論・ツール利用アシスタントへと変換します。SFT データ混合は エージェント系(31.6%) と 非エージェント系(68.4%) を組み合わせ、約 720万サンプル・100Bトークン(うち学習可能な約65B)で構成されます。
エージェント系データの内訳:
- ソフトウェアエンジニアリング(SWE):69%
- ツール呼び出し:12.1%
- ターミナル操作:8.0%
- 数学:3.5%
- 検索:0.8%
- 行動:0.2%
サンプルおよびトラジェクトリは OpenHands・OpenCode・Terminus-2・SWE-agent・OpenResearcher・MiniSWE・OpenSeeker・EnvScaler・Gemini CLI・Hermes・Codex・Goose など多様なエージェントスキャフォルドで生成されています。
非エージェント系データの内訳:
指示追従(18.8%)、コーディング(18.8%)、数学(14.6%)、多言語(7.0%)、科学(5.4%)、推論(3.0%)、安全性(0.8%)。
データ品質管理
品質管理は多段階で実施されます。まずデータを統一的な OpenAI Chat フォーマットへ正規化・変換します。次に GPT-OSS-120B と Gemma 4 を LLM ジャッジとして使用し、低品質サンプル・幻覚情報・無効なツール操作・未定義関数へのツール呼び出しを除去します。さらにデータセット固有のヒューリスティックルールを適用し、最後に SHA-256 ハッシュ による局所・大域的重複排除を実施します。
SFT 学習設定
| パラメータ | 値 |
|---|---|
| 計算資源 | 32〜128ノード(モデルサイズに応じる)、ノードあたり 4× Grace/GB200 |
| シーケンス長(packed) | 131,072(128K) |
| グローバルバッチサイズ | 128 |
| 学習率 | 1.0e-5(ウォームアップ後一定)、Phase 2 は 3.0e-6 |
| 学習期間 | 約2エポック |
| 並列化 | TP=2、PP=1、CP=4 or CP=2 |
30B モデルについては、エージェントコーディングに特化した SFT Phase 2 を追加実施します。エージェント・SWE・コーディングデータをアップサンプリングし、元の SFT コーパスの約16%をリプレイデータとして保持しながら、学習率 3.0e-6 でさらに約1エポック追加ファインチューニングします。
強化学習:多段階・多環境パイプライン
SFT 後、多段階・多環境の強化学習パイプラインを適用します。単一の RL パスではなく、数学・コード・科学・指示追従・ツール使用・構造化出力、さらにソフトウェアエンジニアリング・ターミナル操作・Web検索にわたる段階的なステージを連鎖させます。各ステージは独立した RL ランで、前ステージのチェックポイントからウォームスタートします。
SFT ─▶ RLVR ─▶ スキルブースター ─▶ SWEエージェント ─▶ ターミナル ─▶ 検索 ─▶ RLHF
└──────── 基盤RL ──────────┘ └────── エージェントRL(8B / 30B)────────┘
学習手法
すべてのステージで 非同期 GRPO(Group Relative Policy Optimization) を使用します。生成ワーカーとトレーナーが互いをブロックしない設計で、生成ワーカーは既存の KV キャッシュを再利用し、効率的な非同期ループを実現します。アドバンテージはグループ相対(leave-one-out ベースライン)で算出し、別個の価値ネットワークが不要です。
30B モデルの段階別設定:
| ステージ | プロンプト/ステップ | gens/プロンプト | 最大シーケンス長 | ロールアウトターン | KL | LR |
|---|---|---|---|---|---|---|
| RLVR(×3) | 256 | 16 | 64K | 1 | 0 | 5e-7 |
| IF ブースター | 256 | 16 | 64K | 1 | 0 | 5e-7 |
| コードブースター | 64 | 16 | 64K | 1 | 0.05 | 5e-7 |
| SWE 1 | 64 | 16 | 128K | 1 | 0.01 | 5e-7 |
| SWE 2 | 32 | 16 | 128K | 128 | 0 | 5e-7 |
| ターミナル | 8 | 32 | 64K | 64 | 0.01 | 1e-6 |
| 検索 | 32 | 16 | 128K | 64 | 0.01 | 5e-7 |
| RLHF | 128 | 16 | 48K | 1 | 0.05 | 5e-7 |
KL スケジュールは報酬タイプに対応しています。客観的で検証可能な報酬のステージ(RLVR・SWE 2)では KL=0 で自由に探索し、選好・安全性・スキルグラフトのステージ(RLHF・コードブースター)では KL=0.05 で参照ポリシーに近い動きを維持します。
段階的カリキュラム
各ステージは単一の目標と固有の報酬シグナルを持つ独立した RL ランです。完了後、ポリシーを Hugging Face フォーマットでエクスポートし、次ステージのベースモデルとなります。
報酬タイプ:
| 報酬タイプ | 計測対象 | 使用ステージ |
|---|---|---|
| Verifiable(検証可能) | 完全一致・ユニットテスト・フォーマットチェッカー | RLVR・ブースター・SWE |
| 報酬モデル / LLM ジャッジ | 品質・選好・安全性 | RLVR・検索・RLHF |
| エージェントアウトカム | 実環境でのタスク解決 | SWE・ターミナル・検索 |
基盤RL:RLVR とスキルブースター
RLVR はパイプラインの基盤ステージで、以下の検証可能なドメインをカバーします。
- 数学:チェーン・オブ・ソートとボックス回答チェック、Lean での形式証明
- 競技コーディング:サンドボックス内での隠しテスト検証
- STEM・大学院レベル科学 MCQA・一般知識
- 指示追従:構造化出力と逆指示タスク
- ツール・関数呼び出し:シングルステップ
- 推論パズルと棄権(いつ拒否するかの判断)
RLVR は 3B・8B で2ラウンド、30B で3ラウンド実施されます。その後、スキルブースターで指示追従とコードの能力を集中的に強化します。
エージェントRL:実環境での行動学習(8B・30B)
エージェントRLステージでは、実環境でのツール呼び出し・結果観察・反復的な行動を学習します。ステージは SWE → ターミナル → 検索の順で実施します。
- SWE エージェント(ソフトウェアエンジニアリング):実リポジトリのサンドボックス内で、OpenHands ハーネスがコード読み込み・ファイル編集・テストスイート実行を担当。隠しテストのパスが報酬
- ターミナルエージェント(OS操作):Harbor / Terminus-2 ハーネス経由でのライブシェル操作。コマンド計画・出力観察・エラー回復を学習。GRPO レベルで最大64ターンのマルチターンエージェントループを駆動
- 検索エージェント(深い調査):ライブ Web 検索ツールを使ったマルチホップ質問応答。LLM ジャッジが最終回答の正確性を評価
アライメント:RLHF
最終ステージでは、人間の選好と安全性のための RLHF を実施します。生成型報酬モデル(GenRM)を使って選好を最適化し、ジェイルブレイク耐性と適切な拒否を含む安全性報酬も適用します。また、前のステージで獲得した過度に冗長な推論行動を抑制するための 推論長ペナルティ もこのステージで適用されます。
3サイズの違い
| ステージ | 3B | 8B | 30B |
|---|---|---|---|
| RLVR(検証可能) | ×2 | ×2 | ×3 |
| スキルブースター | code | IF・GPQA・code | IF・code |
| SWE エージェント | — | ✓ | ✓ |
| ターミナルエージェント | — | ✓ | ✓ |
| 検索エージェント | — | ✓ | ✓ |
| RLHF | ✓ | ✓ | ✓ |
エージェントAI インフラストラクチャ
Granite 4.2 の RL は2つのオープンコンポーネントで動作します。
- NeMo-RL(学習側):Megatron-Core を学習バックエンドとし、vLLM がロールアウトを生成。Megatron-Bridge が Megatron と Hugging Face フォーマット間の重み変換を担当
- NeMo-Gym(ロールアウト側):各環境を統一インターフェース(Resources)として公開。SWE リポジトリサンドボックス・ターミナルハーネス・Web 検索ツールがすべて同じインターフェースで接続
この分離により、生成とポリシー更新が別々の GPU プールで動作する非同期学習ループが実現し、高コストな生成フリートがオプティマイザーステップ中にアイドルになりません。学習インフラには NVIDIA GB200 NVL72 クラスター(CoreWeave ホスティング)を使用。72GPU NVLink ドメインと非ブロッキング Fat-Tree NDR 400 Gb/s InfiniBand ファブリックを備えます。
評価結果
| タスク | 3B Dense | 8B Dense | 30B Dense |
|---|---|---|---|
| エージェント(コーディング) | |||
| SWE-Bench Multilingual | NA | 30.78 | 41.89 |
| SWE-Bench Pro | NA | 19.11 | 33.29 |
| SWE-Bench Verified | NA | 47.67 | 57.00 |
| Terminal-Bench 2.1 | NA | 20.56 | 29.24 |
| エージェント(一般) | |||
| τ³-bench | 45.78 | 58.06 | 62.00 |
| BFCL (v4) | 52.41 | 50.29 | 61.39 |
| 推論 | |||
| AIME25 | 78.33 | 86.67 | 89.17 |
| HMMT Feb25 | 66.67 | 78.33 | 89.17 |
| GPQA | 54.80 | 64.14 | 66.41 |
| LiveCodeBench v6 | 69.71 | 73.24 | 75.77 |
| チャット・指示追従 | |||
| MMLU-Pro | 67.84 | 74.04 | 77.60 |
| Arena-Hard-V2 | 34.96 | 65.19 | 67.93 |
| 長文脈 | |||
| RULER 64K | 67.52 | 80.99 | 89.96 |
| RULER 128K | 55.30 | 71.41 | 81.38 |
対応言語:英語・ドイツ語・スペイン語・フランス語・日本語・ポルトガル語・アラビア語・チェコ語・イタリア語・韓国語・オランダ語・中国語。
量子化
vLLM による推論向けに4種類の量子化バリアントを提供します。
- FP8:動的なチャネルごと重みとトークンごとアクティベーション量子化(キャリブレーション不要)
- NVFP4・MXFP4:SFT データセットから2,000サンプルで GPTQ キャリブレーション。最大コンテキスト長2K
- GGUF:llama.cpp による変換。Q2_K〜Q8_0 まで多数のフォーマットを提供
クイックスタート(Transformers)
pip install torch accelerate transformers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "ibm-granite/granite-4.2-3b"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="cuda", torch_dtype=torch.bfloat16)
model.eval()
# Thinking モード
messages = [{"role": "user", "content": "How many r's are in the word 'strawberry'?"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
Non-Thinking モードは enable_thinking=False、Low-Effort モードは enable_thinking=True, low_effort=True で切り替えます。マルチターン会話では truncate_history_thinking=True で過去の思考部分を削除してコンテキストを節約できます。
ツール呼び出しは OpenAI function definition スキーマで定義し、推論とツール選択が統合されたフォーマットで出力されます。
主要なエージェントハーネスとの連携
| ハーネス | 特徴 | 設定ポイント |
|---|---|---|
| OpenCode | ターミナルで動作する AI コーディングエージェント | ~/.config/opencode/opencode.json で vLLM エンドポイントを指定 |
| Pi | 軽量なコーディングエージェント | ~/.pi/agent/models.json でカスタムプロバイダーを設定 |
| OpenHands | コード計画・記述・実行を行う AI ソフトウェアエンジニア | 設定画面でモデル名・Base URL・API Key を指定 |
いずれも vLLM サーバーを起動し、OpenAI 互換エンドポイントとして接続するだけで動作します。