
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に達しました。

図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 アダプターを次の段階に選びました。

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




