
"世有伯乐 , 然后有千里马。千里马常有 , 而伯乐不常有。" —— 韩愈《马说》
الصفحة الرئيسية | مستندات | مجموعات البيانات | ورقة | المدونات | نماذج | 中文版
تم تطوير 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 . تم تقديم المساهمة الرئيسية في هذا التحديث أدناه.
يتم إجراء امتداداتنا في ثلاثة جوانب رئيسية ، وهي النماذج/مجموعات البيانات ، والإطار ، والتكوينات. علاوة على ذلك ، نحن نقدم المزيد من الوثائق شمولية والأسئلة الشائعة المنظمة جيدًا لاستخدام مكتبتنا ، والتي تعمل على تحسين تجربة المستخدم إلى حد كبير. وبشكل أكثر تحديدًا ، يتم تلخيص أبرز أبرز هذا التحديث على النحو التالي:
نقدم المزيد من العمليات والإعدادات للمساعدة في قياس مجال التوصية.
نقوم بتحسين سهولة استخدام مكتبتنا من خلال توفير المزيد من الوثائق التفصيلية والأسئلة المنظمة بشكل جيد بشكل متكرر.
نشير إلى العديد من إرشادات التطوير لمطوري المكتبات مفتوحة المصدر.
تجعل هذه الامتدادات من الأسهل بكثير إعادة إنتاج النتائج القياسية والبقاء على اطلاع مع التطورات الحديثة في أنظمة التوصية. تم إدراج مقارنة البيانات بين هذا التحديث والإصدارات السابقة أدناه.
| وجه | Recbole 1.0 | Recbole 2.0 | هذا التحديث |
|---|---|---|---|
| مهام التوصية | 4 فئات | 3 مواضيع و 5 حزم | 4 فئات |
| النماذج ومجموعات البيانات | 73 نموذج و 28 مجموعة بيانات | 65 نموذجًا و 8 مجموعات بيانات جديدة | 91 نموذجًا و 43 مجموعة بيانات |
| بنية البيانات | مجموعة البيانات و dataloader التي تم تنفيذها | الموجهة نحو المهمة | وحدة بيانات متوافقة ورثتها من Pytorch |
| ميزات مستمرة | التضمين الميداني | التضمين الميداني | التضمين الميداني وتقديره |
| تنفيذ تسريع GPU | استخدام GPU واحد | استخدام GPU واحد | متعدد GPU والتدريب الدقيق المختلط |
| ضبط المعلمة Hyper | البحث التدريجي التسلسلي | البحث التدريجي التسلسلي | ثلاث طرق بحث في كل من التسلسل والمتوازي |
| اختبار الأهمية | - | - | الواجهة المتاحة |
| النتائج القياسية | - | عام جزئي (GNN و CDR) | التكوينات القياسية على 82 نموذجًا |
| استخدام ودود | الوثائق | الوثائق | تحسين الوثائق والأسئلة الشائعة |
يعمل Recbole مع أنظمة التشغيل التالية:
يتطلب Recbole Python الإصدار 3.7 أو أحدث.
يتطلب Recbole إصدار Torch 1.7.0 أو أحدث. إذا كنت ترغب في استخدام RECBOLE مع GPU ، فيرجى التأكد من أن إصدار CUDA أو CUDATOLKIT هو 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 | 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 |
كإطار واحد من معالجة البيانات ، وتطوير النماذج ، وتدريب الخوارزمية على التقييم العلمي ، فإن RECBOL
في الجدول التالي ، نلخص مساهمات المصدر المفتوح لمشاريع GitHub استنادًا إلى Recbole.
| المشاريع | النجوم | الشوك | مشاكل | طلبات سحب |
|---|---|---|---|---|
| recbole | ||||
| recbole2.0 | ||||
| recbole-da | ||||
| recbole-metarec | ||||
| 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 وقدموا مساهمات رائعة.
| وقت | إصدار | المطورين الرئيسيين | ورق |
|---|---|---|---|
| يونيو 2020 ~ نوفمبر 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).