{"id":15035968,"url":"https://github.com/rucaibox/recbole","last_synced_at":"2025-05-15T00:00:29.143Z","repository":{"id":37239456,"uuid":"271579390","full_name":"RUCAIBox/RecBole","owner":"RUCAIBox","description":"A unified, comprehensive and efficient recommendation library","archived":false,"fork":false,"pushed_at":"2025-02-24T07:16:41.000Z","size":19845,"stargazers_count":3736,"open_issues_count":329,"forks_count":659,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-05-07T23:30:51.369Z","etag":null,"topics":["collaborative-filtering","ctr-prediction","deep-learning","graph-neural-networks","knowledge-graph","pytorch","recommendation-system","recommendations","recommender","recommender-systems","sequential-recommendation"],"latest_commit_sha":null,"homepage":"https://recbole.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RUCAIBox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-11T15:18:11.000Z","updated_at":"2025-05-07T13:00:06.000Z","dependencies_parsed_at":"2024-06-18T15:28:32.500Z","dependency_job_id":"db77a96a-18d7-4fe8-ac95-fc4e977b9bd9","html_url":"https://github.com/RUCAIBox/RecBole","commit_stats":{"total_commits":2437,"total_committers":76,"mean_commits":32.06578947368421,"dds":0.8448912597455889,"last_synced_commit":"27cb949231562582f4e5df8689c74e0e54e31473"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUCAIBox%2FRecBole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUCAIBox%2FRecBole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUCAIBox%2FRecBole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RUCAIBox%2FRecBole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RUCAIBox","download_url":"https://codeload.github.com/RUCAIBox/RecBole/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249199,"owners_count":22039029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaborative-filtering","ctr-prediction","deep-learning","graph-neural-networks","knowledge-graph","pytorch","recommendation-system","recommendations","recommender","recommender-systems","sequential-recommendation"],"created_at":"2024-09-24T20:29:51.168Z","updated_at":"2025-05-15T00:00:29.075Z","avatar_url":"https://github.com/RUCAIBox.png","language":"Python","readme":"![RecBole Logo](asset/logo.png)\r\n\r\n--------------------------------------------------------------------------------\r\n\r\n# RecBole (伯乐)\r\n\r\n*“世有伯乐，然后有千里马。千里马常有，而伯乐不常有。”——韩愈《马说》*\r\n\r\n[![PyPi Latest Release](https://img.shields.io/pypi/v/recbole)](https://pypi.org/project/recbole/)\r\n[![Conda Latest Release](https://anaconda.org/aibox/recbole/badges/version.svg)](https://anaconda.org/aibox/recbole)\r\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\r\n[![arXiv](https://img.shields.io/badge/arXiv-RecBole-%23B21B1B)](https://arxiv.org/abs/2011.01731)\r\n\r\n\r\n[HomePage] | [Docs] | [Datasets] | [Paper] | [Blogs] | [Models] | [中文版]\r\n\r\n[HomePage]: https://recbole.io/\r\n[Docs]: https://recbole.io/docs/\r\n[Datasets]: https://github.com/RUCAIBox/RecDatasets\r\n[Paper]: https://arxiv.org/abs/2011.01731\r\n[Blogs]: https://blog.csdn.net/Turinger_2000/article/details/111182852\r\n[Models]: https://github.com/RUCAIBox/RecBole2.0/blob/main/model_list.md\r\n[中文版]: README_CN.md\r\n\r\nRecBole is developed based on Python and PyTorch for reproducing and developing recommendation algorithms in a unified,\r\ncomprehensive and efficient framework for research purpose.\r\nOur library includes 94 recommendation algorithms, covering four major categories:\r\n\r\n+ General Recommendation\r\n+ Sequential Recommendation\r\n+ Context-aware Recommendation\r\n+ Knowledge-based Recommendation\r\n\r\nWe design a unified and flexible data file format, and provide the support for 44 benchmark recommendation datasets.\r\nA user can apply the provided script to process the original data copy, or simply download the processed datasets\r\nby our team.\r\n\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"asset/framework.png\" alt=\"RecBole v0.1 architecture\" width=\"600\"\u003e\r\n  \u003cbr\u003e\r\n  \u003cb\u003eFigure\u003c/b\u003e: RecBole Overall Architecture\r\n\u003c/p\u003e\r\n\r\nIn order to support the study of recent advances in recommender systems, we construct an extended recommendation library [RecBole2.0](https://github.com/RUCAIBox/RecBole2.0) consisting of 8 packages for up-to-date topics and architectures (e.g., debiased, fairness and GNNs). \r\n\r\n## Feature\r\n+ **General and extensible data structure.** We design general and extensible data structures to unify the formatting and\r\nusage of various recommendation datasets.\r\n\r\n+ **Comprehensive benchmark models and datasets.** We implement 94 commonly used recommendation algorithms, and provide\r\nthe formatted copies of 44 recommendation datasets.\r\n\r\n+ **Efficient GPU-accelerated execution.** We optimize the efficiency of our library with a number of improved techniques\r\noriented to the GPU environment.\r\n\r\n+ **Extensive and standard evaluation protocols.** We support a series of widely adopted evaluation protocols or settings\r\nfor testing and comparing recommendation algorithms.\r\n\r\n\r\n## RecBole News\r\n![new](/asset/new.gif) **02/23/2025**: We release RecBole [v1.2.1](https://github.com/RUCAIBox/RecBole/releases/tag/v1.2.1).\r\n\r\n![new](/asset/new.gif) **11/01/2023**: We release RecBole [v1.2.0](https://github.com/RUCAIBox/RecBole/releases/tag/v1.2.0).\r\n\r\n**11/06/2022**: We release [the optimal hyperparameters of the model and their tuning ranges](https://recbole.io/hyperparameters/index.html).\r\n\r\n**10/05/2022**: We release RecBole [v1.1.1](https://github.com/RUCAIBox/RecBole/releases/tag/v1.1.1).\r\n\r\n**06/28/2022**: We release [**RecBole2.0**](https://github.com/RUCAIBox/RecBole2.0) with **8 packages** consisting of **65 newly implement models**. \r\n\r\n**02/25/2022**: We release RecBole [v1.0.1](https://github.com/RUCAIBox/RecBole/releases/tag/v1.0.1).\r\n\r\n**09/17/2021**: We release RecBole [v1.0.0](https://github.com/RUCAIBox/RecBole/releases/tag/v1.0.0).\r\n\r\n**03/22/2021**: We release RecBole [v0.2.1](https://github.com/RUCAIBox/RecBole/releases/tag/v0.2.1).\r\n\r\n**01/15/2021**: We release RecBole [v0.2.0](https://github.com/RUCAIBox/RecBole/releases/tag/v0.2.0).\r\n\r\n**12/10/2020**: 我们发布了[RecBole小白入门系列中文博客（持续更新中）](https://blog.csdn.net/Turinger_2000/article/details/111182852) 。\r\n\r\n**12/06/2020**: We release RecBole [v0.1.2](https://github.com/RUCAIBox/RecBole/releases/tag/v0.1.2).\r\n\r\n**11/29/2020**: We constructed preliminary experiments to test the time and memory cost on three\r\ndifferent-sized datasets and provided the [test result](https://github.com/RUCAIBox/RecBole#time-and-memory-costs)\r\nfor reference.\r\n\r\n**11/03/2020**: We release the first version of RecBole **v0.1.1**.\r\n\r\n### Latest Update for SIGIR 2023 Submission\r\n\r\nTo better meet the user requirements and contribute to the research community, we present a significant update of RecBole in the latest version, making it more user-friendly and easy-to-use as a comprehensive benchmark library for recommendation. We summarize these updates in \"**Towards a More User-Friendly and Easy-to-Use Benchmark Library for Recommender Systems**\" and submit the paper to **SIGIR 2023**. The main contribution in this update is introduced below.\r\n\r\nOur extensions are made in three major aspects, namely the models/datasets, the framework, and the configurations. Furthermore, we provide more comprehensive documentation and well-organized FAQ for the usage of our library, which largely improves the user experience. More specifically, the highlights of this update are summarized as: \r\n\r\n1. We introduce more operations and settings to help benchmarking the recommendation domain.\r\n\r\n2. We improve the user friendliness of our library by providing more detailed documentation and well-organized frequently asked questions. \r\n3. We point out several development guidelines for the open-source library developers. \r\n\r\nThese extensions make it much easier to reproduce the benchmark results and stay up-to-date with the recent advances on recommender systems. The datailed comparison between this update and previous versions is listed below.\r\n\r\n|          Aspect           |            RecBole 1.0             |          RecBole 2.0           |                   This update                    |\r\n| :-----------------------: | :--------------------------------: | :----------------------------: | :----------------------------------------------: |\r\n|   Recommendation tasks    |            4 categories            |    3 topics and 5 packages     |                   4 categories                   |\r\n|    Models and datasets    |     73 models and 28 datasets      |  65 models and 8 new datasets  |            94 models and 43 datasets             |\r\n|      Data structure       | Implemented Dataset and Dataloader |         Task-oriented          |  Compatible data module inherited from PyTorch   |\r\n|    Continuous features    |          Field embedding           |        Field embedding         |        Field embedding and discretization        |\r\n| GPU-accelerated execution |       Single-GPU utilization       |     Single-GPU utilization     |      Multi-GPU and mixed precision training      |\r\n|  Hyper-parameter tuning   |       Serial gradient search       |     Serial gradient search     | Three search methods in both serial and parallel |\r\n|     Significance test     |                 -                  |               -                |               Available interface                |\r\n|     Benchmark results     |                 -                  | Partially public (GNN and CDR) |      Benchmark configurations on 94 models       |\r\n|      Friendly usage       |           Documentation            |         Documentation          |       Improved documentation and FAQ page        |\r\n\r\n\r\n## Installation\r\nRecBole works with the following operating systems:\r\n\r\n* Linux\r\n* Windows 10\r\n* macOS X\r\n\r\nRecBole requires Python version 3.7 or later.\r\n\r\nRecBole requires torch version 1.7.0 or later. If you want to use RecBole with GPU,\r\nplease ensure that CUDA or cudatoolkit version is 9.2 or later.\r\nThis requires NVIDIA driver version \u003e= 396.26 (for Linux) or \u003e= 397.44 (for Windows10).\r\n\r\n### Install from conda\r\n\r\n```bash\r\nconda install -c aibox recbole\r\n```\r\n\r\n### Install from pip\r\n\r\n```bash\r\npip install recbole\r\n```\r\n\r\n### Install from source\r\n```bash\r\ngit clone https://github.com/RUCAIBox/RecBole.git \u0026\u0026 cd RecBole\r\npip install -e . --verbose\r\n```\r\n\r\n## Quick-Start\r\nWith the source code, you can use the provided script for initial usage of our library:\r\n\r\n```bash\r\npython run_recbole.py\r\n```\r\n\r\nThis script will run the BPR model on the ml-100k dataset.\r\n\r\nTypically, this example takes less than one minute. We will obtain some output like:\r\n\r\n```\r\nINFO ml-100k\r\nThe number of users: 944\r\nAverage actions of users: 106.04453870625663\r\nThe number of items: 1683\r\nAverage actions of items: 59.45303210463734\r\nThe number of inters: 100000\r\nThe sparsity of the dataset: 93.70575143257098%\r\nINFO Evaluation Settings:\r\nGroup by user_id\r\nOrdering: {'strategy': 'shuffle'}\r\nSplitting: {'strategy': 'by_ratio', 'ratios': [0.8, 0.1, 0.1]}\r\nNegative Sampling: {'strategy': 'full', 'distribution': 'uniform'}\r\nINFO BPRMF(\r\n    (user_embedding): Embedding(944, 64)\r\n    (item_embedding): Embedding(1683, 64)\r\n    (loss): BPRLoss()\r\n)\r\nTrainable parameters: 168128\r\nINFO epoch 0 training [time: 0.27s, train loss: 27.7231]\r\nINFO epoch 0 evaluating [time: 0.12s, valid_score: 0.021900]\r\nINFO valid result:\r\nrecall@10: 0.0073  mrr@10: 0.0219  ndcg@10: 0.0093  hit@10: 0.0795  precision@10: 0.0088\r\n...\r\nINFO epoch 63 training [time: 0.19s, train loss: 4.7660]\r\nINFO epoch 63 evaluating [time: 0.08s, valid_score: 0.394500]\r\nINFO valid result:\r\nrecall@10: 0.2156  mrr@10: 0.3945  ndcg@10: 0.2332  hit@10: 0.7593  precision@10: 0.1591\r\nINFO Finished training, best eval result in epoch 52\r\nINFO Loading model structure and parameters from saved/***.pth\r\nINFO best valid result:\r\nrecall@10: 0.2169  mrr@10: 0.4005  ndcg@10: 0.235  hit@10: 0.7582  precision@10: 0.1598\r\nINFO test result:\r\nrecall@10: 0.2368  mrr@10: 0.4519  ndcg@10: 0.2768  hit@10: 0.7614  precision@10: 0.1901\r\n```\r\n\r\nIf you want to change the parameters, such as ``learning_rate``, ``embedding_size``, just set the additional command\r\nparameters as you need:\r\n\r\n```bash\r\npython run_recbole.py --learning_rate=0.0001 --embedding_size=128\r\n```\r\n\r\nIf you want to change the models, just run the script by setting additional command parameters:\r\n\r\n```bash\r\npython run_recbole.py --model=[model_name]\r\n```\r\n\r\n### Auto-tuning Hyperparameter \r\nOpen `RecBole/hyper.test` and set several hyperparameters to auto-searching in parameter list. The following has two ways to search best hyperparameter:\r\n* **loguniform**: indicates that the parameters obey the uniform distribution, randomly taking values from e^{-8} to e^{0}.\r\n* **choice**: indicates that the parameter takes discrete values from the setting list.\r\n\r\nHere is an example for `hyper.test`: \r\n```\r\nlearning_rate loguniform -8, 0\r\nembedding_size choice [64, 96 , 128]\r\ntrain_batch_size choice [512, 1024, 2048]\r\nmlp_hidden_size choice ['[64, 64, 64]','[128, 128]']\r\n```\r\nSet training command parameters as you need to run:\r\n```\r\npython run_hyper.py --model=[model_name] --dataset=[data_name] --config_files=xxxx.yaml --params_file=hyper.test\r\ne.g.\r\npython run_hyper.py --model=BPR --dataset=ml-100k --config_files=test.yaml --params_file=hyper.test\r\n```\r\nNote that `--config_files=test.yaml` is optional, if you don't have any customize config settings, this parameter can be empty.\r\n\r\nThis processing maybe take a long time to output best hyperparameter and result:\r\n```\r\nrunning parameters:                                                                                                                    \r\n{'embedding_size': 64, 'learning_rate': 0.005947474154838498, 'mlp_hidden_size': '[64,64,64]', 'train_batch_size': 512}                \r\n  0%|                                                                                           | 0/18 [00:00\u003c?, ?trial/s, best loss=?]\r\n```\r\n\r\nMore information about parameter tuning can be found in our [docs](https://recbole.io/docs/user_guide/usage/parameter_tuning.html).\r\n\r\n\r\n## Time and Memory Costs\r\nWe constructed preliminary experiments to test the time and memory cost on three different-sized datasets \r\n(small, medium and large). For detailed information, you can click the following links.\r\n\r\n* [General recommendation models](asset/time_test_result/General_recommendation.md)\r\n* [Sequential recommendation models](asset/time_test_result/Sequential_recommendation.md)\r\n* [Context-aware recommendation models](asset/time_test_result/Context-aware_recommendation.md)\r\n* [Knowledge-based recommendation models](asset/time_test_result/Knowledge-based_recommendation.md)\r\n\r\nNOTE: Our test results only gave the approximate time and memory cost of our implementations in the RecBole library\r\n(based on our machine server).  Any feedback or suggestions about the implementations and test are welcome. \r\nWe will keep improving our implementations, and update these test results.\r\n\r\n\r\n## RecBole Major Releases\r\n| Releases | Date       |\r\n|----------|------------|\r\n| v1.2.1   | 02/23/2025 |\r\n| v1.2.0   | 11/01/2023 |\r\n| v1.1.1   | 10/05/2022 |\r\n| v1.0.0   | 09/17/2021 |\r\n| v0.2.0   | 01/15/2021 |\r\n| v0.1.1   | 11/03/2020 |\r\n\r\n\r\n## Open Source Contributions\r\nAs a one-stop framework from data processing, model development, algorithm training to scientific evaluation, RecBole has a total of **11** related GitHub projects including \r\n- two versions of RecBole ([RecBole 1.0](https://github.com/RUCAIBox/RecBole) and [RecBole 2.0](https://github.com/RUCAIBox/RecBole2.0));\r\n- 8 benchmarking packages ([RecBole-MetaRec](https://github.com/nuster1128/RecBole-MetaRec), [RecBole-DA](https://github.com/RUCAIBox/RecBole-DA), [RecBole-Debias](https://github.com/JingsenZhang/RecBole-Debias), [RecBole-FairRec](https://github.com/TangJiakai/RecBole-FairRec), [RecBole-CDR](https://github.com/RUCAIBox/RecBole-CDR), [RecBole-TRM](https://github.com/RUCAIBox/RecBole-TRM), [RecBole-GNN](https://github.com/RUCAIBox/RecBole-GNN) and [RecBole-PJF](https://github.com/RUCAIBox/RecBole-PJF));\r\n- dataset repository (\u003ca href=\"https://github.com/RUCAIBox/RecSysDatasets\"\u003eRecSysDatasets\u003c/a\u003e).\r\n\r\nIn the following table, we summarize the open source contributions of GitHub projects based on RecBole.\r\n\r\n| **Projects**                                                 | **Stars**                                                    | **Forks**                                                    | **Issues**                                                   | **Pull requests**                                            |\r\n| :----------------------------------------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- |\r\n| [**RecBole**](https://github.com/RUCAIBox/RecBole)           | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecBole?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecBole/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole/pulls) |\r\n| [**RecBole2.0**](https://github.com/RUCAIBox/RecBole2.0)     | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecBole2.0?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecBole2.0/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole2.0?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole2.0/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole2.0?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole2.0/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole2.0?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole2.0/pulls) |\r\n| [**RecBole-DA**](https://github.com/RUCAIBox/RecBole-DA)     | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecBole-DA?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecBole-DA/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole-DA?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole-DA/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole-DA?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole-DA/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole-DA?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole-DA/pulls) |\r\n| [**RecBole-MetaRec**](https://github.com/nuster1128/RecBole-MetaRec) | [![Stars](https://img.shields.io/github/stars/nuster1128/RecBole-MetaRec?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/nuster1128/RecBole-MetaRec/stargazers) | [![Forks](https://img.shields.io/github/forks/nuster1128/RecBole-MetaRec?style=social\u0026logo=github)](https://github.com/nuster1128/RecBole-MetaRec/network/members) | [![Issues](https://img.shields.io/github/issues-closed/nuster1128/RecBole-MetaRec?style=social\u0026logo=git)](https://github.com/nuster1128/RecBole-MetaRec/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/nuster1128/RecBole-MetaRec?style=social\u0026logo=githubactions)](https://github.com/nuster1128/RecBole-MetaRec/pulls) |\r\n| [**RecBole-Debias**](https://github.com/JingsenZhang/RecBole-Debias) | [![Stars](https://img.shields.io/github/stars/JingsenZhang/RecBole-Debias?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/JingsenZhang/RecBole-Debias/stargazers) | [![Forks](https://img.shields.io/github/forks/JingsenZhang/RecBole-Debias?style=social\u0026logo=github)](https://github.com/JingsenZhang/RecBole-Debias/network/members) | [![Issues](https://img.shields.io/github/issues-closed/JingsenZhang/RecBole-Debias?style=social\u0026logo=git)](https://github.com/JingsenZhang/RecBole-Debias/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/JingsenZhang/RecBole-Debias?style=social\u0026logo=githubactions)](https://github.com/JingsenZhang/RecBole-Debias/pulls) |\r\n| [**RecBole-FairRec**](https://github.com/TangJiakai/RecBole-FairRec) | [![Stars](https://img.shields.io/github/stars/TangJiakai/RecBole-FairRec?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/TangJiakai/RecBole-FairRec/stargazers) | [![Forks](https://img.shields.io/github/forks/TangJiakai/RecBole-FairRec?style=social\u0026logo=github)](https://github.com/TangJiakai/RecBole-FairRec/network/members) | [![Issues](https://img.shields.io/github/issues-closed/TangJiakai/RecBole-FairRec?style=social\u0026logo=git)](https://github.com/TangJiakai/RecBole-FairRec/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/TangJiakai/RecBole-FairRec?style=social\u0026logo=githubactions)](https://github.com/TangJiakai/RecBole-FairRec/pulls) |\r\n| [**RecBole-CDR**](https://github.com/RUCAIBox/RecBole-CDR)   | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecBole-CDR?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecBole-CDR/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole-CDR?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole-CDR/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole-CDR?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole-CDR/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole-CDR?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole-CDR/pulls) |\r\n| [**RecBole-GNN**](https://github.com/RUCAIBox/RecBole-GNN)   | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecBole-GNN?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecBole-GNN/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole-GNN?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole-GNN/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole-GNN?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole-GNN/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole-GNN?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole-GNN/pulls) |\r\n| [**RecBole-TRM**](https://github.com/RUCAIBox/RecBole-TRM)   | [![Stars](https://img.shields.io/github/stars/RUCAIBOX/RecBole-TRM?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBOX/RecBole-TRM/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole-TRM?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole-TRM/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole-TRM?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole-TRM/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole-TRM?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole-TRM/pulls) |\r\n| [**RecBole-PJF**](https://github.com/RUCAIBox/RecBole-PJF)   | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecBole-PJF?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecBole-PJF/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecBole-PJF?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecBole-PJF/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecBole-PJF?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecBole-PJF/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecBole-PJF?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecBole-PJF/pulls) |\r\n| [**RecSysDatasets**](https://github.com/RUCAIBox/RecSysDatasets) | [![Stars](https://img.shields.io/github/stars/RUCAIBox/RecSysDatasets?style=social\u0026logo=ReverbNation\u0026logoColor=yellow)](https://github.com/RUCAIBox/RecSysDatasets/stargazers) | [![Forks](https://img.shields.io/github/forks/RUCAIBox/RecSysDatasets?style=social\u0026logo=github)](https://github.com/RUCAIBox/RecSysDatasets/network/members) | [![Issues](https://img.shields.io/github/issues-closed/RUCAIBox/RecSysDatasets?style=social\u0026logo=git)](https://github.com/RUCAIBox/RecSysDatasets/issues) | [![Pull requests](https://img.shields.io/github/issues-pr-closed/RUCAIBox/RecSysDatasets?style=social\u0026logo=githubactions)](https://github.com/RUCAIBox/RecSysDatasets/pulls) |\r\n\r\n\r\n## Contributing\r\n\r\nPlease let us know if you encounter a bug or have any suggestions by [filing an issue](https://github.com/RUCAIBox/RecBole/issues).\r\n\r\nWe welcome all contributions from bug fixes to new features and extensions.\r\n\r\nWe expect all contributions discussed in the issue tracker and going through PRs.\r\n\r\nWe thank the insightful suggestions from [@tszumowski](https://github.com/tszumowski), [@rowedenny](https://github.com/rowedenny), [@deklanw](https://github.com/deklanw) et.al.\r\n\r\nWe thank the nice contributions through PRs from [@rowedenny](https://github.com/rowedenny)，[@deklanw](https://github.com/deklanw) et.al.\r\n\r\n\r\n## Cite\r\nIf you find RecBole useful for your research or development, please cite the following papers: [RecBole[1.0]](https://arxiv.org/abs/2011.01731), [RecBole[2.0]](https://dl.acm.org/doi/abs/10.1145/3459637.3482016) and [RecBole[1.2.1]](https://dl.acm.org/doi/10.1145/3539618.3591889).\r\n\r\n```bibtex\r\n@inproceedings{recbole[1.0],\r\n  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},\r\n  title     = {RecBole: Towards a Unified, Comprehensive and Efficient Framework for Recommendation Algorithms},\r\n  booktitle = {{CIKM}},\r\n  pages     = {4653--4664},\r\n  publisher = {{ACM}},\r\n  year      = {2021}\r\n}\r\n@inproceedings{recbole[2.0],\r\n  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},\r\n  title     = {RecBole 2.0: Towards a More Up-to-Date Recommendation Library},\r\n  booktitle = {{CIKM}},\r\n  pages     = {4722--4726},\r\n  publisher = {{ACM}},\r\n  year      = {2022}\r\n}\r\n@inproceedings{recbole[1.2.1],\r\n  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},\r\n  title     = {Towards a More User-Friendly and Easy-to-Use Benchmark Library for Recommender Systems},\r\n  booktitle = {{SIGIR}},\r\n  pages     = {2837--2847},\r\n  publisher = {{ACM}},\r\n  year      = {2023}\r\n}\r\n```\r\n\r\n\r\n## The Team\r\n\r\nRecBole is developed by [RUC, BUPT, ECNU](https://www.recbole.io/about.html), and maintained by RUC.\r\n\r\nHere is the list of our lead developers in each development phase. They are the souls of RecBole and have made outstanding contributions.\r\n\r\n|         Time          |        Version         |                Lead Developers                 |                Paper            |\r\n| :-------------------: | :--------------------: | :--------------------------------------------: | ---------------------------------------------- |\r\n| June 2020\u003cbr\u003e ~\u003cbr\u003e Nov. 2020 |        v0.1.1         |  Shanlei Mu ([@ShanleiMu](https://github.com/ShanleiMu)), Yupeng Hou ([@hyp1231](https://github.com/hyp1231)),\u003cbr\u003e Zihan Lin ([@linzihan-backforward](https://github.com/linzihan-backforward)), Kaiyuan Li ([@tsotfsk](https://github.com/tsotfsk))| [PDF](https://dl.acm.org/doi/abs/10.1145/3459637.3482016) |\r\n|    Nov. 2020\u003cbr\u003e ~ \u003cbr\u003e Jul. 2022    | v0.1.2 ~ v1.0.1 |      Yushuo Chen ([@chenyushuo](https://github.com/chenyushuo)), Xingyu Pan ([@2017pxy](https://github.com/2017pxy))    | [PDF](https://dl.acm.org/doi/abs/10.1145/3459637.3482016)  |\r\n| Jul. 2022\u003cbr/\u003e ~ \u003cbr/\u003e Nov. 2023 | v1.1.0 ~ v1.1.1 | Lanling Xu ([@Sherry-XLL](https://github.com/Sherry-XLL)), Zhen Tian ([@chenyuwuxin](https://github.com/chenyuwuxin)), Gaowei Zhang ([@Wicknight](https://github.com/Wicknight)), Lei Wang ([@Paitesanshi](https://github.com/Paitesanshi)), Junjie Zhang ([@leoleojie](https://github.com/leoleojie)) | [PDF](https://dl.acm.org/doi/10.1145/3539618.3591889) |\r\n| Nov. 2023\u003cbr/\u003e ~ \u003cbr/\u003e Feb. 2025 | v1.2.0 | Bowen Zheng ([@zhengbw0324](https://github.com/zhengbw0324)), Chen Ma ([@Yilu114](https://github.com/Yilu114)) | [PDF](https://dl.acm.org/doi/10.1145/3539618.3591889) |\r\n| Feb. 2025\u003cbr/\u003e ~ \u003cbr/\u003e now | v1.2.1 | Enze Liu ([@BishopLiu](https://github.com/BishopLiu)), Kesha Ou ([@TayTroye](https://github.com/TayTroye)), Bingqian Li ([@Fotiligner](https://github.com/Fotiligner)) | [PDF](https://dl.acm.org/doi/10.1145/3539618.3591889) |\r\n\r\n\r\n## License\r\nRecBole uses [MIT License](./LICENSE). All data and code in this project can only be used for academic purposes.\r\n\r\n## Acknowledgments\r\n\r\nThis project was supported by National Natural Science Foundation of China (No. 61832017).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frucaibox%2Frecbole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frucaibox%2Frecbole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frucaibox%2Frecbole/lists"}