NVIDIA Nemotron 3.5 Lightning にコードレビューのルーティングを教える

by
Henry Lau
Juan Pablo Flores

Henry Lau

Juan Pablo Flores

August 11, 2026

6 min read

Cover image

CodeRabbit のすべてのレビューは、まずルーティング判断から始まります。私たちのシステムはコード変更を評価し、モデルの出力をレビュー設定に変換します。ルーティングは CodeRabbit で最も実行回数の多いモデルタスクのひとつなので、より小さなモデルがレビュー工程の実際の一部を担えるかを試すのに適した対象でした。

NVIDIA Nemotron 3.5 Lightning はコード関連の応答が優れており、さらに小規模なインフラでも効率よく動かせるサイズだったため、候補として目立っていました。私たちは、ポストトレーニングによって CodeRabbit のルーティングルールを学習させられるかを検証したいと考えました。

そのために、CodeRabbit は NVIDIA と Baseten と協力し、2段階のポストトレーニングを実施しました。

  • 正しいルーティング判断の例を使った教師ありファインチューニング(SFT)。
  • CodeRabbit のルーティングポリシーで各回答を採点する、検証可能な報酬による強化学習(RLVR)。

このプロジェクトでは、NVIDIA Nemotron 3.5 Lightning モデルと、NVIDIA NeMo AutoModel および NVIDIA NeMo RL を含むポストトレーニングフレームワーク、Baseten のマネージド H100 Training Jobs と A100 Dedicated Inference、そして CodeRabbit のコードレビュー用データと評価基盤を組み合わせました。

結果

  • Nemotron 3.5 Lightning のポストトレーニングは非常に容易で、実験にかかった時間は3時間未満、コストは100ドル未満でした。
  • ポストトレーニング後のモデルは、従来の GPT クラスのモデルよりも約4%高い精度を達成しました。
  • 推定推論コストも約50%削減しました。

固定された1,000タスクの評価では、正確なルート一致率が GPT ベースラインモデルの75.8%から、SFT 後に80.4%、SFT と RLVR 後に80.7%へ向上しました。Cohen の kappa で測定した出力一致度は、SFT 後の0.461から0.544に達しました。

候補モデルがコード変更に複雑度タグを付与し、CodeRabbit のスコアラーがそのタグをレビュー設定に変換する流れを示す図。

図1. 各候補モデルがコード変更に複雑度タグを付与し、CodeRabbit のスコアラーがそのタグをレビュー設定に変換します。

実験

まず、公開リポジトリから39,566件の例を用意しました。学習データと評価データの漏れを防ぐため、リポジトリ単位でデータを分割しました。フィルタリングと厳密なトークナイザー確認を行った後、主要な SFT セットは9,996件、固定評価データセットは1,000件になりました。

学習例の作成には知識蒸留を使いました。より強力なモデルが、それぞれのコード変更に対する参照ルーティング判断を生成しました。その出力をフィルタリングし、残った例を使って NVIDIA Nemotron 3.5 Lightning に CodeRabbit のレビューのルーティング方法を学習させました。

ステージ1: 蒸留による教師ありファインチューニング

最初に教師ありファインチューニングを行いました。Baseten のマネージド NVIDIA H100 Training Jobs 上で、PyTorch ネイティブのオープントレーニングライブラリである NVIDIA NeMo AutoModel を使い、rank-8 の軽量 LoRA アダプターを1エポック学習しました。3つの学習率を試したところ、2e-4 の実行が5つすべてのチェックポイントで最も低い検証損失を記録したため、その step-1,249 アダプターを次の段階に選びました。

3つの学習率における教師ありファインチューニング中の学習損失と検証損失を示す折れ線グラフ。

グラフ1. 教師ありファインチューニング中の学習損失と検証損失。低いほど良好です。

固定された1,000タスクの評価では、教師ありファインチューニングによって正確なルート一致率が75.8%から80.4%に向上しました。Cohen の kappa で測定した出力一致度は0.429から0.461に上がりました。これが、報酬学習に進めるチェックポイントになりました。

教師ありチェックポイントを選択した後、最も難しい例での判断を改善するため、報酬学習へ進みました。

ステージ2: 検証可能な報酬による判断の改善

Baseten インフラ上の NVIDIA H100 GPU で効率的なポストトレーニングを行うため、NVIDIA NeMo RL オープンライブラリを使いました。ステージ1の LoRA をベースモデルの重みにマージしたうえで、ステージ1の調整済み出力に GRPO による RLVR を適用しました。910個の選択済みプロンプトで学習し、25ステップごとに評価し、検証結果が頭打ちになったところで停止しました。

結果

Cohen の kappa は偶然を超えた一致度を測る指標で、高いほど良好です。ここでは、モデルの出力が参照出力にどれだけ近いかを示します。

SFT のみと比べると、SFT と RLVR は kappa を +0.0835、ルート一致率を +0.3 パーセントポイント改善しました。ルート差分の対応信頼区間はゼロをまたいだため、このルート結果は統計的に決定的な改善ではなく、非劣化として扱っています。RLVR のより明確な成果は、出力一致度の向上です。

候補出力一致度(Cohen の kappa)正確なルート一致率
ベースラインモデル0.42975.8%
Nemotron 3.5 Lightning + SFT0.46180.4%
Nemotron 3.5 Lightning + SFT + RLVR0.54480.7%

最終モデルは1,000件すべてのリクエストを完了し、空の出力や異常に短い出力はありませんでした。これは明らかな崩壊がないことを示していますが、継続負荷や本番トラフィックでの確認は次の段階に残しています。

NVIDIA A100 システムでの推論

Nemotron 3.5 Lightning の利点のひとつはコンパクトなサイズで、H100 ではなく NVIDIA A100 システムでもホストできることです。

サービングでは、Baseten Dedicated Inference が、SFT と RLVR を組み合わせた最終出力を、元の NVIDIA Nemotron 3.5 Lightning モデル上の rank-16 LoRA として読み込みました。最終ポリシーは、1基の 80 GiB A100 上で vLLM を通じて実行されました。

測定されたスループットは、8つの同時リクエストで合計314.82出力トークン/秒でした。

ピーク時のサービングコスト

同じ評価ワークロードについて、OpenAI モデルとチューニング済みモデルの推論コストを比較しました。

  • OpenAI の公開価格では、総コストは2.34ドルでした。
  • Baseten の公開リソース表では、NVIDIA A100 1基は1分あたり0.06667ドルです。測定されたピーク合計レートでは、総コストは1.16ドルになりました。
  • 推定削減額は1.18ドル、つまり50.4%でした。

このチューニング済みモデルは、このタスクにおいてベースラインモデルよりも出力トークン数を63.4%少なく生成しました。

同じ1,000タスクについて、GPT ベースラインが2.34ドル、Baseten A100 上の Nemotron が1.16ドルであることを比較する棒グラフ。

同じ1,000タスクのピークサービングコスト。飽和スループット時に50.4%の潜在的削減を示しています。

まとめ

この実験により、NVIDIA Nemotron 3.5 Lightning はファインチューニングにうまく応答することがわかりました。SFT は明確な品質向上をもたらし、RLVR はルート精度を維持しながら出力一致度を改善しました。NVIDIA の Nemotron 3.5 Lightning モデルとトレーニングスタック、Baseten のマネージドトレーニングおよびサービングインフラを組み合わせることで、実験全体を現実的に進めることができました。この結果により、Lightning は CodeRabbit のパイプライン内にある、狭く高頻度な他の処理にも有力な候補となりました。私たちは NVIDIA および Baseten とともに、こうした機会をさらに探っていくことを楽しみにしています。