Adapters é uma biblioteca complementar aos Transformers do HuggingFace, integrando mais de 10 métodos de adaptador em mais de 20 modelos de Transformer de última geração com sobrecarga mínima de codificação para treinamento e inferência.
Os adaptadores fornecem uma interface unificada para ajuste fino eficiente e aprendizado de transferência modular, suportando uma infinidade de recursos como treinamento quantizado ou de precisão total (por exemplo, Q-LoRA, Q-Bottleneck Adapters ou Q-PrefixTuning), fusão de adaptadores por meio de aritmética de tarefas ou a composição de vários adaptadores por meio de blocos de composição, permitindo pesquisas avançadas em aprendizagem de transferência com eficiência de parâmetros para tarefas de PNL.
Nota : A biblioteca Adaptadores substituiu o pacote
adapter-transformers
. Todos os adaptadores previamente treinados são compatíveis com a nova biblioteca. Para fazer a transição, leia: https://docs.adapterhub.ml/transitioning.html.
adapters
atualmente suportam Python 3.8+ e PyTorch 1.10+ . Depois de instalar o PyTorch, você pode instalar adapters
do PyPI ...
pip install -U adapters
... ou da fonte clonando o repositório:
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 )
Saber mais
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...
Saber mais
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 )
Saber mais
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" )))
Saber mais
A excelente documentação do HuggingFace sobre como começar a usar Transformers pode ser encontrada aqui. adapters
são totalmente compatíveis com Transformers .
Para começar a usar adaptadores, consulte estes locais:
Atualmente, os adaptadores integram todas as arquiteturas e métodos listados abaixo:
Método | Papel(ões) | Links rápidos |
---|---|---|
Adaptadores de gargalo | Houlsby et al. (2019) Bapna e Firat (2019) | Guia de início rápido, Caderno |
AdaptadorFusion | Pfeiffer et al. (2021) | Documentos: treinamento, caderno |
MAD-X, Adaptadores invertíveis | Pfeiffer et al. (2020) | Caderno |
AdaptadorDrop | Rücklé et al. (2021) | Caderno |
MAD-X 2.0, Incorporando treinamento | Pfeiffer et al. (2021) | Documentos: Embeddings, Notebook |
Ajuste de prefixo | Li e Liang (2021) | Documentos |
Adaptadores paralelos, Adaptadores misturar e combinar | Ele e outros. (2021) | Documentos |
Compactador | Mahabadi et al. (2021) | Documentos |
LoRA | Hu et al. (2021) | Documentos |
(IA)^3 | Liu et al. (2022) | Documentos |
UniPELT | Mao et al. (2022) | Documentos |
Ajuste rápido | Lester et al. (2021) | Documentos |
QLoRA | Dettmers et al. (2023) | Caderno |
ReFT | Wu et al. (2024) | Documentos |
Aritmética da tarefa do adaptador | Chronopoulou et al. (2023) Zhang et al. (2023) | Documentos, Caderno |
Atualmente oferecemos suporte às versões PyTorch de todos os modelos listados na página Visão geral do modelo em nossa documentação.
Para começar a desenvolver você mesmo em Adaptadores e aprender mais sobre maneiras de contribuir, consulte https://docs.adapterhub.ml/contributing.html.
Se você usa Adaptadores em seu trabalho, considere citar nosso artigo da biblioteca: Adaptadores: Uma Biblioteca Unificada para Aprendizagem por Transferência Modular e Eficiente em 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",
}
Como alternativa, para os adapter-transformers
antecessores, a infraestrutura do Hub e os adaptadores carregados pela equipe do AdapterHub, considere citar nosso artigo 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}
}