PEFT documentation

Tipos de adaptadores mixtos

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

and get access to the augmented documentation experience

to get started

Tipos de adaptadores mixtos

Normalmente, no es posible mezclar diferentes tipos de adaptadores en 🤗 PEFT. Puede crear un modelo PEFT con dos adaptadores LoRA diferentes (que pueden tener opciones de configuración distintas), pero no es posible combinar un adaptador LoRA y uno LoHa. Sin embargo, con PeftMixedModel esto funciona siempre que los tipos de adaptadores sean compatibles. El propósito principal de permitir tipos de adaptadores mixtos es combinar adaptadores entrenados para inferencia. Si bien es posible entrenar un modelo de adaptadores mixtos, esto no ha sido probado y no se recomienda.

Para cargar diferentes tipos de adaptadores en un modelo PEFT, use PeftMixedModel en lugar de PeftModel:

from peft import PeftMixedModel

base_model = ...  # load the base model, e.g. from transformers
# load first adapter, which will be called "default"
peft_model = PeftMixedModel.from_pretrained(base_model, <path_to_adapter1>)
peft_model.load_adapter(<path_to_adapter2>, adapter_name="other")
peft_model.set_adapter(["default", "other"])

El método set_adapter() es necesario para activar ambos adaptadores; de lo contrario, solo el primer adaptador estaría activo. Puedes seguir añadiendo más adaptadores llamando repetidamente a add_adapter().

PeftMixedModel no admite guardar y cargar adaptadores mixtos. Los adaptadores ya deben estar entrenados y la carga del modelo requiere ejecutar un script cada vez.

Consejos

  • No todos los tipos de adaptador se pueden combinar. Consulte peft.tuners.mixed.COMPATIBLE_TUNER_TYPES para obtener una lista de los tipos compatibles. Se generará un error si intenta combinar tipos de adaptador incompatibles.
  • Es posible combinar varios adaptadores del mismo tipo, lo cual puede ser útil para combinar adaptadores con configuraciones muy diferentes.
  • Si deseas combinar muchos adaptadores diferentes, la forma más eficiente de hacerlo es añadir consecutivamente los mismos tipos de adaptador. Por ejemplo, añade LoRA1, LoRA2, LoHa1, LoHa2 en este orden, en lugar de LoRA1, LoHa1, LoRA2 y LoHa2. Aunque el orden puede afectar la salida, no existe un orden óptimo inherente, por lo que lo mejor es elegir el más rápido.
Update on GitHub