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
Interactions и Item Information из 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
в переменных среды для обучения нескольких узлов.
Все гиперпараметры (кроме конфигурации модели) можно найти в 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 для экономии памяти.
Вы также можете обучать модели на основе идентификаторов с помощью следующей команды.
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 | Р@50 | Р@200 | Н@10 | Н@50 | Н@200 |
---|---|---|---|---|---|---|---|---|
ГГТУ | Пиксель8М | 5632 | 4,83 | 10.30 | 18.28 | 2,75 | 3,94 | 5.13 |
SASRec | Пиксель8М | 5632 | 5.08 | 10.62 | 18.64 | 2,92 | 4.12 | 5.32 |
ХЛЛМ-1Б | Пиксель8М | 5632 | 6.13 | 12.48 | 21.18 | 3.54 | 4,92 | 6.22 |
ГГТУ-большой | Книги | 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 |
ГГТУ-большой | Книги | 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 |
HLLM-7B | Книги | 28672 | 9.39 | 17.65 | 27.59 | 5,69 | 7.50 | 8,99 |
Мы предоставляем для оценки доработанные модели HLLM, которые вы можете скачать по следующим ссылкам или на Hugginface. Не забудьте указать веса в checkpoint_dir
.
Модель | Набор данных | Веса |
---|---|---|
ХЛЛМ-1Б | Пиксель8М | HLLM-1B-Pixel8M |
ХЛЛМ-1Б | Книги | HLLM-1B-Books-neg512 |
ХЛЛМ-1Б | Книги | 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 соответственно.