LibMTL MTL (Multi-Task Learning)을위한 Pytorch에 구축 된 오픈 소스 라이브러리입니다. 자세한 소개 및 API 지침은 최신 문서를 참조하십시오.
Github에 우리를 별표하십시오 - 그것은 우리에게 많은 동기를 부여합니다!
LibMTL 여러 대표 MTL 벤치 마크 데이터 세트에서 데이터 처리, 메트릭 목표 및 하이퍼 파라미터를 포함한 일관된 평가 절차를 제공하여 다양한 MTL 알고리즘 간의 정량적, 공정 및 일관된 비교를 허용합니다.LibMTL 8 개의 아키텍처 및 16 개의 최적화 전략을 포함한 많은 최첨단 MTL 방법을 지원합니다. 한편 LibMTL 다른 필드를 다루는 여러 벤치 마크 데이터 세트를 공정한 비교를 제공합니다.LibMTL 모듈 식 설계 원칙을 따라 사용자가 맞춤형 구성 요소를 유연하고 편리하게 추가하거나 개인화 된 수정을 할 수 있습니다. 따라서 사용자는 새로운 최적화 전략 및 아키텍처를 쉽고 빠르게 개발하거나 LibMTL 지원하여 기존 MTL 알고리즘을 새로운 애플리케이션 시나리오에 적용 할 수 있습니다. 
각 모듈은 문서로 도입됩니다.
LibMTL 현재 다음 알고리즘을 지원합니다.
| 최적화 전략 | 장소 | 논쟁 |
|---|---|---|
| 동일한 가중치 (EW) | - | --weighting EW |
| 그라디언트 정규화 (Gradnorm) | ICML 2018 | --weighting GradNorm |
| 불확실성 가중치 (UW) | CVPR 2018 | --weighting UW |
| MGDA (공식 코드) | Neurips 2018 | --weighting MGDA |
| 동적 중량 평균 (DWA) (공식 코드) | CVPR 2019 | --weighting DWA |
| 기하학적 손실 전략 (GLS) | CVPR 2019 워크숍 | --weighting GLS |
| 상충되는 그라디언트 투영 (PCGRAD) | Neurips 2020 | --weighting PCGrad |
| 그라디언트 사인 드롭 아웃 (그레이드 드롭) | Neurips 2020 | --weighting GradDrop |
| 공정한 멀티 태스킹 학습 (IMTL) | ICLR 2021 | --weighting IMTL |
| 그라디언트 백신 (Gradvac) | ICLR 2021 | --weighting GradVac |
| 충돌 대중 그라디언트 하강 (Cagrad) (공식 코드) | Neurips 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 |
| Excessmtl (공식 코드) | ICML 2024 | --weighting ExcessMTL |
| 페어 그레이드 (공식 코드) | 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은 2020을 재활용합니다 | --arch CGC , --arch PLE |
| 지점 배우기 (LTB) | ICML 2020 | --arch LTB |
| dselect-k (공식 코드) | Neurips 2021 | --arch DSelect_k |
| 데이터 세트 | 문제 | 작업 번호 | 작업 | 다중 입력 | 지원 백본 |
|---|---|---|---|---|---|
| NYUV2 | 장면 이해 | 3 | 시맨틱 세분화+ 깊이 추정+ 표면 정상 예측 | ✘ | RESNET50/ Segnet |
| 도시 스케이프 | 장면 이해 | 2 | 시맨틱 세분화+ 깊이 추정 | ✘ | RESNET50 |
| 사무실 -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 . 우리는 LibMTL 사용하는 방법을 보여주기 위해 NYUV2 데이터 세트를 예제로 사용합니다.
우리가 사용한 NYUV2 데이터 세트는 MTAN에 의해 사전 처리됩니다. 이 데이터 세트를 여기에서 다운로드 할 수 있습니다.
NYUV2 데이터 세트의 전체 교육 코드는 예/NYU에 제공됩니다. Main.py 파일은 NYUV2 데이터 세트에서 교육을위한 기본 파일입니다.
다음 명령을 실행하여 명령 줄 인수를 찾을 수 있습니다.
python main.py -h예를 들어, 다음 명령을 실행하면 NYUV2 데이터 세트에서 EW 및 HPS가있는 MTL 모델을 교육합니다.
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 MIT 라이센스에 따라 릴리스됩니다.