Saltar para o conteúdo principal
50% de desconto todos os planos, tempo limitado. A partir de $2.48/mo
15 min left
IA e machine learning

LoRA vs. QLoRA vs. Full Fine-Tuning: qual método usar?

B Por Brian 15 min de leitura
LoRA vs QLoRA vs full fine-tuning compared by VRAM use, quality, and when each method wins

Você decidiu fazer fine-tuning de um modelo 7B com seus próprios dados. Então chega à primeira bifurcação real: três nomes de métodos, cada um com uma resposta diferente. A documentação da Unsloth diz para começar com QLoRA. A Axolotl diz que depende do seu hardware. Metade dos posts de blog que você deu uma olhada diz "use LoRA para a maioria dos casos" e segue adiante. Enquanto isso, você está encarando uma única GPU, sem saber se ela consegue rodar sequer um desses métodos.

Esta é a decisão que fica a montante de tudo o mais. O método que você escolhe define seu orçamento de VRAM, o orçamento de VRAM escolhe seu hardware, e o hardware escolhe seu custo. Escolha o método errado e você ou queima dinheiro em memória de GPU que não precisava, ou passa um fim de semana perseguindo crashes de falta de memória numa placa que nunca serviria para o trabalho.

Então vamos resolver isso. Aqui está o que realmente difere entre LoRA, QLoRA e full fine-tuning, o que cada um custa em memória e qualidade, e uma regra para direcionar o seu caso para um deles.

A versão curta

  • O padrão é QLoRA. Para a maioria dos fine-tunings em uma única GPU, comece com QLoRA. A tabela da Axolotl coloca uma execução QLoRA de 7-8B em aproximadamente 10-14 GB de VRAM, assumindo contexto curto e micro-batches pequenos. Isso cabe em muitas placas de consumo ou prosumer de 12-24 GB, mas não em toda placa com pouca VRAM. Recorra ao LoRA simples quando tiver memória de sobra e quiser passos mais rápidos; reserve o full fine-tuning para os raros casos que realmente precisam dele.
  • A diferença de VRAM é grande. Fazer fine-tuning de um modelo 7B leva aproximadamente 60-80 GB para full fine-tuning, 16-24 GB para LoRA, e 10-14 GB para QLoRA, segundo os números publicados pela Axolotl. Essa diferença é toda a razão pela qual os métodos eficientes em parâmetros existem.
  • A perda de qualidade depende da tarefa, não é uniforme. Na maioria das tarefas de seguimento de instruções e saída estruturada, LoRA e QLoRA ficam a poucos pontos percentuais do fine-tuning completo. A diferença aumenta em raciocínio complexo, como matemática. É aí que o fine-tuning completo ainda justifica seu custo.
  • O fine-tuning completo é a exceção, não a referência padrão. Você recorre a ele em grandes mudanças de distribuição, alterações em escala de pré-treinamento ou tarefas críticas de raciocínio onde os benchmarks mostram a diferença, não como opção padrão segura.

O Que Este Guia Não Cobre

Este é um guia de seleção de método, não um tutorial de implementação. Algumas coisas ficam deliberadamente fora do escopo:

  • Variantes de LoRA (DoRA, VeRA, LoRA+). Os três métodos principais são a decisão que importa primeiro; as variantes são refinamentos aos quais se recorre depois.
  • Código passo a passo. Sem comandos de instalação ou scripts de treinamento aqui. Isso é um tutorial prático separado, não abordado aqui.
  • Treinamento com múltiplas GPUs (FSDP, DeepSpeed ZeRO) e a preparação do conjunto de dados: ambos são temas extensos por si só.
  • RLHF, DPO e otimização de preferências. Essa é uma classe de objetivo diferente do fine-tuning supervisionado.
  • Se você deveria fazer fine-tuning. Se você não tem certeza de que o fine-tuning é a ferramenta certa em comparação com retrieval, essa comparação merece sua própria resposta antes de escolher um método aqui.

O que realmente diferencia LoRA, QLoRA e o fine-tuning completo?

