
“世有伯乐 , 然后有千里马。千里马常有 , 而伯乐不常有。” —— 韩愈《马说》
Beranda | Docs | Dataset | Kertas | Blog | Model | 中文版
Recbole dikembangkan berdasarkan Python dan Pytorch untuk mereproduksi dan mengembangkan algoritma rekomendasi dalam kerangka kerja terpadu, komprehensif dan efisien untuk tujuan penelitian. Perpustakaan kami mencakup 91 algoritma rekomendasi, mencakup empat kategori utama:
Kami merancang format file data terpadu dan fleksibel, dan memberikan dukungan untuk 43 set data rekomendasi benchmark. Seorang pengguna dapat menerapkan skrip yang disediakan untuk memproses salinan data asli, atau cukup mengunduh kumpulan data yang diproses oleh tim kami.

Gambar : Recbole Arsitektur Keseluruhan
Untuk mendukung studi tentang kemajuan terbaru dalam sistem rekomendasi, kami membangun rekomendasi perpustakaan yang diperluas.
Struktur data umum dan dapat diperluas. Kami merancang struktur data yang umum dan dapat diperluas untuk menyatukan pemformatan dan penggunaan berbagai set data rekomendasi.
Model dan dataset benchmark yang komprehensif. Kami menerapkan 78 algoritma rekomendasi yang umum digunakan, dan memberikan salinan yang diformat dari 28 set data rekomendasi.
Eksekusi Akselerasi GPU yang efisien. Kami mengoptimalkan efisiensi perpustakaan kami dengan sejumlah teknik yang lebih baik yang berorientasi pada lingkungan GPU.
Protokol evaluasi yang luas dan standar. Kami mendukung serangkaian protokol evaluasi yang diadopsi secara luas atau pengaturan untuk pengujian dan membandingkan algoritma rekomendasi.
11/01/2023 : Kami merilis Recbole v1.2.0.
11/06/2022 : Kami melepaskan hiperparameter optimal dari model dan rentang tuning mereka.
10/05/2022 : Kami merilis Recbole V1.1.1.
06/28/2022 : Kami merilis Recbole2.0 dengan 8 paket yang terdiri dari 65 model yang baru diimplementasikan .
02/25/2022 : Kami merilis Recbole V1.0.1.
09/17/2021 : Kami merilis Recbole V1.0.0.
03/22/2021 : Kami merilis Recbole V0.2.1.
01/15/2021 : Kami merilis Recbole V0.2.0.
12/10/2020 : 我们发布了 Recbole 小白入门系列中文博客(持续更新中)。
12/06/2020 : Kami merilis Recbole V0.1.2.
11/29/2020 : Kami membuat percobaan awal untuk menguji waktu dan biaya memori pada tiga dataset berukuran berbeda dan memberikan hasil tes untuk referensi.
11/03/2020 : Kami merilis versi pertama Recbole V0.1.1 .
Untuk lebih memenuhi persyaratan pengguna dan berkontribusi pada komunitas penelitian, kami menyajikan pembaruan yang signifikan dari Recbole dalam versi terbaru, menjadikannya lebih ramah pengguna dan mudah digunakan sebagai perpustakaan benchmark yang komprehensif untuk rekomendasi. Kami merangkum pembaruan ini dalam " Menuju Perpustakaan Benchmark yang Lebih Mudah Pengguna dan Mudah Digunakan Untuk Sistem Rekomendasi " dan mengirimkan kertas ke Sigir 2023 . Kontribusi utama dalam pembaruan ini diperkenalkan di bawah ini.
Ekstensi kami dibuat dalam tiga aspek utama, yaitu model/kumpulan data, kerangka kerja, dan konfigurasi. Selain itu, kami memberikan dokumentasi yang lebih komprehensif dan FAQ yang terorganisir dengan baik untuk penggunaan perpustakaan kami, yang sebagian besar meningkatkan pengalaman pengguna. Lebih khusus lagi, sorotan dari pembaruan ini dirangkum sebagai:
Kami memperkenalkan lebih banyak operasi dan pengaturan untuk membantu membandingkan domain rekomendasi.
Kami meningkatkan keramahan pengguna perpustakaan kami dengan memberikan dokumentasi yang lebih rinci dan pertanyaan yang sering diatur dengan baik.
Kami menunjukkan beberapa pedoman pengembangan untuk pengembang perpustakaan open-source.
Ekstensi ini membuatnya lebih mudah untuk mereproduksi hasil tolok ukur dan tetap mutakhir dengan kemajuan terbaru pada sistem rekomendasi. Perbandingan data yang dikeluarkan antara pembaruan ini dan versi sebelumnya tercantum di bawah ini.
| Aspek | Recbole 1.0 | Recbole 2.0 | Pembaruan ini |
|---|---|---|---|
| Tugas Rekomendasi | 4 kategori | 3 topik dan 5 paket | 4 kategori |
| Model dan Dataset | 73 model dan 28 set data | 65 model dan 8 set data baru | 91 model dan 43 set data |
| Struktur data | Dataset dan DataLoader yang diimplementasikan | Berorientasi pada tugas | Modul data yang kompatibel diwarisi dari Pytorch |
| Fitur Berkelanjutan | Embedding lapangan | Embedding lapangan | Penyembatan lapangan dan diskritisasi |
| Eksekusi yang Diakelerasi GPU | Pemanfaatan gpu tunggal | Pemanfaatan gpu tunggal | Pelatihan presisi multi-GPU dan campuran |
| Penyetelan hiper-parameter | Pencarian Gradien Serial | Pencarian Gradien Serial | Tiga metode pencarian dalam serial dan paralel |
| Uji signifikansi | - | - | Antarmuka yang tersedia |
| Hasil benchmark | - | Sebagian publik (GNN dan CDR) | Konfigurasi Benchmark pada 82 model |
| Penggunaan yang ramah | Dokumentasi | Dokumentasi | Halaman dokumentasi dan FAQ yang ditingkatkan |
Recbole bekerja dengan sistem operasi berikut:
Recbole membutuhkan Python versi 3.7 atau lebih baru.
Recbole membutuhkan obor versi 1.7.0 atau lebih baru. Jika Anda ingin menggunakan Recbole dengan GPU, harap pastikan bahwa versi CUDA atau Cudatoolkit adalah 9,2 atau lebih baru. Ini membutuhkan Versi Driver NVIDIA> = 396.26 (untuk Linux) atau> = 397.44 (untuk Windows10).
conda install -c aibox recbolepip install recbolegit clone https://github.com/RUCAIBox/RecBole.git && cd RecBole
pip install -e . --verboseDengan kode sumber, Anda dapat menggunakan skrip yang disediakan untuk penggunaan awal perpustakaan kami:
python run_recbole.pySkrip ini akan menjalankan model BPR pada dataset ML-100K.
Biasanya, contoh ini membutuhkan waktu kurang dari satu menit. Kami akan mendapatkan beberapa output seperti:
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
Jika Anda ingin mengubah parameter, seperti learning_rate , embedding_size , cukup atur parameter perintah tambahan sesuai kebutuhan:
python run_recbole.py --learning_rate=0.0001 --embedding_size=128Jika Anda ingin mengubah model, cukup jalankan skrip dengan mengatur parameter perintah tambahan:
python run_recbole.py --model=[model_name] Buka RecBole/hyper.test dan atur beberapa hyperparameters ke pencarian otomatis dalam daftar parameter. Berikut ini memiliki dua cara untuk mencari hiperparameter terbaik:
Berikut adalah contoh untuk 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]']
Tetapkan parameter perintah pelatihan sesuai keinginan Anda:
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
Perhatikan bahwa --config_files=test.yaml adalah opsional, jika Anda tidak memiliki pengaturan konfigurasi, parameter ini bisa kosong.
Pemrosesan ini mungkin membutuhkan waktu lama untuk mengeluarkan hiperparameter terbaik dan hasilnya:
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=?]
Informasi lebih lanjut tentang penyetelan parameter dapat ditemukan di dokumen kami.
Kami membuat percobaan awal untuk menguji waktu dan biaya memori pada tiga dataset berukuran berbeda (kecil, sedang dan besar). Untuk informasi terperinci, Anda dapat mengklik tautan berikut.
Catatan: Hasil pengujian kami hanya memberikan perkiraan waktu dan biaya memori implementasi kami di pustaka Recbole (berdasarkan server mesin kami). Setiap umpan balik atau saran tentang implementasi dan tes dipersilakan. Kami akan terus meningkatkan implementasi kami, dan memperbarui hasil tes ini.
| Pelepasan | Tanggal |
|---|---|
| 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 |
Sebagai kerangka kerja satu atap dari pemrosesan data, pengembangan model, pelatihan algoritma untuk evaluasi ilmiah, Recbole memiliki total 11 proyek gitub terkait termasuk
Dalam tabel berikut, kami merangkum kontribusi open source dari proyek GitHub berdasarkan Recbole.
| Proyek | Bintang | Garpu | Masalah | Tarik permintaan |
|---|---|---|---|---|
| Recbole | ||||
| Recbole2.0 | ||||
| Recbole-da | ||||
| Recbole-Metarec | ||||
| Recbole-debias | ||||
| Recbole-Fairrec | ||||
| Recbole-CDR | ||||
| Recbole-gnn | ||||
| Recbole-TRM | ||||
| Recbole-PJF | ||||
| RecsysDataSets |
Beri tahu kami jika Anda menemukan bug atau memiliki saran dengan mengajukan masalah.
Kami menyambut semua kontribusi dari perbaikan bug ke fitur dan ekstensi baru.
Kami berharap semua kontribusi yang dibahas dalam pelacak masalah dan melalui PRS.
Kami berterima kasih kepada saran mendalam dari @tszumowski, @rowedenny, @deklanw et.al.
Kami berterima kasih kepada kontribusi yang bagus melalui PR dari @Rowedenny , @Deklanw et.al.
Jika Anda menemukan Recbole berguna untuk penelitian atau pengembangan Anda, silakan kutip makalah berikut: Recbole [1.0], Recbole [2.0] dan 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 dikembangkan oleh RUC, BUPT, ECNU, dan dikelola oleh RUC.
Berikut adalah daftar pengembang utama kami di setiap fase pengembangan. Mereka adalah jiwa Recbole dan telah memberikan kontribusi yang luar biasa.
| Waktu | Versi | Pengembang memimpin | Kertas |
|---|---|---|---|
| Juni 2020 ~ November 2020 | V0.1.1 | Shanlei Mu (@shanleimu), Yupeng Hou (@hyp1231), Zihan Lin (@Linzihan-Backforward), Kaiyuan Li (@tsotfsk) | |
| November 2020 ~ Jul. 2022 | V0.1.2 ~ V1.0.1 | Yushuo Chen (@chenyushuo), Xingyu Pan (@2017pxy) | |
| Jul. 2022 ~ November 2023 | V1.1.0 ~ V1.1.1 | Lanling Xu (@Sherry-Xll), Zhen Tian (@chenyuwuxin), Gaowei Zhang (@wicknight), Lei Wang (@Paitesanshi), Junjie Zhang (@leoleojie) | |
| November 2023 ~ Sekarang | v1.2.0 | Bowen Zheng (@zhengbw0324), Chen MA (@yilu114) |
Recbole menggunakan lisensi MIT. Semua data dan kode dalam proyek ini hanya dapat digunakan untuk tujuan akademik.
Proyek ini didukung oleh National Science Science Foundation of China (No. 61832017).