🧠Inteligência em Código
📚 Tutoriais2 min de leitura

Como Fazer Fine-Tuning com Hugging Face Transformers

Guia passo a passo para fazer fine-tuning de modelos de linguagem usando a biblioteca Transformers do Hugging Face.

#huggingface#fine-tuning#transformers#python

Por que Fine-Tuning?

Modelos pré-treinados são poderosos, mas genéricos. Fine-tuning permite especializar um modelo para seu caso de uso específico — classificação de sentimento, chatbot de suporte, geração de código, etc.

Pré-requisitos

pip install transformers datasets accelerate peft bitsandbytes

1. Carregar Dataset

from datasets import load_dataset

# Exemplo: classificação de sentimento em português
dataset = load_dataset("portuguese_benchmark", "sentiment")

print(dataset["train"][0])
# {'text': 'Excelente produto!', 'label': 1}

2. Tokenização

from transformers import AutoTokenizer

model_name = "neuralmind/bert-base-portuguese-cased"
tokenizer = AutoTokenizer.from_pretrained(model_name)

def tokenize(examples):
    return tokenizer(
        examples["text"],
        padding="max_length",
        truncation=True,
        max_length=128
    )

tokenized = dataset.map(tokenize, batched=True)

3. Configurar Modelo

from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(
    model_name,
    num_labels=2  # positivo/negativo
)

4. Treinar

from transformers import TrainingArguments, Trainer
import numpy as np
from sklearn.metrics import accuracy_score, f1_score

def compute_metrics(eval_pred):
    logits, labels = eval_pred
    predictions = np.argmax(logits, axis=-1)
    return {
        "accuracy": accuracy_score(labels, predictions),
        "f1": f1_score(labels, predictions, average="weighted"),
    }

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=32,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir="./logs",
    evaluation_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized["train"],
    eval_dataset=tokenized["validation"],
    compute_metrics=compute_metrics,
)

trainer.train()

5. Usar o Modelo Treinado

from transformers import pipeline

classifier = pipeline("text-classification", model="./results/best-model")

result = classifier("Esse produto é incrível!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.98}]

Dicas Importantes

  1. Comece pequeno — use um subset dos dados para validar o pipeline antes de treinar com tudo
  2. Learning rate — para fine-tuning, use taxas baixas (2e-5 a 5e-5)
  3. Early stopping — monitore a loss de validação para evitar overfitting
  4. LoRA/QLoRA — para modelos grandes, use PEFT para treinar apenas uma fração dos parâmetros

No próximo tutorial: Fine-tuning com LoRA para modelos de 7B+ parâmetros 🚀