Three ways to adapt a model, each with a different training footprint: full fine-tuning updates all weights with the highest training footprint, LoRA freezes the base model and trains small adapter matrices, and QLoRA trains adapters on a quantized 4-bit frozen base for the lowest VRAM use

O fine-tuning completo atualiza todos os parâmetros do modelo. O LoRA congela o modelo base e, em vez disso, treina pequenas matrizes de adaptadores de baixo posto (cerca de 0,1-2% do total de parâmetros). O QLoRA adiciona mais um passo em relação ao LoRA: ele quantiza o modelo base congelado para precisão de 4 bits (usando um tipo de dado chamado NF4, NormalFloat), de modo que a base ocupe muito menos memória enquanto você treina os adaptadores.

A forma mais clara de manter os três na cabeça é como uma escada, onde cada degrau remove um custo do degrau abaixo dele.

O fine-tuning completo é o degrau mais baixo, e o mais pesado. Todos os pesos são treináveis, então o otimizador precisa rastrear um gradiente e um estado de otimizador para cada parâmetro do modelo. É aí que a memória vai, e chegaremos à matemática na próxima seção.

LoRA (Low-Rank Adaptation) congela os pesos originais e injeta pequenas matrizes treináveis nas camadas do modelo. Só essas matrizes aprendem; o modelo base apenas segue a viagem. O paper do LoRA relata que isso reduz os parâmetros treináveis em até 10.000x para um modelo de 175B e reduz a memória de GPU em cerca de 3x nessa escala, ao mesmo tempo em que apresenta desempenho "equivalente ou melhor que o fine-tuning em qualidade de modelo" nos modelos testados pelos autores. Como tão poucos parâmetros mudam, o resultado treinado é minúsculo. O blog do PEFT dá dois pontos de referência úteis: um checkpoint completo de 40 GB para bigscience/mt0-xxl, e um exemplo separado de LoRA em que o adaptador salvo tem apenas 19 MB. O ponto continua o mesmo: os checkpoints de PEFT costumam ser minúsculos em comparação com os checkpoints completos do modelo.

QLoRA toma o LoRA e reduz a parte que o LoRA deixou intacta: a base congelada. Quantizar esses pesos para NF4 de 4 bits significa que o modelo base ocupa uma fração da memória que ocuparia em 16 bits, com os adaptadores ainda treinando em precisão total por cima. O paper do QLoRA descreve o NF4 como "teoricamente ótimo do ponto de vista da informação para pesos normalmente distribuídos", o que é uma forma precisa de dizer que a representação de 4 bits é escolhida para corresponder a como os pesos do modelo realmente se distribuem, então você perde menos do que custaria um arredondamento ingênuo de 4 bits.

Essa é toda a pilha conceitual: o fine-tuning completo treina tudo, o LoRA congela a base e treina adaptadores, o QLoRA comprime a base congelada e treina adaptadores. Tudo o mais (VRAM, qualidade, quando usar qual) decorre dessas três escolhas.

Quanta VRAM cada método precisa?

VRAM needed by fine-tuning method and model size: full fine-tuning needs 24-32 GB for 1-3B models, 60-80 GB for 7-8B models, and 4-8x 80 GB for 70B+ models, versus much lower requirements for LoRA and QLoRA, with QLoRA fine-tuning a 65B model on a single 48 GB GPU

Para um modelo de 7B, os números aproximados são cerca de 60-80 GB para full fine-tuning, 16-24 GB para LoRA, e 10-14 GB para QLoRA, segundo a tabela publicada pela Axolotl. A consequência prática: a QLoRA geralmente cabe em muitas GPUs únicas de consumo ou prosumer de 12-24 GB em configurações de contexto curto e lote pequeno, enquanto o full fine-tuning de um modelo de 7B precisa de memória de data center ou uma configuração multi-GPU.

