Adapters es una biblioteca complementaria para Transformers de HuggingFace, que integra más de 10 métodos de adaptadores en más de 20 modelos de Transformer de última generación con una sobrecarga mínima de codificación para entrenamiento e inferencia.
Adapters proporciona una interfaz unificada para un ajuste eficiente y un aprendizaje por transferencia modular, admitiendo una gran variedad de características como entrenamiento cuantificado o de precisión total (por ejemplo, Q-LoRA, Q-Bottleneck Adapters o Q-PrefixTuning), fusión de adaptadores a través de aritmética de tareas o la composición de múltiples adaptadores a través de bloques de composición, lo que permite una investigación avanzada en el aprendizaje por transferencia eficiente de parámetros para tareas de PNL.
Nota : La biblioteca de adaptadores ha reemplazado el paquete
adapter-transformers
. Todos los adaptadores previamente capacitados son compatibles con la nueva biblioteca. Para realizar la transición, lea: https://docs.adapterhub.ml/transitioning.html.
adapters
actualmente son compatibles con Python 3.8+ y PyTorch 1.10+ . Después de instalar PyTorch, puede instalar adapters
desde PyPI...
pip install -U adapters
... o desde la fuente clonando el repositorio:
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 )
Más información
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...
Más información
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 )
Más información
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" )))
Más información
La excelente documentación de HuggingFace sobre cómo comenzar con Transformers se puede encontrar aquí. adapters
son totalmente compatibles con Transformers .
Para comenzar con los adaptadores, consulte estas ubicaciones:
Actualmente, los adaptadores integran todas las arquitecturas y métodos que se enumeran a continuación:
Método | Papeles) | Enlaces rápidos |
---|---|---|
Adaptadores de cuello de botella | Houlsby et al. (2019) Bapna y Firat (2019) | Inicio rápido, cuaderno |
AdaptadorFusion | Pfeiffer et al. (2021) | Documentos: Formación, Notebook |
MAD-X, Adaptadores reversibles | Pfeiffer et al. (2020) | Computadora portátil |
Adaptador de caída | Rücklé et al. (2021) | Computadora portátil |
MAD-X 2.0, Entrenamiento de integración | Pfeiffer et al. (2021) | Documentos: incrustaciones, cuaderno |
Ajuste de prefijo | Li y Liang (2021) | Documentos |
Adaptadores paralelos, Adaptadores para mezclar y combinar | Él y otros. (2021) | Documentos |
Compactador | Mahabadi et al. (2021) | Documentos |
lora | Hu et al. (2021) | Documentos |
(IA)^3 | Liu y cols. (2022) | Documentos |
UniPELT | Mao et al. (2022) | Documentos |
Sintonización rápida | Lester et al. (2021) | Documentos |
QLoRA | Dettmers et al. (2023) | Computadora portátil |
ReFT | Wu et al. (2024) | Documentos |
Aritmética de tareas del adaptador | Chronopoulou et al. (2023) Zhang et al. (2023) | Documentos, Cuaderno |
Actualmente admitimos las versiones de PyTorch de todos los modelos enumerados en la página Descripción general del modelo de nuestra documentación.
Para comenzar a desarrollar adaptadores usted mismo y obtener más información sobre las formas de contribuir, consulte https://docs.adapterhub.ml/contributing.html.
Si utiliza adaptadores en su trabajo, considere citar nuestro artículo de biblioteca: Adaptadores: una biblioteca unificada para el aprendizaje por transferencia modular y eficiente en parámetros.
@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",
}
Alternativamente, para los adapter-transformers
predecesores, la infraestructura Hub y los adaptadores cargados por el equipo de AdapterHub, considere citar nuestro artículo inicial: AdapterHub: A Framework for Adapting Transformers.
@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}
}