Como funciona

LoRA (Low-Rank Adaptation) é uma técnica de ajuste fino (fine-tuning) que não mexe nos pesos originais do modelo. Em vez disso, ela adiciona duas matrizes pequenas, de baixo posto, ao lado das camadas originais. Durante o treino, só essas matrizes novas são atualizadas; o modelo base fica congelado.

A ideia central é que a mudança necessária para adaptar um modelo a uma tarefa nova pode ser representada por uma matriz de baixo posto. Ou seja, em vez de atualizar uma matriz enorme de pesos, basta aprender uma correção compacta. Isso reduz drasticamente o número de parâmetros treináveis e o consumo de memória de vídeo (VRAM).

Na prática, você escolhe quais camadas do modelo receberão as matrizes LoRA (geralmente as camadas de atenção) e define um posto (rank) pequeno, como 8 ou 16. Quanto maior o posto, mais capacidade de aprendizado, mas também mais memória e tempo de treino.

Exemplo prático

Imagine que você quer ensinar um modelo de código a seguir o estilo de commits da sua empresa. Com LoRA, você prepara um conjunto de exemplos de commit e roda o treino em uma única GPU. O resultado é um arquivo pequeno (dezenas de megabytes) com as matrizes LoRA, que você carrega sobre o modelo base na hora de usar. O modelo original não foi alterado.

Ferramentas como Hugging Face PEFT e bibliotecas de treino (Axolotl, Unsloth) já trazem LoRA pronta. O comando típico passa o modelo base, o dataset e o posto:

Terminal
python train.py --model base-model --dataset commits.jsonl --lora-r 16 --output lora-adapter

Para que serve

LoRA serve para adaptar modelos de linguagem a tarefas específicas com pouco hardware e pouco dado. É a base da maioria dos ajustes finos feitos por equipes pequenas. Também permite manter várias adaptações (uma por cliente, uma por estilo) sem duplicar o modelo base, economizando armazenamento e memória.

Termos como QLoRA levam a ideia adiante ao combinar LoRA com quantização, permitindo treino em GPUs de consumo.