Por que o full fine-tuning é tão pesado? Uma conta rápida. Quando você treina cada parâmetro, a GPU mantém três coisas por parâmetro: o próprio peso, seu gradiente, e o estado do otimizador (otimizadores do tipo Adam guardam dois valores extras por peso). É por isso que a conta de memória chega a várias vezes o tamanho do modelo sozinho. A LoRA congela a base, então paga esse imposto de gradiente e otimizador apenas nas pequenas matrizes do adaptador. A QLoRA também armazena a base congelada em 4-bit em vez de 16-bit, cortando o maior custo restante.

Veja como os três métodos se comparam entre os tamanhos de modelo, com base na documentação da Axolotl e no paper da QLoRA para os números dos modelos grandes:

MétodoModelo 1-3BModelo 7-8BModelo 70B+
Full fine-tuning (bf16 + AdamW)24-32 GB60-80 GB4-8x 80 GB
LoRA (bf16)8-12 GB16-24 GB2x 80 GB
QLoRA (4-bit NF4)6-8 GB10-14 GB40-48 GB

Fontes: a documentação do Axolotl para os três métodos em diferentes tamanhos de modelo; o artigo do QLoRA relata de forma independente o fine-tuning de um modelo de 65B em uma única GPU de 48 GB "preservando o desempenho total da tarefa equivalente ao finetuning completo em 16 bits," o que está alinhado com o valor de 70B do QLoRA. O blog do Hugging Face sobre blog sobre quantização de 4 bits mostra separadamente um modelo de 13B treinado em uma única T4 de 16 GB e um modelo de 33B em uma GPU de 24 GB com QLoRA. Esses são pontos de referência úteis se o seu objetivo estiver entre as linhas da tabela.

O único número que vale a pena memorizar: um modelo de 65B em uma única placa de 48 GB. Esse é o resultado de destaque do QLoRA, e ele redefine o que significa "eu só tenho uma GPU".

Conclusão da seção: a hierarquia de VRAM é full >> LoRA > QLoRA, e o salto de full para QLoRA é grande o suficiente para mover uma tarefa de um rack multi-GPU para uma única placa.

LoRA ou QLoRA realmente custam qualidade?

Para a maioria das tarefas de seguimento de instruções e saída estruturada, LoRA e QLoRA ficam a poucos pontos percentuais do fine-tuning completo. A diferença aumenta em raciocínios complexos (especialmente matemática), onde o fine-tuning completo ainda se mantém claramente na frente. Portanto, a resposta não é "quase equivalente" nem "pior". Depende da tarefa, e o tipo de tarefa mostra em que lado dessa linha você está.

As evidências mais claras por tipo de tarefa vêm de um estudo da Anyscale de setembro de 2023 sobre estudo da Anyscale sobre o Llama 2. No ViGGO, uma tarefa de representação funcional estruturada, o LoRA atingiu aproximadamente 95% da precisão do fine-tuning completo em modelos de 7B e 13B: uma diferença de 2% que os autores consideraram uma troca aceitável. Na geração de SQL, o LoRA quase igualou o fine-tuning completo, e o modelo LoRA 13B na verdade superou o 7B totalmente ajustado. No GSM8k, um benchmark de raciocínio matemático, o LoRA teve desempenho consistentemente inferior ao fine-tuning completo em 7B e 13B, com a diferença diminuindo apenas em 70B. A interpretação da equipe da Anyscale é que a aproximação de baixo posto do LoRA pode não capturar uma habilidade tão intricada quanto matemática de múltiplas etapas.

Uma ressalva sobre esses números: esse estudo foi feito com o Llama 2 em setembro de 2023. O padrão por tipo de tarefa (saída estruturada próxima, raciocínio complexo mais distante) é a conclusão duradoura que se manteve em essência desde então. Mas as porcentagens exatas podem diferir em um modelo base mais novo, como Llama 3 ou Mistral, então trate os números como o formato da troca, não uma garantia para seu modelo.

