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
互動和專案資訊並放入資料集和資訊資料夾中。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 的超參數。
方法 | 數據集 | 負面影響 | 電阻@10 | R@50 | 電阻@200 | N@10 | N@50 | N@200 |
---|---|---|---|---|---|---|---|---|
高速傳輸單元 | 像素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 模型進行評估,您可以從以下連結或 Hughginface 下載。請記得將權重放入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下發布。