LibMTL هي مكتبة مفتوحة المصدر مبنية على Pytorch للتعلم متعدد المهام (MTL). راجع أحدث وثائق لتقديم مقدمات مفصلة وتعليمات API.
نجمنا على github - إنه يحفزنا كثيرًا!
LibMTL قاعدة رمز موحدة للتنفيذ وإجراء تقييم ثابت بما في ذلك معالجة البيانات ، والأهداف المترية ، والمجالات المفرطة في العديد من مجموعات بيانات MTL التمثيلية ، والتي تتيح مقارنات كمية ونزيهة ومتسقة بين خوارزميات MTL المختلفة.LibMTL يدعم العديد من أساليب MTL الحديثة بما في ذلك 8 هياكل و 16 استراتيجيات تحسين. وفي الوقت نفسه ، يوفر LibMTL مقارنة عادلة للعديد من مجموعات البيانات القياسية التي تغطي حقول مختلفة.LibMTL مبادئ التصميم المعيارية ، والتي تتيح للمستخدمين إضافة مكونات مخصصة مرنًا أو مريحًا أو إجراء تعديلات شخصية. لذلك ، يمكن للمستخدمين بسهولة وسريعة تطوير استراتيجيات وأبني على تحسينات جديدة أو تطبيق خوارزميات MTL الحالية على سيناريوهات التطبيق الجديدة بدعم من LibMTL . 
يتم تقديم كل وحدة في المستندات.
يدعم LibMTL حاليًا الخوارزميات التالية:
| استراتيجيات التحسين | أماكن | الحجج |
|---|---|---|
| الترجيح المتساوي (EW) | - | --weighting EW |
| تطبيع التدرج (GradNorm) | ICML 2018 | --weighting GradNorm |
| أوزان عدم اليقين (UW) | CVPR 2018 | --weighting UW |
| MGDA (الرمز الرسمي) | Neups 2018 | --weighting MGDA |
| متوسط الوزن الديناميكي (DWA) (الكود الرسمي) | CVPR 2019 | --weighting DWA |
| استراتيجية الخسارة الهندسية (GLS) | ورشة عمل CVPR 2019 | --weighting GLS |
| إسقاط التدرج المتضارب (PCGrad) | Neupips 2020 | --weighting PCGrad |
| تسرب علامة التدرج (Graddrop) | Neupips 2020 | --weighting GradDrop |
| التعلم المتعدد المهام النزيهة (IMTL) | ICLR 2021 | --weighting IMTL |
| لقاح التدرج (Gradvac) | ICLR 2021 | --weighting GradVac |
| نزول التدرج الناجح للنزاع (CAGRAD) (الكود الرسمي) | Neupips 2021 | --weighting CAGrad |
| Nash-MTL (الرمز الرسمي) | ICML 2022 | --weighting Nash_MTL |
| ترجيح الخسارة العشوائية (RLW) | TMLR 2022 | --weighting RLW |
| موكو | ICLR 2023 | --weighting MoCo |
| محاذاة MTL (الرمز الرسمي) | CVPR 2023 | --weighting Aligned_MTL |
| Stch (الرمز الرسمي) | ICML 2024 | --weighting STCH |
| الزائدة (الرمز الرسمي) | ICML 2024 | --weighting ExcessMTL |
| Fairgrad (الرمز الرسمي) | ICML 2024 | --weighting FairGrad |
| DB-MTL | arxiv | --weighting DB_MTL |
| البنى | أماكن | الحجج |
|---|---|---|
| مشاركة المعلمات الصلبة (HPS) | ICML 1993 | --arch HPS |
| الشبكات المتقاطعة (Cross_Stitch) | CVPR 2016 | --arch Cross_stitch |
| مزيج متعدد البوابة (MMOE) | KDD 2018 | --arch MMoE |
| شبكة انتباه متعددة المهام (MTAN) (الرمز الرسمي) | CVPR 2019 | --arch MTAN |
| التحكم في البوابة المخصصة (CGC) ، استخراج الطبقة التدريجي (PLE) | ACM Recsys 2020 | --arch CGC ، --arch PLE |
| تعلم الفرع (LTB) | ICML 2020 | --arch LTB |
| dSelect-K (رمز رسمي) | Neupips 2021 | --arch DSelect_k |
| مجموعات البيانات | مشاكل | رقم المهمة | المهام | متعدد المدخلات | دعم العمود الفقري |
|---|---|---|---|---|---|
| NYUV2 | فهم المشهد | 3 | تجزئة الدلالية+ تقدير العمق+ التنبؤ الطبيعي السطح | ✘ | resnet50/ segnet |
| مناظر المدينة | فهم المشهد | 2 | تجزئة الدلالية+ تقدير العمق | ✘ | RESNET50 |
| Office-31 | التعرف على الصور | 3 | تصنيف | ✓ | RESNET18 |
| مكتب المنزل | التعرف على الصور | 4 | تصنيف | ✓ | RESNET18 |
| QM9 | التنبؤ خاصية الجزيئية | 11 (افتراضي) | الانحدار | ✘ | GNN |
| PAWS-X | تحديد التعيين | 4 (افتراضي) | تصنيف | ✓ | بيرت |
إنشاء بيئة افتراضية
conda create -n libmtl python=3.8
conda activate libmtl
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 -f https://download.pytorch.org/whl/torch_stable.htmlاستنساخ المستودع
git clone https://github.com/median-research-group/LibMTL.git تثبيت LibMTL
cd LibMTL
pip install -r requirements.txt
pip install -e . نستخدم مجموعة بيانات NYUV2 كمثال لإظهار كيفية استخدام LibMTL .
مجموعة بيانات NYUV2 التي استخدمناها معالجتها مسبقًا بواسطة MTAN. يمكنك تنزيل مجموعة البيانات هذه هنا.
يتم توفير رمز التدريب الكامل لمجموعة بيانات NYUV2 في أمثلة/جامعة نيويورك. الملف Main.py هو الملف الرئيسي للتدريب على مجموعة بيانات NYUV2.
يمكنك العثور على وسيط سطر الأوامر عن طريق تشغيل الأمر التالي.
python main.py -hعلى سبيل المثال ، سيقوم تشغيل الأمر التالي بتدريب نموذج MTL مع EW و HPS على مجموعة بيانات NYUV2.
python main.py --weighting EW --arch HPS --dataset_path /path/to/nyuv2 --gpu_id 0 --scheduler step --mode train --save_path PATHيتم تمثيل مزيد من التفاصيل في المستندات.
إذا وجدت LibMTL مفيدة لبحثك أو تطورك ، فيرجى الاستشهاد بما يلي:
@article{lin2023libmtl,
title={{LibMTL}: A {P}ython Library for Multi-Task Learning},
author={Baijiong Lin and Yu Zhang},
journal={Journal of Machine Learning Research},
volume={24},
number={209},
pages={1--7},
year={2023}
} تم تطوير LibMTL وصيانته بواسطة Baijiong Lin.
إذا كان لديك أي سؤال أو اقتراح ، فلا تتردد في الاتصال بنا من خلال إثارة مشكلة أو إرسال بريد إلكتروني إلى [email protected] .
نود أن نشكر المؤلفين الذين يطلقون على المستودعات العامة (المدرجة أبجديًا): Cagrad و DSELECT_K_MOE و MultiObjectiveOptimization و MTAN و MTL و NASH-MTL و PYTORCH_GEOMETRIC و XTREME.
يتم إصدار LibMTL تحت رخصة معهد ماساتشوستس للتكنولوجيا.