A história de qualidade do QLoRA é única. O artigo do QLoRA relata que o Guanaco, seu modelo de 65B treinado com QLoRA, atingiu 99,3% do desempenho do ChatGPT no benchmark Vicuna. Forte, mas limitado a esse benchmark específico e a essa comparação de 2023, não uma afirmação geral de que "QLoRA é igual ao ChatGPT". Em comparação com o LoRA simples, a Axolotl caracteriza o QLoRA como tendo "leve degradação devido ao ruído de quantização": a base de 4 bits introduz pequenos erros que a base de precisão total do LoRA não tem. Para a maioria dos trabalhos isso é invisível; para uma tarefa sensível a pequenas mudanças de precisão, é algo que vale a pena verificar em vez de supor.

Dica profissional: A surpresa de qualidade mais comum não é QLoRA versus LoRA. É um modelo com fine-tuning que sai pior que o modelo base do qual você partiu. Normalmente significa que o treinamento fez algo que você não pretendia: muito agressivo em um conjunto de dados estreito, ou avaliado apenas na nova tarefa enquanto a capacidade geral regredia silenciosamente. Sempre teste o modelo com fine-tuning em alguns prompts fora da sua distribuição de treinamento antes de confiar nele. Uma regressão ali é o sinal para recuar, não para lançar.

Conclusão da seção: a paridade de qualidade depende da tarefa. Saída estruturada e seguimento de instruções são seguros para LoRA/QLoRA; raciocínio complexo é onde o fine-tuning completo ainda justifica seu custo.

Quando Você Deve Escolher Cada Método?

Decision tree for picking a fine-tuning method: check available VRAM first, then task type and quality requirement, then speed needs, routing to QLoRA as the default, LoRA as the speed and headroom upgrade, or full fine-tuning as the maximum-performance choice

Comece com QLoRA para a maioria dos fine-tunings de GPU único. Suba para o LoRA simples quando tiver margem de VRAM e quiser passos mais rápidos ou um teto de qualidade um pouco mais alto. Reserve o fine-tuning completo para os casos que realmente precisam: grandes mudanças de distribuição, mudanças em escala de pré-treinamento, ou tarefas críticas de raciocínio em que a lacuna do benchmark é real. Guie-se por três entradas, em ordem: VRAM disponível, tipo de tarefa e requisito de qualidade, depois velocidade.

Aqui está o roteamento no formato "faça isso, não aquilo":

1. Verifique primeiro sua VRAM. Se você está usando uma única placa com 24 GB ou menos (a maioria das GPUs de consumo e prosumer), o QLoRA é seu método padrão, porque é o único dos três que cabe de forma confiável um modelo de 7B nesse limite. Não recorra ao full fine-tuning em uma única placa de consumo; a tabela acima já mostra que um trabalho de 7B não vai caber, e você vai passar o fim de semana aprendendo isso da maneira mais difícil.

2. Depois avalie sua tarefa e o padrão de qualidade exigido. Se sua tarefa é seguir instruções, gerar saída estruturada, SQL, ou adaptação geral de domínio, as evidências da Anyscale mostram que LoRA e QLoRA oferecem qualidade quase total. Fique com a opção padrão. Se sua tarefa exige muito raciocínio (matemática em várias etapas, cadeias lógicas complexas) e a qualidade não é negociável, esse é seu primeiro motivo real para considerar migrar para full fine-tuning, porque é o único tipo de tarefa em que os benchmarks mostram uma diferença consistente.

3. Depois avalie a velocidade. O QLoRA troca parte da velocidade por etapa em favor da economia de memória: a base de 4 bits precisa ser desquantizada em tempo real. Se você tem VRAM suficiente para rodar o LoRA normal (16-24 GB para um modelo de 7B), você ganha etapas mais rápidas e evita o ruído da quantização, o que torna o LoRA a melhor escolha quando a memória não é a restrição limitante e você está iterando muito.

Quando is o full fine-tuning é a resposta certa? A orientação da Axolotl é direta: é necessário para pre-training, e é a escolha "quando você tem bastante memória de GPU ou configurações multi-GPU, e precisa de desempenho máximo". Fora dessas condições (e para a grande maioria do fine-tuning na prática, que é adaptar um modelo existente a um comportamento ou domínio específico), os métodos eficientes em parâmetros entregam a maior parte da qualidade com uma fração do hardware.

