powered by TechFeed
表示モード
Deep Dive

NetflixがLLMをレコメンドの本番ランカーに採用 — 学習データが約40倍少ない条件でも有意な改善、「prefill-only」推論とコンテキストエンジニアリングで実運用を成立させた設計

7月31日、Netflix Technology Blogが「GenRec: Towards LLM-Native Recommendation at Netflix」と題した記事を公開した。既存の本番ランカーと比べてPhase-2の学習データが約40倍少ない条件でも統計的に有意な改善を達成したこと、そして自己回帰デコードを一切行わない「prefill-onlyモード」という逆転の発想でLLM推論コストを現実的な水準に抑えたことが、このシステムの核心だ。LLMを推薦ランキングの本番システムとして実用化した事例は希少であり、その設計全体が公開されたことは業界的に注目に値する。

7月31日、Netflix Technology Blogが「GenRec: Towards LLM-Native Recommendation at Netflix」と題した記事を公開した。既存の本番ランカーと比べてPhase-2の学習データが約40倍少ない条件でも統計的に有意な改善を達成したこと、そして自己回帰デコードを一切行わない「prefill-onlyモード」という逆転の発想でLLM推論コストを現実的な水準に抑えたことが、このシステムの核心だ。LLMを推薦ランキングの本番システムとして実用化した事例は希少であり、その設計全体が公開されたことは業界的に注目に値する。


「特徴量エンジニアリング」から「コンテキストエンジニアリング」へ

Netflixの現行推薦システムは、ユーザー・コンテンツ・インタラクションにまたがる数千の手作り特徴量に依存している。映画・シリーズ・ゲーム・ライブ・ポッドキャストといった多様なコンテンツタイプや複数のUI面(サーフェス)に対応できるよう長年かけて進化してきた一方、新しいユースケースを追加するたびに特徴量エンジニアリング・アーキテクチャ変更・インフラ整備・実験というコストが発生する構造になっていた。

GenRecはこの課題にLLMで正面から向き合ったシステムだ。ユーザーの視聴履歴・コンテンツメタデータ・コンテキストを自然言語テキストとして直接LLMに入力し、ランキングスコアを出力させる。手作業で特徴量を設計するのではなく、LLMにセマンティック空間での表現を委ねる発想の転換である。

著者はこれを「feature engineeringからcontext engineeringへのシフト」と表現している。


2フェーズの学習パイプライン

GenRecの学習は2段階で構成される。

Phase 1では、オープンソースLLMをNetflix独自のコーパスでファインチューニングし、Netflixコンテンツ理解・ユーザー行動パターン・一般的な言語理解を持つ社内基盤モデルを構築する(元記事では具体的なモデル名は公開されていない)。更新頻度は低く、複数のアプリケーションで共有される。

Phase 2では、この基盤モデルをランキング特化でポストトレーニングする。具体的には以下の目的で最適化される:

  • ランキング品質の最適化
  • 複数の報酬シグナルによる重み付き損失(reward-weighted loss)
  • サービングコスト制約下での最適化
  • 新コンテンツや嗜好変化に追従するための高頻度更新

学習データはNetflixユーザーの視聴・再生・サムズアップ/ダウン・リスト追加・離脱などの大規模な行動ログを用いる。GenRecはこれらを「ユーザーとレコメンダーの会話」形式に変換して学習データとする構造が特徴だ。

  • ユーザーメッセージ:コンテキスト・プロフィール・履歴・アイテムメタデータ・タスク記述
  • アシスタントメッセージ:実際のエンゲージメント(再生タイトル・再生時間・フィードバック等)

推論時はアシスタントメッセージのデコードは行わず、カタログ対応スコアリングヘッドでアイテムをスコアリングする。会話フォーマットはあくまで学習中の言語モデリング目的に使われる。


コンテキストエンジニアリングの実装

すべてのインタラクションを単純にテキスト化すると、トークン予算を簡単に超過しNetflixのスケールでは現実的でない。そこでコンテキストウィンドウを「新たな特徴量予算」と位置づけ、以下のルールで圧縮する:

  • フル保持:高シグナルなエンゲージメント(長時間再生、サムズアップ等)
  • 省略:低シグナルなイベント(極短い再生、ホバー等)
  • 要約・圧縮:反復的な行動(連続視聴等)
  • 詳細展開:重要アイテムやコールドスタートアイテム(新作等)

また、プレフィックスキャッシングを最大化するようプロンプト構造を設計している点も、大規模サービングにおけるコスト削減として重要な工夫だ。


3つの損失関数による多目的最適化

GenRecの損失関数は以下の3つを組み合わせる:

  1. カタログ対応ランキング損失:高品質エンゲージメントを正例として、カタログ全体への交差エントロピー損失
  2. 言語モデリング損失:一般的な言語理解を保持し、推薦説明生成などの用途も維持
  3. 報酬重み付き損失:短期エンゲージメントだけでなく長期的な満足度・リテンションへの寄与を推定し、コンテンツタイプのバランス(ゲーム vs 映画、新作 vs 定番)も調整する

完全な強化学習手法であるGRPO(Group Relative Policy Optimization)と比べてシンプルで低コストでありながら、実用上十分なアライメント効果があるとしている。GRPOはグループ内の相対的な報酬を用いてポリシーを最適化する手法で、近年LLMのファインチューニングで注目されているが、GenRecでは追加改善が確認されているものの計算コストの観点から今後の課題と位置づけている。


サービング:prefill-onlyモードでコスト削減

GenRecはNetflixの社内LLMサービングスタック上でvLLMを使って提供される。大規模推論のコスト制御には3つの戦略を取る:

  • 小型・蒸留モデルの採用
  • コンテキストの積極的な圧縮
  • prefill-onlyモードでの推論:自己回帰デコードを一切行わず、プロンプトを1回処理して候補セット全体を1回のフォワードパスでスコアリング

特にprefill-onlyモードは本システムの核心的な工夫だ。通常のLLM推論はトークンを1つずつ生成する自己回帰デコードを行うが、推薦ランキングではスコアさえ得られればよく、テキスト生成は不要である。大規模カタログに対してトークン単位のデコードを行うと推論コストが許容できないレベルになるため、これをprefill(入力処理)フェーズのみで完結させることで現実的なレイテンシとコストを実現している。


実験結果

オフライン評価では、Phase-2の学習データが約40倍少ない条件でも、既存の本番ランカーと比較してMRR(Mean Reciprocal Rank)が**+1.6%改善**した。

オンラインでは、Netflixトラフィックの約10%を対象に約4週間のA/Bテストを実施。低データ・低シグナルの設定にもかかわらず、短期・長期両方のオンライン指標で統計的に有意な改善を達成した。

アブレーションでは、モデルサイズ(約1B〜約10Bパラメータ)・学習データ量・Phase-1の有無のいずれもが品質に貢献しており、スケーリングの余地が大きいことも示されている。


LLMを推薦システムの本番ランカーとして実用化した事例は数少なく、特に「prefill-onlyモードによるコスト制御」「報酬重み付きによるアライメント」「コンテキストエンジニアリングによるトークン管理」の三位一体の設計は、LLMベースの推薦を実運用で成立させるための実践的な知見として参考になる。

詳細はGenRec: Towards LLM-Native Recommendation at Netflixを参照していただきたい。