Pular para o conteúdo
mnzes

O que é parameter-efficient fine-tuning?

PorDiógenes MenezesAprendendo IA em público

11 min de leitura

PEFT, de parameter-efficient fine-tuning, é o guarda-chuva dos métodos que congelam a maior parte de um modelo pré-treinado e treinam só um punhado de parâmetros. Você paga uma fração da memória de treino e guarda megabytes por tarefa em vez de gigabytes, com qualidade próxima à do ajuste completo em boa parte dos casos.

O nome descreve uma restrição, não uma técnica. Quando alguém diz que fez PEFT, ainda não disse o que fez: cabem ali quatro famílias com mecânicas diferentes e, o que mais importa na prática, com contas de inferência diferentes.

A família mais usada hoje é o LoRA, a ponto de os dois termos serem confundidos. Vale separar, porque a escolha entre as famílias muda o desenho do sistema, e porque a decisão anterior a essa — se o ajuste fino resolve o seu problema — continua sendo a que mais economiza trabalho.

A pergunta que vem antes

Vale gastar um parágrafo no degrau anterior, porque a maioria dos projetos que chega ao PEFT deveria ter parado antes.

Existe uma escada de intervenção, e ela vai do mais barato ao mais caro: prompt melhor, exemplos no prompt, recuperação de contexto, ajuste eficiente, ajuste completo, pré-treino continuado. Cada degrau custa mais e demora mais para reverter. O erro comum é pular do primeiro para o quarto porque o primeiro foi tentado por vinte minutos.

O critério que separa os degraus é o tipo de problema. Se o modelo não sabe um fato, treinar não resolve de forma confiável, e recuperação resolve. Se o modelo sabe mas responde no formato errado, no tom errado ou seguindo a convenção errada, aí treinar é a ferramenta certa, e é onde o PEFT brilha. A distinção entre conhecimento e comportamento é a que mais economiza semanas.

O segundo critério é volume. Ajuste eficiente vale quando você tem exemplos suficientes do comportamento desejado, revisados por alguém que sabe o que é certo. Algumas centenas costumam bastar para estilo e formato. Se você não tem esse conjunto e não vai construí-lo, nenhum método da família ajuda.

O que todas têm em comum

O ajuste completo de um modelo de 7B não é caro por causa dos pesos. É caro por causa do que acompanha cada peso treinável durante o treino. Num treino de precisão mista com Adam, cada parâmetro arrasta gradiente e dois momentos do otimizador, algo em torno de 16 bytes por parâmetro na contabilidade usual. Para 7 bilhões, passa de 100 GB, além dos 14 GB do modelo em bf16.

Todo método PEFT ataca esse número pela mesma porta: reduzir a quantidade de parâmetros que recebem gradiente. O que muda entre eles é onde os parâmetros treináveis ficam.

Onde cada família enfia parâmetro

entrada + vetorestreinados no começoatençãorede de avançoLoRAB·A ao lado de Wq e Wvprefixo treinado naschaves e valoresadaptermódulo novo no caminho
Figura 1A coluna cinza é a camada original, que ninguém toca. O que separa as famílias é onde cada uma enfia parâmetro novo, e isso decide o custo na inferência.

Adapters vieram primeiro, em 2019. São módulos pequenos inseridos entre as camadas do transformer, com uma projeção que comprime a dimensão, uma não linearidade e outra que expande de volta. No GLUE, os autores ficaram a 0,4% do desempenho do ajuste completo treinando 3,6% dos parâmetros por tarefa1.

LoRA soma duas matrizes finas a cada matriz de peso escolhida, em vez de inserir módulo no caminho. O produto tem o formato da matriz original, então pode ser somado aos pesos antes de servir. Comparado ao GPT-3 de 175B ajustado com Adam, os autores reportaram dez mil vezes menos parâmetros treináveis e três vezes menos memória de GPU2.

Prefix tuning deixa os pesos intocados e otimiza vetores contínuos que entram como chaves e valores em cada camada de atenção. Treinando 0,1% dos parâmetros, o trabalho original obteve desempenho comparável com dados abundantes e superior em regime de poucos dados3.

Prompt tuning é a versão mais simples da mesma ideia: os vetores treinados entram só na sequência de entrada, não em cada camada. O resultado que dá nome ao paper é sobre escala — a diferença para o ajuste completo encolhe conforme o modelo cresce, e some na faixa de dezenas de bilhões de parâmetros4.

Métodos seletivos não acrescentam nada. O BitFit treina apenas os termos de viés que já existem no modelo, e relatou desempenho competitivo com o ajuste completo em conjuntos pequenos e médios5.

Métodos multiplicativos são o ramo mais recente. O (IA)³ aprende vetores que escalam ativações, e a receita T-Few construída sobre ele superou o estado da arte no RAFT em 6 pontos absolutos, com custo de computação bem abaixo do que custaria resolver a mesma tarefa por exemplos no prompt6.

O eixo que decide em produção

