Adapters est une bibliothèque complémentaire aux Transformers de HuggingFace, intégrant plus de 10 méthodes d'adaptateur dans plus de 20 modèles Transformer de pointe avec une surcharge de codage minimale pour la formation et l'inférence.
Les adaptateurs fournissent une interface unifiée pour un réglage efficace et un apprentissage par transfert modulaire, prenant en charge une myriade de fonctionnalités telles que la formation de précision ou quantifiée (par exemple Q-LoRA, les adaptateurs Q-Bottleneck ou Q-PrefixTuning), la fusion d'adaptateurs via l'arithmétique des tâches ou la composition de plusieurs adaptateurs via des blocs de composition, permettant des recherches avancées sur l'apprentissage par transfert efficace des paramètres pour les tâches PNL.
Remarque : La bibliothèque Adapters a remplacé le package
adapter-transformers
. Tous les adaptateurs précédemment formés sont compatibles avec la nouvelle bibliothèque. Pour la transition, veuillez lire : https://docs.adapterhub.ml/transitioning.html.
adapters
prennent actuellement en charge Python 3.8+ et PyTorch 1.10+ . Après avoir installé PyTorch, vous pouvez installer adapters
depuis PyPI...
pip install -U adapters
... ou depuis les sources en clonant le dépôt :
git clone https://github.com/adapter-hub/adapters.git
cd adapters
pip install .
from adapters import AutoAdapterModel
from transformers import AutoTokenizer
model = AutoAdapterModel . from_pretrained ( "roberta-base" )
tokenizer = AutoTokenizer . from_pretrained ( "roberta-base" )
model . load_adapter ( "AdapterHub/roberta-base-pf-imdb" , source = "hf" , set_active = True )
print ( model ( ** tokenizer ( "This works great!" , return_tensors = "pt" )). logits )
Apprendre encore plus
import adapters
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification . from_pretrained ( "t5-base" )
adapters . init ( model )
model . add_adapter ( "my_lora_adapter" , config = "lora" )
model . train_adapter ( "my_lora_adapter" )
# Your regular training loop...
Apprendre encore plus
from adapters import ConfigUnion , PrefixTuningConfig , ParBnConfig , AutoAdapterModel
model = AutoAdapterModel . from_pretrained ( "microsoft/deberta-v3-base" )
adapter_config = ConfigUnion (
PrefixTuningConfig ( prefix_length = 20 ),
ParBnConfig ( reduction_factor = 4 ),
)
model . add_adapter ( "my_adapter" , config = adapter_config , set_active = True )
Apprendre encore plus
from adapters import AdapterSetup , AutoAdapterModel
import adapters . composition as ac
model = AutoAdapterModel . from_pretrained ( "roberta-base" )
qc = model . load_adapter ( "AdapterHub/roberta-base-pf-trec" )
sent = model . load_adapter ( "AdapterHub/roberta-base-pf-imdb" )
with AdapterSetup ( ac . Parallel ( qc , sent )):
print ( model ( ** tokenizer ( "What is AdapterHub?" , return_tensors = "pt" )))
Apprendre encore plus
L'excellente documentation de HuggingFace sur la prise en main de Transformers peut être trouvée ici. adapters
sont entièrement compatibles avec les transformateurs .
Pour démarrer avec les adaptateurs, reportez-vous à ces emplacements :
Actuellement, les adaptateurs intègrent toutes les architectures et méthodes répertoriées ci-dessous :
Méthode | Papiers) | Liens rapides |
---|---|---|
Adaptateurs de goulot d'étranglement | Houlsby et coll. (2019) Bapna et Firat (2019) | Démarrage rapide, bloc-notes |
AdaptateurFusion | Pfeiffer et coll. (2021) | Documents : formation, bloc-notes |
MAD-X, Adaptateurs réversibles | Pfeiffer et coll. (2020) | Carnet de notes |
AdaptateurDrop | Rückle et al. (2021) | Carnet de notes |
MAD-X 2.0, Intégration de la formation | Pfeiffer et coll. (2021) | Documents : intégrations, bloc-notes |
Réglage du préfixe | Li et Liang (2021) | Documents |
Adaptateurs parallèles, Adaptateurs Mix-and-Match | Lui et coll. (2021) | Documents |
Compacteur | Mahabadi et coll. (2021) | Documents |
LoRA | Hu et coll. (2021) | Documents |
(IA)^3 | Liu et coll. (2022) | Documents |
UniPELT | Mao et coll. (2022) | Documents |
Réglage rapide | Lester et coll. (2021) | Documents |
QLoRA | Dettmers et coll. (2023) | Carnet de notes |
ReFT | Wu et coll. (2024) | Documents |
Arithmétique des tâches d’adaptateur | Chronopoulou et al. (2023) Zhang et coll. (2023) | Documents, bloc-notes |
Nous prenons actuellement en charge les versions PyTorch de tous les modèles répertoriés sur la page Présentation du modèle de notre documentation.
Pour commencer à développer vous-même sur Adapters et en savoir plus sur les façons de contribuer, veuillez consulter https://docs.adapterhub.ml/contributing.html.
Si vous utilisez des adaptateurs dans votre travail, pensez à citer notre document de bibliothèque : Adaptateurs : une bibliothèque unifiée pour un apprentissage par transfert modulaire et efficace en termes de paramètres.
@inproceedings{poth-etal-2023-adapters,
title = "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning",
author = {Poth, Clifton and
Sterz, Hannah and
Paul, Indraneil and
Purkayastha, Sukannya and
Engl{"a}nder, Leon and
Imhof, Timo and
Vuli{'c}, Ivan and
Ruder, Sebastian and
Gurevych, Iryna and
Pfeiffer, Jonas},
booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
month = dec,
year = "2023",
address = "Singapore",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.emnlp-demo.13",
pages = "149--160",
}
Alternativement, pour les adapter-transformers
précédents, l'infrastructure Hub et les adaptateurs téléchargés par l'équipe AdapterHub, veuillez envisager de citer notre article initial : AdapterHub : un cadre pour adapter les transformateurs.
@inproceedings{pfeiffer2020AdapterHub,
title={AdapterHub: A Framework for Adapting Transformers},
author={Pfeiffer, Jonas and
R{"u}ckl{'e}, Andreas and
Poth, Clifton and
Kamath, Aishwarya and
Vuli{'c}, Ivan and
Ruder, Sebastian and
Cho, Kyunghyun and
Gurevych, Iryna},
booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations},
pages={46--54},
year={2020}
}