import{s as Fa,f as tt,o as Sa,n as Ra}from"../chunks/scheduler.37c15a92.js";import{S as Aa,i as Ia,g as u,s as l,r as p,A as Za,h as s,f as i,c as n,j as Ri,u as o,x as g,k as b,y as Ea,a,v as c,d,t as f,w as $,m as Oe,n as Ke}from"../chunks/index.2bf4358c.js";import{T as qe}from"../chunks/Tip.363c041f.js";import{C as Ai}from"../chunks/CodeBlock.4e987730.js";import{C as Va}from"../chunks/CourseFloatingBanner.6add7356.js";import{Q as it}from"../chunks/Question.e61af2ef.js";import{H as v,E as Wa}from"../chunks/getInferenceSnippets.24b50994.js";function Ba(T){let m;return{c(){m=Oe(`Considerați SFT doar dacă:
- Aveți nevoie de performanțe suplimentare dincolo de ceea ce poate realiza promptarea
- Aveți un caz de utilizare specific în care costul folosirii unui model mare de uz general depășește costul fine-tuningului unui model mai mic
- Aveți nevoie de formate de ieșire specializate sau cunoștințe specifice domeniului cu care modelele existente se confruntă`)},l(r){m=Ke(r,`Considerați SFT doar dacă:
- Aveți nevoie de performanțe suplimentare dincolo de ceea ce poate realiza promptarea
- Aveți un caz de utilizare specific în care costul folosirii unui model mare de uz general depășește costul fine-tuningului unui model mai mic
- Aveți nevoie de formate de ieșire specializate sau cunoștințe specifice domeniului cu care modelele existente se confruntă`)},m(r,M){a(r,m,M)},d(r){r&&i(m)}}}function Ha(T){let m,r,M="Această evaluare va ajuta să determinați dacă SFT este abordarea potrivită pentru nevoile dumneavoastră.";return{c(){m=Oe(`Înainte de a începe SFT, evaluați dacă cazul dumneavoastră de utilizare necesită:
- Formatare precisă de ieșire
- Cunoștințe specifice domeniului
- Modele consecvente de răspuns
- Aderarea la ghiduri specifice
`),r=u("p"),r.textContent=M},l(C){m=Ke(C,`Înainte de a începe SFT, evaluați dacă cazul dumneavoastră de utilizare necesită:
- Formatare precisă de ieșire
- Cunoștințe specifice domeniului
- Modele consecvente de răspuns
- Aderarea la ghiduri specifice
`),r=s(C,"P",{"data-svelte-h":!0}),g(r)!=="svelte-1tl4048"&&(r.textContent=M)},m(C,z){a(C,m,z),a(C,r,z)},p:Ra,d(C){C&&(i(m),i(r))}}}function ka(T){let m;return{c(){m=Oe(`Începeți cu valori conservatoare și ajustați bazat pe monitorizare:
- Începeți cu 1-3 epoci
- Folosiți dimensiuni mai mici ale batch-ului inițial
- Monitorizați metricile de validare atent
- Ajustați rata de învățare dacă antrenamentul este instabil`)},l(r){m=Ke(r,`Începeți cu valori conservatoare și ajustați bazat pe monitorizare:
- Începeți cu 1-3 epoci
- Folosiți dimensiuni mai mici ale batch-ului inițial
- Monitorizați metricile de validare atent
- Ajustați rata de învățare dacă antrenamentul este instabil`)},m(r,M){a(r,m,M)},d(r){r&&i(m)}}}function Pa(T){let m;return{c(){m=Oe('Când folosiți un set de date cu un câmp "messages" (ca exemplul de mai sus), SFTTrainer aplică automat template-ul de chat al modelului, pe care îl recuperează de pe hub. Aceasta înseamnă că nu aveți nevoie de nicio configurație suplimentară pentru a gestiona conversațiile în stil chat - trainer-ul va formata mesajele conform formatului de template așteptat al modelului.')},l(r){m=Ke(r,'Când folosiți un set de date cu un câmp "messages" (ca exemplul de mai sus), SFTTrainer aplică automat template-ul de chat al modelului, pe care îl recuperează de pe hub. Aceasta înseamnă că nu aveți nevoie de nicio configurație suplimentară pentru a gestiona conversațiile în stil chat - trainer-ul va formata mesajele conform formatului de template așteptat al modelului.')},m(r,M){a(r,m,M)},d(r){r&&i(m)}}}function Ga(T){let m;return{c(){m=Oe(`Urmăriți aceste semne de avertizare în timpul antrenamentului:
1. Pierderea validării crește în timp ce pierderea antrenamentului scade (supraadaptare)
2. Nicio îmbunătățire semnificativă în valorile pierderilor (subadaptare)
3. Valori extrem de mici ale pierderilor (posibilă memorizare)
4. Formatare inconsistentă a ieșirii (probleme de învățare a template-ului)`)},l(r){m=Ke(r,`Urmăriți aceste semne de avertizare în timpul antrenamentului:
1. Pierderea validării crește în timp ce pierderea antrenamentului scade (supraadaptare)
2. Nicio îmbunătățire semnificativă în valorile pierderilor (subadaptare)
3. Valori extrem de mici ale pierderilor (posibilă memorizare)
4. Formatare inconsistentă a ieșirii (probleme de învățare a template-ului)`)},m(r,M){a(r,m,M)},d(r){r&&i(m)}}}function Qa(T){let m;return{c(){m=Oe("Monitorizați atât valorile pierderilor, cât și ieșirile efective ale modelului în timpul antrenamentului. Uneori pierderea poate arăta bine în timp ce modelul dezvoltă comportamente nedorite. Evaluarea calitativă regulată a răspunsurilor modelului ajută la detectarea problemelor pe care metricile singure le-ar putea rata.")},l(r){m=Ke(r,"Monitorizați atât valorile pierderilor, cât și ieșirile efective ale modelului în timpul antrenamentului. Uneori pierderea poate arăta bine în timp ce modelul dezvoltă comportamente nedorite. Evaluarea calitativă regulată a răspunsurilor modelului ajută la detectarea problemelor pe care metricile singure le-ar putea rata.")},m(r,M){a(r,m,M)},d(r){r&&i(m)}}}function Xa(T){let m;return{c(){m=Oe(`Documentați procesul de antrenare, inclusiv:
- Caracteristicile setului de date
- Parametrii antrenamentului
- Metricile de performanță
- Limitările cunoscute
Această documentație va fi valoroasă pentru iterațiile viitoare ale modelului.`)},l(r){m=Ke(r,`Documentați procesul de antrenare, inclusiv:
- Caracteristicile setului de date
- Parametrii antrenamentului
- Metricile de performanță
- Limitările cunoscute
Această documentație va fi valoroasă pentru iterațiile viitoare ale modelului.`)},m(r,M){a(r,m,M)},d(r){r&&i(m)}}}function La(T){let m,r,M,C,z,at,F,lt,S,Ii="Fine-tuningul supervizat (SFT) este un proces folosit în principal pentru a adapta modelele de limbaj pre-antrenate să urmeze instrucțiuni, să se angajeze în dialog și să folosească formate specifice de ieșire. În timp ce modelele pre-antrenate au capacități generale impresionante, SFT ajută la transformarea lor în modele asemănătoare asistentului care pot înțelege și răspunde mai bine la prompturile utilizatorilor. Acest lucru se realizează de obicei prin antrenare pe seturi de date cu conversații și instrucțiuni scrise de oameni.",nt,R,Zi='Această pagină oferă un ghid pas cu pas pentru fine-tuningul modelului <a href="https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" rel="nofollow"><code>deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B</code></a> folosind <a href="https://huggingface.co/docs/trl/en/sft_trainer" rel="nofollow"><code>SFTTrainer</code></a>. Urmând acești pași, puteți adapta modelul să îndeplinească anumite sarcini mai eficient.',rt,A,ut,I,Ei="Înainte de a se adânci în implementare, este important să înțelegem când SFT este alegerea potrivită pentru proiectul dumneavoastră. Ca primul pas, ar trebui să considerați dacă folosirea unui model existent ajustat pentru instrucțiuni cu prompturi bine elaborate ar fi suficientă pentru cazul dumneavoastră de utilizare. SFT implică resurse computaționale semnificative și efort de inginerie, așa că ar trebui urmărit doar când promptarea modelelor existente se dovedește insuficientă.",st,x,mt,Z,Vi="Dacă determinați că SFT este necesar, decizia de a continua depinde de doi factori principali:",pt,E,ot,V,Wi="SFT permite control precis asupra structurii de ieșire a modelului. Acest lucru este deosebit de valoros când aveți nevoie ca modelul să:",ct,W,Bi="<li>Genereze răspunsuri într-un format specific de template de chat</li> <li>Urmeze scheme stricte de ieșire</li> <li>Mențină stiluri consecvente în toate răspunsurile</li>",dt,B,ft,H,Hi="Când lucrați în domenii specializate, SFT ajută la alinierea modelului cu cerințele specifice domeniului prin:",$t,k,ki="<li>Predarea terminologiei și conceptelor domeniului</li> <li>Impunerea standardelor profesionale</li> <li>Gestionarea adecvată a întrebărilor tehnice</li> <li>Urmarea ghidurilor specifice industriei</li>",gt,w,vt,P,Mt,G,Pi="Procesul de fine-tuning supervizat necesită un set de date specific sarcinii structurat cu perechi intrare-ieșire. Fiecare pereche ar trebui să conțină:",Tt,Q,Gi="<li>Un prompt de intrare</li> <li>Răspunsul așteptat al modelului</li> <li>Orice context sau metadate suplimentare</li>",bt,X,Qi="Calitatea datelor de antrenare este crucială pentru succesul fine-tuningului. Să vedem cum să pregătim și să validăm setul de date:",Ct,_,Xi,zt,L,_t,Y,Li="Succesul fine-tuningului depinde în mare măsură de alegerea parametrilor de antrenare corecți. Să explorăm fiecare parametru important și cum să îi configurați eficient:",xt,N,Yi="Configurația SFTTrainer necesită considerarea mai multor parametri care controlează procesul de antrenare. Să explorăm fiecare parametru și scopul lor:",wt,D,Ni="<li><p><strong>Parametrii duratei antrenamentului</strong>:</p> <ul><li><code>num_train_epochs</code>: Controlează durata totală a antrenamentului</li> <li><code>max_steps</code>: Alternativă la epoci, stabilește numărul maxim de pași de antrenare</li> <li>Mai multe epoci permit învățare mai bună dar riscă supraadaptarea</li></ul></li> <li><p><strong>Parametrii dimensiunii batch-ului</strong>:</p> <ul><li><code>per_device_train_batch_size</code>: Determină utilizarea memoriei și stabilitatea antrenamentului</li> <li><code>gradient_accumulation_steps</code>: Permite dimensiuni efective mai mari ale batch-ului</li> <li>Batch-uri mai mari oferă gradienți mai stabili dar necesită mai multă memorie</li></ul></li> <li><p><strong>Parametrii ratei de învățare</strong>:</p> <ul><li><code>learning_rate</code>: Controlează dimensiunea actualizărilor greutăților</li> <li><code>warmup_ratio</code>: Porțiunea de antrenament folosită pentru încălzirea ratei de învățare</li> <li>Prea mare poate cauza instabilitate, prea mică rezultă în învățare lentă</li></ul></li> <li><p><strong>Parametrii de monitorizare</strong>:</p> <ul><li><code>logging_steps</code>: Frecvența înregistrării metricilor</li> <li><code>eval_steps</code>: Cât de des să evalueze pe datele de validare</li> <li><code>save_steps</code>: Frecvența salvării punctelor de verificare ale modelului</li></ul></li>",ht,h,Jt,q,Ut,O,Di="Acum că înțelegem componentele cheie, să implementăm antrenamentul cu validare și monitorizare adecvate. Vom folosi clasa <code>SFTTrainer</code> din biblioteca Transformers Reinforcement Learning (TRL), care este construită pe biblioteca <code>transformers</code>. Iată un exemplu complet folosind biblioteca TRL:",yt,K,jt,J,Ft,ee,St,te,qi="SFTTrainer suportă împachetarea exemplelor pentru a optimiza eficiența antrenamentului. Această funcționalitate permite ca mai multe exemple scurte să fie împachetate în aceeași secvență de intrare, maximizând utilizarea GPU în timpul antrenamentului. Pentru a activa împachetarea, pur și simplu setați <code>packing=True</code> în constructorul SFTConfig. Când folosiți seturi de date împachetate cu <code>max_steps</code>, fiți conștienți că s-ar putea să antrenați pentru mai multe epoci decât ați așteptat, în funcție de configurația de împachetare. Puteți personaliza modul în care exemplele sunt combinate folosind o funcție de formatare - deosebit de utilă când lucrați cu seturi de date care au mai multe câmpuri precum perechi întrebare-răspuns. Pentru seturile de date de evaluare, puteți dezactiva împachetarea setând <code>eval_packing=False</code> în SFTConfig. Iată un exemplu de bază de personalizare a configurației de împachetare:",Rt,ie,At,ae,Oi="Când împachetați setul de date cu mai multe câmpuri, puteți defini o funcție de formatare personalizată pentru a combina câmpurile într-o singură secvență de intrare. Această funcție ar trebui să ia o listă de exemple și să returneze un dicționar cu secvența de intrare împachetată. Iată un exemplu de funcție de formatare personalizată:",It,le,Zt,ne,Et,re,Ki="Monitorizarea eficientă este crucială pentru succesul fine-tuningului. Să explorăm ce să urmărim în timpul antrenamentului:",Vt,ue,Wt,se,ea="Pierderea antrenamentului urmează de obicei trei faze distincte:",Bt,me,ta="<li>Scădere abruptă inițială: Adaptare rapidă la noua distribuție de date</li> <li>Stabilizare graduală: Rata de învățare încetinește pe măsură ce modelul se ajustează fin</li> <li>Convergența: Valorile pierderilor se stabilizează, indicând finalizarea antrenamentului</li>",Ht,pe,ia,kt,oe,Pt,ce,aa="Monitorizarea eficientă implică urmărirea metricilor cantitative și evaluarea metricilor calitative. Metricile disponibile sunt:",Gt,de,la="<li>Pierderea antrenamentului</li> <li>Pierderea validării</li> <li>Progresia ratei de învățare</li> <li>Normele gradientului</li>",Qt,U,Xt,fe,Lt,$e,na="Pe măsură ce antrenamentul progresează, curba pierderii ar trebui să se stabilizeze treptat. Indicatorul cheie al antrenamentului sănătos este un decalaj mic între pierderea antrenamentului și cea de validare, sugerând că modelul învață modele generalizabile mai degrabă decât să memoreze exemple specifice. Valorile absolute ale pierderilor vor varia în funcție de sarcina și setul de date.",Yt,ge,Nt,ve,ra="Graficul de mai sus arată o progresie tipică a antrenamentului. Observați cum atât pierderea antrenamentului, cât și cea de validare scad brusc la început, apoi se nivelează treptat. Acest model indică faptul că modelul învață eficient menținând în același timp capacitatea de generalizare.",Dt,Me,qt,Te,ua="Mai multe modele în curbele pierderilor pot indica probleme potențiale. Mai jos ilustrăm semne comune de avertizare și soluții pe care le putem considera.",Ot,be,sa,Kt,Ce,ma="Dacă pierderea validării scade cu o rată semnificativ mai lentă decât pierderea antrenamentului, modelul probabil se supraadaptează la datele de antrenare. Considerați:",ei,ze,pa="<li>Reducerea pașilor de antrenare</li> <li>Creșterea dimensiunii setului de date</li> <li>Validarea calității și diversității setului de date</li>",ti,_e,oa,ii,xe,ca="Dacă pierderea nu arată îmbunătățiri semnificative, modelul ar putea să:",ai,we,da="<li>Învețe prea încet (încercați să creșteți rata de învățare)</li> <li>Se confrunte cu sarcina (verificați calitatea datelor și complexitatea sarcinii)</li> <li>Atingă limitările arhitecturii (considerați un model diferit)</li>",li,he,fa,ni,Je,$a="Valori extrem de mici ale pierderilor ar putea sugera memorizare mai degrabă decât învățare. Acest lucru este deosebit de îngrijorător dacă:",ri,Ue,ga="<li>Modelul performează slab pe exemple noi, similare</li> <li>Ieșirile lipsesc de diversitate</li> <li>Răspunsurile sunt prea similare cu exemplele de antrenare</li>",ui,y,si,ye,va='Ar trebui să observăm că interpretarea valorilor pierderilor pe care o descriem aici este destinată cazului cel mai comun, și de fapt, valorile pierderilor se pot comporta în moduri diferite în funcție de model, setul de date, parametrii de antrenare, etc. Dacă sunteți interesați să explorați mai multe despre modelele descrise, ar trebui să consultați acest articol de blog de la oamenii de la <a href="https://www.fast.ai/posts/2023-09-04-learning-jumps/" rel="nofollow">Fast AI</a>.',mi,je,pi,Fe,Ma='În secțiunea <a href="/en/chapter11/4">11.4</a> vom învăța cum să evaluăm modelul folosind seturi de date de referință. Pentru moment, ne vom concentra pe evaluarea calitativă a modelului.',oi,Se,Ta="După finalizarea SFT, considerați aceste acțiuni de urmărire:",ci,Re,ba="<li>Evaluați modelul temeinic pe datele de test păstrate deoparte</li> <li>Validați aderarea la template pe diverse intrări</li> <li>Testați reținerea cunoștințelor specifice domeniului</li> <li>Monitorizați metricile de performanță din lumea reală</li>",di,j,fi,Ae,$i,Ie,gi,Ze,vi,Ee,Mi,Ve,Ti,We,bi,Be,Ci,He,zi,ke,_i,Pe,xi,Ge,wi,Qe,hi,Xe,Ca="Ați învățat cum să faceți fine-tuning la modele folosind SFT! Pentru a continua învățarea:",Ji,Le,za="<li>Încercați notebook-ul cu parametri diferiți</li> <li>Experimentați cu alte seturi de date</li> <li>Contribuiți cu îmbunătățiri la materialul cursului</li>",Ui,Ye,yi,Ne,_a='<li><a href="https://huggingface.co/docs/trl" rel="nofollow">Documentația TRL</a></li> <li><a href="https://github.com/huggingface/trl/blob/main/trl/scripts/sft.py" rel="nofollow">Depozitul de exemple SFT</a></li> <li><a href="https://huggingface.co/docs/transformers/training" rel="nofollow">Cele mai bune practici pentru fine-tuning</a></li>',ji,De,Fi,et,Si;return z=new Va({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/course/en/chapter11/section3.ipynb"}]}}),F=new v({props:{title:"Fine-tuning supervizat",local:"fine-tuning-supervizat",headingTag:"h1"}}),A=new v({props:{title:"Când să utilizați SFT",local:"când-să-utilizați-sft",headingTag:"h2"}}),x=new qe({props:{$$slots:{default:[Ba]},$$scope:{ctx:T}}}),E=new v({props:{title:"Controlul template-ului",local:"controlul-template-ului",headingTag:"h3"}}),B=new v({props:{title:"Adaptarea la domeniu",local:"adaptarea-la-domeniu",headingTag:"h3"}}),w=new qe({props:{$$slots:{default:[Ha]},$$scope:{ctx:T}}}),P=new v({props:{title:"Pregătirea setului de date",local:"pregătirea-setului-de-date",headingTag:"h2"}}),L=new v({props:{title:"Configurația antrenamentului",local:"configurația-antrenamentului",headingTag:"h2"}}),h=new qe({props:{$$slots:{default:[ka]},$$scope:{ctx:T}}}),q=new v({props:{title:"Implementare cu TRL",local:"implementare-cu-trl",headingTag:"h2"}}),K=new Ai({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBZnJvbSUyMHRybCUyMGltcG9ydCUyMFNGVENvbmZpZyUyQyUyMFNGVFRyYWluZXIlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQSUyMyUyMFNldGElQzglOUJpJTIwZGlzcG96aXRpdnVsJTBBZGV2aWNlJTIwJTNEJTIwJTIyY3VkYSUyMiUyMGlmJTIwdG9yY2guY3VkYS5pc19hdmFpbGFibGUoKSUyMGVsc2UlMjAlMjJjcHUlMjIlMEElMEElMjMlMjAlQzMlOEVuYyVDNCU4M3JjYSVDOCU5QmklMjBzZXR1bCUyMGRlJTIwZGF0ZSUwQWRhdGFzZXQlMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTIySHVnZ2luZ0ZhY2VUQiUyRnNtb2x0YWxrJTIyJTJDJTIwJTIyYWxsJTIyKSUwQSUwQSUyMyUyMENvbmZpZ3VyYSVDOCU5QmklMjBtb2RlbHVsJTIwJUM4JTk5aSUyMHRva2VuaXplci11bCUwQW1vZGVsX25hbWUlMjAlM0QlMjAlMjJIdWdnaW5nRmFjZVRCJTJGU21vbExNMi0xMzVNJTIyJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQocHJldHJhaW5lZF9tb2RlbF9uYW1lX29yX3BhdGglM0Rtb2RlbF9uYW1lKS50byglMEElMjAlMjAlMjAlMjBkZXZpY2UlMEEpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQocHJldHJhaW5lZF9tb2RlbF9uYW1lX29yX3BhdGglM0Rtb2RlbF9uYW1lKSUwQSUyMyUyMENvbmZpZ3VyYSVDOCU5QmklMjB0ZW1wbGF0ZS11bCUyMGRlJTIwY2hhdCUwQW1vZGVsJTJDJTIwdG9rZW5pemVyJTIwJTNEJTIwc2V0dXBfY2hhdF9mb3JtYXQobW9kZWwlM0Rtb2RlbCUyQyUyMHRva2VuaXplciUzRHRva2VuaXplciklMEElMEElMjMlMjBDb25maWd1cmElQzglOUJpJTIwdHJhaW5lci11bCUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBTRlRDb25maWcoJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMi4lMkZzZnRfb3V0cHV0JTIyJTJDJTBBJTIwJTIwJTIwJTIwbWF4X3N0ZXBzJTNEMTAwMCUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDQlMkMlMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTNENWUtNSUyQyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RlcHMlM0QxMCUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RlcHMlM0QxMDAlMkMlMEElMjAlMjAlMjAlMjBldmFsX3N0cmF0ZWd5JTNEJTIyc3RlcHMlMjIlMkMlMEElMjAlMjAlMjAlMjBldmFsX3N0ZXBzJTNENTAlMkMlMEEpJTBBJTBBJTIzJTIwSW5pJUM4JTlCaWFsaXphJUM4JTlCaSUyMHRyYWluZXItdWwlMEF0cmFpbmVyJTIwJTNEJTIwU0ZUVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwYXJncyUzRHRyYWluaW5nX2FyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRlc3QlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBwcm9jZXNzaW5nX2NsYXNzJTNEdG9rZW5pemVyJTJDJTBBKSUwQSUwQSUyMyUyMCVDMyU4RW5jZXBlJUM4JTlCaSUyMGFudHJlbmFtZW50dWwlMEF0cmFpbmVyLnRyYWluKCk=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
<span class="hljs-keyword">from</span> trl <span class="hljs-keyword">import</span> SFTConfig, SFTTrainer
<span class="hljs-keyword">import</span> torch

<span class="hljs-comment"># Setați dispozitivul</span>
device = <span class="hljs-string">&quot;cuda&quot;</span> <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> <span class="hljs-string">&quot;cpu&quot;</span>

<span class="hljs-comment"># Încărcați setul de date</span>
dataset = load_dataset(<span class="hljs-string">&quot;HuggingFaceTB/smoltalk&quot;</span>, <span class="hljs-string">&quot;all&quot;</span>)

<span class="hljs-comment"># Configurați modelul și tokenizer-ul</span>
model_name = <span class="hljs-string">&quot;HuggingFaceTB/SmolLM2-135M&quot;</span>
model = AutoModelForCausalLM.from_pretrained(pretrained_model_name_or_path=model_name).to(
    device
)
tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name_or_path=model_name)
<span class="hljs-comment"># Configurați template-ul de chat</span>
model, tokenizer = setup_chat_format(model=model, tokenizer=tokenizer)

<span class="hljs-comment"># Configurați trainer-ul</span>
training_args = SFTConfig(
    output_dir=<span class="hljs-string">&quot;./sft_output&quot;</span>,
    max_steps=<span class="hljs-number">1000</span>,
    per_device_train_batch_size=<span class="hljs-number">4</span>,
    learning_rate=<span class="hljs-number">5e-5</span>,
    logging_steps=<span class="hljs-number">10</span>,
    save_steps=<span class="hljs-number">100</span>,
    eval_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
    eval_steps=<span class="hljs-number">50</span>,
)

<span class="hljs-comment"># Inițializați trainer-ul</span>
trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset[<span class="hljs-string">&quot;train&quot;</span>],
    eval_dataset=dataset[<span class="hljs-string">&quot;test&quot;</span>],
    processing_class=tokenizer,
)

<span class="hljs-comment"># Începeți antrenamentul</span>
trainer.train()`,wrap:!1}}),J=new qe({props:{$$slots:{default:[Pa]},$$scope:{ctx:T}}}),ee=new v({props:{title:"Împachetarea setului de date",local:"împachetarea-setului-de-date",headingTag:"h2"}}),ie=new Ai({props:{code:"JTIzJTIwQ29uZmlndXJhJUM4JTlCaSUyMCVDMyVBRW1wYWNoZXRhcmVhJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFNGVENvbmZpZyhwYWNraW5nJTNEVHJ1ZSklMEElMEF0cmFpbmVyJTIwJTNEJTIwU0ZUVHJhaW5lcihtb2RlbCUzRG1vZGVsJTJDJTIwdHJhaW5fZGF0YXNldCUzRGRhdGFzZXQlMkMlMjBhcmdzJTNEdHJhaW5pbmdfYXJncyklMEElMEF0cmFpbmVyLnRyYWluKCk=",highlighted:`<span class="hljs-comment"># Configurați împachetarea</span>
training_args = SFTConfig(packing=<span class="hljs-literal">True</span>)

trainer = SFTTrainer(model=model, train_dataset=dataset, args=training_args)

trainer.train()`,wrap:!1}}),le=new Ai({props:{code:"ZGVmJTIwZm9ybWF0dGluZ19mdW5jKGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwdGV4dCUyMCUzRCUyMGYlMjIlMjMlMjMlMjMlMjBRdWVzdGlvbiUzQSUyMCU3QmV4YW1wbGUlNUIncXVlc3Rpb24nJTVEJTdEJTVDbiUyMCUyMyUyMyUyMyUyMEFuc3dlciUzQSUyMCU3QmV4YW1wbGUlNUInYW5zd2VyJyU1RCU3RCUyMiUwQSUyMCUyMCUyMCUyMHJldHVybiUyMHRleHQlMEElMEElMEF0cmFpbmluZ19hcmdzJTIwJTNEJTIwU0ZUQ29uZmlnKHBhY2tpbmclM0RUcnVlKSUwQXRyYWluZXIlMjAlM0QlMjBTRlRUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMCUyMmZhY2Vib29rJTJGb3B0LTM1MG0lMjIlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZGF0YXNldCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwZm9ybWF0dGluZ19mdW5jJTNEZm9ybWF0dGluZ19mdW5jJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">formatting_func</span>(<span class="hljs-params">example</span>):
    text = <span class="hljs-string">f&quot;### Question: <span class="hljs-subst">{example[<span class="hljs-string">&#x27;question&#x27;</span>]}</span>\\n ### Answer: <span class="hljs-subst">{example[<span class="hljs-string">&#x27;answer&#x27;</span>]}</span>&quot;</span>
    <span class="hljs-keyword">return</span> text


training_args = SFTConfig(packing=<span class="hljs-literal">True</span>)
trainer = SFTTrainer(
    <span class="hljs-string">&quot;facebook/opt-350m&quot;</span>,
    train_dataset=dataset,
    args=training_args,
    formatting_func=formatting_func,
)`,wrap:!1}}),ne=new v({props:{title:"Monitorizarea progresului antrenamentului",local:"monitorizarea-progresului-antrenamentului",headingTag:"h2"}}),ue=new v({props:{title:"Înțelegerea modelelor de pierdere",local:"înțelegerea-modelelor-de-pierdere",headingTag:"h3"}}),oe=new v({props:{title:"Metrici de monitorizat",local:"metrici-de-monitorizat",headingTag:"h3"}}),U=new qe({props:{warning:!0,$$slots:{default:[Ga]},$$scope:{ctx:T}}}),fe=new v({props:{title:"Calea către convergență",local:"calea-către-convergență",headingTag:"h3"}}),ge=new v({props:{title:"Monitorizarea progresului antrenamentului",local:"monitorizarea-progresului-antrenamentului",headingTag:"h3"}}),Me=new v({props:{title:"Semne de avertizare de urmărit",local:"semne-de-avertizare-de-urmărit",headingTag:"h3"}}),y=new qe({props:{warning:!0,$$slots:{default:[Qa]},$$scope:{ctx:T}}}),je=new v({props:{title:"Evaluarea după SFT",local:"evaluarea-după-sft",headingTag:"h2"}}),j=new qe({props:{$$slots:{default:[Xa]},$$scope:{ctx:T}}}),Ae=new v({props:{title:"Chestionar",local:"chestionar",headingTag:"h2"}}),Ie=new v({props:{title:"1. Ce parametri controlează durata antrenamentului în SFT?",local:"1-ce-parametri-controlează-durata-antrenamentului-în-sft",headingTag:"h3"}}),Ze=new it({props:{choices:[{text:"num_train_epochs și max_steps",explain:"Corect! Acești parametri determină cât timp va antrena modelul, fie prin numărul de epoci, fie prin pașii totali.",correct:!0},{text:"batch_size și learning_rate",explain:"Deși aceștia afectează antrenamentul, nu controlează direct durata."},{text:"gradient_checkpointing și warmup_ratio",explain:"Acești parametri afectează eficiența și stabilitatea antrenamentului, nu durata."}]}}),Ee=new v({props:{title:"2. Ce model în curbele pierderilor indică supraadaptarea potențială?",local:"2-ce-model-în-curbele-pierderilor-indică-supraadaptarea-potențială",headingTag:"h3"}}),Ve=new it({props:{choices:[{text:"Pierderea validării crește în timp ce pierderea antrenamentului continuă să scadă",explain:"Corect! Această divergență între pierderea antrenamentului și cea de validare este un semn clasic al supraadaptării.",correct:!0},{text:"Atât pierderea antrenamentului, cât și cea de validare scad constant",explain:"Acest model indică de fapt un antrenament sănătos."},{text:"Pierderea antrenamentului rămâne constantă în timp ce pierderea validării scade",explain:"Acesta ar fi un model neobișnuit și nu indică supraadaptarea."}]}}),We=new v({props:{title:"3. Pentru ce este folosit gradient_accumulation_steps?",local:"3-pentru-ce-este-folosit-gradientaccumulationsteps",headingTag:"h3"}}),Be=new it({props:{choices:[{text:"Pentru a crește dimensiunea efectivă a batch-ului fără a folosi mai multă memorie",explain:"Corect! Acumulează gradienții pe mai multe treceri înainte înainte de a actualiza greutățile.",correct:!0},{text:"Pentru a salva puncte de verificare în timpul antrenamentului",explain:"Aceasta este gestionată de parametrii save_steps și save_strategy."},{text:"Pentru a controla programul ratei de învățare",explain:"Programarea ratei de învățare este controlată de learning_rate și warmup_ratio."}]}}),He=new v({props:{title:"4. Ce ar trebui să monitorizați în timpul antrenamentului SFT?",local:"4-ce-ar-trebui-să-monitorizați-în-timpul-antrenamentului-sft",headingTag:"h3"}}),ke=new it({props:{choices:[{text:"Atât metricile cantitative, cât și ieșirile calitative",explain:"Corect! Monitorizarea ambelor tipuri de metrici ajută la detectarea tuturor problemelor potențiale.",correct:!0},{text:"Doar pierderea antrenamentului",explain:"Pierderea antrenamentului singură nu este suficientă pentru a asigura un comportament bun al modelului."},{text:"Doar calitatea ieșirii modelului",explain:"Deși importantă, evaluarea calitativă singură ratează dinamici importante ale antrenamentului."}]}}),Pe=new v({props:{title:"5. Ce indică convergența sănătoasă în timpul antrenamentului?",local:"5-ce-indică-convergența-sănătoasă-în-timpul-antrenamentului",headingTag:"h3"}}),Ge=new it({props:{choices:[{text:"Un decalaj mic între pierderea antrenamentului și cea de validare",explain:"Corect! Aceasta indică faptul că modelul învață modele generalizabile.",correct:!0},{text:"Pierderea antrenamentului ajungând la zero",explain:"Valori extrem de mici ale pierderilor ar putea indica memorizare mai degrabă decât învățare."},{text:"Pierderea validării fiind mai mică decât pierderea antrenamentului",explain:"Aceasta ar fi neobișnuită și ar putea indica probleme cu setul de validare."}]}}),Qe=new v({props:{title:"💐 Bună treabă!",local:"-bună-treabă",headingTag:"h2"}}),Ye=new v({props:{title:"Resurse adiționale",local:"resurse-adiționale",headingTag:"h2"}}),De=new Wa({props:{source:"https://github.com/huggingface/course/blob/main/chapters/rum/chapter11/3.mdx"}}),{c(){m=u("meta"),r=l(),M=u("p"),C=l(),p(z.$$.fragment),at=l(),p(F.$$.fragment),lt=l(),S=u("p"),S.textContent=Ii,nt=l(),R=u("p"),R.innerHTML=Zi,rt=l(),p(A.$$.fragment),ut=l(),I=u("p"),I.textContent=Ei,st=l(),p(x.$$.fragment),mt=l(),Z=u("p"),Z.textContent=Vi,pt=l(),p(E.$$.fragment),ot=l(),V=u("p"),V.textContent=Wi,ct=l(),W=u("ol"),W.innerHTML=Bi,dt=l(),p(B.$$.fragment),ft=l(),H=u("p"),H.textContent=Hi,$t=l(),k=u("ol"),k.innerHTML=ki,gt=l(),p(w.$$.fragment),vt=l(),p(P.$$.fragment),Mt=l(),G=u("p"),G.textContent=Pi,Tt=l(),Q=u("ol"),Q.innerHTML=Gi,bt=l(),X=u("p"),X.textContent=Qi,Ct=l(),_=u("iframe"),zt=l(),p(L.$$.fragment),_t=l(),Y=u("p"),Y.textContent=Li,xt=l(),N=u("p"),N.textContent=Yi,wt=l(),D=u("ol"),D.innerHTML=Ni,ht=l(),p(h.$$.fragment),Jt=l(),p(q.$$.fragment),Ut=l(),O=u("p"),O.innerHTML=Di,yt=l(),p(K.$$.fragment),jt=l(),p(J.$$.fragment),Ft=l(),p(ee.$$.fragment),St=l(),te=u("p"),te.innerHTML=qi,Rt=l(),p(ie.$$.fragment),At=l(),ae=u("p"),ae.textContent=Oi,It=l(),p(le.$$.fragment),Zt=l(),p(ne.$$.fragment),Et=l(),re=u("p"),re.textContent=Ki,Vt=l(),p(ue.$$.fragment),Wt=l(),se=u("p"),se.textContent=ea,Bt=l(),me=u("ol"),me.innerHTML=ta,Ht=l(),pe=u("img"),kt=l(),p(oe.$$.fragment),Pt=l(),ce=u("p"),ce.textContent=aa,Gt=l(),de=u("ul"),de.innerHTML=la,Qt=l(),p(U.$$.fragment),Xt=l(),p(fe.$$.fragment),Lt=l(),$e=u("p"),$e.textContent=na,Yt=l(),p(ge.$$.fragment),Nt=l(),ve=u("p"),ve.textContent=ra,Dt=l(),p(Me.$$.fragment),qt=l(),Te=u("p"),Te.textContent=ua,Ot=l(),be=u("img"),Kt=l(),Ce=u("p"),Ce.textContent=ma,ei=l(),ze=u("ul"),ze.innerHTML=pa,ti=l(),_e=u("img"),ii=l(),xe=u("p"),xe.textContent=ca,ai=l(),we=u("ul"),we.innerHTML=da,li=l(),he=u("img"),ni=l(),Je=u("p"),Je.textContent=$a,ri=l(),Ue=u("ul"),Ue.innerHTML=ga,ui=l(),p(y.$$.fragment),si=l(),ye=u("p"),ye.innerHTML=va,mi=l(),p(je.$$.fragment),pi=l(),Fe=u("p"),Fe.innerHTML=Ma,oi=l(),Se=u("p"),Se.textContent=Ta,ci=l(),Re=u("ol"),Re.innerHTML=ba,di=l(),p(j.$$.fragment),fi=l(),p(Ae.$$.fragment),$i=l(),p(Ie.$$.fragment),gi=l(),p(Ze.$$.fragment),vi=l(),p(Ee.$$.fragment),Mi=l(),p(Ve.$$.fragment),Ti=l(),p(We.$$.fragment),bi=l(),p(Be.$$.fragment),Ci=l(),p(He.$$.fragment),zi=l(),p(ke.$$.fragment),_i=l(),p(Pe.$$.fragment),xi=l(),p(Ge.$$.fragment),wi=l(),p(Qe.$$.fragment),hi=l(),Xe=u("p"),Xe.textContent=Ca,Ji=l(),Le=u("ol"),Le.innerHTML=za,Ui=l(),p(Ye.$$.fragment),yi=l(),Ne=u("ul"),Ne.innerHTML=_a,ji=l(),p(De.$$.fragment),Fi=l(),et=u("p"),this.h()},l(e){const t=Za("svelte-u9bgzb",document.head);m=s(t,"META",{name:!0,content:!0}),t.forEach(i),r=n(e),M=s(e,"P",{}),Ri(M).forEach(i),C=n(e),o(z.$$.fragment,e),at=n(e),o(F.$$.fragment,e),lt=n(e),S=s(e,"P",{"data-svelte-h":!0}),g(S)!=="svelte-oy05k7"&&(S.textContent=Ii),nt=n(e),R=s(e,"P",{"data-svelte-h":!0}),g(R)!=="svelte-fzpo47"&&(R.innerHTML=Zi),rt=n(e),o(A.$$.fragment,e),ut=n(e),I=s(e,"P",{"data-svelte-h":!0}),g(I)!=="svelte-10glnj2"&&(I.textContent=Ei),st=n(e),o(x.$$.fragment,e),mt=n(e),Z=s(e,"P",{"data-svelte-h":!0}),g(Z)!=="svelte-12i7ds2"&&(Z.textContent=Vi),pt=n(e),o(E.$$.fragment,e),ot=n(e),V=s(e,"P",{"data-svelte-h":!0}),g(V)!=="svelte-nn736k"&&(V.textContent=Wi),ct=n(e),W=s(e,"OL",{"data-svelte-h":!0}),g(W)!=="svelte-1p4153u"&&(W.innerHTML=Bi),dt=n(e),o(B.$$.fragment,e),ft=n(e),H=s(e,"P",{"data-svelte-h":!0}),g(H)!=="svelte-d7sknd"&&(H.textContent=Hi),$t=n(e),k=s(e,"OL",{"data-svelte-h":!0}),g(k)!=="svelte-tg9snv"&&(k.innerHTML=ki),gt=n(e),o(w.$$.fragment,e),vt=n(e),o(P.$$.fragment,e),Mt=n(e),G=s(e,"P",{"data-svelte-h":!0}),g(G)!=="svelte-1seka2z"&&(G.textContent=Pi),Tt=n(e),Q=s(e,"OL",{"data-svelte-h":!0}),g(Q)!=="svelte-zvq3fm"&&(Q.innerHTML=Gi),bt=n(e),X=s(e,"P",{"data-svelte-h":!0}),g(X)!=="svelte-1p7ex2c"&&(X.textContent=Qi),Ct=n(e),_=s(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),Ri(_).forEach(i),zt=n(e),o(L.$$.fragment,e),_t=n(e),Y=s(e,"P",{"data-svelte-h":!0}),g(Y)!=="svelte-1tuyl80"&&(Y.textContent=Li),xt=n(e),N=s(e,"P",{"data-svelte-h":!0}),g(N)!=="svelte-ze1feq"&&(N.textContent=Yi),wt=n(e),D=s(e,"OL",{"data-svelte-h":!0}),g(D)!=="svelte-41j65w"&&(D.innerHTML=Ni),ht=n(e),o(h.$$.fragment,e),Jt=n(e),o(q.$$.fragment,e),Ut=n(e),O=s(e,"P",{"data-svelte-h":!0}),g(O)!=="svelte-t0cjhe"&&(O.innerHTML=Di),yt=n(e),o(K.$$.fragment,e),jt=n(e),o(J.$$.fragment,e),Ft=n(e),o(ee.$$.fragment,e),St=n(e),te=s(e,"P",{"data-svelte-h":!0}),g(te)!=="svelte-1u6rowd"&&(te.innerHTML=qi),Rt=n(e),o(ie.$$.fragment,e),At=n(e),ae=s(e,"P",{"data-svelte-h":!0}),g(ae)!=="svelte-x4b86a"&&(ae.textContent=Oi),It=n(e),o(le.$$.fragment,e),Zt=n(e),o(ne.$$.fragment,e),Et=n(e),re=s(e,"P",{"data-svelte-h":!0}),g(re)!=="svelte-13u3w91"&&(re.textContent=Ki),Vt=n(e),o(ue.$$.fragment,e),Wt=n(e),se=s(e,"P",{"data-svelte-h":!0}),g(se)!=="svelte-zi3i73"&&(se.textContent=ea),Bt=n(e),me=s(e,"OL",{"data-svelte-h":!0}),g(me)!=="svelte-1nxg6bf"&&(me.innerHTML=ta),Ht=n(e),pe=s(e,"IMG",{src:!0,alt:!0}),kt=n(e),o(oe.$$.fragment,e),Pt=n(e),ce=s(e,"P",{"data-svelte-h":!0}),g(ce)!=="svelte-w74sip"&&(ce.textContent=aa),Gt=n(e),de=s(e,"UL",{"data-svelte-h":!0}),g(de)!=="svelte-1ok62dq"&&(de.innerHTML=la),Qt=n(e),o(U.$$.fragment,e),Xt=n(e),o(fe.$$.fragment,e),Lt=n(e),$e=s(e,"P",{"data-svelte-h":!0}),g($e)!=="svelte-r4s3uw"&&($e.textContent=na),Yt=n(e),o(ge.$$.fragment,e),Nt=n(e),ve=s(e,"P",{"data-svelte-h":!0}),g(ve)!=="svelte-xya6p6"&&(ve.textContent=ra),Dt=n(e),o(Me.$$.fragment,e),qt=n(e),Te=s(e,"P",{"data-svelte-h":!0}),g(Te)!=="svelte-1l9j9uj"&&(Te.textContent=ua),Ot=n(e),be=s(e,"IMG",{src:!0,alt:!0}),Kt=n(e),Ce=s(e,"P",{"data-svelte-h":!0}),g(Ce)!=="svelte-1m8jari"&&(Ce.textContent=ma),ei=n(e),ze=s(e,"UL",{"data-svelte-h":!0}),g(ze)!=="svelte-wij65o"&&(ze.innerHTML=pa),ti=n(e),_e=s(e,"IMG",{src:!0,alt:!0}),ii=n(e),xe=s(e,"P",{"data-svelte-h":!0}),g(xe)!=="svelte-1sisww"&&(xe.textContent=ca),ai=n(e),we=s(e,"UL",{"data-svelte-h":!0}),g(we)!=="svelte-2khe21"&&(we.innerHTML=da),li=n(e),he=s(e,"IMG",{src:!0,alt:!0}),ni=n(e),Je=s(e,"P",{"data-svelte-h":!0}),g(Je)!=="svelte-thdo8n"&&(Je.textContent=$a),ri=n(e),Ue=s(e,"UL",{"data-svelte-h":!0}),g(Ue)!=="svelte-mgrg35"&&(Ue.innerHTML=ga),ui=n(e),o(y.$$.fragment,e),si=n(e),ye=s(e,"P",{"data-svelte-h":!0}),g(ye)!=="svelte-50hld8"&&(ye.innerHTML=va),mi=n(e),o(je.$$.fragment,e),pi=n(e),Fe=s(e,"P",{"data-svelte-h":!0}),g(Fe)!=="svelte-qy3h7s"&&(Fe.innerHTML=Ma),oi=n(e),Se=s(e,"P",{"data-svelte-h":!0}),g(Se)!=="svelte-4t12h0"&&(Se.textContent=Ta),ci=n(e),Re=s(e,"OL",{"data-svelte-h":!0}),g(Re)!=="svelte-2aq3ne"&&(Re.innerHTML=ba),di=n(e),o(j.$$.fragment,e),fi=n(e),o(Ae.$$.fragment,e),$i=n(e),o(Ie.$$.fragment,e),gi=n(e),o(Ze.$$.fragment,e),vi=n(e),o(Ee.$$.fragment,e),Mi=n(e),o(Ve.$$.fragment,e),Ti=n(e),o(We.$$.fragment,e),bi=n(e),o(Be.$$.fragment,e),Ci=n(e),o(He.$$.fragment,e),zi=n(e),o(ke.$$.fragment,e),_i=n(e),o(Pe.$$.fragment,e),xi=n(e),o(Ge.$$.fragment,e),wi=n(e),o(Qe.$$.fragment,e),hi=n(e),Xe=s(e,"P",{"data-svelte-h":!0}),g(Xe)!=="svelte-15g97c"&&(Xe.textContent=Ca),Ji=n(e),Le=s(e,"OL",{"data-svelte-h":!0}),g(Le)!=="svelte-1dn4d6e"&&(Le.innerHTML=za),Ui=n(e),o(Ye.$$.fragment,e),yi=n(e),Ne=s(e,"UL",{"data-svelte-h":!0}),g(Ne)!=="svelte-ltbs3j"&&(Ne.innerHTML=_a),ji=n(e),o(De.$$.fragment,e),Fi=n(e),et=s(e,"P",{}),Ri(et).forEach(i),this.h()},h(){b(m,"name","hf:doc:metadata"),b(m,"content",Ya),tt(_.src,Xi="https://huggingface.co/datasets/HuggingFaceTB/smoltalk/embed/viewer/all/train?row=0")||b(_,"src",Xi),b(_,"frameborder","0"),b(_,"width","100%"),b(_,"height","360px"),tt(pe.src,ia="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/nlp_course_sft_loss_graphic.png")||b(pe,"src",ia),b(pe,"alt","Antrenamentul SFTTrainer"),tt(be.src,sa="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/sft_loss_1.png")||b(be,"src",sa),b(be,"alt","Antrenamentul SFTTrainer"),tt(_e.src,oa="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/sft_loss_2.png")||b(_e,"src",oa),b(_e,"alt","Antrenamentul SFTTrainer"),tt(he.src,fa="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/sft_loss_3.png")||b(he,"src",fa),b(he,"alt","Antrenamentul SFTTrainer")},m(e,t){Ea(document.head,m),a(e,r,t),a(e,M,t),a(e,C,t),c(z,e,t),a(e,at,t),c(F,e,t),a(e,lt,t),a(e,S,t),a(e,nt,t),a(e,R,t),a(e,rt,t),c(A,e,t),a(e,ut,t),a(e,I,t),a(e,st,t),c(x,e,t),a(e,mt,t),a(e,Z,t),a(e,pt,t),c(E,e,t),a(e,ot,t),a(e,V,t),a(e,ct,t),a(e,W,t),a(e,dt,t),c(B,e,t),a(e,ft,t),a(e,H,t),a(e,$t,t),a(e,k,t),a(e,gt,t),c(w,e,t),a(e,vt,t),c(P,e,t),a(e,Mt,t),a(e,G,t),a(e,Tt,t),a(e,Q,t),a(e,bt,t),a(e,X,t),a(e,Ct,t),a(e,_,t),a(e,zt,t),c(L,e,t),a(e,_t,t),a(e,Y,t),a(e,xt,t),a(e,N,t),a(e,wt,t),a(e,D,t),a(e,ht,t),c(h,e,t),a(e,Jt,t),c(q,e,t),a(e,Ut,t),a(e,O,t),a(e,yt,t),c(K,e,t),a(e,jt,t),c(J,e,t),a(e,Ft,t),c(ee,e,t),a(e,St,t),a(e,te,t),a(e,Rt,t),c(ie,e,t),a(e,At,t),a(e,ae,t),a(e,It,t),c(le,e,t),a(e,Zt,t),c(ne,e,t),a(e,Et,t),a(e,re,t),a(e,Vt,t),c(ue,e,t),a(e,Wt,t),a(e,se,t),a(e,Bt,t),a(e,me,t),a(e,Ht,t),a(e,pe,t),a(e,kt,t),c(oe,e,t),a(e,Pt,t),a(e,ce,t),a(e,Gt,t),a(e,de,t),a(e,Qt,t),c(U,e,t),a(e,Xt,t),c(fe,e,t),a(e,Lt,t),a(e,$e,t),a(e,Yt,t),c(ge,e,t),a(e,Nt,t),a(e,ve,t),a(e,Dt,t),c(Me,e,t),a(e,qt,t),a(e,Te,t),a(e,Ot,t),a(e,be,t),a(e,Kt,t),a(e,Ce,t),a(e,ei,t),a(e,ze,t),a(e,ti,t),a(e,_e,t),a(e,ii,t),a(e,xe,t),a(e,ai,t),a(e,we,t),a(e,li,t),a(e,he,t),a(e,ni,t),a(e,Je,t),a(e,ri,t),a(e,Ue,t),a(e,ui,t),c(y,e,t),a(e,si,t),a(e,ye,t),a(e,mi,t),c(je,e,t),a(e,pi,t),a(e,Fe,t),a(e,oi,t),a(e,Se,t),a(e,ci,t),a(e,Re,t),a(e,di,t),c(j,e,t),a(e,fi,t),c(Ae,e,t),a(e,$i,t),c(Ie,e,t),a(e,gi,t),c(Ze,e,t),a(e,vi,t),c(Ee,e,t),a(e,Mi,t),c(Ve,e,t),a(e,Ti,t),c(We,e,t),a(e,bi,t),c(Be,e,t),a(e,Ci,t),c(He,e,t),a(e,zi,t),c(ke,e,t),a(e,_i,t),c(Pe,e,t),a(e,xi,t),c(Ge,e,t),a(e,wi,t),c(Qe,e,t),a(e,hi,t),a(e,Xe,t),a(e,Ji,t),a(e,Le,t),a(e,Ui,t),c(Ye,e,t),a(e,yi,t),a(e,Ne,t),a(e,ji,t),c(De,e,t),a(e,Fi,t),a(e,et,t),Si=!0},p(e,[t]){const xa={};t&2&&(xa.$$scope={dirty:t,ctx:e}),x.$set(xa);const wa={};t&2&&(wa.$$scope={dirty:t,ctx:e}),w.$set(wa);const ha={};t&2&&(ha.$$scope={dirty:t,ctx:e}),h.$set(ha);const Ja={};t&2&&(Ja.$$scope={dirty:t,ctx:e}),J.$set(Ja);const Ua={};t&2&&(Ua.$$scope={dirty:t,ctx:e}),U.$set(Ua);const ya={};t&2&&(ya.$$scope={dirty:t,ctx:e}),y.$set(ya);const ja={};t&2&&(ja.$$scope={dirty:t,ctx:e}),j.$set(ja)},i(e){Si||(d(z.$$.fragment,e),d(F.$$.fragment,e),d(A.$$.fragment,e),d(x.$$.fragment,e),d(E.$$.fragment,e),d(B.$$.fragment,e),d(w.$$.fragment,e),d(P.$$.fragment,e),d(L.$$.fragment,e),d(h.$$.fragment,e),d(q.$$.fragment,e),d(K.$$.fragment,e),d(J.$$.fragment,e),d(ee.$$.fragment,e),d(ie.$$.fragment,e),d(le.$$.fragment,e),d(ne.$$.fragment,e),d(ue.$$.fragment,e),d(oe.$$.fragment,e),d(U.$$.fragment,e),d(fe.$$.fragment,e),d(ge.$$.fragment,e),d(Me.$$.fragment,e),d(y.$$.fragment,e),d(je.$$.fragment,e),d(j.$$.fragment,e),d(Ae.$$.fragment,e),d(Ie.$$.fragment,e),d(Ze.$$.fragment,e),d(Ee.$$.fragment,e),d(Ve.$$.fragment,e),d(We.$$.fragment,e),d(Be.$$.fragment,e),d(He.$$.fragment,e),d(ke.$$.fragment,e),d(Pe.$$.fragment,e),d(Ge.$$.fragment,e),d(Qe.$$.fragment,e),d(Ye.$$.fragment,e),d(De.$$.fragment,e),Si=!0)},o(e){f(z.$$.fragment,e),f(F.$$.fragment,e),f(A.$$.fragment,e),f(x.$$.fragment,e),f(E.$$.fragment,e),f(B.$$.fragment,e),f(w.$$.fragment,e),f(P.$$.fragment,e),f(L.$$.fragment,e),f(h.$$.fragment,e),f(q.$$.fragment,e),f(K.$$.fragment,e),f(J.$$.fragment,e),f(ee.$$.fragment,e),f(ie.$$.fragment,e),f(le.$$.fragment,e),f(ne.$$.fragment,e),f(ue.$$.fragment,e),f(oe.$$.fragment,e),f(U.$$.fragment,e),f(fe.$$.fragment,e),f(ge.$$.fragment,e),f(Me.$$.fragment,e),f(y.$$.fragment,e),f(je.$$.fragment,e),f(j.$$.fragment,e),f(Ae.$$.fragment,e),f(Ie.$$.fragment,e),f(Ze.$$.fragment,e),f(Ee.$$.fragment,e),f(Ve.$$.fragment,e),f(We.$$.fragment,e),f(Be.$$.fragment,e),f(He.$$.fragment,e),f(ke.$$.fragment,e),f(Pe.$$.fragment,e),f(Ge.$$.fragment,e),f(Qe.$$.fragment,e),f(Ye.$$.fragment,e),f(De.$$.fragment,e),Si=!1},d(e){e&&(i(r),i(M),i(C),i(at),i(lt),i(S),i(nt),i(R),i(rt),i(ut),i(I),i(st),i(mt),i(Z),i(pt),i(ot),i(V),i(ct),i(W),i(dt),i(ft),i(H),i($t),i(k),i(gt),i(vt),i(Mt),i(G),i(Tt),i(Q),i(bt),i(X),i(Ct),i(_),i(zt),i(_t),i(Y),i(xt),i(N),i(wt),i(D),i(ht),i(Jt),i(Ut),i(O),i(yt),i(jt),i(Ft),i(St),i(te),i(Rt),i(At),i(ae),i(It),i(Zt),i(Et),i(re),i(Vt),i(Wt),i(se),i(Bt),i(me),i(Ht),i(pe),i(kt),i(Pt),i(ce),i(Gt),i(de),i(Qt),i(Xt),i(Lt),i($e),i(Yt),i(Nt),i(ve),i(Dt),i(qt),i(Te),i(Ot),i(be),i(Kt),i(Ce),i(ei),i(ze),i(ti),i(_e),i(ii),i(xe),i(ai),i(we),i(li),i(he),i(ni),i(Je),i(ri),i(Ue),i(ui),i(si),i(ye),i(mi),i(pi),i(Fe),i(oi),i(Se),i(ci),i(Re),i(di),i(fi),i($i),i(gi),i(vi),i(Mi),i(Ti),i(bi),i(Ci),i(zi),i(_i),i(xi),i(wi),i(hi),i(Xe),i(Ji),i(Le),i(Ui),i(yi),i(Ne),i(ji),i(Fi),i(et)),i(m),$(z,e),$(F,e),$(A,e),$(x,e),$(E,e),$(B,e),$(w,e),$(P,e),$(L,e),$(h,e),$(q,e),$(K,e),$(J,e),$(ee,e),$(ie,e),$(le,e),$(ne,e),$(ue,e),$(oe,e),$(U,e),$(fe,e),$(ge,e),$(Me,e),$(y,e),$(je,e),$(j,e),$(Ae,e),$(Ie,e),$(Ze,e),$(Ee,e),$(Ve,e),$(We,e),$(Be,e),$(He,e),$(ke,e),$(Pe,e),$(Ge,e),$(Qe,e),$(Ye,e),$(De,e)}}}const Ya='{"title":"Fine-tuning supervizat","local":"fine-tuning-supervizat","sections":[{"title":"Când să utilizați SFT","local":"când-să-utilizați-sft","sections":[{"title":"Controlul template-ului","local":"controlul-template-ului","sections":[],"depth":3},{"title":"Adaptarea la domeniu","local":"adaptarea-la-domeniu","sections":[],"depth":3}],"depth":2},{"title":"Pregătirea setului de date","local":"pregătirea-setului-de-date","sections":[],"depth":2},{"title":"Configurația antrenamentului","local":"configurația-antrenamentului","sections":[],"depth":2},{"title":"Implementare cu TRL","local":"implementare-cu-trl","sections":[],"depth":2},{"title":"Împachetarea setului de date","local":"împachetarea-setului-de-date","sections":[],"depth":2},{"title":"Monitorizarea progresului antrenamentului","local":"monitorizarea-progresului-antrenamentului","sections":[{"title":"Înțelegerea modelelor de pierdere","local":"înțelegerea-modelelor-de-pierdere","sections":[],"depth":3},{"title":"Metrici de monitorizat","local":"metrici-de-monitorizat","sections":[],"depth":3},{"title":"Calea către convergență","local":"calea-către-convergență","sections":[],"depth":3},{"title":"Monitorizarea progresului antrenamentului","local":"monitorizarea-progresului-antrenamentului","sections":[],"depth":3},{"title":"Semne de avertizare de urmărit","local":"semne-de-avertizare-de-urmărit","sections":[],"depth":3}],"depth":2},{"title":"Evaluarea după SFT","local":"evaluarea-după-sft","sections":[],"depth":2},{"title":"Chestionar","local":"chestionar","sections":[{"title":"1. Ce parametri controlează durata antrenamentului în SFT?","local":"1-ce-parametri-controlează-durata-antrenamentului-în-sft","sections":[],"depth":3},{"title":"2. Ce model în curbele pierderilor indică supraadaptarea potențială?","local":"2-ce-model-în-curbele-pierderilor-indică-supraadaptarea-potențială","sections":[],"depth":3},{"title":"3. Pentru ce este folosit gradient_accumulation_steps?","local":"3-pentru-ce-este-folosit-gradientaccumulationsteps","sections":[],"depth":3},{"title":"4. Ce ar trebui să monitorizați în timpul antrenamentului SFT?","local":"4-ce-ar-trebui-să-monitorizați-în-timpul-antrenamentului-sft","sections":[],"depth":3},{"title":"5. Ce indică convergența sănătoasă în timpul antrenamentului?","local":"5-ce-indică-convergența-sănătoasă-în-timpul-antrenamentului","sections":[],"depth":3}],"depth":2},{"title":"💐 Bună treabă!","local":"-bună-treabă","sections":[],"depth":2},{"title":"Resurse adiționale","local":"resurse-adiționale","sections":[],"depth":2}],"depth":1}';function Na(T){return Sa(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class al extends Aa{constructor(m){super(),Ia(this,m,Na,La,Fa,{})}}export{al as component};
