Radar IA 19 de outubro de 2026
✨ IA MÁGICA Agentes · Modelos · Automação
ÚLTIMAS
Novidades e Integrações

Fine-tuning com LoRA usando Unsloth no Google Colab

Passo a passo de fine-tuning com LoRA e Unsloth no Google Colab: requisitos de GPU e VRAM, formatos de dataset, hiperparâmetros oficiais e quando vale a pena treinar em vez de usar RAG.

Fine-tuning com LoRA usando Unsloth no Google Colab
Imagem: capa editorial — Novidades e Integrações

Dá para fazer fine-tuning com LoRA usando Unsloth direto no Google Colab, sem alugar GPU própria. O fluxo é este: abrir um notebook pronto da Unsloth, instalar a biblioteca, carregar um modelo aberto do Hugging Face em 4 bits, apontar para o seu dataset, treinar e salvar o adaptador LoRA. O Unsloth cuida do peso da memória, e é por isso que um modelo de 8 bilhões de parâmetros cabe numa GPU gratuita como a T4, algo que na configuração tradicional exigiria bem mais VRAM.

O ponto de atenção não é o código, que é curto, e sim o dataset e a decisão de treinar. Antes de começar, vale entender se o problema pede um modelo ajustado ou apenas um bom prompt com RAG. Este guia mostra o passo a passo real, com base na documentação oficial do Unsloth e do Hugging Face.

Resumo rápido

  • Fine-tuning com LoRA ajusta apenas uma pequena fração dos pesos, o que reduz muito a VRAM necessária.
  • Pela tabela oficial da Unsloth, um modelo de 8B em QLoRA (4 bits) precisa de cerca de 6 GB de VRAM; a T4 gratuita do Colab tem esse perfil.
  • LoRA em 16 bits é mais preciso, mas consome da ordem de 4 vezes mais VRAM que o QLoRA.
  • Dataset em formato de instrução (Alpaca) ou de conversa (ShareGPT) são os caminhos mais comuns para SFT.
  • A documentação da Unsloth recomenda ranks como 16 ou 32 e 1 a 3 épocas como ponto de partida.
  • Fine-tuning ensina comportamento e estilo; RAG entrega informação atualizada. Muita gente precisa dos dois.

Quando fine-tuning vale a pena (e quando não vale)

A própria documentação da Unsloth separa três objetivos que o fine-tuning atende: atualizar conhecimento, personalizar comportamento e otimizar para uma tarefa específica. O terceiro é o mais valioso na prática. Se você quer que o modelo responda sempre no tom da sua marca, siga um formato rígido de saída ou acerte em uma tarefa estreita que se repete muito, o ajuste tende a ajudar.

O erro clássico é tentar resolver com fine-tuning um problema de informação desatualizada. Se a sua dor é que o modelo não sabe o preço de hoje nem o conteúdo da sua base interna, isso é território de RAG: buscar o dado certo na hora e injetar no prompt. A documentação da Unsloth afirma que ferramentas de recuperação são excelentes para acessar informação atualizada de bases externas, e que combinar as duas abordagens rende os melhores resultados. Fine-tuning sozinho não substitui uma busca bem feita.

Situação Caminho indicado Motivo
Modelo precisa do dado mais recente RAG A informação muda e deve ser buscada na hora
Base de conhecimento interna grande RAG Atualizar o índice é mais simples que retreinar
Tom de voz e estilo fixos Fine-tuning Comportamento se aprende no ajuste
Saída em formato muito específico Fine-tuning O formato vira padrão aprendido
Tarefa estreita, repetida milhares de vezes Fine-tuning Reduz a dependência de prompts longos
Informação atualizada e formato fixo juntos Os dois A Unsloth recomenda combinar as abordagens

Cabe uma ressalva honesta. A Unsloth afirma que fine-tuning pode sim adicionar conhecimento novo, contrariando o mito de que ele só muda estilo. Isso é verdade, mas exige dataset de qualidade e cuidado, e continua sendo mais frágil para fatos que mudam toda semana do que uma busca em base viva.

Requisitos de GPU e VRAM

