Adapters ist eine Zusatzbibliothek zu HuggingFace Transformers, die mehr als 10 Adaptermethoden in mehr als 20 hochmoderne Transformer-Modelle mit minimalem Codierungsaufwand für Training und Inferenz integriert.
Adapter bieten eine einheitliche Schnittstelle für effiziente Feinabstimmung und modulares Transferlernen und unterstützen eine Vielzahl von Funktionen wie vollpräzises oder quantisiertes Training (z. B. Q-LoRA, Q-Bottleneck-Adapter oder Q-PrefixTuning), Adapterzusammenführung über Aufgabenarithmetik usw die Zusammensetzung mehrerer Adapter über Kompositionsblöcke, was fortgeschrittene Forschung im Parameter-effizienten Transferlernen für NLP-Aufgaben ermöglicht.
Hinweis : Die Adapterbibliothek hat das Paket
adapter-transformers
ersetzt. Alle zuvor trainierten Adapter sind mit der neuen Bibliothek kompatibel. Für den Übergang lesen Sie bitte: https://docs.adapterhub.ml/transitioning.html.
adapters
unterstützen derzeit Python 3.8+ und PyTorch 1.10+ . Nach der Installation von PyTorch können Sie adapters
von PyPI installieren ...
pip install -U adapters
... oder aus der Quelle durch Klonen des Repositorys:
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 )
Erfahren Sie mehr
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...
Erfahren Sie mehr
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 )
Erfahren Sie mehr
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" )))
Erfahren Sie mehr
Die großartige Dokumentation von HuggingFace zum Einstieg in Transformers finden Sie hier. adapters
ist vollständig kompatibel mit Transformers .
Informationen zu den ersten Schritten mit Adaptern finden Sie an diesen Orten:
Derzeit integrieren Adapter alle unten aufgeführten Architekturen und Methoden:
Verfahren | Papiere) | Quicklinks |
---|---|---|
Engpassadapter | Houlsby et al. (2019) Bapna und Firat (2019) | Schnellstart, Notizbuch |
AdapterFusion | Pfeiffer et al. (2021) | Dokumente: Schulung, Notizbuch |
MAD-X, Umkehrbare Adapter | Pfeiffer et al. (2020) | Notizbuch |
AdapterDrop | Rücklé et al. (2021) | Notizbuch |
MAD-X 2.0, Einbettungsschulung | Pfeiffer et al. (2021) | Dokumente: Einbettungen, Notizbuch |
Präfix-Tuning | Li und Liang (2021) | Dokumente |
Paralleladapter, Mix-and-Match-Adapter | Er et al. (2021) | Dokumente |
Kompakter | Mahabadi et al. (2021) | Dokumente |
LoRA | Hu et al. (2021) | Dokumente |
(IA)^3 | Liu et al. (2022) | Dokumente |
UniPELT | Mao et al. (2022) | Dokumente |
Prompte Abstimmung | Lester et al. (2021) | Dokumente |
QLoRA | Dettmers et al. (2023) | Notizbuch |
ReFT | Wu et al. (2024) | Dokumente |
Adapter-Task-Arithmetik | Chronopoulou et al. (2023) Zhang et al. (2023) | Dokumente, Notizbuch |
Wir unterstützen derzeit die PyTorch-Versionen aller Modelle, die auf der Seite „Modellübersicht“ in unserer Dokumentation aufgeführt sind.
Um selbst mit der Entwicklung von Adaptern zu beginnen und mehr über Möglichkeiten zur Mitarbeit zu erfahren, besuchen Sie bitte https://docs.adapterhub.ml/contributing.html.
Wenn Sie Adapter in Ihrer Arbeit verwenden, ziehen Sie bitte in Betracht, unseren Bibliotheksartikel zu zitieren: Adapter: Eine einheitliche Bibliothek für Parameter-effizientes und modulares Transferlernen
@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",
}
Alternativ können Sie für den Vorgänger adapter-transformers
, die Hub-Infrastruktur und die vom AdapterHub-Team hochgeladenen Adapter auch unser erstes Dokument zitieren: „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}
}