Transformers documentation
PEFT
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.
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_dictdel adaptador activo.
load_adapter
< source >( 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 desdefrom_pretrained. - kwargs (
dict[str, Any], opcional) — Campos adicionales deLoadStateDictConfigpasados 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 predeterminadoFalse) — 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 predeterminadoFalse) — Indica si el adaptador debe ser entrenable o no. Si esFalse, el adaptador se congelará y solo podrá usarse para inferencia. - hotswap — (
"auto"obool, 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, eladapter_namedebe 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
< source >( 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
< source >( adapter_name: list[str] | str )
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.
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.
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
< source >( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )
Parámetros
- target_rank (
int, opcional, valor predeterminado128) — 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.
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
< source >( 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
< source >( adapter_names: list[str] | str )
Eliminar un adaptador PEFT del modelo subyacente.