Segundo a documentação de requisitos da Unsloth, o treino roda em GPUs NVIDIA, AMD, Intel e em Mac. Para NVIDIA, o requisito mínimo é CUDA Compute Capability 7.0, faixa que inclui a T4 usada no Colab. O detalhe decisivo é a VRAM. A tabela oficial de requisitos, que a Unsloth descreve como mínimo absoluto, traz estes números:

Parâmetros do modelo QLoRA (4 bits) LoRA (16 bits)
3B 3,5 GB 8 GB
7B 5 GB 19 GB
8B 6 GB 22 GB
14B 8,5 GB 33 GB
27B 22 GB 64 GB
70B 41 GB 164 GB

Leia a tabela com atenção ao que ela implica para o Colab. Um modelo de 8B em QLoRA pede cerca de 6 GB, o que cabe na T4 gratuita. O mesmo modelo em LoRA de 16 bits pede em torno de 22 GB, o que já exige uma GPU maior, paga. A própria Unsloth explica que o QLoRA usa 4 bits e gasta cerca de 4 vezes menos VRAM que o LoRA de 16 bits, sendo um pouco mais lento e marginalmente menos preciso. Em outras palavras: a diferença entre caber no Colab gratuito ou não costuma ser a escolha entre QLoRA e LoRA.

Um aviso prático da documentação: um erro comum quando se estoura a memória é o tamanho do lote ser alto demais. A recomendação é usar valores pequenos, como 1, 2 ou 3, e compensar com acumulação de gradiente. Os números da tabela são mínimos e podem subir conforme o modelo e o comprimento de contexto.

Passo a passo no Google Colab

O caminho mais seguro no Colab é começar por um notebook pronto da Unsloth em vez de montar tudo do zero. A documentação mantém um catálogo de notebooks, e o guia de Colab mostra o exemplo abaixo como ponto de partida.

1. Abrir o notebook e conectar a GPU

No Colab, escolha um runtime com GPU (a opção gratuita oferece a T4). A documentação explica o básico do ambiente: cada célula tem um botão de play, as células devem rodar em ordem, e existe um botão para conectar ou reconectar a GPU. Rodar “tudo de uma vez” funciona como primeiro teste, mas pula a personalização.

2. Instalar a Unsloth e as dependências

A primeira célula instala o pacote da Unsloth e as bibliotecas de apoio. A instalação por pip já traz as versões compatíveis de torch, transformers e demais dependências, então não é preciso fixar versões na mão.

3. Carregar o modelo em 4 bits

O modelo é carregado com FastModel.from_pretrained. O guia de Colab da Unsloth traz um exemplo com o gpt-oss-20b, mas o mesmo padrão vale para outros modelos abertos do catálogo unsloth no Hugging Face. Os modelos pré-quantizados em 4 bits baixam mais rápido e evitam estouro de memória.

from unsloth import FastLanguageModel, FastModel
import torch
from trl import SFTTrainer, SFTConfig
from datasets import load_dataset

max_seq_length = 2048
url = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"
dataset = load_dataset("json", data_files={"train": url}, split="train")

model, tokenizer = FastModel.from_pretrained(
    model_name = "unsloth/gpt-oss-20b",
    max_seq_length = max_seq_length,
    load_in_4bit = True,
    load_in_8bit = False,
    load_in_16bit = False,
    full_finetuning = False,
)

4. Adicionar os adaptadores LoRA

É aqui que o LoRA entra. Em vez de ajustar todos os pesos do modelo, o LoRA adiciona matrizes finas e treina só uma pequena fração. A documentação da Unsloth resume: em um modelo de 70 bilhões de parâmetros, em vez de mudar os 70 bilhões de números, o LoRA acrescenta as matrizes A e B a cada peso e otimiza apenas cerca de 1% deles.

model = FastLanguageModel.get_peft_model(
    model,
    r = 16,
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                      "gate_proj", "up_proj", "down_proj"],
    lora_alpha = 16,
    lora_dropout = 0,
    bias = "none",
    use_gradient_checkpointing = "unsloth",
    random_state = 3407,
    max_seq_length = max_seq_length,
)