A Unsloth expõe a escolha padrão claramente:

"Recomendamos começar com QLoRA, pois é um dos métodos mais acessíveis e eficazes para treinar modelos."

Essa é a regra. Use QLoRA como padrão, suba para LoRA em busca de velocidade quando tiver memória suficiente, e só recorra ao fine-tuning completo quando a tarefa ou a escala exigirem.

Conclusão da seção: QLoRA é a opção padrão; LoRA é o upgrade de velocidade e margem; o fine-tuning completo é a exceção que se justifica com uma mudança de distribuição, um pré-treinamento ou um benchmark de raciocínio.

O que as pessoas costumam entender errado sobre os métodos de fine-tuning?

Dois mal-entendidos são responsáveis pela maioria dos fins de semana desperdiçados. O primeiro é tratar o fine-tuning como uma forma de ensinar novos fatos a um modelo, quando seu efeito principal é moldar o comportamento. O segundo é assumir que se pode comprar qualidade apenas girando um botão: que um LoRA rank mais alto, ou full fine-tuning em vez de QLoRA, garante automaticamente um modelo melhor. Ambos são meias-verdades, e é exatamente por isso que induzem ao erro.

O Fine-Tuning Ensina Novos Fatos a um Modelo?

Este ponto gera uma divisão genuína entre especialistas, então vale a pena entender bem a nuance em vez de escolher um lado. Vários guias práticos chamam "o fine-tuning ensina novos fatos" de o equívoco número um: o argumento deles é que o fine-tuning é muito melhor em moldar como um modelo responde do que em injetar de forma confiável fatos específicos que ele nunca viu no pré-treinamento. A documentação do Unsloth contesta isso diretamente, chamando a afirmação de que o fine-tuning não pode ensinar conhecimento novo de "falsa", e descrevendo o fine-tuning como uma forma de "injetar e aprender novas informações específicas de domínio".

Ambos têm parte da razão, e a leitura que reconcilia os dois é a seguinte: o fine-tuning é confiável para moldar o comportamento e reforçar conhecimento que já está latente no modelo base, e pode codificar padrões específicos de domínio. Onde ele não é confiável é em implantar fatos isolados que estavam totalmente ausentes do pré-treinamento. Quanto mais seu objetivo se parecer com "memorizar este documento específico", mais provável é que você esteja usando a ferramenta errada, e o retrieval pode atendê-lo melhor. Assim, a orientação prática sobrevive ao desacordo: apoie-se no fine-tuning para comportamento e estilo, seja cético quanto a usá-lo como mecanismo de injeção de fatos.

Um LoRA Rank Mais Alto Sempre Melhora a Qualidade?

Não, e este é o botão mais fácil de girar demais. A intuição é que um rank mais alto dá ao adapter mais capacidade, então mais deveria ser melhor. A Databricks testou isso empiricamente e descobriu que dobrar o rank "aparentemente não resulta em nenhum aumento perceptível na qualidade da saída". O que realmente fez diferença em seus experimentos foi quais camadas eles direcionaram (adaptar todas as camadas lineares em vez de apenas os blocos de atenção), não aumentar o número do rank. A lição que vale a pena tirar: gaste seu esforço de ajuste nos módulos-alvo e na qualidade dos dados antes de gastá-lo inflando o rank.

A qualidade do LoRA é sempre igual à do fine-tuning completo?

Não universalmente, e um artigo de pesquisa recente identifica um modo de falha específico. "LoRA vs Full Fine-tuning: An Illusion of Equivalence" de Shuttleworth et al. conclui que o treinamento LoRA pode introduzir "dimensões intrusas" (vetores singulares de alta ordem ausentes em modelos com fine-tuning completo) e as relaciona ao esquecimento em cenários de aprendizado contínuo, nos quais o mesmo modelo passa por fine-tuning repetidamente. Trata-se de uma ressalva específica, não de uma refutação geral: se você fizer uma única rodada de fine-tuning para uma única tarefa, a evidência ampla de paridade de qualidade continua válida. Se você encadear fine-tunings e se preocupar em preservar a capacidade geral do modelo base, esse é o modo de falha a observar.

