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
상호 작용 및 항목 정보를 다운로드하고 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 | Pixel8M | 5632 | 4.83 | 10.30 | 18.28 | 2.75 | 3.94 | 5.13 |
SASRec | Pixel8M | 5632 | 5.08 | 10.62 | 18.64 | 2.92 | 4.12 | 5.32 |
HLLM-1B | Pixel8M | 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 모델을 제공합니다. 다음 링크나 Huginface에서 다운로드할 수 있습니다. checkpoint_dir
에 가중치를 두는 것을 기억하세요.
모델 | 데이터세트 | 가중치 |
---|---|---|
HLLM-1B | Pixel8M | 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에 따라 릴리스되며, 일부 코드는 각각 Apache License 2.0 및 MIT 라이센스에 따라 릴리스되는 HSTU 및 PixelRec에서 수정됩니다.