meta-recsys/generative-recommenders

Repository hosting code for "Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations" (https://arxiv.org/abs/2402.17152).

プロジェクトの内容

Generative Recommenders は、ICML 2024 の論文 Actions Speak Louder than Words: Trillion‑Parameter Sequential Transducers for Generative Recommendations のアイデアを実装した研究グレードのコードベースです。著者らは、古典的な深層学習レコメンデーションモデル(DLRM)を生成モデリング問題として再定義できることを示しています。これにより、特に HSTU(高速シーケンシャルトランスデューサー)と M‑FALCON という新しいトレーニングおよび推論アルゴリズムを導入し、大規模シーケンシャルレコメンデーションを劇的に高速化(10×‑1000× 高速)しながら精度を向上させます。

このリポジトリには以下が含まれます:

  • HSTU ファミリーとその上に構築された DLRM‑v3 のモデル定義とトレーニングスクリプト。
  • 公開データセット(MovieLens‑1M、MovieLens‑20M、Amazon Books)で実験を再現するための設定ファイル(Gin)。
  • フラクタル展開による合成 30 億レーティングデータセットを生成するユーティリティ。
  • 超高速アテンションと FP8 行列乗算のための高度に最適化された CUDA/Triton カーネル(FlashAttention‑V3 ベース)、および NVIDIA H100 GPU での高速化を報告するベンチマーク。
  • マルチ GPU セットアップでのトレーニングと推論のためのエンドツーエンドスクリプト。

要するに、最先端の生成レコメンダーモデルを大規模にトレーニング、評価、ベンチマークできる完全な研究実装です。


始め方

  1. 依存関係をインストール – 最も簡単な方法は pip3 install -r requirements.txt です。README には、Ubuntu 22.04、CUDA 12.4、Python 3.10 でテスト済みと記載されています。手動インストールを希望する場合は、PyTorch に加えて gin-config、pandas、fbgemm_gpu、torchrec、tensorboard が必要です。
  2. データを準備 – python3 preprocess_public_data.py を実行すると、tmp/ フォルダが作成され、MovieLens / Amazon データがダウンロードされます。
  3. 実験を実行 – Gin 設定ファイル(例:configs/ml-1m/hstu-sampled-softmax-n128-large-final.gin)を選択して起動します:
    CUDA_VISIBLE_DEVICES=0 python3 main.py \
        --gin_config_file=configs/ml-1m/hstu-sampled-softmax-n128-large-final.gin \
        --master_port=12345
    
    ログは exps/ に書き込まれます。TensorBoard で可視化できます。
  4. カーネルをベンチマーク – 低レベルのパフォーマンステストには、提供されているベンチマークモジュールを実行します。例:
    python3 -m generative_recommenders.ops.benchmarks.hstu_ultra_stack_bench \
        --config-name hstu_ultra_semi_local --provider all --sequence-lengths 512
    
  5. スケールアップ – リポジトリには、合成 30 億レーティングデータセットを生成するスクリプト(run_fractal_expansion.py)と、DLRM‑v3 モデルを 4 GPU でトレーニング/推論するスクリプトが含まれています。

誰にとって有用か

対象 重要性
レコメンダーシステムまたは大規模生成モデルの学術研究者 完全な再現可能なパイプライン、最先端の結果、および新しいアルゴリズムの貢献(HSTU、M‑FALCON)。
本番レコメンダーサービスを構築するエンジニア 最適化された CUDA/Triton カーネル、FP8 サポート、実際のワークロードに適応できるマルチ GPU トレーニングスクリプト。
パフォーマンスエンジニア / ハードウェアアーキテクト H100 GPU での詳細なベンチマーク、FlashAttention‑V3 ベースのカーネル、高速化の可能性を測定するための FP8 量子化パス。
シーケンシャルレコメンデーションを学ぶ学生 理論(論文)と実践を橋渡しするエンドツーエンドのサンプルコード(データ前処理、モデル設定、トレーニングループ)。

制限 / 未解決の課題

  • ハードウェア負荷が高い – 最速のカーネルにはハイエンド GPU(例:H100、24 GB HBM 以上)が必要です。一般的なハードウェアでフルスケールの実験を実行するのは遅いか不可能です。
  • 合成データへの依存 – 30 億レーティングデータセットはフラクタル展開で生成されており、実世界の分布のニュアンスを反映していない可能性があります。
  • 研究グレードのコード – リポジトリは機能しますが、本番ライブラリのような洗練さ(広範なテスト、CI、簡単な pip インストール可能なパッケージなど)が欠けています。
  • シーケンシャルレコメンデーションに限定 – 生成定式化は次項目予測に対してのみ実証されています。他のレコメンデーションタスク(例:マルチモーダル、グラフベース)への拡張には追加の作業が必要です。

より広い AI エコシステムへの適合

Generative Recommenders は、大規模言語スタイルの生成モデリングと産業用レコメンダーシステムの交差点に位置します。レコメンデーションをシーケンス間生成問題として扱うことで、このプロジェクトは transformer/LLM の世界からの進歩(例:サンプリングソフトマックス、FP8 量子化、FlashAttention)を活用し、レコメンデーションのスループットとモデルサイズの限界を押し広げます。これは、もともと NLP のために開発された技術(大パラメータ生成モデル、効率的なアテンションカーネル)が、レコメンデーション、検索、さらにはロボティクスなどの他の領域に転用されるという広範なトレンドを反映しています。この研究はまた、レコメンダーシステムの計算スケーリング則に関する進行中の議論に貢献し、適切なアルゴリズムとシステムの工夫があれば、兆パラメータモデルを効率的にトレーニングおよびサービス提供できることを示しています。


クイックリファレンス(最もよく使うコマンド)

# インストール
pip3 install -r requirements.txt

# 公開データの前処理
mkdir -p tmp/ && python3 preprocess_public_data.py

# MovieLens‑1M で HSTU をトレーニング(シングル GPU)
CUDA_VISIBLE_DEVICES=0 \
python3 main.py \
  --gin_config_file=configs/ml-1m/hstu-sampled-softmax-n128-large-final.gin \
  --master_port=12345

# 結果の可視化
tensorboard --logdir ~/generative-recommenders/exps/ml-1m-l200/ --port 24001

# 超高速アテンションのベンチマーク(H100)
python3 -m generative_recommenders.ops.benchmarks.hstu_ultra_stack_bench \
  --config-name hstu_ultra_semi_local --provider all --sequence-lengths 512

ライセンス

Apache 2.0 – 商用および学術利用は無料です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト