Transformers documentation

PEFT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

El PeftAdapterMixin proporciona funciones de la biblioteca PEFT para gestionar adaptadores con Transformers. Este mixin admite todos los métodos de PEFT que no son de aprendizaje de prompts (LoRA, IA3, AdaLoRA y otros). Los métodos de ajuste de prefijo (prompt tuning, prompt learning) no están admitidos porque no pueden inyectarse en un módulo de torch.

clase transformers.integrations.PeftAdapterMixin

< >

( )

Una clase que contiene todas las funciones para cargar y usar pesos de adaptadores compatibles con la biblioteca PEFT. Para más detalles sobre los adaptadores y su inyección en un modelo basado en transformers, consulte la documentación de la biblioteca PEFT: https://huggingface.co/docs/peft/index

Los métodos PEFT actualmente soportados son todos métodos de aprendizaje no basados en prompts (LoRA, IA³, etc.). Otros modelos PEFT, como prompt tuning y prompt learning, están fuera de alcance, ya que estos adaptadores no son “inyectables” en un módulo de torch. Para utilizar estos métodos, consulte la guía de uso de la biblioteca PEFT.

Con este mixin, si se instala la versión correcta de PEFT (>= 0.20.0), es posible:

  • Cargue un adaptador almacenado en una ruta local o en un repositorio remoto de Hub e inyéctelo en el modelo
  • Adjunta nuevos adaptadores al modelo y entrénalos con Trainer o por tu cuenta.
  • Adjuntar varios adaptadores y activarlos / desactivarlos de forma iterativa
  • Activar / desactivar todos los adaptadores del modelo.
  • Obtenga el state_dict del adaptador activo.

load_adapter

< >

( peft_model_id: str | None = Noneadapter_name: str | None = Nonepeft_config: dict[str, typing.Any] | None = Noneadapter_state_dict: dict[str, 'torch.Tensor'] | None = Nonelow_cpu_mem_usage: bool = Falseis_trainable: bool = Falsehotswap: typing.Union[bool, typing.Literal['auto']] = 'auto'local_files_only: bool = Falseadapter_kwargs: dict[str, typing.Any] | None = Noneload_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None**kwargs )

Parámetros

  • peft_model_id (str, opcional) — El identificador del modelo que se busca en el Hub, o una ruta local al archivo de configuración del adaptador guardado y a los pesos del adaptador.
  • adapter_name (str, opcional) — El nombre del adaptador que se utilizará. Si no se establece, se usará el nombre “default”.
  • load_config (LoadStateDictConfig, opcional) — Una configuración de carga para reutilizar al obtener los pesos del adaptador, normalmente desde from_pretrained.
  • kwargs (dict[str, Any], opcional) — Campos adicionales de LoadStateDictConfig pasados como argumentos de palabra clave.
  • peft_config (dict[str, Any], opcional) — La configuración del adaptador a añadir; los adaptadores admitidos son todas las configuraciones de aprendizaje no basadas en prompts (LoRA, IA³, etc.). Este argumento se utiliza en caso de que los usuarios pasen directamente diccionarios de estado de PEFT.
  • adapter_state_dict (dict[str, torch.Tensor], opcional) — El state dict del adaptador que se va a cargar. Este argumento se utiliza en caso de que los usuarios pasen directamente state dicts de PEFT.
  • low_cpu_mem_usage (bool, opcional, valor predeterminado False) — Reduce el uso de memoria al cargar el adaptador PEFT. Esto también debería acelerar el proceso de carga.
  • is_trainable (bool, opcional, valor predeterminado False) — Indica si el adaptador debe ser entrenable o no. Si es False, el adaptador se congelará y solo podrá usarse para inferencia.
  • hotswap — ("auto" o bool, opcional, el valor predeterminado es "auto") Si se debe sustituir un adaptador (LoRA) existente por el adaptador recién cargado en su lugar. Esto significa que, en lugar de cargar un adaptador adicional, se tomarán los pesos del adaptador existente y se reemplazarán con los pesos del nuevo adaptador. Esto puede ser más rápido y eficiente en memoria. Sin embargo, la principal ventaja del hotswapping es que, cuando el modelo se compila con torch.compile, la carga del nuevo adaptador no requiere recompilar el modelo. Al usar hotswapping, el adapter_name debe ser el nombre de un adaptador ya cargado.

    Si el nuevo adaptador y el antiguo tienen rangos y/o alfas LoRA (es decir, escalado) diferentes, necesitas llamar a un método adicional antes de cargar el adaptador:

