# Uso de _Adapters_ en Hugging Face

> Nota: _Adapters_ ha reemplazado a la biblioteca `adapter-transformers` y es totalmente compatible en términos de pesos del modelo. Consulte [aquí](https://docs.adapterhub.ml/transitioning.html) para más información.

[_Adapters_](https://github.com/adapter-hub/adapters) es una biblioteca complementaria de 🤗 `transformers` para afinar de manera eficiente modelos de lenguaje preentrenados mediante adaptadores y otros métodos de eficiencia de parámetros. _Adapters_ también ofrece diversos métodos para la composición de módulos de adaptadores durante el entrenamiento y la inferencia. Puedes aprender más sobre esto en el [_artículo de Adapters_](https://arxiv.org/abs/2311.11077).

## Explorar _Adapters_ en el Hub

Puedes encontrar modelos de _Adapters_ filtrando a la izquierda de la [página de modelos](https://huggingface.co/models?library=adapter-transformers&sort=downloads). Algunos modelos de adaptadores se encuentran en el [repositorio](https://github.com/adapter-hub/hub) de Adapter Hub. Los modelos de ambas fuentes se agregan en el [sitio web de AdapterHub](https://adapterhub.ml/explore/).

## Instalación

Para comenzar, puedes consultar la [guía de instalación de AdapterHub](https://docs.adapterhub.ml/installation.html). También puedes usar la siguiente instalación de una línea a través de pip:

```
pip install adapters
```

## Uso de modelos existentes

Para una guía completa sobre la carga de adaptadores preentrenados, recomendamos consultar la [guía oficial](https://docs.adapterhub.ml/loading.html).

Como resumen breve, una configuración completa consta de tres pasos:

1. Cargue un modelo base de `transformers` con la clase `AutoAdapterModel` proporcionada por _Adapters_.
2. Use el método `load_adapter()` para cargar y añadir un adaptador.
3. Active el adaptador mediante `active_adapters` (para inferencia) o actívalo y establécelo como entrenable mediante `train_adapter()` (para entrenamiento). Asegúrate también de consultar [composición 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)
```

También puede usar `list_adapters` para encontrar todos los modelos de adaptador de forma programática:

```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")
```

Si quieres ver cómo cargar un modelo específico, puedes hacer clic en `Use in Adapters` y se te proporcionará un fragmento de código funcional para cargarlo.

## Compartir tus modelos

Para una guía completa sobre el intercambio de modelos con _Adapters_, recomendamos consultar la [guía oficial](https://docs.adapterhub.ml/huggingface_hub.html#uploading-to-the-hub).

Puedes compartir tu adaptador usando el método `push_adapter_to_hub` desde un modelo que ya contiene un adaptador.

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

Este comando crea un repositorio con una tarjeta de modelo generada automáticamente y todos los metadatos necesarios.

## Recursos adicionales

* _Adaptadores_ [repositorio](https://github.com/adapter-hub/adapters)
* _Adaptadores_ [documentación](https://docs.adapterhub.ml)
* _Adaptadores_ [artículo](https://arxiv.org/abs/2311.11077)
* Integración con la documentación del [Hub](https://docs.adapterhub.ml/huggingface_hub.html)

