# Métodos de ajuste fino eficientes em parâmetros

Os métodos PEFT treinam o menor número possível de parâmetros, buscando um desempenho comparável ao do fine-tuning completo. Como menos parâmetros treináveis são menos expressivos, o mesmo desempenho não é garantido. Em troca, você usa menos memória, frequentemente menos computação, e ganha recursos como troca rápida entre adaptadores de especialistas e menos esquecimento do conhecimento prévio.

Dar conselhos gerais para treinar modelos grandes é difícil, mas para modelos generativos, especialmente modelos de linguagem, você pode seguir estas etapas:

1. use prompting (por exemplo, exemplos few-shot no prompt) para verificar se o modelo já é capaz de executar a tarefa. Se o modelo resolver seu problema, ótimo! Agora você pode usar [métodos baseados em prompt](#prompt-based-methods) para aprender o prompt e economizar tokens preciosos.
2. Se os métodos baseados em prompt não forem suficientes, você pode usar [ajuste de camada](#layer-tuning) e [métodos de adaptador](#adapter-methods). Esses métodos são geralmente mais expressivos que os métodos baseados em prompt e se aproximam mais do ajuste fino completo.
3. Certifique-se de medir a retenção do conhecimento já aprendido, pois cada etapa de ajuste fino pode potencialmente desaprender o conhecimento anterior.

A [suite de comparação de métodos PEFT](https://huggingface.co/spaces/peft-internal-testing/PEFT-method-comparison) tem como objetivo fornecer uma visão geral (aproximada) dos métodos implementados em benchmarks e modelos selecionados.

> [!NOTE]
> Nem todos os métodos de PEFT são iguais e existem diferenças entre as capacidades: * Quantização: nem todos os métodos suportam modelos base quantizados * Recursos: nem todos os recursos são suportados para todos os métodos (por exemplo, múltiplos adaptadores, inferência com adaptadores mistos, mesclagem/desmesclagem) * Tipos de camadas: camadas lineares são geralmente suportadas, mas nem todos os métodos de adaptador suportam camadas de incorporação (importante para estender o vocabulário) ou camadas convolucionais (importantes para alguns modelos de imagem) * Tempo de execução: os métodos de PEFT geralmente adicionam sobrecarga de tempo de execução, mas parte disso pode ser mitigada (por exemplo, por [mesclar os pesos do adaptador](../developer_guides/checkpoint#merge-the-weights))

## Métodos baseados em prompt

Prompting prepara um modelo pré-treinado congelado para uma tarefa específica de nível inferior, incluindo um prompt de texto que descreve a tarefa ou até mesmo demonstra um exemplo dela. Com o prompting, você pode evitar o treinamento completo de um modelo separado para cada tarefa de nível inferior, usando o mesmo modelo pré-treinado congelado. Isso é muito mais fácil, pois você pode usar o mesmo modelo para várias tarefas diferentes, e é significativamente mais eficiente treinar e armazenar um conjunto menor de parâmetros de prompt do que treinar todos os parâmetros do modelo.

Existem duas categorias de métodos de prompt:

- prompts rígidos são prompts de texto criados manualmente com tokens de entrada discretos; a desvantagem é que é necessário muito esforço para criar um bom prompt
- os prompts suaves são tensores aprendíveis concatenados com os embeddings de entrada que podem ser otimizados para um conjunto de dados; a desvantagem é que eles não são legíveis por humanos, pois você não está correspondendo esses "tokens virtuais" aos embeddings de uma palavra real

A biblioteca PEFT suporta vários tipos de métodos de prompting (p-tuning, prefix tuning, prompt tuning, ...), explore o sumário para uma lista completa dos métodos de soft prompt. Se você estiver interessado em aplicar esses métodos a outras tarefas e casos de uso, dê uma olhada na nossa [coleção de notebooks](https://huggingface.co/spaces/PEFT/soft-prompting)!

> [!TIP]
> Alguns conhecimentos sobre o processo geral de treinamento de um modelo de linguagem causal seriam muito úteis e permitiriam que você se concentrasse nos métodos de soft prompting. Se você é novo no assunto, recomendamos dar uma olhada primeiro no guia [Causal language modeling](https://huggingface.co/docs/transformers/tasks/language_modeling) da documentação do Transformers. Quando estiver pronto, volte e veja o quão fácil é incorporar o PEFT ao seu treinamento!

## Ajuste de Camadas

Layer Tuning categoriza os métodos que visam especificamente um tipo de camada ou um aspecto de uma camada, por exemplo, [LayerNorm Tuning](../package_reference/layernorm_tuning) visa apenas as camadas [`LayerNorm`](https://docs.pytorch.org/docs/stable/generated/torch.nn.LayerNorm.html) e [TrainableTokens](../package_reference/trainable_tokens) visa apenas tokens específicos na matriz de incorporação. Isso contrasta com os métodos baseados em prompt, que trabalham com a entrada do modelo, ou com os métodos de adaptador, que estendem os pesos existentes e são geralmente mais independentes do tipo de camada, visando camadas lineares ou convolucionais.

## Métodos de adaptador

Os métodos de adaptador podem ser vistos como formas de adicionar matrizes treináveis relativamente pequenas a modelos existentes para ajuste fino. O objetivo é introduzir poucos parâmetros treináveis para direcionar o modelo grande na direção da tarefa que precisa de ajuste fino, economizando recursos, como memória ou computação.

Uma forma popular de implementar adaptadores é inserir matrizes treináveis menores que são uma decomposição de baixo posto do layout do peso adaptado, para economizar memória. Existem várias maneiras diferentes de expressar a matriz de pesos como uma decomposição de baixo posto, mas [Low-Rank Adaptation (LoRA)](../package_reference/lora) é o método mais comum. A biblioteca PEFT suporta várias outras variações dessa formulação - algumas são variantes diretas do LoRA e estão documentadas sob LoRA, outras são diferentes o suficiente para contar como seus próprios métodos, como [Low-Rank Hadamard Product (LoHa)](../package_reference/loha), [Low-Rank Kronecker Product (LoKr)](../package_reference/lokr) e [Adaptive Low-Rank Adaptation (AdaLoRA)](../package_reference/adalora). Se você estiver interessado em aplicar esses métodos a outras tarefas e casos de uso, como segmentação semântica e classificação de tokens, dê uma olhada na nossa [coleção de notebooks](https://huggingface.co/collections/PEFT/notebooks-6573b28b33e5a4bf5b157fc1)!

> [!TIP]
> LoRA é um dos métodos PEFT mais populares e um bom ponto de partida se você está começando a usar PEFT. Foi desenvolvido originalmente para modelos de linguagem de grande escala, mas é um método de treinamento extremamente popular para modelos de difusão devido à sua eficiência e eficácia.

Adaptadores de baixo rank são apenas uma das possíveis formulações de adaptadores; o PEFT implementa muitos outros tipos de adaptadores. Por exemplo, os métodos de Ajuste Fino Ortogonal ([OFT](../package_reference/oft), [BOFT](../package_reference/boft), ...) usam decomposições ortogonais dos pesos do adaptador para alcançar um tamanho reduzido. Métodos como [MiSS](../package_reference/miss) dividem matrizes em fragmentos e compartilham esses fragmentos para economizar memória. O [IA3](../package_reference/ia3) introduz vetores aprendidos que reescalam as ativações de chave, valor e feed-forward.

