pip3 install -r requirements.txt
を介してパッケージをインストールします。いくつかの基本的なパッケージを以下に示します。 pytorch==2.1.0
deepspeed==0.14.2
transformers==4.41.1
lightning==2.4.0
flash-attn==2.5.9post1
fbgemm-gpu==0.5.0 [optional for HSTU]
sentencepiece==0.2.0 [optional for Baichuan2]
PixelRec
とAmazon Book Reviews
データセットを準備します。PixelRec
インタラクションとアイテム情報を PixelRec からダウンロードし、データセットと情報フォルダーに置きます。Amazon Book Reviews
Interactions とItem Information をダウンロードし、 process_books.py
で処理し、データセットと情報フォルダーに配置します。加工後の書籍のインタラクションやアイテム情報も提供します。├── dataset # Store Interactions
│ ├── amazon_books.csv
│ ├── Pixel1M.csv
│ ├── Pixel200K.csv
│ └── Pixel8M.csv
└── information # Store Item Information
├── amazon_books.csv
├── Pixel1M.csv
├── Pixel200K.csv
└── Pixel8M.csv
PixelRec / Amazon Book Reviews で HLLM をトレーニングするには、次のコマンドを実行できます。
マルチノードトレーニング用の環境変数に
master_addr
、master_port
、nproc_per_node
、nnodes
、およびnode_rank
を設定します。
すべてのハイパーパラメータ (モデルの構成を除く) は code/REC/utils/argument_list.py にあり、CLI を通じて渡されます。他のモデルのハイパーパラメータは
IDNet/*
またはHLLM/*
にあります。
# Item and User LLM are initialized by specific pretrain_dir.
python3 main . py
- - config_file overall / LLM_deepspeed . yaml HLLM / HLLM . yaml # We use deepspeed for training by default.
- - loss nce
- - epochs 5
- - dataset { Pixel200K / Pixel1M / Pixel8M / amazon_books }
- - train_batch_size 16
- - MAX_TEXT_LENGTH 256
- - MAX_ITEM_LIST_LENGTH 10
- - checkpoint_dir saved_path
- - optim_args . learning_rate 1e-4
- - item_pretrain_dir item_pretrain_dir # Set to LLM dir.
- - user_pretrain_dir user_pretrain_dir # Set to LLM dir.
- - text_path text_path # Use absolute path to text files.
- - text_keys '[ " title " , " tag " , " description " ]' # Please remove tag in books dataset.
--gradient_checkpointing True
および--stage 3
deepspeed とともに使用すると、メモリを節約できます。
次のコマンドを使用して、ID ベースのモデルをトレーニングすることもできます。
python3 main . py
- - config_file overall / ID . yaml IDNet / { hstu / sasrec / llama_id }. yaml
- - loss nce
- - epochs 201
- - dataset { Pixel200K / Pixel1M / Pixel8M / amazon_books }
- - train_batch_size 64
- - MAX_ITEM_LIST_LENGTH 10
- - optim_args . learning_rate 1e-4
Pixel8M と Books で実験を再現するには、 reproduce
フォルダーでスクリプトを実行します。次の結果を再現できるはずです。
ID ベースのモデルの場合、PixelRec および HSTU のハイパーパラメーターに従います。
方法 | データセット | ネガティブ | R@10 | R@50 | R@200 | N@10 | N@50 | N@200 |
---|---|---|---|---|---|---|---|---|
HSTU | ピクセル8M | 5632 | 4.83 | 10.30 | 18.28 | 2.75 | 3.94 | 5.13 |
SASRec | ピクセル8M | 5632 | 5.08 | 10.62 | 18.64 | 2.92 | 4.12 | 5.32 |
HLLM-1B | ピクセル8M | 5632 | 6.13 | 12.48 | 21.18 | 3.54 | 4.92 | 6.22 |
HSTU-大 | 本 | 512 | 5.00 | 11.29 | 20.13 | 2.78 | 4.14 | 5.47 |
SASRec | 本 | 512 | 5.35 | 11.91 | 21.02 | 2.98 | 4.40 | 5.76 |
HLLM-1B | 本 | 512 | 6.97 | 14.61 | 24.78 | 3.98 | 5.64 | 7.16 |
HSTU-大 | 本 | 28672 | 6.50 | 12.22 | 19.93 | 4.04 | 5.28 | 6.44 |
HLLM-1B | 本 | 28672 | 9.28 | 17.34 | 27.22 | 5.65 | 7.41 | 8.89 |
HLLM-7B | 本 | 28672 | 9.39 | 17.65 | 27.59 | 5.69 | 7.50 | 8.99 |
当社は評価用に微調整された HLLM モデルを提供しています。次のリンクまたは ハギンフェイスからダウンロードできます。重みをcheckpoint_dir
に設定することを忘れないでください。
モデル | データセット | 重み |
---|---|---|
HLLM-1B | ピクセル8M | HLLM-1B-Pixel8M |
HLLM-1B | 本 | HLLM-1B-書籍-neg512 |
HLLM-1B | 本 | HLLM-1B-書籍 |
HLLM-7B | 本 | HLLM-7B-書籍 |
対応するウェイトを使用する場合は、TinyLlama-1.1B および Baichuan2-7B のそれぞれのライセンスに準拠していることを確認してください。
次に、次のコマンドでモデルを評価できます (トレーニングと同じですが、val_only)。
python3 main . py
- - config_file overall / LLM_deepspeed . yaml HLLM / HLLM . yaml # We use deepspeed for training by default.
- - loss nce
- - epochs 5
- - dataset { Pixel200K / Pixel1M / Pixel8M / amazon_books }
- - train_batch_size 16
- - MAX_TEXT_LENGTH 256
- - MAX_ITEM_LIST_LENGTH 10
- - checkpoint_dir saved_path
- - optim_args . learning_rate 1e-4
- - item_pretrain_dir item_pretrain_dir # Set to LLM dir.
- - user_pretrain_dir user_pretrain_dir # Set to LLM dir.
- - text_path text_path # Use absolute path to text files.
- - text_keys '[ " title " , " tag " , " description " ]' # Please remove tag in books dataset.
- - val_only True # Add this for evaluation
私たちの仕事があなたの仕事に役立った場合は、お気軽にスター ⭐ を付けるか、次の方法で引用してください。
@article{HLLM,
title={HLLM: Enhancing Sequential Recommendations via Hierarchical Large Language Models for Item and User Modeling},
author={Junyi Chen and Lu Chi and Bingyue Peng and Zehuan Yuan},
journal={arXiv preprint arXiv:2409.12740},
year={2024}
}
優れたコード リポジトリ RecBole、VisRec、PixelRec、HSTU に感謝します。 HLLM は Apache License 2.0 に基づいてリリースされており、一部のコードは HSTU と PixelRec から変更されており、それぞれ Apache License 2.0 と MIT License に基づいてリリースされています。