PEFT documentation

Polytropon

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

Polytropon

Polytropon es un modelo multitarea con una serie de diferentes adaptadores LoRA en su “inventario”. El modelo aprende la combinación correcta de adaptadores del inventario mediante una función de enrutamiento para elegir el mejor subconjunto de módulos para una tarea específica. PEFT también admite Multi-Head Adapter Routing (MHR) para Polytropon, que se basa en la función de enrutamiento y la mejora al combinar las cabezas de adaptador de manera más granular. Las cabezas de adaptador se separan en bloques disjuntos y se aprende una función de enrutamiento diferente para cada uno, lo que permite mayor expresividad.

Combinar habilidades modulares en el aprendizaje multitarea
Enrutamiento de adaptadores multi-cabeza para generalización entre tareas

El resumen del artículo es:

Un diseño modular fomenta que los modelos neuronales desvinculen y recombinen diferentes facetas del conocimiento para generalizar de manera más sistemática a nuevas tareas. En este trabajo, asumimos que cada tarea está asociada con un subconjunto de habilidades discretas latentes de un inventario (posiblemente pequeño). A su vez, las habilidades corresponden a parametrizaciones de modelo eficientes en parámetros (esparzas / de bajo rango). Al aprender conjuntamente estas y una matriz de asignación de tareas a habilidades, la red para cada tarea se instancia como el promedio de los parámetros de las habilidades activas. Para favorecer particiones suaves no triviales de habilidades entre tareas, experimentamos con una serie de sesgos inductivos, como un prior de Indian Buffet Process y una tasa de aprendizaje de doble velocidad. Evaluamos nuestro modelo de habilidades latentes en dos escenarios principales: 1) aprendizaje por refuerzo multitarea para el seguimiento de instrucciones fundamentadas en 8 niveles de la plataforma BabyAI; y 2) adaptación few-shot de modelos generativos de texto a texto preentrenados en CrossFit, un benchmark que comprende 160 tareas de NLP. Encontramos que el diseño modular de una red aumenta significativamente la eficiencia de muestreo en el aprendizaje por refuerzo y la generalización few-shot en el aprendizaje supervisado, en comparación con las líneas base con parámetros totalmente compartidos, específicos de la tarea o generados condicionalmente, donde el conocimiento está entrelazado entre tareas. Además, mostramos cómo las habilidades discretas ayudan a la interpretabilidad, ya que generan una jerarquía explícita de tareas.

Si quieres probar el enrutamiento sin entrenar primero, puedes consultar la variante Arrow LoRA.

API

PolyConfig

clase peft.PolyConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falser: int = 8target_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truepoly_type: Literal['poly'] = 'poly'n_tasks: int = 1n_skills: int = 4n_splits: int = 1 )

Parámetros

  • r (int) — Dimensión de atención de cada Lora en Poly.
  • target_modules (Union[List[str],str]) — Los nombres de los módulos a los que se aplicará Poly.
  • exclude_modules (Optional[Union[List[str], str]]) — Los nombres de los módulos a los que no se aplicará el adaptador. Al pasar una cadena de caracteres, se realizará una coincidencia mediante expresión regular. Al pasar una lista de cadenas de caracteres, se realizará una coincidencia exacta o se comprobará si el nombre del módulo termina con alguna de las cadenas de caracteres pasadas.
  • modules_to_save (List[str]) — Lista de módulos, aparte de las capas Poly, que se configurarán como entrenables y se guardarán en el punto de control final.
  • init_weights (bool) — Si se debe realizar la inicialización de los pesos de Poly.
  • poly_type (Literal["poly"]) — La variante del módulo Poly a utilizar. Actualmente, solo se admite “poly”.
  • n_tasks (int) — El número de tareas en un escenario de multitarea.
  • n_skills (int) — El número de habilidades (LoRA) en cada capa Poly.
  • n_splits (int) — El número de divisiones dentro de cada LoRA de una capa Poly. Un valor mayor que 1 indica el uso de Multi-Head Routing (MHR).

Esta es la clase de configuración para almacenar la configuración de un PolyModel.

PolyModel

clase peft.PolyModel

< >

( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Update on GitHub