
«世有伯乐 , 然后有千里马。千里马常有 而伯乐不常有。» - 韩愈《马说》
Домашняя страница | Документы | Наборы данных | Бумага | Блоги | Модели | 中文版
Recbole разработан на основе Python и Pytorch для воспроизведения и разработки алгоритмов рекомендаций в единой, комплексной и эффективной основе для целей исследования. Наша библиотека включает в себя 91 алгоритмы рекомендаций, охватывающие четыре основные категории:
Мы разрабатываем унифицированный и гибкий формат файла данных и предоставляем поддержку 43 наборов данных по рекомендациям. Пользователь может применить предоставленный скрипт для обработки исходной копии данных или просто загрузить обработанные наборы данных нашей командой.

Рисунок : Recbole Общая архитектура
Чтобы поддержать изучение недавних достижений в Recustermender Systems, мы строим расширенную рекомендационную библиотеку Recbole2.0, состоящую из 8 пакетов для современных тем и архитектур (например, Debiased, справедливости и GNN).
Общая и расширяемая структура данных. Мы разрабатываем общие и расширяемые структуры данных для объединения форматирования и использования различных наборов данных рекомендаций.
Комплексные эталонные модели и наборы данных. Мы реализуем 78 обычно используемых алгоритмов рекомендаций и предоставляем форматированные копии 28 наборов данных рекомендаций.
Эффективное выполнение GPU. Мы оптимизируем эффективность нашей библиотеки с помощью ряда улучшенных методов, ориентированных на среду GPU.
Обширные и стандартные протоколы оценки. Мы поддерживаем серию широко принятых протоколов оценки или настроек для тестирования и сравнения алгоритмов рекомендаций.
01.11.2023 : мы выпускаем Recbole V1.2.0.
11/06/2022 : мы выпускаем оптимальные гиперпараметры модели и их диапазоны настройки.
10/05/2022 : мы отпускаем Recbole V1.1.1.
28.06.2022 : мы выпускаем recbole2.0 с 8 пакетами, состоящими из 65 вновь реализующих моделей .
25.02.2022 : мы отпускаем Recbole V1.0.1.
17.09.2021 : мы отпускаем Recbole V1.0.0.
22.03.2021 : мы отпускаем Recbole V0.2.1.
15.01.2021 : мы выпускаем Recbole V0.2.0.
10/10/2020 : 我们发布了 Recbole 小白入门系列中文博客 (持续更新中 持续更新中)。
12/06/2020 : мы выпускаем Recbole V0.1.2.
29.11.2020 : мы построили предварительные эксперименты для проверки времени и стоимости памяти на трех наборах данных различных размеров и предоставили результат теста для справки.
03.11.2020 : мы выпускаем первую версию Recbole v0.1.1 .
Чтобы лучше удовлетворить требования пользователя и внести свой вклад в исследовательское сообщество, мы представляем значительное обновление Recbole в последней версии, что делает его более удобным для пользователя и простым в использовании в качестве комплексной библиотеки эталона для рекомендаций. Мы суммируем эти обновления в « На пути к более удобной и простой в использовании контрольной библиотеке для систем рекомендаций » и отправляем статью в Sigir 2023 . Основной вклад в этом обновлении введен ниже.
Наши расширения сделаны в трех основных аспектах, а именно в моделях/наборах данных, структуре и конфигурациях. Кроме того, мы предоставляем более полную документацию и хорошо организованную часто задаваемые вопросы для использования нашей библиотеки, что в значительной степени улучшает пользовательский опыт. Более конкретно, основные моменты этого обновления обобщены как:
Мы вводим больше операций и настроек, чтобы помочь сравнить домен рекомендаций.
Мы улучшаем дружелюбие пользователя нашей библиотеки, предоставляя более подробную документацию и хорошо организованные часто задаваемые вопросы.
Мы указываем на несколько руководящих принципов разработки для разработчиков библиотеки с открытым исходным кодом.
Эти расширения значительно облегчают воспроизведение контрольных результатов и оставаться в курсе недавних достижений в области рекомендательных систем. Сравнение Datailed между этим обновлением и предыдущими версиями перечислено ниже.
| Аспект | Recbole 1.0 | Recbole 2.0 | Это обновление |
|---|---|---|---|
| Рекомендационные задачи | 4 категории | 3 темы и 5 пакетов | 4 категории |
| Модели и наборы данных | 73 модели и 28 наборов данных | 65 моделей и 8 новых наборов данных | 91 модели и 43 набора данных |
| Структура данных | Реализованный набор данных и DataLoader | Ориентирован на задачу | Совместимый модуль данных унаследован от Pytorch |
| Непрерывные особенности | Полевое встрадание | Полевое встрадание | Полевое встрадание и дискретизация |
| Ускоренная графическая деятельность | Использование одноразовых-гП | Использование одноразовых-гП | Мульти-GPU и смешанная точная тренировка |
| Гиперпараметная настройка | Поиск серийного градиента | Поиск серийного градиента | Три метода поиска в серийном и параллельном |
| Тест значимости | - | - | Доступный интерфейс |
| Контрольные результаты | - | Частично общедоступный (GNN и CDR) | Конфигурации эталона на 82 моделях |
| Дружелюбное использование | Документация | Документация | Улучшенная документация и страница часто задаваемых вопросов |
Recbole работает со следующими операционными системами:
Recbole требует Python версии 3.7 или более поздней версии.
Recbole требует версии факела 1.7.0 или более поздней версии. Если вы хотите использовать Recbole с помощью GPU, убедитесь, что версия CUDA или Cudatoolkit составляет 9,2 или более поздней версии. Это требует версии драйвера nvidia> = 396.26 (для Linux) или> = 397,44 (для Windows10).
conda install -c aibox recbolepip install recbolegit clone https://github.com/RUCAIBox/RecBole.git && cd RecBole
pip install -e . --verboseС исходным кодом вы можете использовать предоставленный скрипт для первоначального использования нашей библиотеки:
python run_recbole.pyЭтот скрипт будет запущен модель BPR в наборе данных ML-100K.
Как правило, этот пример занимает менее одной минуты. Мы получим некоторые выходные данные, например:
INFO ml-100k
The number of users: 944
Average actions of users: 106.04453870625663
The number of items: 1683
Average actions of items: 59.45303210463734
The number of inters: 100000
The sparsity of the dataset: 93.70575143257098%
INFO Evaluation Settings:
Group by user_id
Ordering: {'strategy': 'shuffle'}
Splitting: {'strategy': 'by_ratio', 'ratios': [0.8, 0.1, 0.1]}
Negative Sampling: {'strategy': 'full', 'distribution': 'uniform'}
INFO BPRMF(
(user_embedding): Embedding(944, 64)
(item_embedding): Embedding(1683, 64)
(loss): BPRLoss()
)
Trainable parameters: 168128
INFO epoch 0 training [time: 0.27s, train loss: 27.7231]
INFO epoch 0 evaluating [time: 0.12s, valid_score: 0.021900]
INFO valid result:
recall@10: 0.0073 mrr@10: 0.0219 ndcg@10: 0.0093 hit@10: 0.0795 precision@10: 0.0088
...
INFO epoch 63 training [time: 0.19s, train loss: 4.7660]
INFO epoch 63 evaluating [time: 0.08s, valid_score: 0.394500]
INFO valid result:
recall@10: 0.2156 mrr@10: 0.3945 ndcg@10: 0.2332 hit@10: 0.7593 precision@10: 0.1591
INFO Finished training, best eval result in epoch 52
INFO Loading model structure and parameters from saved/***.pth
INFO best valid result:
recall@10: 0.2169 mrr@10: 0.4005 ndcg@10: 0.235 hit@10: 0.7582 precision@10: 0.1598
INFO test result:
recall@10: 0.2368 mrr@10: 0.4519 ndcg@10: 0.2768 hit@10: 0.7614 precision@10: 0.1901
Если вы хотите изменить параметры, такие как learning_rate , embedding_size , просто установите дополнительные параметры команды по мере необходимости:
python run_recbole.py --learning_rate=0.0001 --embedding_size=128Если вы хотите изменить модели, просто запустите скрипт, установив дополнительные параметры команды:
python run_recbole.py --model=[model_name] Откройте RecBole/hyper.test и установите несколько гиперпараметров для автоматического поиска в списке параметров. Следующее имеет два способа поиска в лучшем гиперпараметре:
Вот пример для hyper.test :
learning_rate loguniform -8, 0
embedding_size choice [64, 96 , 128]
train_batch_size choice [512, 1024, 2048]
mlp_hidden_size choice ['[64, 64, 64]','[128, 128]']
Установите параметры команды обучения по мере необходимости запуска:
python run_hyper.py --model=[model_name] --dataset=[data_name] --config_files=xxxx.yaml --params_file=hyper.test
e.g.
python run_hyper.py --model=BPR --dataset=ml-100k --config_files=test.yaml --params_file=hyper.test
Обратите внимание, что --config_files=test.yaml является необязательным, если у вас нет настройки настройки конфигурации, этот параметр может быть пустым.
Эта обработка, возможно, потребуется много времени, чтобы вывести лучший гиперпараметт и результат:
running parameters:
{'embedding_size': 64, 'learning_rate': 0.005947474154838498, 'mlp_hidden_size': '[64,64,64]', 'train_batch_size': 512}
0%| | 0/18 [00:00<?, ?trial/s, best loss=?]
Более подробную информацию о настройке параметров можно найти в наших документах.
Мы построили предварительные эксперименты, чтобы проверить время и стоимость памяти на трех наборах данных различных размеров (маленький, средний и большой). Для получения подробной информации вы можете нажать на следующие ссылки.
Примечание. Наши результаты теста дали только приблизительное время и стоимость памяти наших реализаций в библиотеке Recbole (на основе нашего машинного сервера). Приглашаются любые отзывы или предложения о реализациях и тесте. Мы будем продолжать улучшать наши реализации и обновлять эти результаты теста.
| Выпуски | Дата |
|---|---|
| v1.2.0 | 01.11.2023 |
| v1.1.1 | 10/05/2022 |
| v1.0.0 | 17.09.2021 |
| v0.2.0 | 15.01.2021 |
| V0.1.1 | 11/03/2020 |
В качестве универсальной структуры от обработки данных, разработки модели, обучения алгоритму до научной оценки, Recbole имеет в общей сложности 11 связанных проектов GitHub, включая
В следующей таблице мы суммируем взносы с открытым исходным кодом в проектах GitHub на основе Recbole.
| Проекты | Звезда | Форк | Проблемы | Получить запросы |
|---|---|---|---|---|
| Recbole | ||||
| Recbole2.0 | ||||
| Recbole-da | ||||
| Recbole-Metarec | ||||
| Recbole-Debias | ||||
| Recbole-Fairrec | ||||
| Recbole-Cdr | ||||
| Recbole-gnn | ||||
| Recbole-Trm | ||||
| Recbole-PJF | ||||
| Recsysdatasets |
Пожалуйста, дайте нам знать, если вы столкнетесь с ошибкой или у вас есть какие -либо предложения, подав проблему.
Мы приветствуем все вклад от исправлений ошибок в новые функции и расширения.
Мы ожидаем, что все вклады, обсуждаемые в The The Change Tracker и пройдя PRS.
Мы благодарим проницательные предложения от @tszumowski, @rowedenny, @deklanw et.al.
Мы благодарим хорошие вклад через PRS от @Rowedenny , @deklanw et.al.
Если вы находите Recbole полезным для исследования или разработки, пожалуйста, укажите следующие документы: Recbole [1.0], Recbole [2.0] и Recbole [1.2.0].
@inproceedings { recbole[1.0] ,
author = { Wayne Xin Zhao and Shanlei Mu and Yupeng Hou and Zihan Lin and Yushuo Chen and Xingyu Pan and Kaiyuan Li and Yujie Lu and Hui Wang and Changxin Tian and Yingqian Min and Zhichao Feng and Xinyan Fan and Xu Chen and Pengfei Wang and Wendi Ji and Yaliang Li and Xiaoling Wang and Ji{-}Rong Wen } ,
title = { RecBole: Towards a Unified, Comprehensive and Efficient Framework for Recommendation Algorithms } ,
booktitle = { {CIKM} } ,
pages = { 4653--4664 } ,
publisher = { {ACM} } ,
year = { 2021 }
}
@inproceedings { recbole[2.0] ,
author = { Wayne Xin Zhao and Yupeng Hou and Xingyu Pan and Chen Yang and Zeyu Zhang and Zihan Lin and Jingsen Zhang and Shuqing Bian and Jiakai Tang and Wenqi Sun and Yushuo Chen and Lanling Xu and Gaowei Zhang and Zhen Tian and Changxin Tian and Shanlei Mu and Xinyan Fan and Xu Chen and Ji{-}Rong Wen } ,
title = { RecBole 2.0: Towards a More Up-to-Date Recommendation Library } ,
booktitle = { {CIKM} } ,
pages = { 4722--4726 } ,
publisher = { {ACM} } ,
year = { 2022 }
}
@inproceedings { recbole[1.2.0] ,
author = { Lanling Xu and Zhen Tian and Gaowei Zhang and Junjie Zhang and Lei Wang and Bowen Zheng and Yifan Li and Jiakai Tang and Zeyu Zhang and Yupeng Hou and Xingyu Pan and Wayne Xin Zhao and Xu Chen and Ji{-}Rong Wen } ,
title = { Towards a More User-Friendly and Easy-to-Use Benchmark Library for Recommender Systems } ,
booktitle = { {SIGIR} } ,
pages = { 2837--2847 } ,
publisher = { {ACM} } ,
year = { 2023 }
}Recbole разработан RUC, Bupt, ECNU и поддерживается RUC.
Вот список наших ведущих разработчиков на каждом этапе разработки. Это души Recbole и внесли выдающийся вклад.
| Время | Версия | Ведущие разработчики | Бумага |
|---|---|---|---|
| Июнь 2020 года ~ Ноябрь 2020 года | V0.1.1 | Shanlei Mu (@shanleimu), Юпенг Хоу (@hyp1231), Зихан Лин (@Linzihan-Backforward), Kaiyuan Li (@tsotfsk) | |
| Ноябрь 2020 года ~ Июль 2022 года | V0.1.2 ~ v1.0.1 | Yushuo Chen (@chenyushuo), Синью Пан (@2017pxy) | |
| Июль 2022 года ~ Ноябрь 2023 г. | v1.1.0 ~ v1.1.1 | Lanling Xu (@Sherry-xll), Zhen Tian (@chenyuwuxin), Gaowei Zhang (@wicknight), Лей Ван (@paitesanshi), Junjie Zhang (@leoleojie) | |
| Ноябрь 2023 г. ~ сейчас | v1.2.0 | Боуэн Чжэн (@zhengbw0324), Чен Ма (@yilu114) |
Recbole использует лицензию MIT. Все данные и код в этом проекте могут использоваться только в академических целях.
Этот проект был поддержан Национальным фондом естественных наук Китая (№ 61832017).