Perguntas frequentes

Qual é a diferença entre LoRA, QLoRA e o fine-tuning completo?

O fine-tuning completo atualiza todos os parâmetros do modelo. O LoRA congela o modelo base e, em vez disso, treina pequenas matrizes adaptadoras de baixa ordem, cerca de 0,1 a 2% dos parâmetros. O QLoRA faz o que o LoRA faz e também quantiza o modelo base congelado para precisão 4-bit NF4, de modo que a base ocupa muito menos memória enquanto os adaptadores são treinados. O resultado é uma escala clara de consumo de memória: o fine-tuning completo é o mais pesado, o LoRA é mais leve, e o QLoRA é o mais leve de todos.

Quanta VRAM eu preciso para fazer fine-tuning de um modelo de 7B?

Para um modelo de 7B, os números da Axolotl indicam que o fine-tuning completo fica em torno de 60-80 GB, o LoRA em 16-24 GB, e o QLoRA em 10-14 GB. O QLoRA é o único dos três que geralmente cabe em muitas GPUs de consumo ou prosumer de 12-24 GB; o fine-tuning completo de um modelo de 7B exige memória de classe data center ou múltiplas GPUs.

A qualidade do QLoRA é pior do que a do LoRA ou do fine-tuning completo?

Depende da tarefa. Para a maioria do trabalho de seguimento de instruções e saída estruturada, o QLoRA fica a poucos pontos percentuais do fine-tuning completo, e a Axolotl descreve apenas uma "leve degradação devido ao ruído de quantização" em comparação com o LoRA simples. A diferença aumenta em tarefas de raciocínio complexo como matemática, onde o fine-tuning completo mostrou uma vantagem consistente em um estudo da Anyscale de 2023 sobre o Llama 2.

Quando o Fine-Tuning Completo Realmente Vale a Pena?

O fine-tuning completo vale seu custo para pré-treinamento, grandes mudanças de distribuição, e tarefas críticas de raciocínio em que os benchmarks mostram uma lacuna real de qualidade. Também é o caminho quando você tem bastante memória de GPU ou uma configuração multi-GPU e precisa de qualidade máxima. Para o caso comum (adaptar um modelo existente a um comportamento ou domínio específico), LoRA ou QLoRA dá a você a maior parte da qualidade com uma fração do hardware.

O Fine-Tuning Ensina Novos Fatos a um Modelo?

Parcialmente. O fine-tuning é confiável para moldar comportamento e reforçar conhecimento já latente no modelo base, e pode codificar padrões específicos de domínio. Não é confiável para implantar fatos discretos que estavam totalmente ausentes do pré-treinamento. Há uma discordância genuína entre especialistas aqui. A documentação da Unsloth argumenta que o fine-tuning pode ensinar novos conhecimentos, enquanto outros guias chamam isso de o principal equívoco, e a visão conciliadora é usar fine-tuning para comportamento e estilo, e recorrer à recuperação quando o objetivo é lembrar fatos específicos.

Onde Isso Te Deixa

A escolha do método se reduz a um padrão e duas saídas de emergência: comece com QLoRA, suba para LoRA quando a memória não é a restrição e você quer passos mais rápidos, suba para o fine-tuning completo apenas quando uma mudança de distribuição, pré-treinamento, ou um benchmark de raciocínio o exigir.

Com o método definido, a próxima decisão é o hardware que ele implica. Sua escolha de método acabou de te dizer se você está procurando uma única placa de consumo ou memória de data center. Se você quiser comparar placas específicas para cargas de trabalho de IA, nosso H100 vs RTX 4090 benchmark de desempenho cobre esse terreno. Dimensionar a GPU para o método escolhido, e um passo a passo para executar o próprio trabalho de treinamento, são guias separados próprios.

Share

Mais do blogue

Continue a ler.

Pronto para implantar? A partir de $2,48/mês.

Cloud independente, desde 2008. AMD EPYC, NVMe, 40 Gbps. Reembolso em 14 dias.