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 é um modelo multitarefa com uma série de diferentes adaptadores LoRA em seu “inventário”. O modelo aprende a combinação correta de adaptadores do inventário por meio de uma função de roteamento para escolher o melhor subconjunto de módulos para uma tarefa específica. O PEFT também oferece suporte a Multi-Head Adapter Routing (MHR) para o Polytropon, que se baseia e melhora a função de roteamento ao combinar os cabeçalhos dos adaptadores de forma mais granular. Os cabeçalhos dos adaptadores são separados em blocos disjuntos e uma função de roteamento diferente é aprendida para cada um, permitindo maior expressividade.

Combinando habilidades modulares em aprendizado multitarefa
Roteamento de Adaptadores Multi-Cabeça para Generalização entre Tarefas

O resumo do artigo é:

Um design modular incentiva os modelos neurais a desvincular e recombinar diferentes facetas do conhecimento para generalizar de forma mais sistemática para novas tarefas. Neste trabalho, assumimos que cada tarefa está associada a um subconjunto de habilidades latentes discretas de um inventário (potencialmente pequeno). Por sua vez, as habilidades correspondem a parametrizações de modelo eficientes em termos de parâmetros (esparso / de baixo posto). Ao aprender conjuntamente essas parametrizações e uma matriz de alocação tarefa-habilidade, a rede para cada tarefa é instanciada como a média dos parâmetros das habilidades ativas. Para favorecer partições suaves não triviais de habilidades entre as tarefas, experimentamos com uma série de vieses indutivos, como um prior de Indian Buffet Process e uma taxa de aprendizado de duas velocidades. Avaliamos nosso modelo de habilidades latentes em dois cenários principais: 1) aprendizado por reforço multitarefa para seguir instruções fundamentadas em 8 níveis da plataforma BabyAI; e 2) adaptação few-shot de modelos generativos pré-treinados de texto-para-texto no CrossFit, um benchmark composto por 160 tarefas de NLP. Descobrimos que o design modular de uma rede aumenta significativamente a eficiência de amostragem no aprendizado por reforço e a generalização few-shot no aprendizado supervisionado, em comparação com baselines com parâmetros totalmente compartilhados, específicos da tarefa ou gerados condicionalmente, onde o conhecimento está entrelaçado entre as tarefas. Além disso, mostramos como as habilidades discretas auxiliam a interpretabilidade, pois geram uma hierarquia explícita de tarefas.

Caso queira testar o roteamento sem treinamento primeiro, você pode conferir a variante Arrow LoRA.

API

PolyConfig

classe 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) — Dimensão de atenção de cada Lora em Poly.
  • target_modules (Union[List[str],str]) — Os nomes dos módulos aos quais aplicar o Poly.
  • exclude_modules (Optional[Union[List[str], str]]) — Os nomes dos módulos para os quais o adaptador não deve ser aplicado. Ao passar uma string, será realizada uma correspondência por expressão regular. Ao passar uma lista de strings, será realizada uma correspondência exata ou será verificado se o nome do módulo termina com qualquer uma das strings passadas.
  • modules_to_save (List[str]) — Lista de módulos, além das camadas Poly, que devem ser configurados como treináveis e salvos no checkpoint final.
  • init_weights (bool) — Se deve executar a inicialização dos pesos do Poly.
  • poly_type (Literal["poly"]) — A variante do módulo Poly a ser usada. Atualmente, apenas “poly” é suportado.
  • n_tasks (int) — O número de tarefas em um cenário de multitarefa.
  • n_skills (int) — O número de skills (LoRA) em cada camada Poly.
  • n_splits (int) — O número de splits dentro de cada LoRA de uma camada Poly. Um valor maior que 1 indica o uso de Multi-Head Routing (MHR).

Esta é a classe de configuração para armazenar a configuração de um PolyModel.

PolyModel

classe 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