Carga los pesos del adaptador desde un archivo o una carpeta remota del Hub. Si no estás familiarizado con los adaptadores y los métodos PEFT, te invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Requiere que PEFT esté instalado como backend para cargar los pesos del adaptador.

add_adapter

< >

( adapter_configadapter_name: str | None = None )

Parámetros

  • adapter_config (~peft.PeftConfig) — La configuración del adaptador a añadir; los adaptadores admitidos son los métodos de aprendizaje no basados en prompts (LoRA, IA³, etc.).
  • adapter_name (str, opcional, por defecto "default") — El nombre del adaptador que se va a añadir. Si no se pasa ningún nombre, se asigna un nombre predeterminado al adaptador.

Si no está familiarizado con los adaptadores y los métodos PEFT, le invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Añade un adaptador nuevo al modelo actual con fines de entrenamiento. Si no se pasa un nombre de adaptador, se asigna un nombre predeterminado al adaptador para seguir la convención de la biblioteca PEFT (en PEFT usamos “default” como nombre de adaptador predeterminado).

Tenga en cuenta que el adaptador recién añadido no se activa automáticamente. Para activarlo, use model.set_adapter.

set_adapter

< >

( adapter_name: list[str] | str )

Parámetros

  • adapter_name (Union[list[str], str]) — El nombre del adaptador que se va a establecer. También puede ser una lista de cadenas de texto para establecer varios adaptadores.

Si no está familiarizado con los adaptadores y los métodos PEFT, le invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Establece un adaptador específico forzando al modelo a usar ese adaptador y desactivando los demás.

disable_adapters

< >

( )

Si no está familiarizado con los adaptadores y los métodos PEFT, le invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Desactive todos los adaptadores que estén conectados al modelo. Esto provoca que la inferencia se realice únicamente con el modelo base.

enable_adapters

< >

( )

Si no está familiarizado con los adaptadores y los métodos PEFT, le invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Habilita los adaptadores que están unidos al modelo.

enable_peft_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

Parámetros

  • target_rank (int, opcional, valor predeterminado 128) — El rango más alto entre todos los adaptadores que se cargarán.
  • check_compiled (str, opcional, por defecto "error") — Cómo manejar el caso en que el modelo ya está compilado, algo que generalmente se debe evitar. Las opciones son:
    • “error” (predeterminado): lanza un error
    • “warn”: emitir una advertencia
    • “ignore”: no hacer nada

Permite intercambiar en caliente adaptadores PEFT con rangos diferentes o, si el modelo está compilado, sin provocar una recompilación.

Por ahora, el hotswapping solo se admite para LoRA.

La llamada a este método solo es necesaria al intercambiar adaptadores en caliente si el modelo está compilado o si los rangos de los adaptadores cargados difieren. Si todos los rangos son idénticos y el modelo no está compilado, el intercambio en caliente funciona sin necesidad de llamar a este método primero.

active_adapters

< >

( )

Si no está familiarizado con los adaptadores y los métodos PEFT, le invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Obtiene los adaptadores activos actuales del modelo. En el caso de inferencia multiadaptador (combinación de varios adaptadores para la inferencia), devuelve la lista de todos los adaptadores activos para que los usuarios puedan tratarlos en consecuencia.

En versiones anteriores de PEFT (que no admiten inferencia multiadaptador), module.active_adapter devolverá una sola cadena.

get_adapter_state_dict

< >

( adapter_name: str | None = Nonestate_dict: dict | None = None )

Parámetros

  • adapter_name (str, opcional) — El nombre del adaptador del que obtener el state dict. Si no se pasa ningún nombre, se utiliza el adaptador activo.
  • state_dict (diccionario anidado de torch.Tensor, opcional) — El diccionario de estado del modelo. Por defecto será self.state_dict(), pero puede usarse si se necesitan precauciones especiales al recuperar el diccionario de estado de un modelo (como cuando se usa paralelismo de modelos).

Si no está familiarizado con los adaptadores y los métodos PEFT, le invitamos a leer más sobre ellos en la documentación oficial de PEFT: https://huggingface.co/docs/peft

Obtiene el estado del adaptador que debe contener únicamente los tensores de pesos del adaptador especificado por adapter_name. Si no se pasa adapter_name, se utiliza el adaptador activo.

delete_adapter

< >

( adapter_names: list[str] | str )

Parámetros

  • adapter_names (Union[list[str], str]) — El nombre de los adaptadores a eliminar.

Eliminar un adaptador PEFT del modelo subyacente.

Update on GitHub