
“ 世有伯乐, 然后有千里马。千里马常有, 而伯乐不常有。而伯乐不常有。” —— 韩愈《马说》
หน้าแรก เอกสาร | ชุดข้อมูล กระดาษ | บล็อก โมเดล | 中文版
Recbole ได้รับการพัฒนาขึ้นอยู่กับ Python และ Pytorch สำหรับการทำซ้ำและพัฒนาอัลกอริทึมคำแนะนำในกรอบการทำงานแบบครบวงจรครอบคลุมและมีประสิทธิภาพสำหรับวัตถุประสงค์ในการวิจัย ห้องสมุดของเรามีอัลกอริทึมการแนะนำ 91 รายการครอบคลุมสี่หมวดหมู่หลัก:
เราออกแบบรูปแบบไฟล์ข้อมูลแบบรวมและยืดหยุ่นและให้การสนับสนุนชุดข้อมูลคำแนะนำมาตรฐาน 43 ชุด ผู้ใช้สามารถใช้สคริปต์ที่ให้ไว้เพื่อประมวลผลการคัดลอกข้อมูลต้นฉบับหรือเพียงดาวน์โหลดชุดข้อมูลที่ประมวลผลโดยทีมงานของเรา

รูป : สถาปัตยกรรมโดยรวมของ Recbole
เพื่อสนับสนุนการศึกษาความก้าวหน้าล่าสุดในระบบผู้แนะนำเราสร้างห้องสมุดแนะนำเพิ่มเติม Recbole2.0 ประกอบด้วย 8 แพ็คเกจสำหรับหัวข้อและสถาปัตยกรรมที่ทันสมัย (เช่น debiased ความยุติธรรมและ GNNs)
โครงสร้างข้อมูลทั่วไปและขยายได้ เราออกแบบโครงสร้างข้อมูลทั่วไปและขยายได้เพื่อรวมการจัดรูปแบบและการใช้งานชุดข้อมูลคำแนะนำต่างๆ
โมเดลและชุดข้อมูลมาตรฐานที่ครอบคลุม เราใช้อัลกอริทึมการแนะนำที่ใช้กันทั่วไป 78 รายการและจัดทำสำเนาที่จัดรูปแบบของชุดข้อมูลคำแนะนำ 28 ชุด
การดำเนินการเร่งความเร็ว GPU ที่มีประสิทธิภาพ เราเพิ่มประสิทธิภาพประสิทธิภาพของห้องสมุดของเราด้วยเทคนิคที่ได้รับการปรับปรุงจำนวนมากที่มุ่งเน้นไปที่สภาพแวดล้อม GPU
โปรโตคอลการประเมินที่กว้างขวางและมาตรฐาน เราสนับสนุนชุดของโปรโตคอลการประเมินที่นำมาใช้อย่างกว้างขวางหรือการตั้งค่าสำหรับการทดสอบและเปรียบเทียบอัลกอริทึมคำแนะนำ
11/01/2023 : เราเปิดตัว Recbole v1.2.0
11/06/2022 : เราปล่อยพารามิเตอร์ที่ดีที่สุดของโมเดลและช่วงการปรับจูน
10/05/2022 : เราเปิดตัว Recbole v1.1.1
06/28/2022 : เราเปิด ตัว Recbole2.0 ด้วย 8 แพ็คเกจ ประกอบด้วย 65 รุ่นที่ใช้งานใหม่
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 小白入门系列中文博客(持续更新中) 。。
12/06/2020 : เราเปิดตัว Recbole v0.1.2
11/29/2020 : เราสร้างการทดลองเบื้องต้นเพื่อทดสอบค่าใช้จ่ายเวลาและหน่วยความจำในชุดข้อมูลขนาดแตกต่างกันสามชุดและให้ผลการทดสอบสำหรับการอ้างอิง
11/03/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 |
| คุณสมบัติต่อเนื่อง | การฝังภาคสนาม | การฝังภาคสนาม | การฝังฟิลด์และ discretization |
| การดำเนินการเร่งด้วย GPU | การใช้ประโยชน์จาก GPU เดียว | การใช้ประโยชน์จาก GPU เดียว | Multi-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 และตั้งค่าไฮเปอร์พารามิเตอร์หลายตัวเพื่อค้นหาอัตโนมัติในรายการพารามิเตอร์ ต่อไปนี้มีสองวิธีในการค้นหา 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 เป็นทางเลือกหากคุณไม่มีการตั้งค่าการกำหนดค่าการปรับแต่งพารามิเตอร์นี้อาจว่างเปล่า
การประมวลผลนี้อาจใช้เวลานานในการส่งออกพารามิเตอร์ hyperparameter ที่ดีที่สุดและผลลัพธ์:
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 มีโครงการ GitHub ที่เกี่ยวข้องทั้งหมด 11 โครงการรวมถึง
ในตารางต่อไปนี้เราสรุปการมีส่วนร่วมของโอเพ่นซอร์สของโครงการ GitHub ตาม Recbole
| โครงการ | ดารา | ส้อม | ปัญหา | ดึงคำขอ |
|---|---|---|---|---|
| recbole | ||||
| recbole2.0 | ||||
| recbole-da | ||||
| รีโบลเมโทร | ||||
| recbole-debias | ||||
| recbole-fairrec | ||||
| recbole-cdr | ||||
| recbole-gnn | ||||
| recbole-trm | ||||
| recbole-pjf | ||||
| recsysdatasets |
โปรดแจ้งให้เราทราบหากคุณพบข้อผิดพลาดหรือมีคำแนะนำใด ๆ โดยการยื่นปัญหา
เรายินดีต้อนรับการมีส่วนร่วมทั้งหมดตั้งแต่การแก้ไขข้อผิดพลาดไปจนถึงคุณสมบัติใหม่และส่วนขยาย
เราคาดหวังว่าการมีส่วนร่วมทั้งหมดที่กล่าวถึงในการติดตามปัญหาและผ่าน 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 และมีส่วนร่วมอย่างโดดเด่น
| เวลา | รุ่น | นักพัฒนานำ | กระดาษ |
|---|---|---|---|
| มิถุนายน 2563 - พ.ย. 2020 | v0.1.1 | Shanlei Mu (@shanleimu), Yupeng Hou (@hyp1231), Zihan Lin (@Linzihan-Backforward), Kaiyuan Li (@tsotfsk) | |
| พ.ย. 2020 - ก.ค. 2022 | v0.1.2 ~ v1.0.1 | Yushuo Chen (@chenyushuo), Xingyu Pan (@2017pxy) | |
| ก.ค. 2022 - พ.ย. 2023 | v1.1.0 ~ v1.1.1 | Lanling Xu (@Sherry-Xll), Zhen Tian (@Chenyuwuxin), Gaowei Zhang (@wicknight), Lei Wang (@paitesanshi), Junjie Zhang (@leoleojie) | |
| พ.ย. 2023 - ตอนนี้ | v1.2.0 | Bowen Zheng (@Zhengbw0324), Chen Ma (@yilu114) |
Recbole ใช้ใบอนุญาต MIT ข้อมูลและรหัสทั้งหมดในโครงการนี้สามารถใช้เพื่อวัตถุประสงค์ทางวิชาการเท่านั้น
โครงการนี้ได้รับการสนับสนุนโดยมูลนิธิวิทยาศาสตร์ธรรมชาติแห่งชาติของจีน (หมายเลข 61832017)