Адаптеры — это дополнительная библиотека к Трансформаторам HuggingFace, объединяющая более 10 методов адаптеров в более чем 20 современных моделей Трансформеров с минимальными затратами на кодирование для обучения и вывода.
Адаптеры предоставляют унифицированный интерфейс для эффективной тонкой настройки и модульного обучения, поддерживая множество функций, таких как высокоточное или квантованное обучение (например, Q-LoRA, адаптеры Q-Bottleneck или Q-PrefixTuning), объединение адаптеров посредством арифметики задач или композиция нескольких адаптеров с помощью блоков композиции, позволяющая проводить расширенные исследования в области эффективного обучения передаче параметров для задач НЛП.
Примечание . Библиотека адаптеров заменила пакет
adapter-transformers
. Все ранее обученные адаптеры совместимы с новой библиотекой. Для перехода прочитайте: https://docs.adapterhub.ml/transitioning.html.
adapters
в настоящее время поддерживают Python 3.8+ и PyTorch 1.10+ . После установки PyTorch вы можете установить adapters
от PyPI…
pip install -U adapters
… или из исходного кода, клонировав репозиторий:
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 )
Узнать больше
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...
Узнать больше
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 )
Узнать больше
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" )))
Узнать больше
Прекрасную документацию HuggingFace по началу работы с Transformers можно найти здесь. adapters
полностью совместимы с Трансформерами .
Чтобы начать работу с адаптерами, обратитесь к этим местам:
В настоящее время адаптеры объединяют все архитектуры и методы, перечисленные ниже:
Метод | Бумага(и) | Быстрые ссылки |
---|---|---|
Переходники для узкого места | Хоулсби и др. (2019) Бапна и Фират (2019) | Краткое руководство, Блокнот |
АдаптерFusion | Пфайффер и др. (2021) | Документы: Обучение, Блокнот |
МЭД-Х, Инвертируемые адаптеры | Пфайффер и др. (2020) | Блокнот |
АдаптерКапля | Рюкле и др. (2021) | Блокнот |
МАД-Х 2.0, Внедрение обучения | Пфайффер и др. (2021) | Документы: Встраивания, Блокнот |
Настройка приставки | Ли и Лян (2021) | Документы |
Параллельные адаптеры, Адаптеры Mix-and-Match | Он и др. (2021) | Документы |
Уплотнитель | Махабади и др. (2021) | Документы |
ЛоРА | Ху и др. (2021) | Документы |
(ИА)^3 | Лю и др. (2022) | Документы |
УниПЭЛТ | Мао и др. (2022) | Документы |
Оперативная настройка | Лестер и др. (2021) | Документы |
QLoRA | Деттмерс и др. (2023) | Блокнот |
РеФТ | Ву и др. (2024) | Документы |
Арифметика задач адаптера | Хронопулу и др. (2023) Чжан и др. (2023) | Документы, Блокнот |
В настоящее время мы поддерживаем версии PyTorch всех моделей, перечисленных на странице «Обзор модели» в нашей документации.
Чтобы начать разработку адаптеров самостоятельно и узнать больше о способах внести свой вклад, см. https://docs.adapterhub.ml/contributing.html.
Если вы используете адаптеры в своей работе, пожалуйста, рассмотрите возможность ссылки на статью из нашей библиотеки: Адаптеры: унифицированная библиотека для эффективного параметрического и модульного переноса обучения.
@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",
}
В качестве альтернативы, для предшествующих adapter-transformers
, инфраструктуры Hub и адаптеров, загруженных командой AdaptorHub, рассмотрите возможность цитирования нашей исходной статьи: AdaptorHub: 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}
}