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]
Amazon Book Reviews
PixelRec
และ Amazon:PixelRec
และข้อมูลรายการจาก 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
หากต้องการฝึก HLLM บน PixelRec / Amazon Book Reviews คุณสามารถเรียกใช้คำสั่งต่อไปนี้
ตั้งค่า
master_addr
,master_port
,nproc_per_node
,nnodes
และnode_rank
ในตัวแปรสภาพแวดล้อมสำหรับการฝึกอบรม multinodes
ไฮเปอร์พารามิเตอร์ทั้งหมด (ยกเว้นการกำหนดค่าของโมเดล) สามารถพบได้ใน 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 และหนังสือ คุณสามารถเรียกใช้สคริปต์ในโฟลเดอร์ reproduce
คุณควรจะสามารถทำซ้ำผลลัพธ์ต่อไปนี้ได้
สำหรับโมเดลที่ใช้ ID เราจะปฏิบัติตามไฮเปอร์พารามิเตอร์จาก PixelRec และ HSTU
วิธี | ชุดข้อมูล | เชิงลบ | ร@10 | อาร์@50 | R@200 | น@10 | น@50 | N@200 |
---|---|---|---|---|---|---|---|---|
สสส | 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 |
เอชแอลเอ็ม-1บี | 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 |
เอชแอลเอ็ม-1บี | หนังสือ | 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 |
เอชแอลเอ็ม-1บี | หนังสือ | 28672 | 9.28 | 17.34 | 27.22 | 5.65 | 7.41 | 8.89 |
เอชแอลเอ็ม-7บี | หนังสือ | 28672 | 9.39 | 17.65 | 27.59 | 5.69 | 7.50 | 8.99 |
เรามีโมเดล HLLM ที่ได้รับการปรับแต่งอย่างละเอียดสำหรับการประเมิน คุณสามารถดาวน์โหลดได้จากลิงก์ต่อไปนี้หรือที่ Hugginface อย่าลืมใส่น้ำหนักไปที่ checkpoint_dir
แบบอย่าง | ชุดข้อมูล | ตุ้มน้ำหนัก |
---|---|---|
เอชแอลเอ็ม-1บี | Pixel8M | HLLM-1B-Pixel8M |
เอชแอลเอ็ม-1บี | หนังสือ | HLLM-1B-Books-neg512 |
เอชแอลเอ็ม-1บี | หนังสือ | HLLM-1B-หนังสือ |
เอชแอลเอ็ม-7บี | หนังสือ | 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 ตามลำดับ