import{S as Yt,i as Pt,s as Lt,e as r,k as h,w as M,t as p,M as Ht,c as l,d as e,m as u,a as i,x as k,h as m,b as f,G as n,g as d,y,q as $,o as T,B as j,v as Qt}from"../chunks/vendor-hf-doc-builder.js";import{T as Wt}from"../chunks/Tip-hf-doc-builder.js";import{Y as Gt}from"../chunks/Youtube-hf-doc-builder.js";import{I as Yn}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as Y}from"../chunks/CodeBlock-hf-doc-builder.js";import{D as xt}from"../chunks/DocNotebookDropdown-hf-doc-builder.js";import{F as Nt,M as Ft}from"../chunks/Markdown-hf-doc-builder.js";function Kt(un){let g,E;return{c(){g=r("p"),E=p(`Es wird eine Warnung angezeigt, dass einige der trainierten Parameter nicht verwendet werden und einige Parameter zuf\xE4llig
initialisiert werden. Machen Sie sich keine Sorgen, das ist v\xF6llig normal! Der vorher trainierte Kopf des BERT-Modells wird verworfen und durch einen zuf\xE4llig initialisierten Klassifikationskopf ersetzt. Sie werden diesen neuen Modellkopf in Ihrer Sequenzklassifizierungsaufgabe feinabstimmen, indem Sie das Wissen des vortrainierten Modells auf ihn \xFCbertragen.`)},l(c){g=l(c,"P",{});var z=i(g);E=m(z,`Es wird eine Warnung angezeigt, dass einige der trainierten Parameter nicht verwendet werden und einige Parameter zuf\xE4llig
initialisiert werden. Machen Sie sich keine Sorgen, das ist v\xF6llig normal! Der vorher trainierte Kopf des BERT-Modells wird verworfen und durch einen zuf\xE4llig initialisierten Klassifikationskopf ersetzt. Sie werden diesen neuen Modellkopf in Ihrer Sequenzklassifizierungsaufgabe feinabstimmen, indem Sie das Wissen des vortrainierten Modells auf ihn \xFCbertragen.`),z.forEach(e)},m(c,z){d(c,g,z),n(g,E)},d(c){c&&e(g)}}}function qt(un){let g,E,c,z,_,S,F,Z,Ne,R,I,Ye,V,Pn,fn,U,be,Tn,B,we,cn,gn,jn,Re,Vn,O,Je,Pe,Ze,ee,ne,P,L,Oe,en,Le,zn,G,nn,te,Be,tn,X,de,An,D,sn,Un,Gn,pe,se,H,Q,Ce,ve,Xn,Ve,Ie,N,A,Ae,He,bn,me,Me,he,an,x,Xe,Wn,ue,K,rn,Qe,ln,En,Ln,q,ke,wn,ye,on,ae,C,Fn,Ue,De,_n,Ge,dn,We,xe,Sn,Jn,W,re,J,fe,pn,vn,Dn,$e,Te,Ke,ce,le,je,ze,Ee,mn,Zn,_e,In,ge,Mn,qe,Rn,ie,a,t,b,Se,Hn,Qn,at,oe,Nn,kn,rt;return g=new Gt({props:{id:"nvBXf7s7vTI"}}),S=new Yn({}),O=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiUyQyUyMG51bV9sYWJlbHMlM0Q1KQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>, num_labels=<span class="hljs-number">5</span>)`}}),Pe=new Wt({props:{$$slots:{default:[Kt]},$$scope:{ctx:un}}}),L=new Yn({}),pe=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKG91dHB1dF9kaXIlM0QlMjJ0ZXN0X3RyYWluZXIlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments

<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(output_dir=<span class="hljs-string">&quot;test_trainer&quot;</span>)`}}),ve=new Yn({}),on=new Y({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)`}}),re=new Y({props:{code:"ZGVmJTIwY29tcHV0ZV9tZXRyaWNzKGV2YWxfcHJlZCklM0ElMEElMjAlMjAlMjAlMjBsb2dpdHMlMkMlMjBsYWJlbHMlMjAlM0QlMjBldmFsX3ByZWQlMEElMjAlMjAlMjAlMjBwcmVkaWN0aW9ucyUyMCUzRCUyMG5wLmFyZ21heChsb2dpdHMlMkMlMjBheGlzJTNELTEpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwbWV0cmljLmNvbXB1dGUocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyUyQyUyMHJlZmVyZW5jZXMlM0RsYWJlbHMp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_pred</span>):
<span class="hljs-meta">... </span>    logits, labels = eval_pred
<span class="hljs-meta">... </span>    predictions = np.argmax(logits, axis=-<span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> metric.compute(predictions=predictions, references=labels)`}}),Ke=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyhvdXRwdXRfZGlyJTNEJTIydGVzdF90cmFpbmVyJTIyJTJDJTIwZXZhbHVhdGlvbl9zdHJhdGVneSUzRCUyMmVwb2NoJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer

