Pular para o conteúdo
mnzes

Por que treinar tão poucos parâmetros funciona?

PorDiógenes MenezesAprendendo IA em público

10 min de leitura

Porque a diferença entre um modelo ajustado e o modelo original tem posto baixo: ela cabe num espaço com muito menos dimensões que a matriz que ela altera. Se isso vale, treinar a matriz inteira é desperdício. Bastam duas matrizes finas cujo produto tem o formato dela.

A ideia nasceu de um constrangimento de implantação, não de uma questão teórica. Manter uma instância ajustada e independente por tarefa é proibitivamente caro num modelo de 175 bilhões de parâmetros1.

O que segue é o argumento que sustenta o método, com os números que existem para apoiá-lo e o ponto onde a evidência para. A configuração no dia a dia está no artigo sobre o método em si, e o lugar dele entre os métodos de ajuste eficiente tem artigo próprio.

De onde veio a hipótese

o pré-treino comprimea dimensão intrínsecaa adaptação cabenum subespaço pequenologo ΔW deveter posto baixotreine B·Ano lugar de ΔWachado de 2020hipótesedecisão
Figura 1A decomposição é a última etapa de um argumento, não o ponto de partida. O que veio antes foi uma medição sobre quantos graus de liberdade a adaptação realmente usa.

A noção de que redes neurais têm menos graus de liberdade do que parâmetros é anterior ao LoRA. Em 2018 ela foi medida diretamente: treinando redes dentro de subespaços aleatórios de dimensão crescente, chamou-se dimensão intrínseca o menor subespaço em que a rede ainda atinge desempenho aceitável2.

Em 2020 o mesmo raciocínio chegou ao ajuste fino de modelos de linguagem, e o resultado é quantitativo. Otimizando apenas 200 parâmetros treináveis, projetados de volta no espaço completo, chegou-se a 90% do desempenho do ajuste completo no MRPC. Duas observações do mesmo trabalho fecham o argumento: o pré-treino reduz implicitamente a dimensão intrínseca, e modelos maiores tendem a ter dimensão intrínseca menor3.

O passo do LoRA foi deslocar essa hipótese dos parâmetros para a alteração deles. Se a adaptação vive num subespaço pequeno, então ΔW, a diferença entre a matriz ajustada e a original, deveria ter posto baixo.

Vale marcar o que isso é: uma aposta com evidência indireta. A verificação empírica sobre deficiência de posto veio depois da proposta, como conferência, e não como premissa demonstrada de antemão1. Boa parte da confusão posterior sobre quando o método funciona nasce de tratar a aposta como teorema.

Por que não os métodos que já existiam

Ajuste eficiente não era terreno vazio em 2021. Adapters existiam desde 2019 e prefix tuning tinha saído meses antes. Descartar os dois exigiu argumento, e esse argumento explica decisões de projeto que hoje parecem arbitrárias.

Contra os adapters, o problema é latência. Os módulos precisam ser processados em sequência, e isso aparece mesmo com dimensão de gargalo pequena. Em inferência online com lote de tamanho 1 no GPT-2 medium, a latência ficou de 20,7% a 30,3% acima da do LoRA1. Piora quando o modelo é fatiado entre placas, porque profundidade extra significa mais operações de sincronização.

A condição importa e costuma ser omitida. Esse custo aparece em cenário online, de sequência curta e lote pequeno, onde não há paralelismo de hardware para absorvê-lo. Em treino com lote grande ele some. Se a sua aplicação é processamento em lote noturno, a crítica não se aplica a você.

Contra o prefix tuning, o problema é otimização. O método é difícil de otimizar e seu desempenho muda de forma não monotônica com o número de parâmetros treináveis: passando de 256 tokens especiais no caso de prefix-embedding, e de 32 no caso de prefix-layer, o resultado piora, provavelmente por deslocamento na distribuição de entrada1.

Há ainda o custo estrutural: reservar posições da sequência para o prefixo reduz o que sobra para a tarefa. Num modelo de janela curta, como os de 2021, isso era caro. A restrição continua verdadeira e pesa menos em janela longa.

A decomposição

W congeladad × d+Bd × rAr × dGPT-3 175B, r = 44,7 M parâmetros treináveis350 GB → 35 MB por tarefaa camada devolve W·x + B·A·x
Figura 2B e A não substituem W, somam a ela. Como o produto tem o formato de W, a camada devolve a soma e o resto da rede não percebe diferença de forma.

A parte mecânica cabe em uma linha. Onde havia W·x, passa a haver W·x + B·A·x, com W congelada, A de formato r × d e B de formato d × r. Só A e B recebem gradiente.

Dois detalhes de inicialização fazem o método arrancar sem sobressalto. A começa com valores aleatórios gaussianos e B começa em zero, o que torna o produto exatamente nulo no primeiro passo. O modelo parte idêntico ao original e se afasta apenas na medida em que o gradiente pedir.

