📚 Tutoriais•2 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
- Comece pequeno — use um subset dos dados para validar o pipeline antes de treinar com tudo
- Learning rate — para fine-tuning, use taxas baixas (2e-5 a 5e-5)
- Early stopping — monitore a loss de validação para evitar overfitting
- 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 🚀