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
ومعلومات العنصر، وقم بمعالجتها بواسطة 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
في متغيرات البيئة للتدريب على العقد المتعددة.
يمكن العثور على جميع المعلمات الفائقة (باستثناء تكوين النموذج) في الكود/REC/utils/argument_list.py وتمريرها عبر سطر الأوامر. المزيد من المعلمات الفائقة للنموذج موجودة في
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 لحفظ الذاكرة.
يمكنك أيضًا تدريب النماذج المستندة إلى المعرف عن طريق الأمر التالي.
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
. يجب أن تكون قادرًا على إعادة إنتاج النتائج التالية.
بالنسبة للنماذج المعتمدة على المعرف، فإننا نتبع المعلمات الفائقة من PixelRec وHSTU.
طريقة | مجموعة البيانات | السلبيات | ص @ 10 | ص @ 50 | ص @ 200 | ن @ 10 | ن @ 50 | ن @ 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 |
هلم-1ب | بكسل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 |
هلم-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 دقيقة للتقييم، يمكنك تنزيلها من الروابط التالية أو عناق الوجه. تذكر وضع الأوزان على checkpoint_dir
.
نموذج | مجموعة البيانات | الأوزان |
---|---|---|
هلم-1ب | بكسل8M | HLLM-1B-Pixel8M |
هلم-1ب | كتب | HLLM-1B-كتب-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 2.0، وتم تعديل بعض الرموز من HSTU وPixelRec، والتي تم إصدارها بموجب ترخيص Apache 2.0 وترخيص MIT، على التوالي.