Dois detalhes vêm da documentação de hiperparâmetros. Primeiro, o alvo LoRA deve cobrir as camadas lineares principais, de atenção (q_proj, k_proj, v_proj, o_proj) e MLP (gate_proj, up_proj, down_proj); a Unsloth diz que isso importa para igualar um fine-tuning completo e desaconselha remover módulos. Segundo, use_gradient_checkpointing = "unsloth" usa cerca de 30% menos VRAM e permite lotes maiores.

5. Preparar o dataset e treinar

O treino roda com o SFTTrainer. O exemplo oficial usa poucos passos apenas para demonstrar o fluxo.

trainer = SFTTrainer(
    model = model,
    train_dataset = dataset,
    tokenizer = tokenizer,
    args = SFTConfig(
        max_seq_length = max_seq_length,
        per_device_train_batch_size = 2,
        gradient_accumulation_steps = 4,
        warmup_steps = 10,
        max_steps = 60,
        logging_steps = 1,
        output_dir = "outputs",
        optim = "adamw_8bit",
        seed = 3407,
    ),
)
trainer.train()

6. Salvar o adaptador e testar

Ao final, salve o adaptador LoRA e faça inferência com ele para conferir o comportamento. A documentação do Unsloth também cobre salvar em GGUF, mesclar para 16 bits para uso com vLLM, continuar o treino a partir de um adaptador salvo e escrever um ciclo de avaliação.

Formatos de dataset que o Unsloth aceita

O dataset é a parte que mais decide o resultado. A documentação agrupa os formatos por tipo de treino: Raw Corpus para pré-treinamento continuado, Instruct e Conversation para ajuste supervisionado (SFT) e RLHF para aprendizado por reforço. Para a maioria dos casos de SFT, dois formatos dominam.

  • Alpaca (instrução): cada exemplo tem os campos Instruction, Input (opcional) e Output. Serve para o modelo aprender a executar uma tarefa de um único turno e devolver o resultado esperado.
  • ShareGPT (conversa): cada exemplo traz uma lista conversations com pares de from e value, alternando entre human e gpt. Serve para diálogos de múltiplos turnos.

A Unsloth recomenda aplicar o template de chat certo para o modelo escolhido. A biblioteca expõe CHAT_TEMPLATES, cujas chaves incluem, entre outras, chatml, llama-3, qwen-2.5, gemma-2 e mistral. Usar o template errado é uma das causas mais comuns de treino que não rende. O Hugging Face é a fonte natural de datasets: carregue dados com load_dataset e publique o resultado do seu ajuste em um repositório próprio.

Escolhendo os hiperparâmetros

A Unsloth recomenda usar os padrões da biblioteca como ponto de partida e só mexer nos parâmetros depois de entender o efeito. Os valores abaixo vêm do guia oficial de hiperparâmetros e não substituem um teste com os seus dados.

Parâmetro Função Recomendação oficial
LoRA rank (r) Número de parâmetros treináveis do adaptador 16 ou 32; faixa 8 a 128
LoRA alpha Força do ajuste em relação ao rank r, ou o dobro (r * 2)
LoRA dropout Regularização contra overfitting 0 (padrão) a 0,1
Taxa de aprendizado Quanto os pesos mudam por passo 2e-4 para LoRA/QLoRA
Épocas Quantas vezes o dataset inteiro é visto 1 a 3
Batch size Amostras por passo; principal fator de VRAM 2, combinado com acumulação
Gradient accumulation Micro-lotes antes de atualizar os pesos 8, para batch efetivo 16

Vale entender a lógica. O rank controla a capacidade do adaptador: maior aprende mais, mas usa mais memória e pode levar a overfitting. As épocas têm retorno decrescente depois de três na maioria dos datasets de instrução. E o batch efetivo é o produto do batch size pela acumulação de gradiente; a Unsloth recomenda um valor em torno de 16 como ponto de partida e, para não estourar a memória, prefere sempre um batch size pequeno com acumulação maior.

Exemplo: consultoria de RH em Curitiba

Imagine uma consultoria de RH em Curitiba que responde às mesmas dezenas de dúvidas trabalhistas toda semana, sempre com um formato parecido: uma explicação curta e uma orientação. A equipe já tem um bom arquivo de respostas antigas, revisadas por advogados, no tom que a empresa usa com os clientes.