O produto é multiplicado por α/r, com α fixado no primeiro r testado e não reajustado depois1. A razão é prática: sem esse fator, dobrar o posto dobraria junto a magnitude da atualização, e cada mudança de r exigiria recalibrar a taxa de aprendizado.

Os números, na escala do GPT-3

A evidência cobre RoBERTa nas versões base e large, DeBERTa XXL, GPT-2 nas versões medium e large, e o GPT-3 de 175B. As tarefas são as oito do GLUE para compreensão, E2E NLG, WebNLG e DART para geração a partir de dados, e WikiSQL e SAMSum no GPT-31. Vale ter essa lista em mente ao ler qualquer conclusão, porque ela delimita o alcance de tudo que vem depois.

O resumo mais citado é a comparação com o GPT-3 de 175B ajustado com Adam: dez mil vezes menos parâmetros treináveis e três vezes menos memória de GPU, com qualidade igual ou melhor em RoBERTa, DeBERTa, GPT-2 e GPT-31.

O número que muda o projeto de um sistema é outro. Com posto 4, o GPT-3 fica com 4,7 milhões de parâmetros treináveis, e o que você guarda por tarefa cai de 350 GB para 35 MB. Cem modelos adaptados somam 354 GB em vez de 35 TB, porque o modelo base entra na conta uma vez só1. Nessa configuração, o resultado foi 73,4 no WikiSQL e 91,7 no MNLI-m.

A ausência de latência extra é o outro resultado deliberado, e aparece como contraste direto com os adaptadores de 2019, que inseriam módulos novos no caminho de cada camada4. Como B·A tem o formato de W, a soma pode ser feita uma vez antes de servir, e o modelo resultante tem a mesma arquitetura do original.

O que a medição de posto mostrou

Esta é a parte que menos aparece nos resumos e mais ajuda na hora de configurar.

Varrendo postos de 1 a 64, apareceu algo desconfortável de aceitar: posto 1 já bastava para adaptar as projeções de consulta e de valor naqueles conjuntos1. Não é um resultado sobre modelos de linguagem em geral, é um resultado sobre aquelas tarefas.

A explicação veio de comparar os subespaços aprendidos em postos diferentes por distância de Grassmann. As direções do topo do espectro coincidem bastante entre posto 8 e posto 64; as demais não. A leitura é que o posto extra captura sobretudo ruído, o que explica por que subir r rendia tão pouco naquele regime.

A mesma análise, aplicada a duas sementes aleatórias diferentes com posto 64, mostrou mais direções em comum em ΔWq do que em ΔWv, o que sugere posto intrínseco maior na projeção de consulta.

Com orçamento fixo de 18 milhões de parâmetros, distribuir entre consulta e valor rendeu mais do que concentrar numa matriz só1. É a origem do padrão que as bibliotecas adotaram até hoje, e a justificativa é empírica, não teórica.

Onde a evidência não chega

Ela é de 2021. Os experimentos cobrem classificação em GLUE, geração curta em E2E e as três tarefas do GPT-3. Nada ali se parece com instruction tuning moderno sobre centenas de milhares de exemplos, e generalizar de um regime para o outro é justamente o que deu errado depois.

A qualidade não se sustentou em todo domínio. Um estudo de 2024 comparou o método com o ajuste completo em programação e matemática, em instruction tuning e em pré-treino continuado, e encontrou o adaptador substancialmente abaixo nos postos usuais. O mesmo trabalho mediu que o ajuste completo aprende perturbações com posto 10 a 100 vezes maior que as configurações típicas5. Se a hipótese de posto baixo valesse universalmente, essa medição não existiria.

Equivalência nunca foi prometida. A afirmação original é de paridade nas tarefas testadas. A leitura comum de que LoRA equivale ao ajuste completo é uma extrapolação da comunidade, e manter essa distinção clara é o que mais economiza frustração.

Posto 1 não é conselho de configuração. Foi medição num conjunto específico. Começar em 1 hoje, num ajuste de instrução, produz um modelo que não aprendeu nada e um diagnóstico errado sobre o dataset.

Somar os pesos e servir muitas tarefas são objetivos em conflito, e a limitação está declarada desde o começo. Absorver A e B em W para zerar a latência torna não trivial processar num mesmo lote entradas de tarefas diferentes, porque cada uma exigiria um W distinto. A saída é não fundir os pesos quando a latência não for crítica1. Foi essa tensão que abriu a linha de pesquisa em servir muitos adaptadores de uma vez, anos depois.