<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(output_dir=<span class="hljs-string">&quot;test_trainer&quot;</span>, evaluation_strategy=<span class="hljs-string">&quot;epoch&quot;</span>)`}}),Ee=new Yn({}),t=new Y({props:{code:"dHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHNtYWxsX3RyYWluX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBldmFsX2RhdGFzZXQlM0RzbWFsbF9ldmFsX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBjb21wdXRlX21ldHJpY3MlM0Rjb21wdXRlX21ldHJpY3MlMkMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>trainer = Trainer(
<span class="hljs-meta">... </span>    model=model,
<span class="hljs-meta">... </span>    args=training_args,
<span class="hljs-meta">... </span>    train_dataset=small_train_dataset,
<span class="hljs-meta">... </span>    eval_dataset=small_eval_dataset,
<span class="hljs-meta">... </span>    compute_metrics=compute_metrics,
<span class="hljs-meta">... </span>)`}}),kn=new Y({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.train()'}}),{c(){M(g.$$.fragment),E=h(),c=r("h2"),z=r("a"),_=r("span"),M(S.$$.fragment),F=h(),Z=r("span"),Ne=p("Trainieren mit PyTorch Trainer"),R=h(),I=r("p"),Ye=p("\u{1F917} Transformers bietet eine "),V=r("code"),Pn=p("Trainer"),fn=p("-Klasse, die f\xFCr das Training von \u{1F917} Transformers-Modellen optimiert ist und es einfacher macht, mit dem Training zu beginnen, ohne manuell eine eigene Trainingsschleife zu schreiben. Die "),U=r("code"),be=p("Trainer"),Tn=p("-API unterst\xFCtzt eine breite Palette von Trainingsoptionen und Funktionen wie Logging, Gradientenakkumulation und gemischte Pr\xE4zision."),B=h(),we=r("p"),cn=p("Beginnen Sie mit dem Laden Ihres Modells und geben Sie die Anzahl der erwarteten Labels an. Aus dem Yelp Review "),gn=r("a"),jn=p("dataset card"),Re=p(" wissen Sie, dass es f\xFCnf Labels gibt:"),Vn=h(),M(O.$$.fragment),Je=h(),M(Pe.$$.fragment),Ze=h(),ee=r("h3"),ne=r("a"),P=r("span"),M(L.$$.fragment),Oe=h(),en=r("span"),Le=p("Hyperparameter f\xFCr das Training"),zn=h(),G=r("p"),nn=p("Als N\xE4chstes erstellen Sie eine Klasse "),te=r("code"),Be=p("TrainingArguments"),tn=p(", die alle Hyperparameter enth\xE4lt, die Sie einstellen k\xF6nnen, sowie Flags zur Aktivierung verschiedener Trainingsoptionen. F\xFCr dieses Lernprogramm k\xF6nnen Sie mit den Standard- "),X=r("a"),de=p("Hyperparametern"),An=p(" beginnen, aber Sie k\xF6nnen mit diesen experimentieren, um Ihre optimalen Einstellungen zu finden."),D=h(),sn=r("p"),Un=p("Geben Sie an, wo die Kontrollpunkte Ihres Trainings gespeichert werden sollen:"),Gn=h(),M(pe.$$.fragment),se=h(),H=r("h3"),Q=r("a"),Ce=r("span"),M(ve.$$.fragment),Xn=h(),Ve=r("span"),Ie=p("Auswerten"),N=h(),A=r("p"),Ae=p("Der "),He=r("code"),bn=p("Trainer"),me=p(" wertet die Leistung des Modells w\xE4hrend des Trainings nicht automatisch aus. Sie m\xFCssen "),Me=r("code"),he=p("Trainer"),an=p(" eine Funktion \xFCbergeben, um Metriken zu berechnen und zu berichten. Die "),x=r("a"),Xe=p("\u{1F917} Evaluate"),Wn=p(" Bibliothek bietet eine einfache "),ue=r("a"),K=r("code"),rn=p("accuracy"),Qe=p(" Funktion, die Sie mit der "),ln=r("code"),En=p("evaluate.load"),Ln=p(" Funktion laden k\xF6nnen (siehe diese "),q=r("a"),ke=p("quicktour"),wn=p(" f\xFCr weitere Informationen):"),ye=h(),M(on.$$.fragment),ae=h(),C=r("p"),Fn=p("Rufen Sie "),Ue=r("code"),De=p("compute"),_n=p(" auf "),Ge=r("code"),dn=p("metric"),We=p(" auf, um die Genauigkeit Ihrer Vorhersagen zu berechnen. Bevor Sie Ihre Vorhersagen an "),xe=r("code"),Sn=p("compute"),Jn=p(" \xFCbergeben, m\xFCssen Sie die Vorhersagen in Logits umwandeln (denken Sie daran, dass alle \u{1F917} Transformers-Modelle Logits zur\xFCckgeben):"),W=h(),M(re.$$.fragment),J=h(),fe=r("p"),pn=p("Wenn Sie Ihre Bewertungsmetriken w\xE4hrend der Feinabstimmung \xFCberwachen m\xF6chten, geben Sie den Parameter "),vn=r("code"),Dn=p("evaluation_strategy"),$e=p(" in Ihren Trainingsargumenten an, um die Bewertungsmetrik am Ende jeder Epoche zu ermitteln:"),Te=h(),M(Ke.$$.fragment),ce=h(),le=r("h3"),je=r("a"),ze=r("span"),M(Ee.$$.fragment),mn=h(),Zn=r("span"),_e=p("Trainer"),In=h(),ge=r("p"),Mn=p("Erstellen Sie ein "),qe=r("code"),Rn=p("Trainer"),ie=p("-Objekt mit Ihrem Modell, Trainingsargumenten, Trainings- und Testdatens\xE4tzen und einer Evaluierungsfunktion:"),a=h(),M(t.$$.fragment),b=h(),Se=r("p"),Hn=p("Anschlie\xDFend k\xF6nnen Sie Ihr Modell durch den Aufruf von "),Qn=r("code"),at=p("train()"),oe=p(" optimieren:"),Nn=h(),M(kn.$$.fragment),this.h()},l(o){k(g.$$.fragment,o),E=u(o),c=l(o,"H2",{class:!0});var v=i(c);z=l(v,"A",{id:!0,class:!0,href:!0});var xn=i(z);_=l(xn,"SPAN",{});var ft=i(_);k(S.$$.fragment,ft),ft.forEach(e),xn.forEach(e),F=u(v),Z=l(v,"SPAN",{});var Bn=i(Z);Ne=m(Bn,"Trainieren mit PyTorch Trainer"),Bn.forEach(e),v.forEach(e),R=u(o),I=l(o,"P",{});var hn=i(I);Ye=m(hn,"\u{1F917} Transformers bietet eine "),V=l(hn,"CODE",{});var Kn=i(V);Pn=m(Kn,"Trainer"),Kn.forEach(e),fn=m(hn,"-Klasse, die f\xFCr das Training von \u{1F917} Transformers-Modellen optimiert ist und es einfacher macht, mit dem Training zu beginnen, ohne manuell eine eigene Trainingsschleife zu schreiben. Die "),U=l(hn,"CODE",{});var s=i(U);be=m(s,"Trainer"),s.forEach(e),Tn=m(hn,"-API unterst\xFCtzt eine breite Palette von Trainingsoptionen und Funktionen wie Logging, Gradientenakkumulation und gemischte Pr\xE4zision."),hn.forEach(e),B=u(o),we=l(o,"P",{});var w=i(we);cn=m(w,"Beginnen Sie mit dem Laden Ihres Modells und geben Sie die Anzahl der erwarteten Labels an. Aus dem Yelp Review "),gn=l(w,"A",{href:!0,rel:!0});var lt=i(gn);jn=m(lt,"dataset card"),lt.forEach(e),Re=m(w," wissen Sie, dass es f\xFCnf Labels gibt:"),w.forEach(e),Vn=u(o),k(O.$$.fragment,o),Je=u(o),k(Pe.$$.fragment,o),Ze=u(o),ee=l(o,"H3",{class:!0});var qn=i(ee);ne=l(qn,"A",{id:!0,class:!0,href:!0});var dt=i(ne);P=l(dt,"SPAN",{});var pt=i(P);k(L.$$.fragment,pt),pt.forEach(e),dt.forEach(e),Oe=u(qn),en=l(qn,"SPAN",{});var On=i(en);Le=m(On,"Hyperparameter f\xFCr das Training"),On.forEach(e),qn.forEach(e),zn=u(o),G=l(o,"P",{});var yn=i(G);nn=m(yn,"Als N\xE4chstes erstellen Sie eine Klasse "),te=l(yn,"CODE",{});var ct=i(te);Be=m(ct,"TrainingArguments"),ct.forEach(e),tn=m(yn,", die alle Hyperparameter enth\xE4lt, die Sie einstellen k\xF6nnen, sowie Flags zur Aktivierung verschiedener Trainingsoptionen. F\xFCr dieses Lernprogramm k\xF6nnen Sie mit den Standard- "),X=l(yn,"A",{href:!0,rel:!0});var et=i(X);de=m(et,"Hyperparametern"),et.forEach(e),An=m(yn," beginnen, aber Sie k\xF6nnen mit diesen experimentieren, um Ihre optimalen Einstellungen zu finden."),yn.forEach(e),D=u(o),sn=l(o,"P",{});var it=i(sn);Un=m(it,"Geben Sie an, wo die Kontrollpunkte Ihres Trainings gespeichert werden sollen:"),it.forEach(e),Gn=u(o),k(pe.$$.fragment,o),se=u(o),H=l(o,"H3",{class:!0});var nt=i(H);Q=l(nt,"A",{id:!0,class:!0,href:!0});var tt=i(Q);Ce=l(tt,"SPAN",{});var gt=i(Ce);k(ve.$$.fragment,gt),gt.forEach(e),tt.forEach(e),Xn=u(nt),Ve=l(nt,"SPAN",{});var st=i(Ve);Ie=m(st,"Auswerten"),st.forEach(e),nt.forEach(e),N=u(o),A=l(o,"P",{});var Fe=i(A);Ae=m(Fe,"Der "),He=l(Fe,"CODE",{});var bt=i(He);bn=m(bt,"Trainer"),bt.forEach(e),me=m(Fe," wertet die Leistung des Modells w\xE4hrend des Trainings nicht automatisch aus. Sie m\xFCssen "),Me=l(Fe,"CODE",{});var $n=i(Me);he=m($n,"Trainer"),$n.forEach(e),an=m(Fe," eine Funktion \xFCbergeben, um Metriken zu berechnen und zu berichten. Die "),x=l(Fe,"A",{href:!0,rel:!0});var mt=i(x);Xe=m(mt,"\u{1F917} Evaluate"),mt.forEach(e),Wn=m(Fe," Bibliothek bietet eine einfache "),ue=l(Fe,"A",{href:!0,rel:!0});var ht=i(ue);K=l(ht,"CODE",{});var wt=i(K);rn=m(wt,"accuracy"),wt.forEach(e),ht.forEach(e),Qe=m(Fe," Funktion, die Sie mit der "),ln=l(Fe,"CODE",{});var ot=i(ln);En=m(ot,"evaluate.load"),ot.forEach(e),Ln=m(Fe," Funktion laden k\xF6nnen (siehe diese "),q=l(Fe,"A",{href:!0,rel:!0});var ut=i(q);ke=m(ut,"quicktour"),ut.forEach(e),wn=m(Fe," f\xFCr weitere Informationen):"),Fe.forEach(e),ye=u(o),k(on.$$.fragment,o),ae=u(o),C=l(o,"P",{});var Cn=i(C);Fn=m(Cn,"Rufen Sie "),Ue=l(Cn,"CODE",{});var Mt=i(Ue);De=m(Mt,"compute"),Mt.forEach(e),_n=m(Cn," auf "),Ge=l(Cn,"CODE",{});var vt=i(Ge);dn=m(vt,"metric"),vt.forEach(e),We=m(Cn," auf, um die Genauigkeit Ihrer Vorhersagen zu berechnen. Bevor Sie Ihre Vorhersagen an "),xe=l(Cn,"CODE",{});var _t=i(xe);Sn=m(_t,"compute"),_t.forEach(e),Jn=m(Cn," \xFCbergeben, m\xFCssen Sie die Vorhersagen in Logits umwandeln (denken Sie daran, dass alle \u{1F917} Transformers-Modelle Logits zur\xFCckgeben):"),Cn.forEach(e),W=u(o),k(re.$$.fragment,o),J=u(o),fe=l(o,"P",{});var yt=i(fe);pn=m(yt,"Wenn Sie Ihre Bewertungsmetriken w\xE4hrend der Feinabstimmung \xFCberwachen m\xF6chten, geben Sie den Parameter "),vn=l(yt,"CODE",{});var $t=i(vn);Dn=m($t,"evaluation_strategy"),$t.forEach(e),$e=m(yt," in Ihren Trainingsargumenten an, um die Bewertungsmetrik am Ende jeder Epoche zu ermitteln:"),yt.forEach(e),Te=u(o),k(Ke.$$.fragment,o),ce=u(o),le=l(o,"H3",{class:!0});var Tt=i(le);je=l(Tt,"A",{id:!0,class:!0,href:!0});var jt=i(je);ze=l(jt,"SPAN",{});var St=i(ze);k(Ee.$$.fragment,St),St.forEach(e),jt.forEach(e),mn=u(Tt),Zn=l(Tt,"SPAN",{});var Jt=i(Zn);_e=m(Jt,"Trainer"),Jt.forEach(e),Tt.forEach(e),In=u(o),ge=l(o,"P",{});var kt=i(ge);Mn=m(kt,"Erstellen Sie ein "),qe=l(kt,"CODE",{});var Zt=i(qe);Rn=m(Zt,"Trainer"),Zt.forEach(e),ie=m(kt,"-Objekt mit Ihrem Modell, Trainingsargumenten, Trainings- und Testdatens\xE4tzen und einer Evaluierungsfunktion:"),kt.forEach(e),a=u(o),k(t.$$.fragment,o),b=u(o),Se=l(o,"P",{});var zt=i(Se);Hn=m(zt,"Anschlie\xDFend k\xF6nnen Sie Ihr Modell durch den Aufruf von "),Qn=l(zt,"CODE",{});var It=i(Qn);at=m(It,"train()"),It.forEach(e),oe=m(zt," optimieren:"),zt.forEach(e),Nn=u(o),k(kn.$$.fragment,o),this.h()},h(){f(z,"id","trainieren-mit-pytorch-trainer"),f(z,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(z,"href","#trainieren-mit-pytorch-trainer"),f(c,"class","relative group"),f(gn,"href","https://huggingface.co/datasets/yelp_review_full#data-fields"),f(gn,"rel","nofollow"),f(ne,"id","hyperparameter-fr-das-training"),f(ne,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(ne,"href","#hyperparameter-fr-das-training"),f(ee,"class","relative group"),f(X,"href","https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments"),f(X,"rel","nofollow"),f(Q,"id","auswerten"),f(Q,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(Q,"href","#auswerten"),f(H,"class","relative group"),f(x,"href","https://huggingface.co/docs/evaluate/index"),f(x,"rel","nofollow"),f(ue,"href","https://huggingface.co/spaces/evaluate-metric/accuracy"),f(ue,"rel","nofollow"),f(q,"href","https://huggingface.co/docs/evaluate/a_quick_tour"),f(q,"rel","nofollow"),f(je,"id","trainer"),f(je,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(je,"href","#trainer"),f(le,"class","relative group")},m(o,v){y(g,o,v),d(o,E,v),d(o,c,v),n(c,z),n(z,_),y(S,_,null),n(c,F),n(c,Z),n(Z,Ne),d(o,R,v),d(o,I,v),n(I,Ye),n(I,V),n(V,Pn),n(I,fn),n(I,U),n(U,be),n(I,Tn),d(o,B,v),d(o,we,v),n(we,cn),n(we,gn),n(gn,jn),n(we,Re),d(o,Vn,v),y(O,o,v),d(o,Je,v),y(Pe,o,v),d(o,Ze,v),d(o,ee,v),n(ee,ne),n(ne,P),y(L,P,null),n(ee,Oe),n(ee,en),n(en,Le),d(o,zn,v),d(o,G,v),n(G,nn),n(G,te),n(te,Be),n(G,tn),n(G,X),n(X,de),n(G,An),d(o,D,v),d(o,sn,v),n(sn,Un),d(o,Gn,v),y(pe,o,v),d(o,se,v),d(o,H,v),n(H,Q),n(Q,Ce),y(ve,Ce,null),n(H,Xn),n(H,Ve),n(Ve,Ie),d(o,N,v),d(o,A,v),n(A,Ae),n(A,He),n(He,bn),n(A,me),n(A,Me),n(Me,he),n(A,an),n(A,x),n(x,Xe),n(A,Wn),n(A,ue),n(ue,K),n(K,rn),n(A,Qe),n(A,ln),n(ln,En),n(A,Ln),n(A,q),n(q,ke),n(A,wn),d(o,ye,v),y(on,o,v),d(o,ae,v),d(o,C,v),n(C,Fn),n(C,Ue),n(Ue,De),n(C,_n),n(C,Ge),n(Ge,dn),n(C,We),n(C,xe),n(xe,Sn),n(C,Jn),d(o,W,v),y(re,o,v),d(o,J,v),d(o,fe,v),n(fe,pn),n(fe,vn),n(vn,Dn),n(fe,$e),d(o,Te,v),y(Ke,o,v),d(o,ce,v),d(o,le,v),n(le,je),n(je,ze),y(Ee,ze,null),n(le,mn),n(le,Zn),n(Zn,_e),d(o,In,v),d(o,ge,v),n(ge,Mn),n(ge,qe),n(qe,Rn),n(ge,ie),d(o,a,v),y(t,o,v),d(o,b,v),d(o,Se,v),n(Se,Hn),n(Se,Qn),n(Qn,at),n(Se,oe),d(o,Nn,v),y(kn,o,v),rt=!0},p(o,v){const xn={};v&2&&(xn.$$scope={dirty:v,ctx:o}),Pe.$set(xn)},i(o){rt||($(g.$$.fragment,o),$(S.$$.fragment,o),$(O.$$.fragment,o),$(Pe.$$.fragment,o),$(L.$$.fragment,o),$(pe.$$.fragment,o),$(ve.$$.fragment,o),$(on.$$.fragment,o),$(re.$$.fragment,o),$(Ke.$$.fragment,o),$(Ee.$$.fragment,o),$(t.$$.fragment,o),$(kn.$$.fragment,o),rt=!0)},o(o){T(g.$$.fragment,o),T(S.$$.fragment,o),T(O.$$.fragment,o),T(Pe.$$.fragment,o),T(L.$$.fragment,o),T(pe.$$.fragment,o),T(ve.$$.fragment,o),T(on.$$.fragment,o),T(re.$$.fragment,o),T(Ke.$$.fragment,o),T(Ee.$$.fragment,o),T(t.$$.fragment,o),T(kn.$$.fragment,o),rt=!1},d(o){j(g,o),o&&e(E),o&&e(c),j(S),o&&e(R),o&&e(I),o&&e(B),o&&e(we),o&&e(Vn),j(O,o),o&&e(Je),j(Pe,o),o&&e(Ze),o&&e(ee),j(L),o&&e(zn),o&&e(G),o&&e(D),o&&e(sn),o&&e(Gn),j(pe,o),o&&e(se),o&&e(H),j(ve),o&&e(N),o&&e(A),o&&e(ye),j(on,o),o&&e(ae),o&&e(C),o&&e(W),j(re,o),o&&e(J),o&&e(fe),o&&e(Te),j(Ke,o),o&&e(ce),o&&e(le),j(Ee),o&&e(In),o&&e(ge),o&&e(a),j(t,o),o&&e(b),o&&e(Se),o&&e(Nn),j(kn,o)}}}function Ot(un){let g,E;return g=new Ft({props:{$$slots:{default:[qt]},$$scope:{ctx:un}}}),{c(){M(g.$$.fragment)},l(c){k(g.$$.fragment,c)},m(c,z){y(g,c,z),E=!0},p(c,z){const _={};z&2&&(_.$$scope={dirty:z,ctx:c}),g.$set(_)},i(c){E||($(g.$$.fragment,c),E=!0)},o(c){T(g.$$.fragment,c),E=!1},d(c){j(g,c)}}}function es(un){let g,E,c,z,_;return{c(){g=r("p"),E=p("Sie m\xFCssen Ihren Modellen kein Verlustargument \xFCbergeben, wenn Sie sie "),c=r("code"),z=p("compile()"),_=p(`! Hugging-Face-Modelle w\xE4hlen automatisch
einen Loss, der f\xFCr ihre Aufgabe und Modellarchitektur geeignet ist, wenn dieses Argument leer gelassen wird. Sie k\xF6nnen jederzeit au\xDFer Kraft setzen, indem Sie selbst einen Loss angeben, wenn Sie das m\xF6chten!`)},l(S){g=l(S,"P",{});var F=i(g);E=m(F,"Sie m\xFCssen Ihren Modellen kein Verlustargument \xFCbergeben, wenn Sie sie "),c=l(F,"CODE",{});var Z=i(c);z=m(Z,"compile()"),Z.forEach(e),_=m(F,`! Hugging-Face-Modelle w\xE4hlen automatisch
einen Loss, der f\xFCr ihre Aufgabe und Modellarchitektur geeignet ist, wenn dieses Argument leer gelassen wird. Sie k\xF6nnen jederzeit au\xDFer Kraft setzen, indem Sie selbst einen Loss angeben, wenn Sie das m\xF6chten!`),F.forEach(e)},m(S,F){d(S,g,F),n(g,E),n(g,c),n(c,z),n(g,_)},d(S){S&&e(g)}}}function ns(un){let g,E,c,z,_,S,F,Z,Ne,R,I,Ye,V,Pn,fn,U,be,Tn,B,we,cn,gn,jn,Re,Vn,O,Je,Pe,Ze,ee,ne,P,L,Oe,en,Le,zn,G,nn,te,Be,tn,X,de,An,D,sn,Un,Gn,pe,se,H,Q,Ce,ve,Xn,Ve,Ie,N,A,Ae,He,bn,me,Me,he,an,x,Xe,Wn,ue,K,rn,Qe,ln,En,Ln,q,ke,wn,ye,on,ae,C,Fn,Ue,De,_n,Ge,dn,We,xe,Sn,Jn,W,re,J,fe,pn,vn,Dn,$e,Te,Ke,ce,le,je,ze,Ee,mn,Zn,_e,In,ge,Mn,qe,Rn,ie,a;return c=new Gt({props:{id:"rnTGBy2ax1c"}}),Z=new Yn({}),B=new Yn({}),L=new Y({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJnbHVlJTIyJTJDJTIwJTIyY29sYSUyMiklMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJTIwJTIwJTIzJTIwSnVzdCUyMHRha2UlMjB0aGUlMjB0cmFpbmluZyUyMHNwbGl0JTIwZm9yJTIwbm93",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

dataset = load_dataset(<span class="hljs-string">&quot;glue&quot;</span>, <span class="hljs-string">&quot;cola&quot;</span>)
dataset = dataset[<span class="hljs-string">&quot;train&quot;</span>]  <span class="hljs-comment"># Just take the training split for now</span>`}}),G=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBdG9rZW5pemVkX2RhdGElMjAlM0QlMjB0b2tlbml6ZXIoZGF0YXNldCU1QiUyMnRleHQlMjIlNUQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMm5wJTIyJTJDJTIwcGFkZGluZyUzRFRydWUpJTBBJTIzJTIwVG9rZW5pemVyJTIwcmV0dXJucyUyMGElMjBCYXRjaEVuY29kaW5nJTJDJTIwYnV0JTIwd2UlMjBjb252ZXJ0JTIwdGhhdCUyMHRvJTIwYSUyMGRpY3QlMjBmb3IlMjBLZXJhcyUwQXRva2VuaXplZF9kYXRhJTIwJTNEJTIwZGljdCh0b2tlbml6ZWRfZGF0YSklMEElMEFsYWJlbHMlMjAlM0QlMjBucC5hcnJheShkYXRhc2V0JTVCJTIybGFiZWwlMjIlNUQpJTIwJTIwJTIzJTIwTGFiZWwlMjBpcyUyMGFscmVhZHklMjBhbiUyMGFycmF5JTIwb2YlMjAwJTIwYW5kJTIwMQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
tokenized_data = tokenizer(dataset[<span class="hljs-string">&quot;text&quot;</span>], return_tensors=<span class="hljs-string">&quot;np&quot;</span>, padding=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Tokenizer returns a BatchEncoding, but we convert that to a dict for Keras</span>
tokenized_data = <span class="hljs-built_in">dict</span>(tokenized_data)

labels = np.array(dataset[<span class="hljs-string">&quot;label&quot;</span>])  <span class="hljs-comment"># Label is already an array of 0 and 1</span>`}}),se=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQWZyb20lMjB0ZW5zb3JmbG93LmtlcmFzLm9wdGltaXplcnMlMjBpbXBvcnQlMjBBZGFtJTBBJTBBJTIzJTIwTG9hZCUyMGFuZCUyMGNvbXBpbGUlMjBvdXIlMjBtb2RlbCUwQW1vZGVsJTIwJTNEJTIwVEZBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBJTIzJTIwTG93ZXIlMjBsZWFybmluZyUyMHJhdGVzJTIwYXJlJTIwb2Z0ZW4lMjBiZXR0ZXIlMjBmb3IlMjBmaW5lLXR1bmluZyUyMHRyYW5zZm9ybWVycyUwQW1vZGVsLmNvbXBpbGUob3B0aW1pemVyJTNEQWRhbSgzZS01KSklMEElMEFtb2RlbC5maXQodG9rZW5pemVkX2RhdGElMkMlMjBsYWJlbHMp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSequenceClassification
<span class="hljs-keyword">from</span> tensorflow.keras.optimizers <span class="hljs-keyword">import</span> Adam

<span class="hljs-comment"># Load and compile our model</span>
model = TFAutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
<span class="hljs-comment"># Lower learning rates are often better for fine-tuning transformers</span>
model.<span class="hljs-built_in">compile</span>(optimizer=Adam(<span class="hljs-number">3e-5</span>))

model.fit(tokenized_data, labels)`}}),Q=new Wt({props:{$$slots:{default:[es]},$$scope:{ctx:un}}}),Ae=new Yn({}),dn=new Y({props:{code:"ZGVmJTIwdG9rZW5pemVfZGF0YXNldChkYXRhKSUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyMEtleXMlMjBvZiUyMHRoZSUyMHJldHVybmVkJTIwZGljdGlvbmFyeSUyMHdpbGwlMjBiZSUyMGFkZGVkJTIwdG8lMjB0aGUlMjBkYXRhc2V0JTIwYXMlMjBjb2x1bW5zJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9rZW5pemVyKGRhdGElNUIlMjJ0ZXh0JTIyJTVEKSUwQSUwQSUwQWRhdGFzZXQlMjAlM0QlMjBkYXRhc2V0Lm1hcCh0b2tlbml6ZV9kYXRhc2V0KQ==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_dataset</span>(<span class="hljs-params">data</span>):
    <span class="hljs-comment"># Keys of the returned dictionary will be added to the dataset as columns</span>
    <span class="hljs-keyword">return</span> tokenizer(data[<span class="hljs-string">&quot;text&quot;</span>])


dataset = dataset.<span class="hljs-built_in">map</span>(tokenize_dataset)`}}),W=new Y({props:{code:"dGZfZGF0YXNldCUyMCUzRCUyMG1vZGVsLnByZXBhcmVfdGZfZGF0YXNldChkYXRhc2V0JTJDJTIwYmF0Y2hfc2l6ZSUzRDE2JTJDJTIwc2h1ZmZsZSUzRFRydWUlMkMlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tf_dataset = model.prepare_tf_dataset(dataset, batch_size=<span class="hljs-number">16</span>, shuffle=<span class="hljs-literal">True</span>, tokenizer=tokenizer)'}}),ie=new Y({props:{code:"bW9kZWwuY29tcGlsZShvcHRpbWl6ZXIlM0RBZGFtKDNlLTUpKSUwQSUwQW1vZGVsLmZpdCh0Zl9kYXRhc2V0KQ==",highlighted:`model.<span class="hljs-built_in">compile</span>(optimizer=Adam(<span class="hljs-number">3e-5</span>))

model.fit(tf_dataset)`}}),{c(){g=r("a"),E=h(),M(c.$$.fragment),z=h(),_=r("h2"),S=r("a"),F=r("span"),M(Z.$$.fragment),Ne=h(),R=r("span"),I=p("Trainieren Sie ein TensorFlow-Modell mit Keras"),Ye=h(),V=r("p"),Pn=p("Sie k\xF6nnen auch \u{1F917} Transformers Modelle in TensorFlow mit der Keras API trainieren!"),fn=h(),U=r("h3"),be=r("a"),Tn=r("span"),M(B.$$.fragment),we=h(),cn=r("span"),gn=p("Laden von Daten f\xFCr Keras"),jn=h(),Re=r("p"),Vn=p(`Wenn Sie ein \u{1F917} Transformers Modell mit der Keras API trainieren wollen, m\xFCssen Sie Ihren Datensatz in ein Format konvertieren, das
Keras versteht. Wenn Ihr Datensatz klein ist, k\xF6nnen Sie das Ganze einfach in NumPy-Arrays konvertieren und an Keras \xFCbergeben.
Probieren wir das zuerst aus, bevor wir etwas Komplizierteres tun.`),O=h(),Je=r("p"),Pe=p("Laden Sie zun\xE4chst ein Dataset. Wir werden den CoLA-Datensatz aus dem "),Ze=r("a"),ee=p("GLUE-Benchmark"),ne=p(` verwenden,
da es sich um eine einfache Aufgabe zur Klassifizierung von bin\xE4rem Text handelt, und nehmen vorerst nur den Trainingssplit.`),P=h(),M(L.$$.fragment),Oe=h(),en=r("p"),Le=p(`Als n\xE4chstes laden Sie einen Tokenizer und tokenisieren die Daten als NumPy-Arrays. Beachten Sie, dass die Beschriftungen bereits eine Liste von 0 und 1en sind,
Wir k\xF6nnen sie also ohne Tokenisierung direkt in ein NumPy-Array konvertieren!`),zn=h(),M(G.$$.fragment),nn=h(),te=r("p"),Be=p("Schlie\xDFlich laden, "),tn=r("a"),X=r("code"),de=p("compile"),An=p(" und "),D=r("a"),sn=r("code"),Un=p("fit"),Gn=p(" Sie das Modell:"),pe=h(),M(se.$$.fragment),H=h(),M(Q.$$.fragment),Ce=h(),ve=r("p"),Xn=p(`Dieser Ansatz eignet sich hervorragend f\xFCr kleinere Datens\xE4tze, aber bei gr\xF6\xDFeren Datens\xE4tzen kann er zu einem Problem werden. Warum?
Weil das tokenisierte Array und die Beschriftungen vollst\xE4ndig in den Speicher geladen werden m\xFCssten, und weil NumPy nicht mit
\u201Cgezackte\u201D Arrays nicht verarbeiten kann, so dass jedes tokenisierte Sample auf die L\xE4nge des l\xE4ngsten Samples im gesamten Datensatz aufgef\xFCllt werden m\xFCsste.
Datensatzes aufgef\xFCllt werden. Dadurch wird das Array noch gr\xF6\xDFer, und all die aufgef\xFCllten Token verlangsamen auch das Training!`),Ve=h(),Ie=r("h3"),N=r("a"),A=r("span"),M(Ae.$$.fragment),He=h(),bn=r("span"),me=p("Laden von Daten als tf.data.Dataset"),Me=h(),he=r("p"),an=p("Wenn Sie eine Verlangsamung des Trainings vermeiden wollen, k\xF6nnen Sie Ihre Daten stattdessen als "),x=r("code"),Xe=p("tf.data.Dataset"),Wn=p(` laden. Sie k\xF6nnen zwar Ihre eigene
tf.data\u201D-Pipeline schreiben k\xF6nnen, wenn Sie wollen, haben wir zwei bequeme Methoden, um dies zu tun:`),ue=h(),K=r("ul"),rn=r("li"),Qe=r("code"),ln=p("prepare_tf_dataset()"),En=p(`: Dies ist die Methode, die wir in den meisten F\xE4llen empfehlen. Da es sich um eine Methode
Ihres Modells ist, kann sie das Modell inspizieren, um automatisch herauszufinden, welche Spalten als Modelleingaben verwendet werden k\xF6nnen, und
verwirft die anderen, um einen einfacheren, leistungsf\xE4higeren Datensatz zu erstellen.`),Ln=h(),q=r("li"),ke=p("[~datasets.Dataset.to_tf_dataset`]: Diese Methode ist eher auf niedriger Ebene angesiedelt und ist n\xFCtzlich, wenn Sie genau kontrollieren wollen, wie\nDataset erstellt wird, indem man genau angibt, welche "),wn=r("code"),ye=p("columns"),on=p(" und "),ae=r("code"),C=p("label_cols"),Fn=p(" einbezogen werden sollen."),Ue=h(),De=r("p"),_n=p("Bevor Sie [~TFPreTrainedModel.prepare_tf_dataset`] verwenden k\xF6nnen, m\xFCssen Sie die Tokenizer-Ausgaben als Spalten zu Ihrem Datensatz hinzuf\xFCgen, wie in\ndem folgenden Codebeispiel:"),Ge=h(),M(dn.$$.fragment),We=h(),xe=r("p"),Sn=p(`Denken Sie daran, dass Hugging Face-Datens\xE4tze standardm\xE4\xDFig auf der Festplatte gespeichert werden, so dass dies nicht zu einem erh\xF6hten Arbeitsspeicherbedarf f\xFChren wird! Sobald die
Spalten hinzugef\xFCgt wurden, k\xF6nnen Sie Batches aus dem Datensatz streamen und zu jedem Batch Auff\xFCllungen hinzuf\xFCgen, was die Anzahl der Auff\xFCllungs-Token im Vergleich zum Auff\xFCllen des gesamten Datensatzes reduziert.`),Jn=h(),M(W.$$.fragment),re=h(),J=r("p"),fe=p("Beachten Sie, dass Sie im obigen Codebeispiel den Tokenizer an "),pn=r("code"),vn=p("prepare_tf_dataset"),Dn=p(` \xFCbergeben m\xFCssen, damit die Stapel beim Laden korrekt aufgef\xFCllt werden k\xF6nnen.
Wenn alle Stichproben in Ihrem Datensatz die gleiche L\xE4nge haben und kein Auff\xFCllen erforderlich ist, k\xF6nnen Sie dieses Argument weglassen.
Wenn Sie etwas Komplexeres als nur das Auff\xFCllen von Stichproben ben\xF6tigen (z. B. das Korrumpieren von Token f\xFCr die maskierte Sprachmodellierung), k\xF6nnen Sie das Argument
Modellierung), k\xF6nnen Sie stattdessen das Argument `),$e=r("code"),Te=p("collate_fn"),Ke=p(` verwenden, um eine Funktion zu \xFCbergeben, die aufgerufen wird, um die
Liste von Stichproben in einen Stapel umwandelt und alle gew\xFCnschten Vorverarbeitungen vornimmt. Siehe unsere
`),ce=r("a"),le=p("examples"),je=p(` oder
`),ze=r("a"),Ee=p("notebooks"),mn=p(", um diesen Ansatz in Aktion zu sehen."),Zn=h(),_e=r("p"),In=p("Sobald Sie einen "),ge=r("code"),Mn=p("tf.data.Dataset"),qe=p(" erstellt haben, k\xF6nnen Sie das Modell wie zuvor kompilieren und anpassen:"),Rn=h(),M(ie.$$.fragment),this.h()},l(t){g=l(t,"A",{id:!0}),i(g).forEach(e),E=u(t),k(c.$$.fragment,t),z=u(t),_=l(t,"H2",{class:!0});var b=i(_);S=l(b,"A",{id:!0,class:!0,href:!0});var Se=i(S);F=l(Se,"SPAN",{});var Hn=i(F);k(Z.$$.fragment,Hn),Hn.forEach(e),Se.forEach(e),Ne=u(b),R=l(b,"SPAN",{});var Qn=i(R);I=m(Qn,"Trainieren Sie ein TensorFlow-Modell mit Keras"),Qn.forEach(e),b.forEach(e),Ye=u(t),V=l(t,"P",{});var at=i(V);Pn=m(at,"Sie k\xF6nnen auch \u{1F917} Transformers Modelle in TensorFlow mit der Keras API trainieren!"),at.forEach(e),fn=u(t),U=l(t,"H3",{class:!0});var oe=i(U);be=l(oe,"A",{id:!0,class:!0,href:!0});var Nn=i(be);Tn=l(Nn,"SPAN",{});var kn=i(Tn);k(B.$$.fragment,kn),kn.forEach(e),Nn.forEach(e),we=u(oe),cn=l(oe,"SPAN",{});var rt=i(cn);gn=m(rt,"Laden von Daten f\xFCr Keras"),rt.forEach(e),oe.forEach(e),jn=u(t),Re=l(t,"P",{});var o=i(Re);Vn=m(o,`Wenn Sie ein \u{1F917} Transformers Modell mit der Keras API trainieren wollen, m\xFCssen Sie Ihren Datensatz in ein Format konvertieren, das
Keras versteht. Wenn Ihr Datensatz klein ist, k\xF6nnen Sie das Ganze einfach in NumPy-Arrays konvertieren und an Keras \xFCbergeben.
Probieren wir das zuerst aus, bevor wir etwas Komplizierteres tun.`),o.forEach(e),O=u(t),Je=l(t,"P",{});var v=i(Je);Pe=m(v,"Laden Sie zun\xE4chst ein Dataset. Wir werden den CoLA-Datensatz aus dem "),Ze=l(v,"A",{href:!0,rel:!0});var xn=i(Ze);ee=m(xn,"GLUE-Benchmark"),xn.forEach(e),ne=m(v,` verwenden,
da es sich um eine einfache Aufgabe zur Klassifizierung von bin\xE4rem Text handelt, und nehmen vorerst nur den Trainingssplit.`),v.forEach(e),P=u(t),k(L.$$.fragment,t),Oe=u(t),en=l(t,"P",{});var ft=i(en);Le=m(ft,`Als n\xE4chstes laden Sie einen Tokenizer und tokenisieren die Daten als NumPy-Arrays. Beachten Sie, dass die Beschriftungen bereits eine Liste von 0 und 1en sind,
Wir k\xF6nnen sie also ohne Tokenisierung direkt in ein NumPy-Array konvertieren!`),ft.forEach(e),zn=u(t),k(G.$$.fragment,t),nn=u(t),te=l(t,"P",{});var Bn=i(te);Be=m(Bn,"Schlie\xDFlich laden, "),tn=l(Bn,"A",{href:!0,rel:!0});var hn=i(tn);X=l(hn,"CODE",{});var Kn=i(X);de=m(Kn,"compile"),Kn.forEach(e),hn.forEach(e),An=m(Bn," und "),D=l(Bn,"A",{href:!0,rel:!0});var s=i(D);sn=l(s,"CODE",{});var w=i(sn);Un=m(w,"fit"),w.forEach(e),s.forEach(e),Gn=m(Bn," Sie das Modell:"),Bn.forEach(e),pe=u(t),k(se.$$.fragment,t),H=u(t),k(Q.$$.fragment,t),Ce=u(t),ve=l(t,"P",{});var lt=i(ve);Xn=m(lt,`Dieser Ansatz eignet sich hervorragend f\xFCr kleinere Datens\xE4tze, aber bei gr\xF6\xDFeren Datens\xE4tzen kann er zu einem Problem werden. Warum?
Weil das tokenisierte Array und die Beschriftungen vollst\xE4ndig in den Speicher geladen werden m\xFCssten, und weil NumPy nicht mit
\u201Cgezackte\u201D Arrays nicht verarbeiten kann, so dass jedes tokenisierte Sample auf die L\xE4nge des l\xE4ngsten Samples im gesamten Datensatz aufgef\xFCllt werden m\xFCsste.
Datensatzes aufgef\xFCllt werden. Dadurch wird das Array noch gr\xF6\xDFer, und all die aufgef\xFCllten Token verlangsamen auch das Training!`),lt.forEach(e),Ve=u(t),Ie=l(t,"H3",{class:!0});var qn=i(Ie);N=l(qn,"A",{id:!0,class:!0,href:!0});var dt=i(N);A=l(dt,"SPAN",{});var pt=i(A);k(Ae.$$.fragment,pt),pt.forEach(e),dt.forEach(e),He=u(qn),bn=l(qn,"SPAN",{});var On=i(bn);me=m(On,"Laden von Daten als tf.data.Dataset"),On.forEach(e),qn.forEach(e),Me=u(t),he=l(t,"P",{});var yn=i(he);an=m(yn,"Wenn Sie eine Verlangsamung des Trainings vermeiden wollen, k\xF6nnen Sie Ihre Daten stattdessen als "),x=l(yn,"CODE",{});var ct=i(x);Xe=m(ct,"tf.data.Dataset"),ct.forEach(e),Wn=m(yn,` laden. Sie k\xF6nnen zwar Ihre eigene
tf.data\u201D-Pipeline schreiben k\xF6nnen, wenn Sie wollen, haben wir zwei bequeme Methoden, um dies zu tun:`),yn.forEach(e),ue=u(t),K=l(t,"UL",{});var et=i(K);rn=l(et,"LI",{});var it=i(rn);Qe=l(it,"CODE",{});var nt=i(Qe);ln=m(nt,"prepare_tf_dataset()"),nt.forEach(e),En=m(it,`: Dies ist die Methode, die wir in den meisten F\xE4llen empfehlen. Da es sich um eine Methode
Ihres Modells ist, kann sie das Modell inspizieren, um automatisch herauszufinden, welche Spalten als Modelleingaben verwendet werden k\xF6nnen, und
verwirft die anderen, um einen einfacheren, leistungsf\xE4higeren Datensatz zu erstellen.`),it.forEach(e),Ln=u(et),q=l(et,"LI",{});var tt=i(q);ke=m(tt,"[~datasets.Dataset.to_tf_dataset`]: Diese Methode ist eher auf niedriger Ebene angesiedelt und ist n\xFCtzlich, wenn Sie genau kontrollieren wollen, wie\nDataset erstellt wird, indem man genau angibt, welche "),wn=l(tt,"CODE",{});var gt=i(wn);ye=m(gt,"columns"),gt.forEach(e),on=m(tt," und "),ae=l(tt,"CODE",{});var st=i(ae);C=m(st,"label_cols"),st.forEach(e),Fn=m(tt," einbezogen werden sollen."),tt.forEach(e),et.forEach(e),Ue=u(t),De=l(t,"P",{});var Fe=i(De);_n=m(Fe,"Bevor Sie [~TFPreTrainedModel.prepare_tf_dataset`] verwenden k\xF6nnen, m\xFCssen Sie die Tokenizer-Ausgaben als Spalten zu Ihrem Datensatz hinzuf\xFCgen, wie in\ndem folgenden Codebeispiel:"),Fe.forEach(e),Ge=u(t),k(dn.$$.fragment,t),We=u(t),xe=l(t,"P",{});var bt=i(xe);Sn=m(bt,`Denken Sie daran, dass Hugging Face-Datens\xE4tze standardm\xE4\xDFig auf der Festplatte gespeichert werden, so dass dies nicht zu einem erh\xF6hten Arbeitsspeicherbedarf f\xFChren wird! Sobald die
Spalten hinzugef\xFCgt wurden, k\xF6nnen Sie Batches aus dem Datensatz streamen und zu jedem Batch Auff\xFCllungen hinzuf\xFCgen, was die Anzahl der Auff\xFCllungs-Token im Vergleich zum Auff\xFCllen des gesamten Datensatzes reduziert.`),bt.forEach(e),Jn=u(t),k(W.$$.fragment,t),re=u(t),J=l(t,"P",{});var $n=i(J);fe=m($n,"Beachten Sie, dass Sie im obigen Codebeispiel den Tokenizer an "),pn=l($n,"CODE",{});var mt=i(pn);vn=m(mt,"prepare_tf_dataset"),mt.forEach(e),Dn=m($n,` \xFCbergeben m\xFCssen, damit die Stapel beim Laden korrekt aufgef\xFCllt werden k\xF6nnen.
Wenn alle Stichproben in Ihrem Datensatz die gleiche L\xE4nge haben und kein Auff\xFCllen erforderlich ist, k\xF6nnen Sie dieses Argument weglassen.
Wenn Sie etwas Komplexeres als nur das Auff\xFCllen von Stichproben ben\xF6tigen (z. B. das Korrumpieren von Token f\xFCr die maskierte Sprachmodellierung), k\xF6nnen Sie das Argument
Modellierung), k\xF6nnen Sie stattdessen das Argument `),$e=l($n,"CODE",{});var ht=i($e);Te=m(ht,"collate_fn"),ht.forEach(e),Ke=m($n,` verwenden, um eine Funktion zu \xFCbergeben, die aufgerufen wird, um die
Liste von Stichproben in einen Stapel umwandelt und alle gew\xFCnschten Vorverarbeitungen vornimmt. Siehe unsere
`),ce=l($n,"A",{href:!0,rel:!0});var wt=i(ce);le=m(wt,"examples"),wt.forEach(e),je=m($n,` oder
`),ze=l($n,"A",{href:!0,rel:!0});var ot=i(ze);Ee=m(ot,"notebooks"),ot.forEach(e),mn=m($n,", um diesen Ansatz in Aktion zu sehen."),$n.forEach(e),Zn=u(t),_e=l(t,"P",{});var ut=i(_e);In=m(ut,"Sobald Sie einen "),ge=l(ut,"CODE",{});var Cn=i(ge);Mn=m(Cn,"tf.data.Dataset"),Cn.forEach(e),qe=m(ut," erstellt haben, k\xF6nnen Sie das Modell wie zuvor kompilieren und anpassen:"),ut.forEach(e),Rn=u(t),k(ie.$$.fragment,t),this.h()},h(){f(g,"id","keras"),f(S,"id","trainieren-sie-ein-tensorflowmodell-mit-keras"),f(S,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(S,"href","#trainieren-sie-ein-tensorflowmodell-mit-keras"),f(_,"class","relative group"),f(be,"id","laden-von-daten-fr-keras"),f(be,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(be,"href","#laden-von-daten-fr-keras"),f(U,"class","relative group"),f(Ze,"href","https://huggingface.co/datasets/glue"),f(Ze,"rel","nofollow"),f(tn,"href","https://keras.io/api/models/model_training_apis/#compile-method"),f(tn,"rel","nofollow"),f(D,"href","https://keras.io/api/models/model_training_apis/#fit-method"),f(D,"rel","nofollow"),f(N,"id","laden-von-daten-als-tfdatadataset"),f(N,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(N,"href","#laden-von-daten-als-tfdatadataset"),f(Ie,"class","relative group"),f(ce,"href","https://github.com/huggingface/transformers/tree/main/examples"),f(ce,"rel","nofollow"),f(ze,"href","https://huggingface.co/docs/transformers/notebooks"),f(ze,"rel","nofollow")},m(t,b){d(t,g,b),d(t,E,b),y(c,t,b),d(t,z,b),d(t,_,b),n(_,S),n(S,F),y(Z,F,null),n(_,Ne),n(_,R),n(R,I),d(t,Ye,b),d(t,V,b),n(V,Pn),d(t,fn,b),d(t,U,b),n(U,be),n(be,Tn),y(B,Tn,null),n(U,we),n(U,cn),n(cn,gn),d(t,jn,b),d(t,Re,b),n(Re,Vn),d(t,O,b),d(t,Je,b),n(Je,Pe),n(Je,Ze),n(Ze,ee),n(Je,ne),d(t,P,b),y(L,t,b),d(t,Oe,b),d(t,en,b),n(en,Le),d(t,zn,b),y(G,t,b),d(t,nn,b),d(t,te,b),n(te,Be),n(te,tn),n(tn,X),n(X,de),n(te,An),n(te,D),n(D,sn),n(sn,Un),n(te,Gn),d(t,pe,b),y(se,t,b),d(t,H,b),y(Q,t,b),d(t,Ce,b),d(t,ve,b),n(ve,Xn),d(t,Ve,b),d(t,Ie,b),n(Ie,N),n(N,A),y(Ae,A,null),n(Ie,He),n(Ie,bn),n(bn,me),d(t,Me,b),d(t,he,b),n(he,an),n(he,x),n(x,Xe),n(he,Wn),d(t,ue,b),d(t,K,b),n(K,rn),n(rn,Qe),n(Qe,ln),n(rn,En),n(K,Ln),n(K,q),n(q,ke),n(q,wn),n(wn,ye),n(q,on),n(q,ae),n(ae,C),n(q,Fn),d(t,Ue,b),d(t,De,b),n(De,_n),d(t,Ge,b),y(dn,t,b),d(t,We,b),d(t,xe,b),n(xe,Sn),d(t,Jn,b),y(W,t,b),d(t,re,b),d(t,J,b),n(J,fe),n(J,pn),n(pn,vn),n(J,Dn),n(J,$e),n($e,Te),n(J,Ke),n(J,ce),n(ce,le),n(J,je),n(J,ze),n(ze,Ee),n(J,mn),d(t,Zn,b),d(t,_e,b),n(_e,In),n(_e,ge),n(ge,Mn),n(_e,qe),d(t,Rn,b),y(ie,t,b),a=!0},p(t,b){const Se={};b&2&&(Se.$$scope={dirty:b,ctx:t}),Q.$set(Se)},i(t){a||($(c.$$.fragment,t),$(Z.$$.fragment,t),$(B.$$.fragment,t),$(L.$$.fragment,t),$(G.$$.fragment,t),$(se.$$.fragment,t),$(Q.$$.fragment,t),$(Ae.$$.fragment,t),$(dn.$$.fragment,t),$(W.$$.fragment,t),$(ie.$$.fragment,t),a=!0)},o(t){T(c.$$.fragment,t),T(Z.$$.fragment,t),T(B.$$.fragment,t),T(L.$$.fragment,t),T(G.$$.fragment,t),T(se.$$.fragment,t),T(Q.$$.fragment,t),T(Ae.$$.fragment,t),T(dn.$$.fragment,t),T(W.$$.fragment,t),T(ie.$$.fragment,t),a=!1},d(t){t&&e(g),t&&e(E),j(c,t),t&&e(z),t&&e(_),j(Z),t&&e(Ye),t&&e(V),t&&e(fn),t&&e(U),j(B),t&&e(jn),t&&e(Re),t&&e(O),t&&e(Je),t&&e(P),j(L,t),t&&e(Oe),t&&e(en),t&&e(zn),j(G,t),t&&e(nn),t&&e(te),t&&e(pe),j(se,t),t&&e(H),j(Q,t),t&&e(Ce),t&&e(ve),t&&e(Ve),t&&e(Ie),j(Ae),t&&e(Me),t&&e(he),t&&e(ue),t&&e(K),t&&e(Ue),t&&e(De),t&&e(Ge),j(dn,t),t&&e(We),t&&e(xe),t&&e(Jn),j(W,t),t&&e(re),t&&e(J),t&&e(Zn),t&&e(_e),t&&e(Rn),j(ie,t)}}}function ts(un){let g,E;return g=new Ft({props:{$$slots:{default:[ns]},$$scope:{ctx:un}}}),{c(){M(g.$$.fragment)},l(c){k(g.$$.fragment,c)},m(c,z){y(g,c,z),E=!0},p(c,z){const _={};z&2&&(_.$$scope={dirty:z,ctx:c}),g.$set(_)},i(c){E||($(g.$$.fragment,c),E=!0)},o(c){T(g.$$.fragment,c),E=!1},d(c){j(g,c)}}}function ss(un){let g,E,c,z,_,S,F,Z;return{c(){g=r("p"),E=p("Holen Sie sich mit einem gehosteten Notebook wie "),c=r("a"),z=p("Colaboratory"),_=p(" oder "),S=r("a"),F=p("SageMaker StudioLab"),Z=p(" kostenlosen Zugang zu einem Cloud-GPU, wenn Sie noch keinen haben."),this.h()},l(Ne){g=l(Ne,"P",{});var R=i(g);E=m(R,"Holen Sie sich mit einem gehosteten Notebook wie "),c=l(R,"A",{href:!0,rel:!0});var I=i(c);z=m(I,"Colaboratory"),I.forEach(e),_=m(R," oder "),S=l(R,"A",{href:!0,rel:!0});var Ye=i(S);F=m(Ye,"SageMaker StudioLab"),Ye.forEach(e),Z=m(R," kostenlosen Zugang zu einem Cloud-GPU, wenn Sie noch keinen haben."),R.forEach(e),this.h()},h(){f(c,"href","https://colab.research.google.com/"),f(c,"rel","nofollow"),f(S,"href","https://studiolab.sagemaker.aws/"),f(S,"rel","nofollow")},m(Ne,R){d(Ne,g,R),n(g,E),n(g,c),n(c,z),n(g,_),n(g,S),n(S,F),n(g,Z)},d(Ne){Ne&&e(g)}}}function as(un){let g,E,c,z,_,S,F,Z,Ne,R,I,Ye,V,Pn,fn,U,be,Tn,B,we,cn,gn,jn,Re,Vn,O,Je,Pe,Ze,ee,ne,P,L,Oe,en,Le,zn,G,nn,te,Be,tn,X,de,An,D,sn,Un,Gn,pe,se,H,Q,Ce,ve,Xn,Ve,Ie,N,A,Ae,He,bn,me,Me,he,an,x,Xe,Wn,ue,K,rn,Qe,ln,En,Ln,q,ke,wn,ye,on,ae,C,Fn,Ue,De,_n,Ge,dn,We,xe,Sn,Jn,W,re,J,fe,pn,vn,Dn,$e,Te,Ke,ce,le,je,ze,Ee,mn,Zn,_e,In,ge,Mn,qe,Rn,ie,a,t,b,Se,Hn,Qn,at,oe,Nn,kn,rt,o,v,xn,ft,Bn,hn,Kn;return g=new Gt({props:{id:"Dh9CL8fyG80"}}),I=new Y({props:{code:"ZGVsJTIwbW9kZWwlMEFkZWwlMjBweXRvcmNoX21vZGVsJTBBZGVsJTIwdHJhaW5lciUwQXRvcmNoLmN1ZGEuZW1wdHlfY2FjaGUoKQ==",highlighted:`<span class="hljs-keyword">del</span> model
<span class="hljs-keyword">del</span> pytorch_model
<span class="hljs-keyword">del</span> trainer
torch.cuda.empty_cache()`}}),Re=new Y({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLnJlbW92ZV9jb2x1bW5zKCU1QiUyMnRleHQlMjIlNUQp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = tokenized_datasets.remove_columns([<span class="hljs-string">&quot;text&quot;</span>])'}}),ee=new Y({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLnJlbmFtZV9jb2x1bW4oJTIybGFiZWwlMjIlMkMlMjAlMjJsYWJlbHMlMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = tokenized_datasets.rename_column(<span class="hljs-string">&quot;label&quot;</span>, <span class="hljs-string">&quot;labels&quot;</span>)'}}),Le=new Y({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzLnNldF9mb3JtYXQoJTIydG9yY2glMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets.set_format(<span class="hljs-string">&quot;torch&quot;</span>)'}}),Be=new Y({props:{code:"c21hbGxfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoc2VlZCUzRDQyKS5zZWxlY3QocmFuZ2UoMTAwMCkpJTBBc21hbGxfZXZhbF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydGVzdCUyMiU1RC5zaHVmZmxlKHNlZWQlM0Q0Mikuc2VsZWN0KHJhbmdlKDEwMDApKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>small_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>small_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;test&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))`}}),D=new Yn({}),Ve=new Y({props:{code:"ZnJvbSUyMHRvcmNoLnV0aWxzLmRhdGElMjBpbXBvcnQlMjBEYXRhTG9hZGVyJTBBJTBBdHJhaW5fZGF0YWxvYWRlciUyMCUzRCUyMERhdGFMb2FkZXIoc21hbGxfdHJhaW5fZGF0YXNldCUyQyUyMHNodWZmbGUlM0RUcnVlJTJDJTIwYmF0Y2hfc2l6ZSUzRDgpJTBBZXZhbF9kYXRhbG9hZGVyJTIwJTNEJTIwRGF0YUxvYWRlcihzbWFsbF9ldmFsX2RhdGFzZXQlMkMlMjBiYXRjaF9zaXplJTNEOCk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> torch.utils.data <span class="hljs-keyword">import</span> DataLoader

<span class="hljs-meta">&gt;&gt;&gt; </span>train_dataloader = DataLoader(small_train_dataset, shuffle=<span class="hljs-literal">True</span>, batch_size=<span class="hljs-number">8</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>eval_dataloader = DataLoader(small_eval_dataset, batch_size=<span class="hljs-number">8</span>)`}}),He=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiUyQyUyMG51bV9sYWJlbHMlM0Q1KQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>, num_labels=<span class="hljs-number">5</span>)`}}),an=new Yn({}),ke=new Y({props:{code:"ZnJvbSUyMHRvcmNoLm9wdGltJTIwaW1wb3J0JTIwQWRhbVclMEElMEFvcHRpbWl6ZXIlMjAlM0QlMjBBZGFtVyhtb2RlbC5wYXJhbWV0ZXJzKCklMkMlMjBsciUzRDVlLTUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> torch.optim <span class="hljs-keyword">import</span> AdamW

<span class="hljs-meta">&gt;&gt;&gt; </span>optimizer = AdamW(model.parameters(), lr=<span class="hljs-number">5e-5</span>)`}}),De=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMGdldF9zY2hlZHVsZXIlMEElMEFudW1fZXBvY2hzJTIwJTNEJTIwMyUwQW51bV90cmFpbmluZ19zdGVwcyUyMCUzRCUyMG51bV9lcG9jaHMlMjAqJTIwbGVuKHRyYWluX2RhdGFsb2FkZXIpJTBBbHJfc2NoZWR1bGVyJTIwJTNEJTIwZ2V0X3NjaGVkdWxlciglMEElMjAlMjAlMjAlMjBuYW1lJTNEJTIybGluZWFyJTIyJTJDJTIwb3B0aW1pemVyJTNEb3B0aW1pemVyJTJDJTIwbnVtX3dhcm11cF9zdGVwcyUzRDAlMkMlMjBudW1fdHJhaW5pbmdfc3RlcHMlM0RudW1fdHJhaW5pbmdfc3RlcHMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> get_scheduler

<span class="hljs-meta">&gt;&gt;&gt; </span>num_epochs = <span class="hljs-number">3</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>num_training_steps = num_epochs * <span class="hljs-built_in">len</span>(train_dataloader)
<span class="hljs-meta">&gt;&gt;&gt; </span>lr_scheduler = get_scheduler(
<span class="hljs-meta">... </span>    name=<span class="hljs-string">&quot;linear&quot;</span>, optimizer=optimizer, num_warmup_steps=<span class="hljs-number">0</span>, num_training_steps=num_training_steps
<span class="hljs-meta">... </span>)`}}),W=new Y({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFkZXZpY2UlMjAlM0QlMjB0b3JjaC5kZXZpY2UoJTIyY3VkYSUyMiklMjBpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklMjBlbHNlJTIwdG9yY2guZGV2aWNlKCUyMmNwdSUyMiklMEFtb2RlbC50byhkZXZpY2Up",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span>device = torch.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> torch.device(<span class="hljs-string">&quot;cpu&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model.to(device)`}}),J=new Wt({props:{$$slots:{default:[ss]},$$scope:{ctx:un}}}),ce=new Yn({}),qe=new Y({props:{code:"ZnJvbSUyMHRxZG0uYXV0byUyMGltcG9ydCUyMHRxZG0lMEElMEFwcm9ncmVzc19iYXIlMjAlM0QlMjB0cWRtKHJhbmdlKG51bV90cmFpbmluZ19zdGVwcykpJTBBJTBBbW9kZWwudHJhaW4oKSUwQWZvciUyMGVwb2NoJTIwaW4lMjByYW5nZShudW1fZXBvY2hzKSUzQSUwQSUyMCUyMCUyMCUyMGZvciUyMGJhdGNoJTIwaW4lMjB0cmFpbl9kYXRhbG9hZGVyJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9zcy5iYWNrd2FyZCgpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3B0aW1pemVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxyX3NjaGVkdWxlci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuemVyb19ncmFkKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIudXBkYXRlKDEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> tqdm.auto <span class="hljs-keyword">import</span> tqdm

<span class="hljs-meta">&gt;&gt;&gt; </span>progress_bar = tqdm(<span class="hljs-built_in">range</span>(num_training_steps))

<span class="hljs-meta">&gt;&gt;&gt; </span>model.train()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> epoch <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_epochs):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_dataloader:
<span class="hljs-meta">... </span>        batch = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()}
<span class="hljs-meta">... </span>        outputs = model(**batch)
<span class="hljs-meta">... </span>        loss = outputs.loss
<span class="hljs-meta">... </span>        loss.backward()

<span class="hljs-meta">... </span>        optimizer.step()
<span class="hljs-meta">... </span>        lr_scheduler.step()
<span class="hljs-meta">... </span>        optimizer.zero_grad()
<span class="hljs-meta">... </span>        progress_bar.update(<span class="hljs-number">1</span>)`}}),b=new Yn({}),hn=new Y({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKSUwQW1vZGVsLmV2YWwoKSUwQWZvciUyMGJhdGNoJTIwaW4lMjBldmFsX2RhdGFsb2FkZXIlM0ElMEElMjAlMjAlMjAlMjBiYXRjaCUyMCUzRCUyMCU3QmslM0ElMjB2LnRvKGRldmljZSklMjBmb3IlMjBrJTJDJTIwdiUyMGluJTIwYmF0Y2guaXRlbXMoKSU3RCUwQSUyMCUyMCUyMCUyMHdpdGglMjB0b3JjaC5ub19ncmFkKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMEElMjAlMjAlMjAlMjBsb2dpdHMlMjAlM0QlMjBvdXRwdXRzLmxvZ2l0cyUwQSUyMCUyMCUyMCUyMHByZWRpY3Rpb25zJTIwJTNEJTIwdG9yY2guYXJnbWF4KGxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQSUyMCUyMCUyMCUyMG1ldHJpYy5hZGRfYmF0Y2gocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyUyQyUyMHJlZmVyZW5jZXMlM0RiYXRjaCU1QiUyMmxhYmVscyUyMiU1RCklMEElMEFtZXRyaWMuY29tcHV0ZSgp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model.<span class="hljs-built_in">eval</span>()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> eval_dataloader:
<span class="hljs-meta">... </span>    batch = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()}
<span class="hljs-meta">... </span>    <span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span>        outputs = model(**batch)

<span class="hljs-meta">... </span>    logits = outputs.logits
<span class="hljs-meta">... </span>    predictions = torch.argmax(logits, dim=-<span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    metric.add_batch(predictions=predictions, references=batch[<span class="hljs-string">&quot;labels&quot;</span>])

<span class="hljs-meta">&gt;&gt;&gt; </span>metric.compute()`}}),{c(){M(g.$$.fragment),E=h(),c=r("p"),z=r("code"),_=p("Trainer"),S=p(" k\xFCmmert sich um die Trainingsschleife und erm\xF6glicht die Feinabstimmung eines Modells in einer einzigen Codezeile. F\xFCr Benutzer, die es vorziehen, ihre eigene Trainingsschleife zu schreiben, k\xF6nnen Sie auch eine Feinabstimmung eines \u{1F917} Transformers-Modells in nativem PyTorch vornehmen."),F=h(),Z=r("p"),Ne=p("An diesem Punkt m\xFCssen Sie m\xF6glicherweise Ihr Notebook neu starten oder den folgenden Code ausf\xFChren, um etwas Speicher freizugeben:"),R=h(),M(I.$$.fragment),Ye=h(),V=r("p"),Pn=p("Als N\xE4chstes m\xFCssen Sie den Datensatz "),fn=r("code"),U=p("tokenized_dataset"),be=p(" manuell nachbearbeiten, um ihn f\xFCr das Training vorzubereiten."),Tn=h(),B=r("ol"),we=r("li"),cn=r("p"),gn=p("Entfernen Sie die Spalte \u201CText\u201D, da das Modell keinen Rohtext als Eingabe akzeptiert:"),jn=h(),M(Re.$$.fragment),Vn=h(),O=r("li"),Je=r("p"),Pe=p("Benennen Sie die Spalte \u201CLabel\u201D in \u201CLabels\u201D um, da das Modell erwartet, dass das Argument \u201CLabels\u201D genannt wird:"),Ze=h(),M(ee.$$.fragment),ne=h(),P=r("li"),L=r("p"),Oe=p("Stellen Sie das Format des Datensatzes so ein, dass PyTorch-Tensoren anstelle von Listen zur\xFCckgegeben werden:"),en=h(),M(Le.$$.fragment),zn=h(),G=r("p"),nn=p("Erstellen Sie dann eine kleinere Teilmenge des Datensatzes, wie zuvor gezeigt, um die Feinabstimmung zu beschleunigen:"),te=h(),M(Be.$$.fragment),tn=h(),X=r("h3"),de=r("a"),An=r("span"),M(D.$$.fragment),sn=h(),Un=r("span"),Gn=p("DataLoader"),pe=h(),se=r("p"),H=p("Erstellen Sie einen "),Q=r("code"),Ce=p("DataLoader"),ve=p(" f\xFCr Ihre Trainings- und Testdatens\xE4tze, damit Sie \xFCber die Datenstapel iterieren k\xF6nnen:"),Xn=h(),M(Ve.$$.fragment),Ie=h(),N=r("p"),A=p("Laden Sie Ihr Modell mit der Anzahl der erwarteten Kennzeichnungen:"),Ae=h(),M(He.$$.fragment),bn=h(),me=r("h3"),Me=r("a"),he=r("span"),M(an.$$.fragment),x=h(),Xe=r("span"),Wn=p("Optimierer und Lernratensteuerung"),ue=h(),K=r("p"),rn=p("Erstellen Sie einen Optimierer und einen Scheduler f\xFCr die Lernrate, um das Modell fein abzustimmen. Wir verwenden den Optimierer "),Qe=r("a"),ln=r("code"),En=p("AdamW"),Ln=p(" aus PyTorch:"),q=h(),M(ke.$$.fragment),wn=h(),ye=r("p"),on=p("Erstellen Sie den Standard-Lernratenplaner aus "),ae=r("code"),C=p("Trainer"),Fn=p(":"),Ue=h(),M(De.$$.fragment),_n=h(),Ge=r("p"),dn=p("Geben Sie schlie\xDFlich "),We=r("code"),xe=p("device"),Sn=p(" an, um einen Grafikprozessor zu verwenden, wenn Sie Zugang zu einem solchen haben. Andernfalls kann das Training auf einer CPU mehrere Stunden statt ein paar Minuten dauern."),Jn=h(),M(W.$$.fragment),re=h(),M(J.$$.fragment),fe=h(),pn=r("p"),vn=p("Gro\xDFartig, Sie sind bereit f\xFCr das Training! \u{1F973}"),Dn=h(),$e=r("h3"),Te=r("a"),Ke=r("span"),M(ce.$$.fragment),le=h(),je=r("span"),ze=p("Trainingsschleife"),Ee=h(),mn=r("p"),Zn=p("Um Ihren Trainingsfortschritt zu verfolgen, verwenden Sie die "),_e=r("a"),In=p("tqdm"),ge=p(" Bibliothek, um einen Fortschrittsbalken \xFCber die Anzahl der Trainingsschritte hinzuzuf\xFCgen:"),Mn=h(),M(qe.$$.fragment),Rn=h(),ie=r("h3"),a=r("a"),t=r("span"),M(b.$$.fragment),Se=h(),Hn=r("span"),Qn=p("Auswertung"),at=h(),oe=r("p"),Nn=p("Genauso wie Sie eine Bewertungsfunktion zu "),kn=r("code"),rt=p("Trainer"),o=p(" hinzugef\xFCgt haben, m\xFCssen Sie dasselbe tun, wenn Sie Ihre eigene Trainingsschleife schreiben. Aber anstatt die Metrik am Ende jeder Epoche zu berechnen und zu melden, werden Sie dieses Mal alle Stapel mit "),v=r("code"),xn=p("add_batch"),ft=p(" akkumulieren und die Metrik ganz am Ende berechnen."),Bn=h(),M(hn.$$.fragment),this.h()},l(s){k(g.$$.fragment,s),E=u(s),c=l(s,"P",{});var w=i(c);z=l(w,"CODE",{});var lt=i(z);_=m(lt,"Trainer"),lt.forEach(e),S=m(w," k\xFCmmert sich um die Trainingsschleife und erm\xF6glicht die Feinabstimmung eines Modells in einer einzigen Codezeile. F\xFCr Benutzer, die es vorziehen, ihre eigene Trainingsschleife zu schreiben, k\xF6nnen Sie auch eine Feinabstimmung eines \u{1F917} Transformers-Modells in nativem PyTorch vornehmen."),w.forEach(e),F=u(s),Z=l(s,"P",{});var qn=i(Z);Ne=m(qn,"An diesem Punkt m\xFCssen Sie m\xF6glicherweise Ihr Notebook neu starten oder den folgenden Code ausf\xFChren, um etwas Speicher freizugeben:"),qn.forEach(e),R=u(s),k(I.$$.fragment,s),Ye=u(s),V=l(s,"P",{});var dt=i(V);Pn=m(dt,"Als N\xE4chstes m\xFCssen Sie den Datensatz "),fn=l(dt,"CODE",{});var pt=i(fn);U=m(pt,"tokenized_dataset"),pt.forEach(e),be=m(dt," manuell nachbearbeiten, um ihn f\xFCr das Training vorzubereiten."),dt.forEach(e),Tn=u(s),B=l(s,"OL",{});var On=i(B);we=l(On,"LI",{});var yn=i(we);cn=l(yn,"P",{});var ct=i(cn);gn=m(ct,"Entfernen Sie die Spalte \u201CText\u201D, da das Modell keinen Rohtext als Eingabe akzeptiert:"),ct.forEach(e),jn=u(yn),k(Re.$$.fragment,yn),yn.forEach(e),Vn=u(On),O=l(On,"LI",{});var et=i(O);Je=l(et,"P",{});var it=i(Je);Pe=m(it,"Benennen Sie die Spalte \u201CLabel\u201D in \u201CLabels\u201D um, da das Modell erwartet, dass das Argument \u201CLabels\u201D genannt wird:"),it.forEach(e),Ze=u(et),k(ee.$$.fragment,et),et.forEach(e),ne=u(On),P=l(On,"LI",{});var nt=i(P);L=l(nt,"P",{});var tt=i(L);Oe=m(tt,"Stellen Sie das Format des Datensatzes so ein, dass PyTorch-Tensoren anstelle von Listen zur\xFCckgegeben werden:"),tt.forEach(e),en=u(nt),k(Le.$$.fragment,nt),nt.forEach(e),On.forEach(e),zn=u(s),G=l(s,"P",{});var gt=i(G);nn=m(gt,"Erstellen Sie dann eine kleinere Teilmenge des Datensatzes, wie zuvor gezeigt, um die Feinabstimmung zu beschleunigen:"),gt.forEach(e),te=u(s),k(Be.$$.fragment,s),tn=u(s),X=l(s,"H3",{class:!0});var st=i(X);de=l(st,"A",{id:!0,class:!0,href:!0});var Fe=i(de);An=l(Fe,"SPAN",{});var bt=i(An);k(D.$$.fragment,bt),bt.forEach(e),Fe.forEach(e),sn=u(st),Un=l(st,"SPAN",{});var $n=i(Un);Gn=m($n,"DataLoader"),$n.forEach(e),st.forEach(e),pe=u(s),se=l(s,"P",{});var mt=i(se);H=m(mt,"Erstellen Sie einen "),Q=l(mt,"CODE",{});var ht=i(Q);Ce=m(ht,"DataLoader"),ht.forEach(e),ve=m(mt," f\xFCr Ihre Trainings- und Testdatens\xE4tze, damit Sie \xFCber die Datenstapel iterieren k\xF6nnen:"),mt.forEach(e),Xn=u(s),k(Ve.$$.fragment,s),Ie=u(s),N=l(s,"P",{});var wt=i(N);A=m(wt,"Laden Sie Ihr Modell mit der Anzahl der erwarteten Kennzeichnungen:"),wt.forEach(e),Ae=u(s),k(He.$$.fragment,s),bn=u(s),me=l(s,"H3",{class:!0});var ot=i(me);Me=l(ot,"A",{id:!0,class:!0,href:!0});var ut=i(Me);he=l(ut,"SPAN",{});var Cn=i(he);k(an.$$.fragment,Cn),Cn.forEach(e),ut.forEach(e),x=u(ot),Xe=l(ot,"SPAN",{});var Mt=i(Xe);Wn=m(Mt,"Optimierer und Lernratensteuerung"),Mt.forEach(e),ot.forEach(e),ue=u(s),K=l(s,"P",{});var vt=i(K);rn=m(vt,"Erstellen Sie einen Optimierer und einen Scheduler f\xFCr die Lernrate, um das Modell fein abzustimmen. Wir verwenden den Optimierer "),Qe=l(vt,"A",{href:!0,rel:!0});var _t=i(Qe);ln=l(_t,"CODE",{});var yt=i(ln);En=m(yt,"AdamW"),yt.forEach(e),_t.forEach(e),Ln=m(vt," aus PyTorch:"),vt.forEach(e),q=u(s),k(ke.$$.fragment,s),wn=u(s),ye=l(s,"P",{});var $t=i(ye);on=m($t,"Erstellen Sie den Standard-Lernratenplaner aus "),ae=l($t,"CODE",{});var Tt=i(ae);C=m(Tt,"Trainer"),Tt.forEach(e),Fn=m($t,":"),$t.forEach(e),Ue=u(s),k(De.$$.fragment,s),_n=u(s),Ge=l(s,"P",{});var jt=i(Ge);dn=m(jt,"Geben Sie schlie\xDFlich "),We=l(jt,"CODE",{});var St=i(We);xe=m(St,"device"),St.forEach(e),Sn=m(jt," an, um einen Grafikprozessor zu verwenden, wenn Sie Zugang zu einem solchen haben. Andernfalls kann das Training auf einer CPU mehrere Stunden statt ein paar Minuten dauern."),jt.forEach(e),Jn=u(s),k(W.$$.fragment,s),re=u(s),k(J.$$.fragment,s),fe=u(s),pn=l(s,"P",{});var Jt=i(pn);vn=m(Jt,"Gro\xDFartig, Sie sind bereit f\xFCr das Training! \u{1F973}"),Jt.forEach(e),Dn=u(s),$e=l(s,"H3",{class:!0});var kt=i($e);Te=l(kt,"A",{id:!0,class:!0,href:!0});var Zt=i(Te);Ke=l(Zt,"SPAN",{});var zt=i(Ke);k(ce.$$.fragment,zt),zt.forEach(e),Zt.forEach(e),le=u(kt),je=l(kt,"SPAN",{});var It=i(je);ze=m(It,"Trainingsschleife"),It.forEach(e),kt.forEach(e),Ee=u(s),mn=l(s,"P",{});var At=i(mn);Zn=m(At,"Um Ihren Trainingsfortschritt zu verfolgen, verwenden Sie die "),_e=l(At,"A",{href:!0,rel:!0});var Rt=i(_e);In=m(Rt,"tqdm"),Rt.forEach(e),ge=m(At," Bibliothek, um einen Fortschrittsbalken \xFCber die Anzahl der Trainingsschritte hinzuzuf\xFCgen:"),At.forEach(e),Mn=u(s),k(qe.$$.fragment,s),Rn=u(s),ie=l(s,"H3",{class:!0});var Ut=i(ie);a=l(Ut,"A",{id:!0,class:!0,href:!0});var Bt=i(a);t=l(Bt,"SPAN",{});var Ct=i(t);k(b.$$.fragment,Ct),Ct.forEach(e),Bt.forEach(e),Se=u(Ut),Hn=l(Ut,"SPAN",{});var Vt=i(Hn);Qn=m(Vt,"Auswertung"),Vt.forEach(e),Ut.forEach(e),at=u(s),oe=l(s,"P",{});var Et=i(oe);Nn=m(Et,"Genauso wie Sie eine Bewertungsfunktion zu "),kn=l(Et,"CODE",{});var Xt=i(kn);rt=m(Xt,"Trainer"),Xt.forEach(e),o=m(Et," hinzugef\xFCgt haben, m\xFCssen Sie dasselbe tun, wenn Sie Ihre eigene Trainingsschleife schreiben. Aber anstatt die Metrik am Ende jeder Epoche zu berechnen und zu melden, werden Sie dieses Mal alle Stapel mit "),v=l(Et,"CODE",{});var Dt=i(v);xn=m(Dt,"add_batch"),Dt.forEach(e),ft=m(Et," akkumulieren und die Metrik ganz am Ende berechnen."),Et.forEach(e),Bn=u(s),k(hn.$$.fragment,s),this.h()},h(){f(de,"id","dataloader"),f(de,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(de,"href","#dataloader"),f(X,"class","relative group"),f(Me,"id","optimierer-und-lernratensteuerung"),f(Me,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(Me,"href","#optimierer-und-lernratensteuerung"),f(me,"class","relative group"),f(Qe,"href","https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html"),f(Qe,"rel","nofollow"),f(Te,"id","trainingsschleife"),f(Te,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(Te,"href","#trainingsschleife"),f($e,"class","relative group"),f(_e,"href","https://tqdm.github.io/"),f(_e,"rel","nofollow"),f(a,"id","auswertung"),f(a,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(a,"href","#auswertung"),f(ie,"class","relative group")},m(s,w){y(g,s,w),d(s,E,w),d(s,c,w),n(c,z),n(z,_),n(c,S),d(s,F,w),d(s,Z,w),n(Z,Ne),d(s,R,w),y(I,s,w),d(s,Ye,w),d(s,V,w),n(V,Pn),n(V,fn),n(fn,U),n(V,be),d(s,Tn,w),d(s,B,w),n(B,we),n(we,cn),n(cn,gn),n(we,jn),y(Re,we,null),n(B,Vn),n(B,O),n(O,Je),n(Je,Pe),n(O,Ze),y(ee,O,null),n(B,ne),n(B,P),n(P,L),n(L,Oe),n(P,en),y(Le,P,null),d(s,zn,w),d(s,G,w),n(G,nn),d(s,te,w),y(Be,s,w),d(s,tn,w),d(s,X,w),n(X,de),n(de,An),y(D,An,null),n(X,sn),n(X,Un),n(Un,Gn),d(s,pe,w),d(s,se,w),n(se,H),n(se,Q),n(Q,Ce),n(se,ve),d(s,Xn,w),y(Ve,s,w),d(s,Ie,w),d(s,N,w),n(N,A),d(s,Ae,w),y(He,s,w),d(s,bn,w),d(s,me,w),n(me,Me),n(Me,he),y(an,he,null),n(me,x),n(me,Xe),n(Xe,Wn),d(s,ue,w),d(s,K,w),n(K,rn),n(K,Qe),n(Qe,ln),n(ln,En),n(K,Ln),d(s,q,w),y(ke,s,w),d(s,wn,w),d(s,ye,w),n(ye,on),n(ye,ae),n(ae,C),n(ye,Fn),d(s,Ue,w),y(De,s,w),d(s,_n,w),d(s,Ge,w),n(Ge,dn),n(Ge,We),n(We,xe),n(Ge,Sn),d(s,Jn,w),y(W,s,w),d(s,re,w),y(J,s,w),d(s,fe,w),d(s,pn,w),n(pn,vn),d(s,Dn,w),d(s,$e,w),n($e,Te),n(Te,Ke),y(ce,Ke,null),n($e,le),n($e,je),n(je,ze),d(s,Ee,w),d(s,mn,w),n(mn,Zn),n(mn,_e),n(_e,In),n(mn,ge),d(s,Mn,w),y(qe,s,w),d(s,Rn,w),d(s,ie,w),n(ie,a),n(a,t),y(b,t,null),n(ie,Se),n(ie,Hn),n(Hn,Qn),d(s,at,w),d(s,oe,w),n(oe,Nn),n(oe,kn),n(kn,rt),n(oe,o),n(oe,v),n(v,xn),n(oe,ft),d(s,Bn,w),y(hn,s,w),Kn=!0},p(s,w){const lt={};w&2&&(lt.$$scope={dirty:w,ctx:s}),J.$set(lt)},i(s){Kn||($(g.$$.fragment,s),$(I.$$.fragment,s),$(Re.$$.fragment,s),$(ee.$$.fragment,s),$(Le.$$.fragment,s),$(Be.$$.fragment,s),$(D.$$.fragment,s),$(Ve.$$.fragment,s),$(He.$$.fragment,s),$(an.$$.fragment,s),$(ke.$$.fragment,s),$(De.$$.fragment,s),$(W.$$.fragment,s),$(J.$$.fragment,s),$(ce.$$.fragment,s),$(qe.$$.fragment,s),$(b.$$.fragment,s),$(hn.$$.fragment,s),Kn=!0)},o(s){T(g.$$.fragment,s),T(I.$$.fragment,s),T(Re.$$.fragment,s),T(ee.$$.fragment,s),T(Le.$$.fragment,s),T(Be.$$.fragment,s),T(D.$$.fragment,s),T(Ve.$$.fragment,s),T(He.$$.fragment,s),T(an.$$.fragment,s),T(ke.$$.fragment,s),T(De.$$.fragment,s),T(W.$$.fragment,s),T(J.$$.fragment,s),T(ce.$$.fragment,s),T(qe.$$.fragment,s),T(b.$$.fragment,s),T(hn.$$.fragment,s),Kn=!1},d(s){j(g,s),s&&e(E),s&&e(c),s&&e(F),s&&e(Z),s&&e(R),j(I,s),s&&e(Ye),s&&e(V),s&&e(Tn),s&&e(B),j(Re),j(ee),j(Le),s&&e(zn),s&&e(G),s&&e(te),j(Be,s),s&&e(tn),s&&e(X),j(D),s&&e(pe),s&&e(se),s&&e(Xn),j(Ve,s),s&&e(Ie),s&&e(N),s&&e(Ae),j(He,s),s&&e(bn),s&&e(me),j(an),s&&e(ue),s&&e(K),s&&e(q),j(ke,s),s&&e(wn),s&&e(ye),s&&e(Ue),j(De,s),s&&e(_n),s&&e(Ge),s&&e(Jn),j(W,s),s&&e(re),j(J,s),s&&e(fe),s&&e(pn),s&&e(Dn),s&&e($e),j(ce),s&&e(Ee),s&&e(mn),s&&e(Mn),j(qe,s),s&&e(Rn),s&&e(ie),j(b),s&&e(at),s&&e(oe),s&&e(Bn),j(hn,s)}}}function rs(un){let g,E;return g=new Ft({props:{$$slots:{default:[as]},$$scope:{ctx:un}}}),{c(){M(g.$$.fragment)},l(c){k(g.$$.fragment,c)},m(c,z){y(g,c,z),E=!0},p(c,z){const _={};z&2&&(_.$$scope={dirty:z,ctx:c}),g.$set(_)},i(c){E||($(g.$$.fragment,c),E=!0)},o(c){T(g.$$.fragment,c),E=!1},d(c){j(g,c)}}}function ls(un){let g,E,c,z,_,S,F,Z,Ne,R,I,Ye,V,Pn,fn,U,be,Tn,B,we,cn,gn,jn,Re,Vn,O,Je,Pe,Ze,ee,ne,P,L,Oe,en,Le,zn,G,nn,te,Be,tn,X,de,An,D,sn,Un,Gn,pe,se,H,Q,Ce,ve,Xn,Ve,Ie,N,A,Ae,He,bn,me,Me,he,an,x,Xe,Wn,ue,K,rn,Qe,ln,En,Ln,q,ke,wn,ye,on,ae,C,Fn,Ue,De,_n,Ge,dn,We,xe,Sn,Jn,W,re,J,fe,pn,vn,Dn,$e,Te,Ke,ce,le,je,ze,Ee,mn,Zn,_e,In,ge,Mn,qe,Rn,ie;return S=new Yn({}),I=new xt({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/training.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/pytorch/training.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/tensorflow/training.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/training.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/pytorch/training.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/tensorflow/training.ipynb"}]}}),Oe=new Yn({}),nn=new Gt({props:{id:"_BZearw7f0w"}}),pe=new Y({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJ5ZWxwX3Jldmlld19mdWxsJTIyKSUwQWRhdGFzZXQlNUIlMjJ0cmFpbiUyMiU1RCU1QjEwMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = load_dataset(<span class="hljs-string">&quot;yelp_review_full&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>dataset[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">100</span>]
{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-number">0</span>,
 <span class="hljs-string">&#x27;text&#x27;</span>: <span class="hljs-string">&#x27;My expectations for McDonalds are t rarely high. But for one to still fail so spectacularly...that takes something special!\\\\nThe cashier took my friends\\&#x27;s order, then promptly ignored me. I had to force myself in front of a cashier who opened his register to wait on the person BEHIND me. I waited over five minutes for a gigantic order that included precisely one kid\\&#x27;s meal. After watching two people who ordered after me be handed their food, I asked where mine was. The manager started yelling at the cashiers for \\\\&quot;serving off their orders\\\\&quot; when they didn\\&#x27;t have their food. But neither cashier was anywhere near those controls, and the manager was the one serving food to customers and clearing the boards.\\\\nThe manager was rude when giving me my order. She didn\\&#x27;t make sure that I had everything ON MY RECEIPT, and never even had the decency to apologize that I felt I was getting poor service.\\\\nI\\&#x27;ve eaten at various McDonalds restaurants for over 30 years. I\\&#x27;ve worked at more than one location. I expect bad days, bad moods, and the occasional mistake. But I have yet to have a decent experience at this store. It will remain a place I avoid unless someone in my party needs to avoid illness from low blood sugar. Perhaps I should go back to the racially biased service of Steak n Shake instead!&#x27;</span>}`}}),N=new Y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBJTBBJTBBZGVmJTIwdG9rZW5pemVfZnVuY3Rpb24oZXhhbXBsZXMpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9rZW5pemVyKGV4YW1wbGVzJTVCJTIydGV4dCUyMiU1RCUyQyUyMHBhZGRpbmclM0QlMjJtYXhfbGVuZ3RoJTIyJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTBBJTBBdG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwZGF0YXNldC5tYXAodG9rZW5pemVfZnVuY3Rpb24lMkMlMjBiYXRjaGVkJTNEVHJ1ZSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">examples</span>):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> tokenizer(examples[<span class="hljs-string">&quot;text&quot;</span>], padding=<span class="hljs-string">&quot;max_length&quot;</span>, truncation=<span class="hljs-literal">True</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = dataset.<span class="hljs-built_in">map</span>(tokenize_function, batched=<span class="hljs-literal">True</span>)`}}),me=new Y({props:{code:"c21hbGxfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoc2VlZCUzRDQyKS5zZWxlY3QocmFuZ2UoMTAwMCkpJTBBc21hbGxfZXZhbF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydGVzdCUyMiU1RC5zaHVmZmxlKHNlZWQlM0Q0Mikuc2VsZWN0KHJhbmdlKDEwMDApKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>small_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>small_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;test&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))`}}),ue=new Yn({}),ke=new Nt({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[ts],pytorch:[Ot]},$$scope:{ctx:un}}}),Ue=new Yn({}),We=new Nt({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[rs]},$$scope:{ctx:un}}}),fe=new Yn({}),{c(){g=r("meta"),E=h(),c=r("h1"),z=r("a"),_=r("span"),M(S.$$.fragment),F=h(),Z=r("span"),Ne=p("Optimierung eines vortrainierten Modells"),R=h(),M(I.$$.fragment),Ye=h(),V=r("p"),Pn=p("Die Verwendung eines vorab trainierten Modells hat erhebliche Vorteile. Es reduziert die Rechenkosten und den CO2-Fu\xDFabdruck und erm\xF6glicht Ihnen die Verwendung von Modellen, die dem neuesten Stand der Technik entsprechen, ohne dass Sie ein Modell von Grund auf neu trainieren m\xFCssen. Transformers bietet Zugang zu Tausenden von vortrainierten Modellen f\xFCr eine Vielzahl von Aufgaben. Wenn Sie ein vorab trainiertes Modell verwenden, trainieren Sie es auf einem f\xFCr Ihre Aufgabe spezifischen Datensatz. Dies wird als Feinabstimmung bezeichnet und ist eine unglaublich leistungsf\xE4hige Trainingstechnik. In diesem Tutorial werden Sie ein vortrainiertes Modell mit einem Deep-Learning-Framework Ihrer Wahl feinabstimmen:"),fn=h(),U=r("ul"),be=r("li"),Tn=p("Feinabstimmung eines vorab trainierten Modells mit \u{1F917} Transformers "),B=r("code"),we=p("Trainer"),cn=p("."),gn=h(),jn=r("li"),Re=p("Feinabstimmung eines vorab trainierten Modells in TensorFlow mit Keras."),Vn=h(),O=r("li"),Je=p("Feinabstimmung eines vorab trainierten Modells in nativem PyTorch."),Pe=h(),Ze=r("a"),ee=h(),ne=r("h2"),P=r("a"),L=r("span"),M(Oe.$$.fragment),en=h(),Le=r("span"),zn=p("Vorbereitung eines Datensatzes"),G=h(),M(nn.$$.fragment),te=h(),Be=r("p"),tn=p("Bevor Sie die Feinabstimmung eines vortrainierten Modells vornehmen k\xF6nnen, m\xFCssen Sie einen Datensatz herunterladen und f\xFCr das Training vorbereiten. Im vorangegangenen Leitfaden haben Sie gelernt, wie man Daten f\xFCr das Training aufbereitet, und jetzt haben Sie die Gelegenheit, diese F\xE4higkeiten zu testen!"),X=h(),de=r("p"),An=p("Laden Sie zun\xE4chst den Datensatz "),D=r("a"),sn=p("Yelp Reviews"),Un=p(":"),Gn=h(),M(pe.$$.fragment),se=h(),H=r("p"),Q=p("Wie Sie nun wissen, ben\xF6tigen Sie einen Tokenizer, um den Text zu verarbeiten und eine Auff\xFCll- und Abschneidungsstrategie einzubauen, um mit variablen Sequenzl\xE4ngen umzugehen. Um Ihren Datensatz in einem Schritt zu verarbeiten, verwenden Sie die \u{1F917} Methode Datasets "),Ce=r("a"),ve=r("code"),Xn=p("map"),Ve=p(", um eine Vorverarbeitungsfunktion auf den gesamten Datensatz anzuwenden:"),Ie=h(),M(N.$$.fragment),A=h(),Ae=r("p"),He=p("Wenn Sie m\xF6chten, k\xF6nnen Sie eine kleinere Teilmenge des gesamten Datensatzes f\xFCr die Feinabstimmung erstellen, um den Zeitaufwand zu verringern:"),bn=h(),M(me.$$.fragment),Me=h(),he=r("a"),an=h(),x=r("h2"),Xe=r("a"),Wn=r("span"),M(ue.$$.fragment),K=h(),rn=r("span"),Qe=p("Training"),ln=h(),En=r("p"),Ln=p(`An dieser Stelle sollten Sie dem Abschnitt folgen, der dem Rahmen entspricht, den Sie verwenden m\xF6chten. Sie k\xF6nnen \xFCber die Links
in der rechten Seitenleiste k\xF6nnen Sie zu dem gew\xFCnschten Abschnitt springen - und wenn Sie den gesamten Inhalt eines bestimmten Frameworks ausblenden m\xF6chten,
klicken Sie einfach auf die Schaltfl\xE4che oben rechts im Block des jeweiligen Frameworks!`),q=h(),M(ke.$$.fragment),wn=h(),ye=r("a"),on=h(),ae=r("h2"),C=r("a"),Fn=r("span"),M(Ue.$$.fragment),De=h(),_n=r("span"),Ge=p("Trainieren in nativem PyTorch"),dn=h(),M(We.$$.fragment),xe=h(),Sn=r("a"),Jn=h(),W=r("h2"),re=r("a"),J=r("span"),M(fe.$$.fragment),pn=h(),vn=r("span"),Dn=p("Zus\xE4tzliche Ressourcen"),$e=h(),Te=r("p"),Ke=p("Weitere Beispiele f\xFCr die Feinabstimmung finden Sie unter:"),ce=h(),le=r("ul"),je=r("li"),ze=r("p"),Ee=r("a"),mn=p("\u{1F917} Transformers Examples"),Zn=p(` enth\xE4lt Skripte
um g\xE4ngige NLP-Aufgaben in PyTorch und TensorFlow zu trainieren.`),_e=h(),In=r("li"),ge=r("p"),Mn=r("a"),qe=p("\u{1F917} Transformers Notebooks"),Rn=p(" enth\xE4lt verschiedene Notebooks zur Feinabstimmung eines Modells f\xFCr bestimmte Aufgaben in PyTorch und TensorFlow."),this.h()},l(a){const t=Ht('[data-svelte="svelte-1phssyn"]',document.head);g=l(t,"META",{name:!0,content:!0}),t.forEach(e),E=u(a),c=l(a,"H1",{class:!0});var b=i(c);z=l(b,"A",{id:!0,class:!0,href:!0});var Se=i(z);_=l(Se,"SPAN",{});var Hn=i(_);k(S.$$.fragment,Hn),Hn.forEach(e),Se.forEach(e),F=u(b),Z=l(b,"SPAN",{});var Qn=i(Z);Ne=m(Qn,"Optimierung eines vortrainierten Modells"),Qn.forEach(e),b.forEach(e),R=u(a),k(I.$$.fragment,a),Ye=u(a),V=l(a,"P",{});var at=i(V);Pn=m(at,"Die Verwendung eines vorab trainierten Modells hat erhebliche Vorteile. Es reduziert die Rechenkosten und den CO2-Fu\xDFabdruck und erm\xF6glicht Ihnen die Verwendung von Modellen, die dem neuesten Stand der Technik entsprechen, ohne dass Sie ein Modell von Grund auf neu trainieren m\xFCssen. Transformers bietet Zugang zu Tausenden von vortrainierten Modellen f\xFCr eine Vielzahl von Aufgaben. Wenn Sie ein vorab trainiertes Modell verwenden, trainieren Sie es auf einem f\xFCr Ihre Aufgabe spezifischen Datensatz. Dies wird als Feinabstimmung bezeichnet und ist eine unglaublich leistungsf\xE4hige Trainingstechnik. In diesem Tutorial werden Sie ein vortrainiertes Modell mit einem Deep-Learning-Framework Ihrer Wahl feinabstimmen:"),at.forEach(e),fn=u(a),U=l(a,"UL",{});var oe=i(U);be=l(oe,"LI",{});var Nn=i(be);Tn=m(Nn,"Feinabstimmung eines vorab trainierten Modells mit \u{1F917} Transformers "),B=l(Nn,"CODE",{});var kn=i(B);we=m(kn,"Trainer"),kn.forEach(e),cn=m(Nn,"."),Nn.forEach(e),gn=u(oe),jn=l(oe,"LI",{});var rt=i(jn);Re=m(rt,"Feinabstimmung eines vorab trainierten Modells in TensorFlow mit Keras."),rt.forEach(e),Vn=u(oe),O=l(oe,"LI",{});var o=i(O);Je=m(o,"Feinabstimmung eines vorab trainierten Modells in nativem PyTorch."),o.forEach(e),oe.forEach(e),Pe=u(a),Ze=l(a,"A",{id:!0}),i(Ze).forEach(e),ee=u(a),ne=l(a,"H2",{class:!0});var v=i(ne);P=l(v,"A",{id:!0,class:!0,href:!0});var xn=i(P);L=l(xn,"SPAN",{});var ft=i(L);k(Oe.$$.fragment,ft),ft.forEach(e),xn.forEach(e),en=u(v),Le=l(v,"SPAN",{});var Bn=i(Le);zn=m(Bn,"Vorbereitung eines Datensatzes"),Bn.forEach(e),v.forEach(e),G=u(a),k(nn.$$.fragment,a),te=u(a),Be=l(a,"P",{});var hn=i(Be);tn=m(hn,"Bevor Sie die Feinabstimmung eines vortrainierten Modells vornehmen k\xF6nnen, m\xFCssen Sie einen Datensatz herunterladen und f\xFCr das Training vorbereiten. Im vorangegangenen Leitfaden haben Sie gelernt, wie man Daten f\xFCr das Training aufbereitet, und jetzt haben Sie die Gelegenheit, diese F\xE4higkeiten zu testen!"),hn.forEach(e),X=u(a),de=l(a,"P",{});var Kn=i(de);An=m(Kn,"Laden Sie zun\xE4chst den Datensatz "),D=l(Kn,"A",{href:!0,rel:!0});var s=i(D);sn=m(s,"Yelp Reviews"),s.forEach(e),Un=m(Kn,":"),Kn.forEach(e),Gn=u(a),k(pe.$$.fragment,a),se=u(a),H=l(a,"P",{});var w=i(H);Q=m(w,"Wie Sie nun wissen, ben\xF6tigen Sie einen Tokenizer, um den Text zu verarbeiten und eine Auff\xFCll- und Abschneidungsstrategie einzubauen, um mit variablen Sequenzl\xE4ngen umzugehen. Um Ihren Datensatz in einem Schritt zu verarbeiten, verwenden Sie die \u{1F917} Methode Datasets "),Ce=l(w,"A",{href:!0,rel:!0});var lt=i(Ce);ve=l(lt,"CODE",{});var qn=i(ve);Xn=m(qn,"map"),qn.forEach(e),lt.forEach(e),Ve=m(w,", um eine Vorverarbeitungsfunktion auf den gesamten Datensatz anzuwenden:"),w.forEach(e),Ie=u(a),k(N.$$.fragment,a),A=u(a),Ae=l(a,"P",{});var dt=i(Ae);He=m(dt,"Wenn Sie m\xF6chten, k\xF6nnen Sie eine kleinere Teilmenge des gesamten Datensatzes f\xFCr die Feinabstimmung erstellen, um den Zeitaufwand zu verringern:"),dt.forEach(e),bn=u(a),k(me.$$.fragment,a),Me=u(a),he=l(a,"A",{id:!0}),i(he).forEach(e),an=u(a),x=l(a,"H2",{class:!0});var pt=i(x);Xe=l(pt,"A",{id:!0,class:!0,href:!0});var On=i(Xe);Wn=l(On,"SPAN",{});var yn=i(Wn);k(ue.$$.fragment,yn),yn.forEach(e),On.forEach(e),K=u(pt),rn=l(pt,"SPAN",{});var ct=i(rn);Qe=m(ct,"Training"),ct.forEach(e),pt.forEach(e),ln=u(a),En=l(a,"P",{});var et=i(En);Ln=m(et,`An dieser Stelle sollten Sie dem Abschnitt folgen, der dem Rahmen entspricht, den Sie verwenden m\xF6chten. Sie k\xF6nnen \xFCber die Links
in der rechten Seitenleiste k\xF6nnen Sie zu dem gew\xFCnschten Abschnitt springen - und wenn Sie den gesamten Inhalt eines bestimmten Frameworks ausblenden m\xF6chten,
klicken Sie einfach auf die Schaltfl\xE4che oben rechts im Block des jeweiligen Frameworks!`),et.forEach(e),q=u(a),k(ke.$$.fragment,a),wn=u(a),ye=l(a,"A",{id:!0}),i(ye).forEach(e),on=u(a),ae=l(a,"H2",{class:!0});var it=i(ae);C=l(it,"A",{id:!0,class:!0,href:!0});var nt=i(C);Fn=l(nt,"SPAN",{});var tt=i(Fn);k(Ue.$$.fragment,tt),tt.forEach(e),nt.forEach(e),De=u(it),_n=l(it,"SPAN",{});var gt=i(_n);Ge=m(gt,"Trainieren in nativem PyTorch"),gt.forEach(e),it.forEach(e),dn=u(a),k(We.$$.fragment,a),xe=u(a),Sn=l(a,"A",{id:!0}),i(Sn).forEach(e),Jn=u(a),W=l(a,"H2",{class:!0});var st=i(W);re=l(st,"A",{id:!0,class:!0,href:!0});var Fe=i(re);J=l(Fe,"SPAN",{});var bt=i(J);k(fe.$$.fragment,bt),bt.forEach(e),Fe.forEach(e),pn=u(st),vn=l(st,"SPAN",{});var $n=i(vn);Dn=m($n,"Zus\xE4tzliche Ressourcen"),$n.forEach(e),st.forEach(e),$e=u(a),Te=l(a,"P",{});var mt=i(Te);Ke=m(mt,"Weitere Beispiele f\xFCr die Feinabstimmung finden Sie unter:"),mt.forEach(e),ce=u(a),le=l(a,"UL",{});var ht=i(le);je=l(ht,"LI",{});var wt=i(je);ze=l(wt,"P",{});var ot=i(ze);Ee=l(ot,"A",{href:!0,rel:!0});var ut=i(Ee);mn=m(ut,"\u{1F917} Transformers Examples"),ut.forEach(e),Zn=m(ot,` enth\xE4lt Skripte
um g\xE4ngige NLP-Aufgaben in PyTorch und TensorFlow zu trainieren.`),ot.forEach(e),wt.forEach(e),_e=u(ht),In=l(ht,"LI",{});var Cn=i(In);ge=l(Cn,"P",{});var Mt=i(ge);Mn=l(Mt,"A",{href:!0});var vt=i(Mn);qe=m(vt,"\u{1F917} Transformers Notebooks"),vt.forEach(e),Rn=m(Mt," enth\xE4lt verschiedene Notebooks zur Feinabstimmung eines Modells f\xFCr bestimmte Aufgaben in PyTorch und TensorFlow."),Mt.forEach(e),Cn.forEach(e),ht.forEach(e),this.h()},h(){f(g,"name","hf:doc:metadata"),f(g,"content",JSON.stringify(is)),f(z,"id","optimierung-eines-vortrainierten-modells"),f(z,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(z,"href","#optimierung-eines-vortrainierten-modells"),f(c,"class","relative group"),f(Ze,"id","data-processing"),f(P,"id","vorbereitung-eines-datensatzes"),f(P,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(P,"href","#vorbereitung-eines-datensatzes"),f(ne,"class","relative group"),f(D,"href","https://huggingface.co/datasets/yelp_review_full"),f(D,"rel","nofollow"),f(Ce,"href","https://huggingface.co/docs/datasets/process.html#map"),f(Ce,"rel","nofollow"),f(he,"id","trainer"),f(Xe,"id","training"),f(Xe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(Xe,"href","#training"),f(x,"class","relative group"),f(ye,"id","pytorch_native"),f(C,"id","trainieren-in-nativem-pytorch"),f(C,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(C,"href","#trainieren-in-nativem-pytorch"),f(ae,"class","relative group"),f(Sn,"id","additional-resources"),f(re,"id","zustzliche-ressourcen"),f(re,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(re,"href","#zustzliche-ressourcen"),f(W,"class","relative group"),f(Ee,"href","https://github.com/huggingface/transformers/tree/main/examples"),f(Ee,"rel","nofollow"),f(Mn,"href","notebooks")},m(a,t){n(document.head,g),d(a,E,t),d(a,c,t),n(c,z),n(z,_),y(S,_,null),n(c,F),n(c,Z),n(Z,Ne),d(a,R,t),y(I,a,t),d(a,Ye,t),d(a,V,t),n(V,Pn),d(a,fn,t),d(a,U,t),n(U,be),n(be,Tn),n(be,B),n(B,we),n(be,cn),n(U,gn),n(U,jn),n(jn,Re),n(U,Vn),n(U,O),n(O,Je),d(a,Pe,t),d(a,Ze,t),d(a,ee,t),d(a,ne,t),n(ne,P),n(P,L),y(Oe,L,null),n(ne,en),n(ne,Le),n(Le,zn),d(a,G,t),y(nn,a,t),d(a,te,t),d(a,Be,t),n(Be,tn),d(a,X,t),d(a,de,t),n(de,An),n(de,D),n(D,sn),n(de,Un),d(a,Gn,t),y(pe,a,t),d(a,se,t),d(a,H,t),n(H,Q),n(H,Ce),n(Ce,ve),n(ve,Xn),n(H,Ve),d(a,Ie,t),y(N,a,t),d(a,A,t),d(a,Ae,t),n(Ae,He),d(a,bn,t),y(me,a,t),d(a,Me,t),d(a,he,t),d(a,an,t),d(a,x,t),n(x,Xe),n(Xe,Wn),y(ue,Wn,null),n(x,K),n(x,rn),n(rn,Qe),d(a,ln,t),d(a,En,t),n(En,Ln),d(a,q,t),y(ke,a,t),d(a,wn,t),d(a,ye,t),d(a,on,t),d(a,ae,t),n(ae,C),n(C,Fn),y(Ue,Fn,null),n(ae,De),n(ae,_n),n(_n,Ge),d(a,dn,t),y(We,a,t),d(a,xe,t),d(a,Sn,t),d(a,Jn,t),d(a,W,t),n(W,re),n(re,J),y(fe,J,null),n(W,pn),n(W,vn),n(vn,Dn),d(a,$e,t),d(a,Te,t),n(Te,Ke),d(a,ce,t),d(a,le,t),n(le,je),n(je,ze),n(ze,Ee),n(Ee,mn),n(ze,Zn),n(le,_e),n(le,In),n(In,ge),n(ge,Mn),n(Mn,qe),n(ge,Rn),ie=!0},p(a,[t]){const b={};t&2&&(b.$$scope={dirty:t,ctx:a}),ke.$set(b);const Se={};t&2&&(Se.$$scope={dirty:t,ctx:a}),We.$set(Se)},i(a){ie||($(S.$$.fragment,a),$(I.$$.fragment,a),$(Oe.$$.fragment,a),$(nn.$$.fragment,a),$(pe.$$.fragment,a),$(N.$$.fragment,a),$(me.$$.fragment,a),$(ue.$$.fragment,a),$(ke.$$.fragment,a),$(Ue.$$.fragment,a),$(We.$$.fragment,a),$(fe.$$.fragment,a),ie=!0)},o(a){T(S.$$.fragment,a),T(I.$$.fragment,a),T(Oe.$$.fragment,a),T(nn.$$.fragment,a),T(pe.$$.fragment,a),T(N.$$.fragment,a),T(me.$$.fragment,a),T(ue.$$.fragment,a),T(ke.$$.fragment,a),T(Ue.$$.fragment,a),T(We.$$.fragment,a),T(fe.$$.fragment,a),ie=!1},d(a){e(g),a&&e(E),a&&e(c),j(S),a&&e(R),j(I,a),a&&e(Ye),a&&e(V),a&&e(fn),a&&e(U),a&&e(Pe),a&&e(Ze),a&&e(ee),a&&e(ne),j(Oe),a&&e(G),j(nn,a),a&&e(te),a&&e(Be),a&&e(X),a&&e(de),a&&e(Gn),j(pe,a),a&&e(se),a&&e(H),a&&e(Ie),j(N,a),a&&e(A),a&&e(Ae),a&&e(bn),j(me,a),a&&e(Me),a&&e(he),a&&e(an),a&&e(x),j(ue),a&&e(ln),a&&e(En),a&&e(q),j(ke,a),a&&e(wn),a&&e(ye),a&&e(on),a&&e(ae),j(Ue),a&&e(dn),j(We,a),a&&e(xe),a&&e(Sn),a&&e(Jn),a&&e(W),j(fe),a&&e($e),a&&e(Te),a&&e(ce),a&&e(le)}}}const is={local:"optimierung-eines-vortrainierten-modells",sections:[{local:"vorbereitung-eines-datensatzes",title:"Vorbereitung eines Datensatzes"},{local:"training",title:"Training"},{local:"trainieren-mit-pytorch-trainer",sections:[{local:"hyperparameter-fr-das-training",title:"Hyperparameter f\xFCr das Training"},{local:"auswerten",title:"Auswerten"},{local:"trainer",title:"Trainer"}],title:"Trainieren mit PyTorch Trainer"},{local:"trainieren-sie-ein-tensorflowmodell-mit-keras",sections:[{local:"laden-von-daten-fr-keras",title:"Laden von Daten f\xFCr Keras"},{local:"laden-von-daten-als-tfdatadataset",title:"Laden von Daten als tf.data.Dataset"}],title:"Trainieren Sie ein TensorFlow-Modell mit Keras"},{local:"trainieren-in-nativem-pytorch",sections:[{local:"dataloader",title:"DataLoader"},{local:"optimierer-und-lernratensteuerung",title:"Optimierer und Lernratensteuerung"},{local:"trainingsschleife",title:"Trainingsschleife"},{local:"auswertung",title:"Auswertung"}],title:"Trainieren in nativem PyTorch"},{local:"zustzliche-ressourcen",title:"Zus\xE4tzliche Ressourcen"}],title:"Optimierung eines vortrainierten Modells"};function os(un){return Qt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class gs extends Yt{constructor(g){super();Pt(this,g,os,ls,Lt,{})}}export{gs as default,is as metadata};
