# Usando _Adapters_ no Hugging Face

> Nota: _Adapters_ substituiu a biblioteca `adapter-transformers` e é totalmente compatível em termos de pesos do modelo. Veja [aqui](https://docs.adapterhub.ml/transitioning.html) para mais informações.

[_Adapters_](https://github.com/adapter-hub/adapters) é uma biblioteca complementar ao 🤗 `transformers` para ajuste fino eficiente de modelos de linguagem pré-treinados usando adaptadores e outros métodos de eficiência de parâmetros. O _Adapters_ também fornece vários métodos para composição de módulos de adaptador durante o treinamento e a inferência. Você pode saber mais sobre isso no [_artigo Adapters_](https://arxiv.org/abs/2311.11077).

## Explorando _Adapters_ no Hub

Você pode encontrar modelos de _Adapters_ filtrando à esquerda na [página de modelos](https://huggingface.co/models?library=adapter-transformers&sort=downloads). Alguns modelos de adaptador podem ser encontrados no repositório [Adapter Hub](https://github.com/adapter-hub/hub). Os modelos de ambas as fontes são agregados no [site do AdapterHub](https://adapterhub.ml/explore/).

## Instalação

Para começar, você pode consultar o [guia de instalação do AdapterHub](https://docs.adapterhub.ml/installation.html). Você também pode usar a seguinte instalação em uma linha através do pip:

```
pip install adapters
```

## Usando modelos existentes

Para um guia completo sobre o carregamento de adaptadores pré-treinados, recomendamos consultar o [guia oficial](https://docs.adapterhub.ml/loading.html).

Em resumo, uma configuração completa consiste em três etapas:

1. Carregue um modelo base do `transformers` com a classe `AutoAdapterModel` fornecida pelo _Adapters_.
2. Use o método `load_adapter()` para carregar e adicionar um adaptador.
3. Ative o adaptador por meio de `active_adapters` (para inferência) ou ative e defina-o como treinável por meio de `train_adapter()` (para treinamento). Certifique-se também de conferir [composição de adaptadores](https://docs.adapterhub.ml/adapter_composition.html).

```py
from adapters import AutoAdapterModel

# 1.
model = AutoAdapterModel.from_pretrained("FacebookAI/roberta-base")
# 2.
adapter_name = model.load_adapter("AdapterHub/roberta-base-pf-imdb")
# 3.
model.active_adapters = adapter_name
# or model.train_adapter(adapter_name)
```

Você também pode usar `list_adapters` para encontrar todos os modelos de adaptador programaticamente:

```py
from adapters import list_adapters

# source can be "ah" (AdapterHub), "hf" (hf.co) or None (for both, default)
adapter_infos = list_adapters(source="hf", model_name="FacebookAI/roberta-base")
```

Se você quiser ver como carregar um modelo específico, pode clicar em `Use in Adapters` e receber um trecho de código funcional para carregá-lo!

## Compartilhando seus modelos

Para um guia completo sobre o compartilhamento de modelos com _Adapters_, recomendamos consultar o [guia oficial](https://docs.adapterhub.ml/huggingface_hub.html#uploading-to-the-hub).

Você pode compartilhar seu adaptador usando o método `push_adapter_to_hub` de um modelo que já contém um adaptador.

```py
model.push_adapter_to_hub(
    "my-awesome-adapter",
    "awesome_adapter",
    adapterhub_tag="sentiment/imdb",
    datasets_tag="imdb"
)
```

Esse comando cria um repositório com um cartão de modelo gerado automaticamente e todos os metadados necessários.

## Recursos adicionais

* _Adapters_ [repositório](https://github.com/adapter-hub/adapters)
* _Adaptadores_ [documentação](https://docs.adapterhub.ml)
* _Adaptadores_ [artigo](https://arxiv.org/abs/2311.11077)
* Integração com a documentação do [Hub](https://docs.adapterhub.ml/huggingface_hub.html)