some nos pesos antes de servirfica no caminho para sempreLoRAB·A é somado a Wlatência extra: zeroadaptermódulo por camadaprefix e prompt tuningcomem janela de contexto
Figura 2O eixo que decide em produção não é quantos parâmetros você treina, é o que sobra no caminho de toda requisição depois que o treino acabou.

Comparações de PEFT costumam ranquear por parâmetros treinados, que é a métrica menos útil das três. Ela descreve o custo do treino, que acontece uma vez. O custo que se repete em toda requisição, para sempre, é outro.

família o que treina custo depois do treino
adapters módulos novos entre camadas operações extras por camada
LoRA duas matrizes por peso escolhido zero, se somado aos pesos
prefix tuning vetores nas chaves e valores parte da janela em cada camada
prompt tuning vetores na entrada parte da janela de contexto
seletivos pesos que já existem zero
multiplicativos vetores que escalam ativações uma multiplicação por ativação

A linha do LoRA é a que explica o domínio dele. Como B·A tem o formato da matriz congelada, você soma uma vez e serve um modelo com a arquitetura original. Foi um objetivo declarado do paper, escrito como contraste direto com os adapters de 20192.

As linhas de prefix e prompt tuning escondem um custo que não aparece em benchmark. Os vetores ocupam posição na sequência, e essa posição sai do orçamento disponível para o conteúdo do usuário. Num sistema com contexto apertado, isso é caro de um jeito que nenhuma tabela de parâmetros mostra.

O que muda quando as tarefas são muitas

A economia de armazenamento parece contábil até você ter mais de uma tarefa. Aí ela vira decisão de arquitetura.

Com ajuste completo, cada comportamento treinado é um modelo inteiro. Cinco comportamentos num modelo de 7B são cinco arquivos de 14 GB, cinco processos carregados e cinco vezes a memória de GPU, porque não há como compartilhar peso entre eles. Na prática, isso significa escolher poucos comportamentos e justificá-los um a um.

Com um método que produz artefato separável, o modelo base fica carregado uma vez e o artefato entra por cima. Cinco comportamentos viram cinco arquivos de dezenas de megabytes servidos pela mesma placa. A conta muda de “quantos modelos cabem no orçamento” para “quantos arquivos cabem no disco”, e a resposta deixa de limitar o desenho.

Nem toda família se presta a isso igualmente. LoRA e adapters produzem artefato que se aplica sobre o base sem tocar nos pesos originais. Métodos seletivos, que alteram pesos que já existiam, produzem um modelo modificado, o que dificulta manter várias variantes a partir de uma cópia só.

Essa é a razão prática de o LoRA ter ganhado a briga, mais do que qualquer diferença de qualidade nos benchmarks. Ele é o único que entrega ao mesmo tempo artefato pequeno, custo zero de inferência quando fundido e a opção de não fundir quando você precisa trocar de comportamento por requisição.

Onde falha

A paridade é de tarefa, não de método. Os números de 2019 a 2021 vêm de classificação em GLUE e geração curta. Um estudo de 2024 comparou LoRA e ajuste completo em programação e matemática e encontrou o adaptador substancialmente abaixo nos postos usuais, embora preservando melhor o desempenho fora do domínio7. Extrapolar paridade de um regime para o outro é o erro mais comum.

PEFT não ensina conhecimento novo melhor que o ajuste completo. Treinar menos parâmetros restringe o quanto o modelo pode mudar, e essa restrição é o mecanismo, não um efeito colateral. Quando a tarefa exige que ele mude bastante, a restrição vira teto.

Comparação entre métodos é frágil. Um levantamento de 2023 nota que os trabalhos da área raramente compartilham modelo base, conjunto e protocolo de avaliação, o que torna as tabelas de comparação entre papers pouco confiáveis8. Trate qualquer ranking geral com desconfiança e meça no seu caso.

Menos memória de treino não é pouca memória. O modelo base continua carregado inteiro. Um 7B em bf16 ocupa 14 GB antes de qualquer gradiente, e nenhum método PEFT muda isso. Quem precisa cortar essa parte precisa de quantização do base.

Como escolher

  1. Comece pelo LoRA. É o padrão razoável: qualidade conhecida, custo zero de inferência quando somado, e a maior base de ferramenta e documentação.
  2. Se o modelo é muito grande e as tarefas são muitas, considere prompt tuning. O resultado sobre escala favorece exatamente esse cenário, e o artefato por tarefa fica ainda menor.
  3. Se você não pode acrescentar nada à arquitetura, olhe os seletivos. Treinar viés não muda o grafo do modelo, o que simplifica a implantação em stacks rígidas.
  4. Meça fora do domínio alvo, sempre. Todo método PEFT preserva melhor o modelo original do que o ajuste completo, e nenhum preserva perfeitamente.
  5. Só suba para o ajuste completo depois de esgotar o posto e o conjunto de matrizes. Essa ordem custa uma tarde por tentativa; a inversa custa semanas.

Na prática, a biblioteca peft da Hugging Face implementa a maioria dessas famílias atrás da mesma interface, envolvendo um modelo já carregado. Trocar de método é trocar o objeto de configuração, o que torna o passo 4 barato o suficiente para ser rotina em vez de projeto.