Nesse caso, o fine-tuning faz sentido pela parte de comportamento e formato. O dataset de conversa, no formato ShareGPT, é montado com esses pares de pergunta e resposta já aprovados. O objetivo não é ensinar leis novas ao modelo, e sim fazer com que ele responda no tom da casa e siga o formato que a consultoria adotou, inclusive em perguntas parecidas que cheguem ligeiramente diferentes. O treino roda no Colab com um modelo aberto pequeno em QLoRA, dado que cabe na GPU gratuita pela tabela oficial.

Já a parte de informação atualizada, como uma mudança recente na legislação ou um caso específico de um cliente, não deveria ser resolvida pelo ajuste. É trabalho de RAG: buscar o documento certo na hora de responder. Este é um cenário ilustrativo, para mostrar onde cada técnica encaixa. Não há aqui números de resultado nem de acurácia, porque variam demais de dataset para dataset.

Erros comuns

  • Tentar resolver informação desatualizada com fine-tuning. Para dados que mudam, RAG é o caminho. A Unsloth recomenda combinar as duas abordagens.
  • Estourar a VRAM por batch size alto. A documentação aponta esse como o erro mais comum de memória. Use lotes pequenos e acumulação.
  • Usar LoRA de 16 bits achando que cabe no Colab gratuito. Um modelo de 8B pede cerca de 22 GB nesse modo, contra 6 GB em QLoRA.
  • Deixar o template de chat errado. O dataset tem que seguir o template que o modelo espera, ou o treino não rende.
  • Remover módulos do alvo LoRA para economizar memória. A Unsloth desaconselha: a economia é pequena e a qualidade cai.
  • Passar de três épocas por padrão. O retorno diminui e o risco de decorar os dados aumenta.
  • Ignorar o mínimo de CUDA Compute Capability. GPUs antigas demais não são suportadas para treino.

Perguntas frequentes

Dá para fazer fine-tuning de graça no Colab?

Sim, desde que o modelo caiba na memória da GPU gratuita. Pela tabela oficial da Unsloth, um modelo de 8B em QLoRA (4 bits) precisa de cerca de 6 GB de VRAM, o que cabe na T4 oferecida pelo Colab. Modelos maiores ou treino em 16 bits exigem GPU maior.

Qual a diferença entre LoRA e QLoRA?

LoRA usa precisão de 16 bits; QLoRA usa 4 bits. O LoRA é um pouco mais rápido e um pouco mais preciso, mas consome da ordem de 4 vezes mais VRAM. Em ambiente com memória limitada, como o Colab gratuito, o QLoRA costuma ser a escolha prática.

Fine-tuning substitui o RAG?

Não. A documentação da Unsloth afirma que RAG é excelente para acessar informação atualizada de bases externas e recomenda combinar as duas técnicas. O fine-tuning ensina comportamento e formato; o RAG entrega o dado do momento. Em muitos projetos, o ideal é usar os dois.

Quais formatos de dataset o Unsloth aceita?

De forma geral, Raw Corpus para pré-treinamento continuado, Instruct e Conversation para ajuste supervisionado (SFT) e RLHF para aprendizado por reforço. Na prática, o formato Alpaca (instrução) e o ShareGPT (conversa) cobrem a maior parte dos casos de SFT.

Quanto tempo leva o treino?

Depende do modelo, do dataset e do hardware. É por isso que este guia não cita tempos nem números de acurácia: variam demais de caso para caso. Comece com poucos passos para validar o fluxo, como faz o exemplo oficial, e só depois rode o treino completo.

Preciso de GPU NVIDIA?

Para NVIDIA, o requisito é CUDA Compute Capability 7.0 ou superior. A Unsloth também suporta GPUs AMD e Intel, além de Mac, com guias próprios. A T4 do Colab atende ao requisito de treino em NVIDIA.

Fontes e leitura recomendada

Sobre

A Redação IA Mágica é formada por especialistas e pesquisadores em inteligência artificial aplicada, agentes autônomos, automações no-code/pro-code e grandes modelos de linguagem (LLMs). Nossos conteúdos cobrem implementações reais, análises e tutoriais aprofundados para profissionais e empresas.