PEFT documentation
Ajuste de prompts multitarea
Ajuste de prompts multitarea
El ajuste de prompts multitarea descompone los prompts suaves de cada tarea en un único prompt transferible aprendido, en lugar de un prompt separado para cada tarea. El prompt único aprendido puede adaptarse para cada tarea mediante actualizaciones de bajo rango multiplicativas.
El resumen del artículo es:
El prompt tuning, en el que un modelo preentrenado base se adapta a cada tarea mediante la condicionamiento en vectores de prompt aprendidos, ha surgido como un enfoque prometedor para adaptar de manera eficiente los grandes modelos de lenguaje a múltiples tareas descendentes. Sin embargo, los métodos existentes suelen aprender vectores de prompt suaves desde cero, y no ha quedado claro cómo explotar el rico conocimiento entre tareas con vectores de prompt en un entorno de aprendizaje multitarea. Proponemos el multitask prompt tuning (MPT), que primero aprende un único prompt transferible destilando conocimiento de múltiples prompts fuente específicos de cada tarea. Luego, aprendemos actualizaciones multiplicativas de bajo rango para este prompt compartido para adaptarlo de manera eficiente a cada tarea descendente objetivo. Experimentos extensos en 23 conjuntos de datos de NLP demuestran que nuestro enfoque propuesto supera a los métodos del estado del arte, incluido el baseline de finetuning completo en algunos casos, a pesar de ajustar solo el 0,035 % de los parámetros específicos de la tarea.

MPT consta de dos etapas:
- entrenamiento de origen: para cada tarea, su prompt suave se descompone en vectores específicos de la tarea. Los vectores específicos de la tarea se multiplican entre sí para formar otra matriz W, y se utiliza el producto de Hadamard entre W y una matriz de prompt compartida P para generar una matriz de prompt específica de la tarea. Los prompts específicos de la tarea se destilan en una única matriz de prompt que se comparte entre todas las tareas. Este prompt se entrena con entrenamiento multitarea.
- adaptación al objetivo: para adaptar el único prompt a una tarea objetivo, se inicializa un prompt objetivo y se expresa como el producto de Hadamard de la matriz de prompt compartida y la matriz de prompt de bajo rango específica de la tarea.

Resumen de las pruebas de rendimiento
Aún no existe un benchmark para este método. Siéntase libre de contribuir con una configuración de experimento, pero asegúrese de crear primero un issue aquí.
API
MultitaskPromptTuningConfig
clase 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
clase peft.tuners.MultitaskPromptEmbedding
< source >( config: MultitaskPromptTuningConfigword_embeddings )