O que custa

A conta que importa é a de memória de treino, e ela muda de ordem de grandeza. Para um modelo de 7B em bf16, o ajuste completo pede os 14 GB dos pesos mais algo acima de 100 GB de gradiente e estado de otimizador. Um adaptador LoRA de posto 16 nas projeções de atenção tem cerca de 8,4 milhões de parâmetros treináveis, o que põe essa segunda parcela em torno de 130 MB.

Os 14 GB do modelo continuam lá. É por isso que a fronteira prática de “cabe numa GPU de consumo” não é decidida pelo método PEFT sozinho, e sim pela combinação dele com a precisão em que o modelo base está carregado.

Footnotes

  1. Houlsby et al. (2019) ficaram a 0,4% do ajuste completo no GLUE treinando 3,6% dos parâmetros por tarefa, com módulos inseridos entre as camadas.

  2. Hu et al. (2021) reportaram 10.000 vezes menos parâmetros treináveis e 3 vezes menos memória de GPU no GPT-3, sem latência extra na inferência. 2

  3. Li e Liang (2021) treinaram 0,1% dos parâmetros e obtiveram desempenho comparável com dados abundantes e superior em regime de poucos dados.

  4. Lester et al. (2021) mostraram que a distância para o ajuste completo encolhe com a escala do modelo e desaparece na faixa de dezenas de bilhões de parâmetros.

  5. Ben Zaken et al. (2021) treinaram apenas os termos de viés e relataram desempenho competitivo em conjuntos pequenos e médios.

  6. Liu et al. (2022) aprenderam vetores que escalam ativações e superaram o estado da arte no RAFT em 6 pontos absolutos com a receita T-Few.

  7. Biderman et al. (2024) encontraram LoRA abaixo do ajuste completo em programação e matemática nos postos usuais, com melhor preservação fora do domínio.

  8. Lialin et al. (2023) apontam a falta de modelo base, conjunto e protocolo comuns entre os trabalhos da área como obstáculo à comparação direta.

Perguntas frequentes

O que é parameter-efficient fine-tuning?
É o conjunto de métodos que congelam a maior parte de um modelo pré-treinado e treinam só um punhado de parâmetros, novos ou selecionados. O objetivo é chegar perto da qualidade do ajuste completo pagando uma fração da memória de treino e guardando megabytes por tarefa em vez de gigabytes.
Quais são os principais métodos PEFT?
Quatro famílias cobrem quase tudo. Adapters inserem módulos entre as camadas. LoRA soma duas matrizes finas às matrizes de peso. Prefix e prompt tuning acrescentam vetores treinados à sequência. E os métodos seletivos, como BitFit, treinam um subconjunto dos pesos que já existem.
Qual método PEFT devo usar?
LoRA, na maioria dos casos, porque some nos pesos antes de servir e não deixa custo na inferência. Prompt tuning fica atraente em modelos muito grandes com muitas tarefas. Métodos seletivos servem quando você quer o mínimo de infraestrutura nova e a tarefa é pequena.
PEFT tem a mesma qualidade do ajuste completo?
Em tarefa de classificação e geração curta, os papers originais relataram paridade: adapters ficaram a 0,4% do ajuste completo no GLUE treinando 3,6% dos parâmetros. Em ensino de capacidade nova, como programação, medições de 2024 encontraram diferença real a favor do ajuste completo.
Qual biblioteca usar para PEFT?
A biblioteca `peft` da Hugging Face é o padrão de fato e implementa LoRA, prefix tuning, prompt tuning e variantes atrás da mesma interface. Ela envolve um modelo já carregado, então trocar de método costuma ser trocar o objeto de configuração, não reescrever o laço de treino.
PEFT reduz o custo de inferência?
Não por si só, e alguns métodos aumentam. O ganho é de treino e de armazenamento. LoRA é o caso que chega a custo zero de inferência, porque o adaptador soma nos pesos. Adapters deixam módulos no caminho, e prefix e prompt tuning gastam parte da janela de contexto.

Referências

  1. Houlsby, N. et al.. Parameter-Efficient Transfer Learning for NLP (2019)arXiv:1902.00751
  2. Hu, E. J. et al.. LoRA: Low-Rank Adaptation of Large Language Models (2021)arXiv:2106.09685
  3. Li, X. L. e Liang, P.. Prefix-Tuning: Optimizing Continuous Prompts for Generation (2021)arXiv:2101.00190
  4. Lester, B. et al.. The Power of Scale for Parameter-Efficient Prompt Tuning (2021)arXiv:2104.08691DOI:10.18653/v1/2021.emnlp-main.243
  5. Ben Zaken, E. et al.. BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models (2021)arXiv:2106.10199
  6. Liu, H. et al.. Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning (2022)arXiv:2205.05638
  7. Lialin, V. et al.. Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning (2023)arXiv:2303.15647
  8. Biderman, D. et al.. LoRA Learns Less and Forgets Less (2024)arXiv:2405.09673