O que sobrou de pé

  1. A decomposição. É a contribuição que virou infraestrutura, e ninguém disputa. Toda biblioteca de ajuste eficiente implementa W + B·A.
  2. A soma antes de servir. Resolveu o problema de latência que travava os adaptadores anteriores, e continua sendo a razão de o método dominar em produção.
  3. O adaptador como arquivo separável. Não estava no centro do argumento e virou a consequência mais usada, porque permite um modelo base servindo muitos comportamentos.
  4. A hipótese, com ressalva. Vale como aproximação útil em ajuste de estilo, formato e tom. Em ensino de capacidade nova, trate como pergunta aberta e meça.

Se for ler o original, vá pela seção 7, a da investigação de posto. A proposta você já conhece de qualquer biblioteca; o que não se encontra em documentação é a evidência levantada para justificá-la e o cuidado com que ela foi enunciada.

Edward Hu, que liderou o trabalho, conta que tudo saiu de uma pergunta de produto na Microsoft de 2021, com few-shot insuficiente para produção e o checkpoint do GPT-3 inviabilizando trocar de tarefa e de cliente6. A origem explica a forma do resultado: a otimização é para custo de implantação, e é por isso que a ausência de latência recebe tanto espaço quanto a qualidade.

Footnotes

  1. Hu et al. (2021) propuseram a decomposição, reportaram redução de 10.000 vezes nos parâmetros treináveis do GPT-3 e 3 vezes na memória, mediram similaridade de subespaço entre postos e declararam a limitação de lote. 2 3 4 5 6 7 8 9 10 11

  2. Li et al. (2018) mediram dimensão intrínseca treinando redes em subespaços aleatórios de dimensão crescente.

  3. Aghajanyan et al. (2020) chegaram a 90% do desempenho do ajuste completo no MRPC otimizando 200 parâmetros projetados de volta no espaço completo, e observaram que o pré-treino reduz a dimensão intrínseca.

  4. Houlsby et al. (2019) inseriram módulos novos entre as camadas, o que acrescenta operações ao caminho de inferência.

  5. Biderman et al. (2024) encontraram o adaptador abaixo do ajuste completo em programação e matemática nos postos usuais, e mediram perturbações de posto 10 a 100 vezes maior no ajuste completo.

  6. Hu descreve a origem do método em uma pergunta de produto sobre o GPT-3, e enquadra o LoRA como generalização do ajuste completo.

Perguntas frequentes

Por que treinar tão poucos parâmetros funciona?
Porque a diferença entre os pesos ajustados e os originais tem posto baixo. Se a adaptação cabe num espaço de poucas dimensões, treinar a matriz inteira é desperdício: bastam duas matrizes finas cujo produto tem o formato dela, somado à matriz congelada.
O que é a hipótese de posto baixo?
É a aposta de que ΔW, a alteração que o fine-tuning faz numa matriz de peso, pode ser bem aproximada por um produto de posto muito menor que a dimensão da matriz. Ela veio de trabalhos sobre dimensão intrínseca, que mediram o mesmo fenômeno nos parâmetros em vez de na alteração deles.
Quais foram os resultados do paper do LoRA?
Comparado ao GPT-3 de 175B ajustado com Adam, o método reduziu os parâmetros treináveis em dez mil vezes e a memória de GPU em três vezes, com qualidade igual ou melhor em RoBERTa, DeBERTa, GPT-2 e GPT-3, e sem latência extra na inferência.
Que posto é suficiente?
Nas tarefas onde a hipótese foi testada, posto 1 já bastava para adaptar as projeções de consulta e de valor. A comparação entre subespaços sugere por quê: as direções que importam aparecem já nos postos baixos, e subir o posto acrescenta sobretudo ruído. Fora daquele regime, isso não se sustenta.
O paper do LoRA continua valendo?
A mecânica sim, e virou padrão de biblioteca. As conclusões de qualidade envelheceram: a evidência é de tarefas de classificação e geração curta de 2021, e trabalhos de 2024 em programação e matemática encontraram o método abaixo do ajuste completo nos postos usuais.
Por que LoRA não adiciona latência na inferência?
Porque o produto das duas matrizes tem exatamente o formato da matriz congelada. Você soma uma vez, grava o resultado nos pesos e serve um modelo com a arquitetura original. Era a diferença explícita em relação aos adaptadores da época, que inseriam módulos no caminho.

Referências

  1. Hu, E. J. et al.. LoRA: Low-Rank Adaptation of Large Language Models (2021)arXiv:2106.09685
  2. Aghajanyan, A. et al.. Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning (2020)arXiv:2012.13255
  3. Li, C. et al.. Measuring the Intrinsic Dimension of Objective Landscapes (2018)arXiv:1804.08838
  4. Houlsby, N. et al.. Parameter-Efficient Transfer Learning for NLP (2019)arXiv:1902.00751
  5. Biderman, D. et al.. LoRA Learns Less and Forgets Less (2024)arXiv:2405.09673
  6. Hu, E. J.. What is Low-Rank Adaptation (LoRA) | explained by the inventor