Biblioteca TRL (SFT, DPO & GRPO) de la Hugging Face în Hugging Face Hub & Transformers

Instrumentul complet de la Hugging Face pentru fine-tuning ghidat, aliniere prin preferințe umane (DPO) și aliniere prin raționament (GRPO).

Sintaxă & invocare Python
from trl import SFTTrainer, DPOTrainer, GRPOTrainer

Biblioteca TRL (Transformer Reinforcement Learning) a devenit standardul industrial pentru finisarea și alinierea modelelor deschise de limbaj. Aceasta simplifică fluxuri care anterior necesitau mii de linii de cod complexe de PyTorch într-o suită de clase declarative de nivel înalt.

TRL acoperă toți pașii maturizării unui model LLM: SFTTrainer (Supervised Fine-Tuning) pentru învățarea instrucțiunilor de bază pe seturi de date de conversație, DPOTrainer (Direct Preference Optimization) pentru preferințe fără a fi nevoie de antrenarea unui model separat de recompensă, și revoluționarul GRPOTrainer (Group Relative Policy Optimization) folosit pentru dezvoltarea abilităților de raționament autonom.

Integrată perfect cu PEFT (LoRA / QLoRA) și DeepSpeed/FSDP, TRL permite antrenarea unui model de 8 miliarde de parametri pe un singur GPU comercial de 24 GB VRAM.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
SFTTrainer Clasa de antrenare supravegheată pe seturi de instrucțiuni.
DPOTrainer Clasa de aliniere prin perechi de date ‘chosen’ vs ‘rejected’.
GRPOTrainer Clasa de antrenare bazată pe grupuri de răspunsuri și calcul relativ de recompensă.
SFTConfig / DPOConfig Obiectele de configurare a parametrilor de antrenare (learning rate, batch size, gradient accumulation).
PEFT / LoRA Integration Activarea `peft_config=LoraConfig(…)` pentru antrenarea eficientă exclusiv a matricilor de adaptare.

Exemple practice și configurații

Exemplul 1: Antrenarea rapidă LoRA cu SFTTrainer pe un model Llama în Python

Exemplu de cod complet și compact folosind TRL.

from transformers import AutoModelForCausalLM, AutoTokenizer
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
from datasets import load_dataset

# 1. Încărcăm modelul și datele
model_id = "meta-llama/Llama-3.2-3B-Instruct"
dataset = load_dataset("json", data_files="conversatii_romana.jsonl", split="train")

# 2. Definim configurația LoRA
peft_config = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"])

# 3. Configurăm și pornim antrenorul TRL
training_args = SFTConfig(
    output_dir="rezultate_llama_ro",
    max_steps=500,
    learning_rate=2e-4,
    per_device_train_batch_size=4,
    dataset_text_field="text"
)

trainer = SFTTrainer(
    model=model_id,
    train_dataset=dataset,
    peft_config=peft_config,
    args=training_args
)
trainer.train()

Rezultat & Impact

Model adaptat pe limba română gata de export în safetensors sau GGUF.

Greșeli frecvente și bune practici

  • Omiterea parametrului `dataset_text_field` sau formatarea incorectă a șablonului de chat (ChatML), generând pierderea tokenilor speciali de delimitare a rolurilor.
  • Folosirea unui `learning rate` prea mare în DPO (ex: > 1e-5), ceea ce cauzează colapsul modelului de limbaj.

Ghiduri și noțiuni înrudite