PEFT documentation
Ajuste de prompt multitarefa
Ajuste de prompt multitarefa
O ajuste de prompt multitarefa decompõe os prompts suaves de cada tarefa em um único prompt transferível aprendido, em vez de um prompt separado para cada tarefa. O prompt único aprendido pode ser adaptado para cada tarefa por meio de atualizações multiplicativas de baixo posto.
O resumo do artigo é:
O prompt tuning, no qual um modelo pré-treinado base é adaptado a cada tarefa por meio de condicionamento em vetores de prompt aprendidos, emergiu como uma abordagem promissora para adaptar eficientemente grandes modelos de linguagem a múltiplas tarefas de baixo nível. No entanto, os métodos existentes tipicamente aprendem vetores de prompt suaves do zero, e não ficou claro como explorar o rico conhecimento entre tarefas com vetores de prompt em um cenário de aprendizado multitarefa. Propomos o multitask prompt tuning (MPT), que primeiro aprende um único prompt transferível destilando conhecimento de múltiplos prompts de origem específicos de tarefa. Em seguida, aprendemos atualizações multiplicativas de baixo rank para esse prompt compartilhado para adaptá-lo eficientemente a cada tarefa de destino de baixo nível. Experimentos extensivos em 23 conjuntos de dados de NLP demonstram que nossa abordagem proposta supera os métodos state-of-the-art, incluindo a linha de base de finetuning completo em alguns casos, apesar de ajustar apenas 0,035% dos parâmetros específicos de tarefa.

O MPT consiste em duas etapas:
- treinamento de origem - para cada tarefa, seu prompt suave é decomposto em vetores específicos da tarefa. Os vetores específicos da tarefa são multiplicados entre si para formar outra matriz W, e o produto de Hadamard é usado entre W e uma matriz de prompt compartilhada P para gerar uma matriz de prompt específica da tarefa. Os prompts específicos da tarefa são destilados em uma única matriz de prompt que é compartilhada entre todas as tarefas. Este prompt é treinado com treinamento multitarefa.
- adaptação do alvo - para adaptar o prompt único a uma tarefa de destino, um prompt de destino é inicializado e expresso como o produto de Hadamard da matriz de prompt compartilhada e da matriz de prompt de baixo posto específica da tarefa.

Visão geral do benchmark
Ainda não existe um benchmark para este método. Sinta-se à vontade para contribuir com uma configuração de experimento, mas certifique-se de primeiro criar uma issue aqui.
API
MultitaskPromptTuningConfig
classe peft.MultitaskPromptTuningConfig
< source >( 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 = Falsenum_virtual_tokens: int = Nonetoken_dim: int = Nonenum_transformer_submodules: Optional[int] = Nonenum_attention_heads: Optional[int] = Nonenum_layers: Optional[int] = Nonemodules_to_save: Optional[list[str]] = Noneprompt_tuning_init: peft.tuners.multitask_prompt_tuning.config.MultitaskPromptTuningInit | str = <MultitaskPromptTuningInit.RANDOM: 'RANDOM'>prompt_tuning_init_text: str | None = Nonetokenizer_name_or_path: str | None = Nonetokenizer_kwargs: dict | None = Noneprompt_tuning_init_state_dict_path: str | None = Noneprompt_tuning_init_task: int | None = 0num_ranks: int | None = 1num_tasks: int | None = 1 )
MultitaskPromptEmbedding
classe peft.tuners.MultitaskPromptEmbedding
< source >( config: MultitaskPromptTuningConfigword_embeddings )