
“然后有千里马。千里马常有 然后有千里马。千里马常有, ,, 而伯乐不常有。”—— 韩愈《马说》
홈페이지 | 문서 | 데이터 세트 | 종이 | 블로그 | 모델 | 中文版
RecBole은 연구 목적을위한 통합적이고 포괄적이며 효율적인 프레임 워크에서 추천 알고리즘을 재현 및 개발하기위한 Python 및 Pytorch를 기반으로 개발되었습니다. 우리의 라이브러리에는 4 가지 주요 범주를 다루는 91 개의 추천 알고리즘이 포함되어 있습니다.
통합적이고 유연한 데이터 파일 형식을 설계하고 43 벤치 마크 권장 데이터 세트에 대한 지원을 제공합니다. 사용자는 제공된 스크립트를 적용하여 원래 데이터 사본을 처리하거나 팀에서 처리 된 데이터 세트를 간단히 다운로드 할 수 있습니다.

그림 : 전반적인 아키텍처를 다시 홀로하십시오
추천 시스템의 최근 발전에 대한 연구를 지원하기 위해 최신 주제 및 아키텍처 (예 : Debiased, Fairness 및 GNN)를위한 8 개의 패키지로 구성된 확장 추천 라이브러리 Recbole2.0을 구성합니다.
일반적이고 확장 가능한 데이터 구조. 우리는 일반 및 확장 가능한 데이터 구조를 설계하여 다양한 권장 데이터 세트의 형식 및 사용을 통합합니다.
포괄적 인 벤치 마크 모델 및 데이터 세트. 우리는 일반적으로 사용되는 78 개의 추천 알고리즘을 구현하고 28 개의 추천 데이터 세트의 형식 사본을 제공합니다.
효율적인 gpu-accelerated 실행. 우리는 GPU 환경을 지향하는 여러 가지 개선 된 기술로 라이브러리의 효율성을 최적화합니다.
광범위하고 표준 평가 프로토콜. 우리는 추천 알고리즘 테스트 및 비교를위한 일련의 널리 채택 된 평가 프로토콜 또는 설정을 지원합니다.
11/01/2023 : 우리는 Recbole v1.2.0을 출시합니다.
11/06/2022 : 우리는 모델의 최적의 하이퍼 파라미터와 그 튜닝 범위를 방출합니다.
10/05/2022 : 우리는 Recbole v1.1.1을 출시합니다.
06/28/2022 : 65 개의 새로 구현 된 모델 로 구성된 8 개의 패키지 로 Recbole2.0을 출시합니다.
02/25/2022 : 우리는 Recbole v1.0.1을 출시합니다.
09/17/2021 : 우리는 Recbole v1.0.0을 출시합니다.
03/22/2021 : 우리는 Recbole v0.2.1을 출시합니다.
01/15/2021 : 우리는 Recbole v0.2.0을 출시합니다.
12/10/2020 : 我们发布了 Recbole 小白入门系列中文博客 小白入门系列中文博客 小白入门系列中文博客 小白入门系列中文博客 小白入门系列中文博客 小白入门系列中文博客。。
20/06/2020 : 우리는 Recbole v0.1.2를 출시합니다.
11/29/2020 : 우리는 세 가지 크기의 데이터 세트에서 시간과 기억 비용을 테스트하기위한 예비 실험을 구성하고 참조를 위해 테스트 결과를 제공했습니다.
11/03/2020 : 우리는 Recbole v0.1.1 의 첫 번째 버전을 출시합니다.
사용자 요구 사항을 더 잘 충족시키고 연구 커뮤니티에 기여하기 위해 최신 버전에서 RecBole의 상당한 업데이트를 제시하여 추천을위한 포괄적 인 벤치 마크 라이브러리로보다 사용자 친화적이고 사용하기 쉬운 사용이 가능합니다. 이러한 업데이트를 " 보다 사용자 친화적이고 사용하기 쉬운 벤치 마크 라이브러리를 추천 시스템에 대한 "로 요약하고 SIGIR 2023 에 논문을 제출합니다. 이 업데이트의 주요 기여는 아래에 소개됩니다.
우리의 확장은 세 가지 주요 측면, 즉 모델/데이터 세트, 프레임 워크 및 구성으로 이루어집니다. 또한 라이브러리 사용을 위해보다 포괄적 인 문서와 잘 조직 된 FAQ를 제공하여 사용자 경험을 크게 향상시킵니다. 보다 구체적으로,이 업데이트의 하이라이트는 다음과 같이 요약됩니다.
권장 도메인을 벤치마킹하는 데 도움이되는 더 많은 작업 및 설정을 도입합니다.
우리는보다 자세한 문서를 제공하고 자주 묻는 질문을 제공함으로써 라이브러리의 사용자 친근감을 향상시킵니다.
Open-Source Library 개발자를위한 몇 가지 개발 지침을 지적합니다.
이러한 확장은 벤치 마크 결과를 재현하고 최근의 추천 시스템의 발전을 최신 상태로 유지하기가 훨씬 쉽습니다. 이 업데이트와 이전 버전 간의 데이터 비교는 다음과 같습니다.
| 측면 | Recbole 1.0 | Recbole 2.0 | 이 업데이트 |
|---|---|---|---|
| 추천 작업 | 4 카테고리 | 3 개의 주제와 5 개의 패키지 | 4 카테고리 |
| 모델 및 데이터 세트 | 73 개의 모델과 28 개의 데이터 세트 | 65 개의 모델과 8 개의 새로운 데이터 세트 | 91 개의 모델과 43 개의 데이터 세트 |
| 데이터 구조 | 구현 된 데이터 세트 및 데이터 로더 | 작업 중심 | Pytorch에서 상속 된 호환 데이터 모듈 |
| 연속적인 기능 | 필드 임베딩 | 필드 임베딩 | 현장 임베딩 및 이산 |
| gpu-accelerated execution | 단일 GPU 사용 | 단일 GPU 사용 | 멀티 GPU 및 혼합 정밀 훈련 |
| 하이퍼 파라미터 튜닝 | 일련의 그라디언트 검색 | 일련의 그라디언트 검색 | 직렬 및 평행 모두에서 세 가지 검색 방법 |
| 중요 테스트 | - | - | 사용 가능한 인터페이스 |
| 벤치 마크 결과 | - | 부분적으로 공개 (GNN 및 CDR) | 82 모델의 벤치 마크 구성 |
| 친절한 사용 | 선적 서류 비치 | 선적 서류 비치 | 개선 된 문서 및 FAQ 페이지 |
Recbole은 다음 운영 체제와 함께 작동합니다.
Recbole에는 Python 버전 3.7 이상이 필요합니다.
Recbole은 토치 버전 1.7.0 이상이 필요합니다. GPU와 함께 RecBole을 사용하려면 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이 스크립트는 ML-100K 데이터 세트에서 BPR 모델을 실행합니다.
일반적 으로이 예제는 1 분도 채 걸리지 않습니다. 우리는 다음과 같은 출력을 얻을 것입니다.
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 열고 여러 하이퍼 파라미터를 매개 변수 목록에서 자동 검색하도록 설정하십시오. 다음은 Best Hyperparameter를 검색하는 두 가지 방법이 있습니다.
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 은 선택 사항이며, CONCUG 설정이없는 경우이 매개 변수가 비어있을 수 있습니다.
이 처리는 최고의 하이퍼 파라미터를 출력하는 데 오랜 시간이 걸릴 수 있습니다.
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 | 11/01/2023 |
| v1.1.1 | 10/05/2022 |
| v1.0.0 | 09/17/2021 |
| v0.2.0 | 01/15/2021 |
| v0.1.1 | 11/03/2020 |
데이터 처리, 모델 개발, 알고리즘 교육에서 과학 평가에 이르기까지 원 스톱 프레임 워크로서 RecBole은 다음을 포함한 총 11 개의 관련 GitHub 프로젝트를 보유하고 있습니다.
다음 표에서, 우리는 Recbole을 기반으로 Github 프로젝트의 오픈 소스 기여금을 요약합니다.
| 프로젝트 | 별 | 포크 | 문제 | 요청을 당기십시오 |
|---|---|---|---|---|
| recbole | ||||
| recbole2.0 | ||||
| recbole-da | ||||
| recbole-metarec | ||||
| recbole-debias | ||||
| recbole-fairrec | ||||
| recbole-cdr | ||||
| recbole-gnn | ||||
| recbole-trm | ||||
| recbole-pjf | ||||
| 재생산 |
버그가 발생하거나 문제를 제기하여 제안이 있으면 알려주십시오.
우리는 버그 수정에서 새로운 기능 및 확장에 이르기까지 모든 기여를 환영합니다.
우리는 이슈 트래커에서 논의 된 모든 기여와 PRS를 통과 할 것으로 예상합니다.
@tszumowski, @rowedenny, @deklanw et.al.의 통찰력있는 제안에 감사드립니다.
@rowedenny, @deklanw et.al.의 PRS를 통한 좋은 기여에 감사드립니다.
연구 또는 개발에 유용한 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 년 6 월 ~ 2020 년 11 월 | v0.1.1 | Shanlei Mu (@shanleimu), Yupeng Hou (@hyp1231), Zihan Lin (@linzihan-backforward), Kaiyuan Li (@tsotfsk) | |
| 2020 년 11 월 ~ 2022 년 7 월 | v0.1.2 ~ v1.0.1 | Yushuo Chen (@chenyushuo), Xingyu Pan (@2017pxy) | |
| 2022 년 7 월 ~ 2023 년 11 월 | v1.1.0 ~ v1.1.1 | Lanling XU (@Sherry-Xll), Zhen Tian (@chenyuwuxin), Gaowei Zhang (@wicknight), Lei Wang (@Paitesanshi), Junjie Zhang (@leoleojie) | |
| 2023 년 11 월 ~ 지금 | v1.2.0 | Bowen Zheng (@Zhengbw0324), Chen MA (@Yilu114) |
Recbole은 MIT 라이센스를 사용합니다. 이 프로젝트의 모든 데이터 및 코드는 학업 목적으로 만 사용할 수 있습니다.
이 프로젝트는 National Natural Science Foundation of China (No. 61832017)에 의해 지원되었습니다.