Poti avea hardware perfect si hiperparametri perfecti — un dataset prost iti va da tot un model prost, de fiecare data. Calitatea datelor este ora cu cel mai mare efect de parghie pe care o vei petrece in tot acest curs. Aceasta lectie iti arata formatul, cantitatea si ritualurile de curatare care despart un fine-tune ascutit de o dezamagire scumpa.
Formatul: JSONL in stil chat
Fine-tuning-ul modern pe instructiuni foloseste un exemplu de antrenare per linie, in JSON, imitand o conversatie reala. Acesta este formatul pe care il asteapta atat MLX, cat si Unsloth:
{"messages": [
{"role": "system", "content": "You are Ember, the support assistant for Nordlys Shop. Friendly and precise. Structure: short answer, explanation, next step. Never invent order details."},
{"role": "user", "content": "My order hasn't arrived and it's been 10 days. Order #4571."},
{"role": "assistant", "content": "I'm sorry about the wait — 10 days is longer than it should be.\n\nStandard delivery is 3–5 business days, so #4571 deserves a proper look. I can't see live courier data from here, so I won't guess where the package is.\n\nNext step: reply with your postal code and I'll open a trace request with the courier today. You'll get a tracking update within 24 hours."}
]}
Uita-te atent — acest singur exemplu invata patru comportamente deodata: tonul de scuza-dar-stapanit, structura in trei parti, refuzul de a inventa date de tracking si pasul urmator concret. Fiecare exemplu este o lectie; fa ca fiecare sa invete ceva.
Concept
Modelul invata sa imite turele de assistant, in contextul turelor de system si user. Dataset-ul tau este literalmente o colectie de demonstratii "iata raspunsul perfect". Daca o demonstratie e mediocra, antrenezi mediocritate — cu mare precizie.De cate exemple ai nevoie?
Raspunsul sincer ii surprinde pe incepatori in ambele directii:
| Tip de obiectiv | Exemple necesare |
|---|---|
| Ajustare de ton/voce | 50–200 |
| Disciplina de format (structura, schema JSON) | 100–500 |
| Specializare pe sarcina (clasificare, extractie) | 300–2.000 |
| Stil de domeniu nou (scriere juridica, medicala) | 1.000–10.000 |
Pentru Ember, 150–300 de exemple excelente bat 3.000 mediocre culese de pe net. Fine-tuning-ul LoRA e eficient cu putine exemple; e un bisturiu, nu un furtun de pompieri.
Nota sincera
"Mai multe date e mereu mai bine" e intelepciune de pre-training, nu de fine-tuning. In fine-tuning, consistenta bate volumul. Zece exemple care iti contrazic formatul invata modelul ca formatul e optional. O suta de exemple impecabile il invata ca formatul e lege.De unde vin exemplele lui Ember
Trei surse, in ordinea valorii:
1. Istoric real (cel mai bun). Emailuri reale de la clienti + raspunsurile reale ale celui mai bun agent al tau, curatate. Realitatea are distributie: intrebari ciudate, greseli de tastare, furie, cazuri limita.
2. Generare sintetica (buna, cu grija). Foloseste un model puternic (Claude, sau un model local mare) ca sa schiteze exemple: "Genereaza 20 de intrebari realiste de la clienti despre retururi pentru un magazin online, cu raspunsuri exact in aceasta voce si structura: [lipeste 3 exemple reale]". Apoi verifica manual fiecare exemplu in parte. Tu esti dresorul-sef; modelul mare e doar asistentul tau.
3. Cazuri limita scrise de mana (condimentul esential). Scrie de mana cazurile periculoase: clientul care cere informatii despre comenzi pe care nu le ai (invata refuzul), mesajul furios (invata calmul), intrebarea in romana (invata potrivirea limbii). Acestea apar rar in datele in masa, dar definesc caracterul modelului tau cand conteaza.
Ritualul de curatare
Inainte de antrenare, trece fiecare exemplu prin acest checklist:
- Ai livra acest raspuns unui client real? Daca nu, repara-l sau sterge-l.
- Urmeaza exact structura tinta? Toate. Fara exceptii — exceptiile sunt anti-antrenare.
- System prompt-ul e identic peste tot? Aceeasi formulare, byte cu byte. Vei folosi acelasi la inferenta.
- Fara secrete sau date personale. Numele reale de clienti, emailurile, numerele de comanda se inlocuiesc cu unele false. Ponderile le vor memora.
- Deduplica. Exemplele aproape identice supraponderaza o lectie si plictisesc dragonul.
Imparte inainte sa antrenezi: train / valid / test
Taie-ti datele in trei inainte de antrenare si nu lasa niciodata modelul sa vada ultima felie:
- train.jsonl (~80%) — din ce invata modelul
- valid.jsonl (~10%) — urmarit in timpul antrenarii pentru a prinde overfitting-ul (lectia 6)
- test.jsonl (~10%) — atins doar la final, pentru a nota sincer dragonul final
Ambele toolchain-uri citesc direct acest aranjament. MLX asteapta un folder cu exact aceste nume de fisiere; cu Unsloth vei incarca aceleasi fisiere cu biblioteca datasets.
Pro Tip
Fa felia de test grea in mod intentionat. Pune acolo cele mai urate cazuri limita: intrebarile-capcana, reclamatia furioasa cu mai multe parti, cererea de a inventa date. Un model care trece un test greu e antrenat; un model care trece un test usor e norocos.Incearca
Construieste-ti dataset-ul v1 saptamana asta: 10 exemple de aur scrise de mana (raspunsurile tale absolut cele mai bune), apoi 100–150 sintetice generate din acele exemple de aur, apoi ritualul de curatare, apoi impartirea in trei. Tinta:data/train.jsonl, data/valid.jsonl, data/test.jsonl. Pastreaza numerele intr-o notita — vei itera pe asta in lectia 6.