Ce face Trainer și SFTTrainer din TRL (Supervised Fine-Tuning)
Trainer din Transformers se ocupă de bucla de antrenare: optimizator, acumularea gradienților, precizie mixtă, salvarea checkpoint-urilor și raportarea metricilor. SFTTrainer din TRL (Transformers Reinforcement Learning) este varianta pentru fine-tuning supervizat al modelelor de limbaj.
SFTTrainer acceptă dataset-uri de tip text ({"text": ...}), conversaționale ({"messages": [...]}) și prompt-completion. La dataset-urile conversaționale aplică automat șablonul de chat al modelului. model poate fi un ID de pe Hub (TRL încarcă modelul) sau un model deja încărcat, iar peft_config adaugă adaptoare LoRA.
Opțiuni utile din SFTConfig: max_length (lungimea maximă a secvenței, implicit 1024; înlocuiește vechiul max_seq_length), packing=True (mai multe exemple în aceeași secvență) și assistant_only_loss=True (pierderea se calculează doar pe răspunsurile asistentului). Rata de învățare implicită este 2e-5; documentația recomandă în jur de 1e-4 când antrenezi adaptoare.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
model |
ID de pe Hub sau model încărcat. |
train_dataset |
Dataset text, conversațional sau prompt-completion. |
peft_config |
Configurația LoRA (LoraConfig). |
SFTConfig(max_length=...) |
Lungimea maximă a secvenței; implicit 1024. None = fără trunchiere. |
SFTConfig(packing=True) |
Împachetează exemplele scurte în aceeași secvență. |
SFTConfig(assistant_only_loss=True) |
Pierderea doar pe mesajele asistentului (cere un șablon cu marcaje de generare). |
SFTConfig(dataset_text_field="text") |
Coloana de text pentru dataset-urile de tip text. |
SFTConfig(learning_rate=...) |
Implicit 2e-5; pentru adaptoare, aproximativ 1e-4. |
gradient_accumulation_steps, gradient_checkpointing, bf16 |
Opțiuni moștenite din TrainingArguments. |
Exemple practice
Exemplul 1: Exemplul minim din documentație
from trl import SFTTrainer
from datasets import load_dataset
trainer = SFTTrainer(
model="Qwen/Qwen3-0.6B",
train_dataset=load_dataset("trl-lib/Capybara", split="train"),
)
trainer.train()
Exemplul 2: Dataset conversațional
{"messages": [{"role": "user", "content": "What color is the sky?"},
{"role": "assistant", "content": "It is blue."}]}
Exemplul 3: Configurație pentru o placă cu memorie puțină
SFTConfig(per_device_train_batch_size=2, gradient_accumulation_steps=8, gradient_checkpointing=True, bf16=True, max_length=1024)
Exemplul 4: Salvarea modelului
trainer.save_model("./modelul_meu_finetuned")
Greșeli frecvente și bune practici
- Folosești
max_seq_lengthînSFTConfig. Parametrul se numește acummax_length. - Formatezi manual conversațiile cu tokeni speciali. Cu coloana
messages,SFTTraineraplică singur șablonul de chat. - Păstrezi rata implicită 2e-5 când antrenezi doar LoRA. Pentru adaptoare, documentația TRL sugerează o rată mai mare, în jur de 1e-4.
Întrebări & Exemple practice:
Trainer și SFTTrainer din TRL (Supervised Fine-Tuning)Ai o întrebare despre Trainer și SFTTrainer din TRL (Supervised Fine-Tuning) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.