Ir para o conteúdo

14. Transfer Learning

Transfer Learning e Fine-Tuning

Treinar uma rede neural profunda do zero requer enormes quantidades de dados rotulados e poder computacional. O Transfer Learning resolve isso: em vez de inicialização aleatória de pesos, começamos a partir de um modelo já treinado em uma tarefa rica (geralmente em grande escala) e o adaptamos para nossa tarefa específica.

A intuição: as camadas iniciais de uma CNN treinada no ImageNet aprendem detectores de bordas, texturas e formas — úteis para qualquer tarefa de visão. As camadas posteriores se especializam nas categorias do ImageNet. Substituímos essas camadas finais e fazemos fine-tuning do modelo.


Taxonomia de Abordagens


LoRA: Adaptação de Baixo Rank

LoRA2 é a técnica PEFT (Parameter-Efficient Fine-Tuning) mais popular. A ideia é simples e elegante:

Para uma matriz de pesos pré-treinada congelada \(W_0 \in \mathbb{R}^{d \times k}\), adicionamos uma perturbação de baixo rank:

\[ W = W_0 + \Delta W = W_0 + BA \]

onde \(B \in \mathbb{R}^{d \times r}\) e \(A \in \mathbb{R}^{r \times k}\), com \(r \ll \min(d, k)\).

  • Durante o forward pass: \(h = W_0 x + BAx = W_0 x + \Delta W x\)
  • Durante o treinamento: apenas \(A\) e \(B\) são atualizados (\(W_0\) é congelado)
  • Parâmetros treináveis: \(r(d + k)\) vs \(dk\) no fine-tuning completo

Exemplo com GPT-3 (175B parâmetros):

Configuração Parâmetros Treináveis
Fine-tuning completo 175 bilhões
LoRA (\(r=4\), atenção) 4,7 milhões (~0,003%)
LoRA (\(r=16\), atenção) ~18,9 milhões
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")

lora_config = LoraConfig(
    r=16,                  # rank da matriz
    lora_alpha=32,         # escalonamento (alpha/r = fator de escala)
    target_modules=["q_proj", "v_proj"],  # onde aplicar LoRA
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: 6,815,744 || all params: 8,037,269,504 || trainable%: 0.0848

Interativo: Calculadora de Custo de Fine-Tuning


Outras Técnicas PEFT

Técnica Ideia Parâmetros
LoRA Matrizes de baixo rank nos pesos de atenção \(r(d+k)\) por camada
QLoRA LoRA + modelo congelado em 4 bits (NF4) ~LoRA, menos VRAM
Prefix Tuning Aprende tokens virtuais adicionados à sequência \(\text{num\_prefix} \times d_{\text{model}}\)
Prompt Tuning Apenas embeddings do prompt são treináveis \(\text{num\_tokens} \times d_{\text{model}}\)
Adapter Layers Insere pequenas camadas FFN entre as existentes \(2 \times r \times d\) por camada
DoRA LoRA decomposto em magnitude + direção Similar ao LoRA

Adaptação de Domínio vs. Adaptação de Tarefa

flowchart LR
    A[Modelo Base\nPré-treinado] --> B{Tipo de Adaptação}
    B -->|"Dados de domínio\n(sem rótulos)"| C[Pré-Treinamento Continuado\nAdaptação de Domínio]
    B -->|"Dados de tarefa\nrotulados"| D[Fine-Tuning Supervisionado\nSFT]
    B -->|"Feedback humano"| E[RLHF / DPO\nAlinhamento]
    C --> F[Modelo de Domínio]
    D --> G[Modelo de Tarefa]
    E --> H[Modelo Alinhado]
    F -->|"Fine-tuning adicional"| G

Receita prática para fine-tuning de LLM (2025):

  1. Comece com um modelo base adequado (LLaMA-3, Mistral, Gemma)
  2. Quantize para 4 bits (QLoRA) se a VRAM for limitada
  3. Aplique LoRA com \(r \in \{8, 16, 32\}\) nas projeções Q e V
  4. Use TRL + SFTTrainer para fine-tuning supervisionado
  5. Opcionalmente aplique DPO para alinhamento por preferências

Quando Usar Cada Abordagem

Situação Recomendação
Dados de tarefa: < 1.000 amostras Extração de Features ou Prompt Tuning
Dados: 1k–100k amostras, hardware limitado LoRA/QLoRA
Dados: > 100k amostras, hardware disponível Fine-Tuning Completo
Novo domínio (médico, jurídico, código) Adaptação de Domínio → Fine-Tuning
Alinhamento com valores/preferências SFT → RLHF ou DPO



  1. Pan, S. J., & Yang, Q. (2010). A Survey on Transfer Learning. IEEE TKDE. 

  2. Hu, E. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models

  3. Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs

  4. Rafailov, R. et al. (2023). Direct Preference Optimization