Capítulo 2: TRL e SFTTrainer
Treinamento Simplificado para LLMs
TRL (Transformer Reinforcement Learning) fornece treinadores especializados para fine-tuning.
Fundamentos do SFTTrainer
from trl import SFTTrainer
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./output",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
bf16=True,
gradient_checkpointing=True,
logging_steps=10,
save_strategy="epoch",
)
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer,
dataset_text_field="text", # or use formatting_func
max_seq_length=512,
packing=False,
)
trainer.train()
Formatação do Dataset
Opção 1: Campo de Texto
# Dataset possui coluna "text"
trainer = SFTTrainer(
dataset_text_field="text",
...
)
Opção 2: Função de Formatação
def formatting_func(example):
return f"### Instruction:\n{example['instruction']}\n\n### Response:\n{example['response']}"
trainer = SFTTrainer(
formatting_func=formatting_func,
...
)
Parâmetros Importantes
| Parâmetro | Finalidade | Valor Típico |
|---|---|---|
max_seq_length | Comprimento máximo da sequência | 512-2048 |
packing | Agrupar múltiplos exemplos | False (mais simples) |
dataset_num_proc | Trabalhadores de pré-processamento | 4-8 |
Callbacks e Logging
from transformers import EarlyStoppingCallback
trainer = SFTTrainer(
callbacks=[EarlyStoppingCallback(early_stopping_patience=3)],
...
)
# Para logging com W&B
training_args = TrainingArguments(
report_to="wandb",
...
)