import{S as zr,i as Xr,s as Nr,e as l,k as h,w as d,t as o,M as Yr,c as a,d as t,m,a as i,x as u,h as c,b as p,G as r,g as s,y as f,L as Vr,q as M,o as w,B as y,v as Rr}from"../chunks/vendor-hf-doc-builder.js";import{I as le}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as N}from"../chunks/CodeBlock-hf-doc-builder.js";function Fr(nr){let v,_e,J,$,me,Y,Mt,de,wt,Ce,B,yt,V,Tt,bt,Se,j,E,ue,R,vt,fe,Jt,Ze,ae,jt,We,F,Ge,T,gt,Me,Ut,kt,we,It,At,ze,Q,Xe,g,_,ye,H,$t,Te,Bt,Ne,C,Et,be,_t,Ct,Ye,x,Ve,U,S,ve,P,St,Je,Zt,Re,b,Wt,je,Gt,zt,ge,Xt,Nt,Fe,D,Qe,ie,Yt,He,K,xe,k,Z,Ue,L,Vt,ke,Rt,Pe,se,Ft,De,I,W,Ie,q,Qt,Ae,Ht,Ke,oe,xt,Le,O,qe,ce,Pt,Oe,ee,et,A,G,$e,te,Dt,Be,Kt,tt,z,Lt,Ee,qt,Ot,rt,re,nt,X,er,ne,tr,rr,lt;return Y=new le({}),R=new le({}),F=new N({props:{code:"cGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGU=",highlighted:"pip install accelerate"}}),Q=new N({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUwQSUwQWFjY2VsZXJhdG9yJTIwJTNEJTIwQWNjZWxlcmF0b3IoKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> Accelerator

<span class="hljs-meta">&gt;&gt;&gt; </span>accelerator = Accelerator()`}}),H=new le({}),x=new N({props:{code:"dHJhaW5fZGF0YWxvYWRlciUyQyUyMGV2YWxfZGF0YWxvYWRlciUyQyUyMG1vZGVsJTJDJTIwb3B0aW1pemVyJTIwJTNEJTIwYWNjZWxlcmF0b3IucHJlcGFyZSglMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhbG9hZGVyJTJDJTIwZXZhbF9kYXRhbG9hZGVyJTJDJTIwbW9kZWwlMkMlMjBvcHRpbWl6ZXIlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(
<span class="hljs-meta">... </span>    train_dataloader, eval_dataloader, model, optimizer
<span class="hljs-meta">... </span>)`}}),P=new le({}),D=new N({props:{code:"Zm9yJTIwZXBvY2glMjBpbiUyMHJhbmdlKG51bV9lcG9jaHMpJTNBJTBBJTIwJTIwJTIwJTIwZm9yJTIwYmF0Y2glMjBpbiUyMHRyYWluX2RhdGFsb2FkZXIlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWNjZWxlcmF0b3IuYmFja3dhcmQobG9zcyklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuc3RlcCgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbHJfc2NoZWR1bGVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplci56ZXJvX2dyYWQoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByb2dyZXNzX2Jhci51cGRhdGUoMSk=",highlighted:`<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>        outputs = model(**batch)
<span class="hljs-meta">... </span>        loss = outputs.loss
<span class="hljs-meta">... </span>        accelerator.backward(loss)

<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>)`}}),K=new N({props:{code:"JTJCJTIwZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUwQSUyMCUyMGZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBBZGFtVyUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMkMlMjBnZXRfc2NoZWR1bGVyJTBBJTBBJTJCJTIwYWNjZWxlcmF0b3IlMjAlM0QlMjBBY2NlbGVyYXRvcigpJTBBJTBBJTIwJTIwbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50JTJDJTIwbnVtX2xhYmVscyUzRDIpJTBBJTIwJTIwb3B0aW1pemVyJTIwJTNEJTIwQWRhbVcobW9kZWwucGFyYW1ldGVycygpJTJDJTIwbHIlM0QzZS01KSUwQSUwQS0lMjBkZXZpY2UlMjAlM0QlMjB0b3JjaC5kZXZpY2UoJTIyY3VkYSUyMiklMjBpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklMjBlbHNlJTIwdG9yY2guZGV2aWNlKCUyMmNwdSUyMiklMEEtJTIwbW9kZWwudG8oZGV2aWNlKSUwQSUwQSUyQiUyMHRyYWluX2RhdGFsb2FkZXIlMkMlMjBldmFsX2RhdGFsb2FkZXIlMkMlMjBtb2RlbCUyQyUyMG9wdGltaXplciUyMCUzRCUyMGFjY2VsZXJhdG9yLnByZXBhcmUoJTBBJTJCJTIwJTIwJTIwJTIwJTIwdHJhaW5fZGF0YWxvYWRlciUyQyUyMGV2YWxfZGF0YWxvYWRlciUyQyUyMG1vZGVsJTJDJTIwb3B0aW1pemVyJTBBJTJCJTIwKSUwQSUwQSUyMCUyMG51bV9lcG9jaHMlMjAlM0QlMjAzJTBBJTIwJTIwbnVtX3RyYWluaW5nX3N0ZXBzJTIwJTNEJTIwbnVtX2Vwb2NocyUyMColMjBsZW4odHJhaW5fZGF0YWxvYWRlciklMEElMjAlMjBscl9zY2hlZHVsZXIlMjAlM0QlMjBnZXRfc2NoZWR1bGVyKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMmxpbmVhciUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplciUzRG9wdGltaXplciUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMG51bV93YXJtdXBfc3RlcHMlM0QwJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwbnVtX3RyYWluaW5nX3N0ZXBzJTNEbnVtX3RyYWluaW5nX3N0ZXBzJTBBJTIwJTIwKSUwQSUwQSUyMCUyMHByb2dyZXNzX2JhciUyMCUzRCUyMHRxZG0ocmFuZ2UobnVtX3RyYWluaW5nX3N0ZXBzKSklMEElMEElMjAlMjBtb2RlbC50cmFpbigpJTBBJTIwJTIwZm9yJTIwZXBvY2glMjBpbiUyMHJhbmdlKG51bV9lcG9jaHMpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwZm9yJTIwYmF0Y2glMjBpbiUyMHRyYWluX2RhdGFsb2FkZXIlM0ElMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvc3MuYmFja3dhcmQoKSUwQSUyQiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFjY2VsZXJhdG9yLmJhY2t3YXJkKGxvc3MpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3B0aW1pemVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxyX3NjaGVkdWxlci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuemVyb19ncmFkKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIudXBkYXRlKDEp",highlighted:`<span class="hljs-addition">+ from accelerate import Accelerator</span>
  from transformers import AdamW, AutoModelForSequenceClassification, get_scheduler

<span class="hljs-addition">+ accelerator = Accelerator()</span>

  model = AutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=2)
  optimizer = AdamW(model.parameters(), lr=3e-5)

<span class="hljs-deletion">- device = torch.device(&quot;cuda&quot;) if torch.cuda.is_available() else torch.device(&quot;cpu&quot;)</span>
<span class="hljs-deletion">- model.to(device)</span>

<span class="hljs-addition">+ train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(</span>
<span class="hljs-addition">+     train_dataloader, eval_dataloader, model, optimizer</span>
<span class="hljs-addition">+ )</span>

  num_epochs = 3
  num_training_steps = num_epochs * len(train_dataloader)
  lr_scheduler = get_scheduler(
      &quot;linear&quot;,
      optimizer=optimizer,
      num_warmup_steps=0,
      num_training_steps=num_training_steps
  )

  progress_bar = tqdm(range(num_training_steps))

  model.train()
  for epoch in range(num_epochs):
      for batch in train_dataloader:
<span class="hljs-deletion">-         batch = {k: v.to(device) for k, v in batch.items()}</span>
          outputs = model(**batch)
          loss = outputs.loss
<span class="hljs-deletion">-         loss.backward()</span>
<span class="hljs-addition">+         accelerator.backward(loss)</span>

          optimizer.step()
          lr_scheduler.step()
          optimizer.zero_grad()
          progress_bar.update(1)`}}),L=new le({}),q=new le({}),O=new N({props:{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZw==",highlighted:"accelerate config"}}),ee=new N({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMHRyYWluLnB5",highlighted:"accelerate launch train.py"}}),te=new le({}),re=new N({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBub3RlYm9va19sYXVuY2hlciUwQSUwQW5vdGVib29rX2xhdW5jaGVyKHRyYWluaW5nX2Z1bmN0aW9uKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> notebook_launcher

<span class="hljs-meta">&gt;&gt;&gt; </span>notebook_launcher(training_function)`}}),{c(){v=l("meta"),_e=h(),J=l("h1"),$=l("a"),me=l("span"),d(Y.$$.fragment),Mt=h(),de=l("span"),wt=o("Verteiltes Training mit \u{1F917} Accelerate"),Ce=h(),B=l("p"),yt=o("Da die Modelle immer gr\xF6\xDFer werden, hat sich die Parallelit\xE4t als Strategie zum Trainieren gr\xF6\xDFerer Modelle auf begrenzter Hardware und zur Beschleunigung der Trainingsgeschwindigkeit um mehrere Gr\xF6\xDFenordnungen erwiesen. Bei Hugging Face haben wir die Bibliothek "),V=l("a"),Tt=o("\u{1F917} Accelerate"),bt=o(" entwickelt, um Nutzern zu helfen, ein \u{1F917} Transformers-Modell auf jeder Art von verteiltem Setup zu trainieren, egal ob es sich um mehrere GPUs auf einer Maschine oder mehrere GPUs auf mehreren Maschinen handelt. In diesem Tutorial lernen Sie, wie Sie Ihre native PyTorch-Trainingsschleife anpassen, um das Training in einer verteilten Umgebung zu erm\xF6glichen."),Se=h(),j=l("h2"),E=l("a"),ue=l("span"),d(R.$$.fragment),vt=h(),fe=l("span"),Jt=o("Einrichtung"),Ze=h(),ae=l("p"),jt=o("Beginnen Sie mit der Installation von \u{1F917} Accelerate:"),We=h(),d(F.$$.fragment),Ge=h(),T=l("p"),gt=o("Dann importieren und erstellen Sie ein "),Me=l("code"),Ut=o("Accelerator"),kt=o("-Objekt. Der "),we=l("code"),It=o("Accelerator"),At=o(" wird automatisch Ihre Art der verteilten Einrichtung erkennen und alle notwendigen Komponenten f\xFCr das Training initialisieren. Sie m\xFCssen Ihr Modell nicht explizit auf einem Ger\xE4t platzieren."),ze=h(),d(Q.$$.fragment),Xe=h(),g=l("h2"),_=l("a"),ye=l("span"),d(H.$$.fragment),$t=h(),Te=l("span"),Bt=o("Vorbereiten auf die Beschleunigung"),Ne=h(),C=l("p"),Et=o("Der n\xE4chste Schritt ist die \xDCbergabe aller relevanten Trainingsobjekte an die Methode "),be=l("code"),_t=o("prepare"),Ct=o(". Dazu geh\xF6ren Ihre Trainings- und Evaluierungs-DataLoader, ein Modell und ein Optimierer:"),Ye=h(),d(x.$$.fragment),Ve=h(),U=l("h2"),S=l("a"),ve=l("span"),d(P.$$.fragment),St=h(),Je=l("span"),Zt=o("R\xFCckw\xE4rts"),Re=h(),b=l("p"),Wt=o("Die letzte Erg\xE4nzung besteht darin, das typische "),je=l("code"),Gt=o("loss.backward()"),zt=o(" in der Trainingsschleife durch die \u{1F917} Accelerate-Methode "),ge=l("code"),Xt=o("backward"),Nt=o(" zu ersetzen:"),Fe=h(),d(D.$$.fragment),Qe=h(),ie=l("p"),Yt=o("Wie Sie im folgenden Code sehen k\xF6nnen, m\xFCssen Sie nur vier zus\xE4tzliche Codezeilen zu Ihrer Trainingsschleife hinzuf\xFCgen, um verteiltes Training zu erm\xF6glichen!"),He=h(),d(K.$$.fragment),xe=h(),k=l("h2"),Z=l("a"),Ue=l("span"),d(L.$$.fragment),Vt=h(),ke=l("span"),Rt=o("Trainieren"),Pe=h(),se=l("p"),Ft=o("Sobald Sie die entsprechenden Codezeilen hinzugef\xFCgt haben, starten Sie Ihr Training in einem Skript oder einem Notebook wie Colaboratory."),De=h(),I=l("h3"),W=l("a"),Ie=l("span"),d(q.$$.fragment),Qt=h(),Ae=l("span"),Ht=o("Trainieren mit einem Skript"),Ke=h(),oe=l("p"),xt=o("Wenn Sie Ihr Training mit einem Skript durchf\xFChren, f\xFChren Sie den folgenden Befehl aus, um eine Konfigurationsdatei zu erstellen und zu speichern:"),Le=h(),d(O.$$.fragment),qe=h(),ce=l("p"),Pt=o("Dann starten Sie Ihr Training mit:"),Oe=h(),d(ee.$$.fragment),et=h(),A=l("h3"),G=l("a"),$e=l("span"),d(te.$$.fragment),Dt=h(),Be=l("span"),Kt=o("Trainieren mit einem Notebook"),tt=h(),z=l("p"),Lt=o("\u{1F917} Accelerate kann auch in einem Notebook laufen, wenn Sie planen, die TPUs von Colaboratory zu verwenden. Verpacken Sie den gesamten Code, der f\xFCr das Training verantwortlich ist, in eine Funktion und \xFCbergeben Sie diese an "),Ee=l("code"),qt=o("notebook_launcher"),Ot=o(":"),rt=h(),d(re.$$.fragment),nt=h(),X=l("p"),er=o("Weitere Informationen \xFCber \u{1F917} Accelerate und seine umfangreichen Funktionen finden Sie in der "),ne=l("a"),tr=o("Dokumentation"),rr=o("."),this.h()},l(e){const n=Yr('[data-svelte="svelte-1phssyn"]',document.head);v=a(n,"META",{name:!0,content:!0}),n.forEach(t),_e=m(e),J=a(e,"H1",{class:!0});var at=i(J);$=a(at,"A",{id:!0,class:!0,href:!0});var lr=i($);me=a(lr,"SPAN",{});var ar=i(me);u(Y.$$.fragment,ar),ar.forEach(t),lr.forEach(t),Mt=m(at),de=a(at,"SPAN",{});var ir=i(de);wt=c(ir,"Verteiltes Training mit \u{1F917} Accelerate"),ir.forEach(t),at.forEach(t),Ce=m(e),B=a(e,"P",{});var it=i(B);yt=c(it,"Da die Modelle immer gr\xF6\xDFer werden, hat sich die Parallelit\xE4t als Strategie zum Trainieren gr\xF6\xDFerer Modelle auf begrenzter Hardware und zur Beschleunigung der Trainingsgeschwindigkeit um mehrere Gr\xF6\xDFenordnungen erwiesen. Bei Hugging Face haben wir die Bibliothek "),V=a(it,"A",{href:!0,rel:!0});var sr=i(V);Tt=c(sr,"\u{1F917} Accelerate"),sr.forEach(t),bt=c(it," entwickelt, um Nutzern zu helfen, ein \u{1F917} Transformers-Modell auf jeder Art von verteiltem Setup zu trainieren, egal ob es sich um mehrere GPUs auf einer Maschine oder mehrere GPUs auf mehreren Maschinen handelt. In diesem Tutorial lernen Sie, wie Sie Ihre native PyTorch-Trainingsschleife anpassen, um das Training in einer verteilten Umgebung zu erm\xF6glichen."),it.forEach(t),Se=m(e),j=a(e,"H2",{class:!0});var st=i(j);E=a(st,"A",{id:!0,class:!0,href:!0});var or=i(E);ue=a(or,"SPAN",{});var cr=i(ue);u(R.$$.fragment,cr),cr.forEach(t),or.forEach(t),vt=m(st),fe=a(st,"SPAN",{});var pr=i(fe);Jt=c(pr,"Einrichtung"),pr.forEach(t),st.forEach(t),Ze=m(e),ae=a(e,"P",{});var hr=i(ae);jt=c(hr,"Beginnen Sie mit der Installation von \u{1F917} Accelerate:"),hr.forEach(t),We=m(e),u(F.$$.fragment,e),Ge=m(e),T=a(e,"P",{});var pe=i(T);gt=c(pe,"Dann importieren und erstellen Sie ein "),Me=a(pe,"CODE",{});var mr=i(Me);Ut=c(mr,"Accelerator"),mr.forEach(t),kt=c(pe,"-Objekt. Der "),we=a(pe,"CODE",{});var dr=i(we);It=c(dr,"Accelerator"),dr.forEach(t),At=c(pe," wird automatisch Ihre Art der verteilten Einrichtung erkennen und alle notwendigen Komponenten f\xFCr das Training initialisieren. Sie m\xFCssen Ihr Modell nicht explizit auf einem Ger\xE4t platzieren."),pe.forEach(t),ze=m(e),u(Q.$$.fragment,e),Xe=m(e),g=a(e,"H2",{class:!0});var ot=i(g);_=a(ot,"A",{id:!0,class:!0,href:!0});var ur=i(_);ye=a(ur,"SPAN",{});var fr=i(ye);u(H.$$.fragment,fr),fr.forEach(t),ur.forEach(t),$t=m(ot),Te=a(ot,"SPAN",{});var Mr=i(Te);Bt=c(Mr,"Vorbereiten auf die Beschleunigung"),Mr.forEach(t),ot.forEach(t),Ne=m(e),C=a(e,"P",{});var ct=i(C);Et=c(ct,"Der n\xE4chste Schritt ist die \xDCbergabe aller relevanten Trainingsobjekte an die Methode "),be=a(ct,"CODE",{});var wr=i(be);_t=c(wr,"prepare"),wr.forEach(t),Ct=c(ct,". Dazu geh\xF6ren Ihre Trainings- und Evaluierungs-DataLoader, ein Modell und ein Optimierer:"),ct.forEach(t),Ye=m(e),u(x.$$.fragment,e),Ve=m(e),U=a(e,"H2",{class:!0});var pt=i(U);S=a(pt,"A",{id:!0,class:!0,href:!0});var yr=i(S);ve=a(yr,"SPAN",{});var Tr=i(ve);u(P.$$.fragment,Tr),Tr.forEach(t),yr.forEach(t),St=m(pt),Je=a(pt,"SPAN",{});var br=i(Je);Zt=c(br,"R\xFCckw\xE4rts"),br.forEach(t),pt.forEach(t),Re=m(e),b=a(e,"P",{});var he=i(b);Wt=c(he,"Die letzte Erg\xE4nzung besteht darin, das typische "),je=a(he,"CODE",{});var vr=i(je);Gt=c(vr,"loss.backward()"),vr.forEach(t),zt=c(he," in der Trainingsschleife durch die \u{1F917} Accelerate-Methode "),ge=a(he,"CODE",{});var Jr=i(ge);Xt=c(Jr,"backward"),Jr.forEach(t),Nt=c(he," zu ersetzen:"),he.forEach(t),Fe=m(e),u(D.$$.fragment,e),Qe=m(e),ie=a(e,"P",{});var jr=i(ie);Yt=c(jr,"Wie Sie im folgenden Code sehen k\xF6nnen, m\xFCssen Sie nur vier zus\xE4tzliche Codezeilen zu Ihrer Trainingsschleife hinzuf\xFCgen, um verteiltes Training zu erm\xF6glichen!"),jr.forEach(t),He=m(e),u(K.$$.fragment,e),xe=m(e),k=a(e,"H2",{class:!0});var ht=i(k);Z=a(ht,"A",{id:!0,class:!0,href:!0});var gr=i(Z);Ue=a(gr,"SPAN",{});var Ur=i(Ue);u(L.$$.fragment,Ur),Ur.forEach(t),gr.forEach(t),Vt=m(ht),ke=a(ht,"SPAN",{});var kr=i(ke);Rt=c(kr,"Trainieren"),kr.forEach(t),ht.forEach(t),Pe=m(e),se=a(e,"P",{});var Ir=i(se);Ft=c(Ir,"Sobald Sie die entsprechenden Codezeilen hinzugef\xFCgt haben, starten Sie Ihr Training in einem Skript oder einem Notebook wie Colaboratory."),Ir.forEach(t),De=m(e),I=a(e,"H3",{class:!0});var mt=i(I);W=a(mt,"A",{id:!0,class:!0,href:!0});var Ar=i(W);Ie=a(Ar,"SPAN",{});var $r=i(Ie);u(q.$$.fragment,$r),$r.forEach(t),Ar.forEach(t),Qt=m(mt),Ae=a(mt,"SPAN",{});var Br=i(Ae);Ht=c(Br,"Trainieren mit einem Skript"),Br.forEach(t),mt.forEach(t),Ke=m(e),oe=a(e,"P",{});var Er=i(oe);xt=c(Er,"Wenn Sie Ihr Training mit einem Skript durchf\xFChren, f\xFChren Sie den folgenden Befehl aus, um eine Konfigurationsdatei zu erstellen und zu speichern:"),Er.forEach(t),Le=m(e),u(O.$$.fragment,e),qe=m(e),ce=a(e,"P",{});var _r=i(ce);Pt=c(_r,"Dann starten Sie Ihr Training mit:"),_r.forEach(t),Oe=m(e),u(ee.$$.fragment,e),et=m(e),A=a(e,"H3",{class:!0});var dt=i(A);G=a(dt,"A",{id:!0,class:!0,href:!0});var Cr=i(G);$e=a(Cr,"SPAN",{});var Sr=i($e);u(te.$$.fragment,Sr),Sr.forEach(t),Cr.forEach(t),Dt=m(dt),Be=a(dt,"SPAN",{});var Zr=i(Be);Kt=c(Zr,"Trainieren mit einem Notebook"),Zr.forEach(t),dt.forEach(t),tt=m(e),z=a(e,"P",{});var ut=i(z);Lt=c(ut,"\u{1F917} Accelerate kann auch in einem Notebook laufen, wenn Sie planen, die TPUs von Colaboratory zu verwenden. Verpacken Sie den gesamten Code, der f\xFCr das Training verantwortlich ist, in eine Funktion und \xFCbergeben Sie diese an "),Ee=a(ut,"CODE",{});var Wr=i(Ee);qt=c(Wr,"notebook_launcher"),Wr.forEach(t),Ot=c(ut,":"),ut.forEach(t),rt=m(e),u(re.$$.fragment,e),nt=m(e),X=a(e,"P",{});var ft=i(X);er=c(ft,"Weitere Informationen \xFCber \u{1F917} Accelerate und seine umfangreichen Funktionen finden Sie in der "),ne=a(ft,"A",{href:!0,rel:!0});var Gr=i(ne);tr=c(Gr,"Dokumentation"),Gr.forEach(t),rr=c(ft,"."),ft.forEach(t),this.h()},h(){p(v,"name","hf:doc:metadata"),p(v,"content",JSON.stringify(Qr)),p($,"id","verteiltes-training-mit-accelerate"),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"),p($,"href","#verteiltes-training-mit-accelerate"),p(J,"class","relative group"),p(V,"href","https://huggingface.co/docs/accelerate"),p(V,"rel","nofollow"),p(E,"id","einrichtung"),p(E,"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"),p(E,"href","#einrichtung"),p(j,"class","relative group"),p(_,"id","vorbereiten-auf-die-beschleunigung"),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"),p(_,"href","#vorbereiten-auf-die-beschleunigung"),p(g,"class","relative group"),p(S,"id","rckwrts"),p(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"),p(S,"href","#rckwrts"),p(U,"class","relative group"),p(Z,"id","trainieren"),p(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"),p(Z,"href","#trainieren"),p(k,"class","relative group"),p(W,"id","trainieren-mit-einem-skript"),p(W,"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"),p(W,"href","#trainieren-mit-einem-skript"),p(I,"class","relative group"),p(G,"id","trainieren-mit-einem-notebook"),p(G,"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"),p(G,"href","#trainieren-mit-einem-notebook"),p(A,"class","relative group"),p(ne,"href","https://huggingface.co/docs/accelerate"),p(ne,"rel","nofollow")},m(e,n){r(document.head,v),s(e,_e,n),s(e,J,n),r(J,$),r($,me),f(Y,me,null),r(J,Mt),r(J,de),r(de,wt),s(e,Ce,n),s(e,B,n),r(B,yt),r(B,V),r(V,Tt),r(B,bt),s(e,Se,n),s(e,j,n),r(j,E),r(E,ue),f(R,ue,null),r(j,vt),r(j,fe),r(fe,Jt),s(e,Ze,n),s(e,ae,n),r(ae,jt),s(e,We,n),f(F,e,n),s(e,Ge,n),s(e,T,n),r(T,gt),r(T,Me),r(Me,Ut),r(T,kt),r(T,we),r(we,It),r(T,At),s(e,ze,n),f(Q,e,n),s(e,Xe,n),s(e,g,n),r(g,_),r(_,ye),f(H,ye,null),r(g,$t),r(g,Te),r(Te,Bt),s(e,Ne,n),s(e,C,n),r(C,Et),r(C,be),r(be,_t),r(C,Ct),s(e,Ye,n),f(x,e,n),s(e,Ve,n),s(e,U,n),r(U,S),r(S,ve),f(P,ve,null),r(U,St),r(U,Je),r(Je,Zt),s(e,Re,n),s(e,b,n),r(b,Wt),r(b,je),r(je,Gt),r(b,zt),r(b,ge),r(ge,Xt),r(b,Nt),s(e,Fe,n),f(D,e,n),s(e,Qe,n),s(e,ie,n),r(ie,Yt),s(e,He,n),f(K,e,n),s(e,xe,n),s(e,k,n),r(k,Z),r(Z,Ue),f(L,Ue,null),r(k,Vt),r(k,ke),r(ke,Rt),s(e,Pe,n),s(e,se,n),r(se,Ft),s(e,De,n),s(e,I,n),r(I,W),r(W,Ie),f(q,Ie,null),r(I,Qt),r(I,Ae),r(Ae,Ht),s(e,Ke,n),s(e,oe,n),r(oe,xt),s(e,Le,n),f(O,e,n),s(e,qe,n),s(e,ce,n),r(ce,Pt),s(e,Oe,n),f(ee,e,n),s(e,et,n),s(e,A,n),r(A,G),r(G,$e),f(te,$e,null),r(A,Dt),r(A,Be),r(Be,Kt),s(e,tt,n),s(e,z,n),r(z,Lt),r(z,Ee),r(Ee,qt),r(z,Ot),s(e,rt,n),f(re,e,n),s(e,nt,n),s(e,X,n),r(X,er),r(X,ne),r(ne,tr),r(X,rr),lt=!0},p:Vr,i(e){lt||(M(Y.$$.fragment,e),M(R.$$.fragment,e),M(F.$$.fragment,e),M(Q.$$.fragment,e),M(H.$$.fragment,e),M(x.$$.fragment,e),M(P.$$.fragment,e),M(D.$$.fragment,e),M(K.$$.fragment,e),M(L.$$.fragment,e),M(q.$$.fragment,e),M(O.$$.fragment,e),M(ee.$$.fragment,e),M(te.$$.fragment,e),M(re.$$.fragment,e),lt=!0)},o(e){w(Y.$$.fragment,e),w(R.$$.fragment,e),w(F.$$.fragment,e),w(Q.$$.fragment,e),w(H.$$.fragment,e),w(x.$$.fragment,e),w(P.$$.fragment,e),w(D.$$.fragment,e),w(K.$$.fragment,e),w(L.$$.fragment,e),w(q.$$.fragment,e),w(O.$$.fragment,e),w(ee.$$.fragment,e),w(te.$$.fragment,e),w(re.$$.fragment,e),lt=!1},d(e){t(v),e&&t(_e),e&&t(J),y(Y),e&&t(Ce),e&&t(B),e&&t(Se),e&&t(j),y(R),e&&t(Ze),e&&t(ae),e&&t(We),y(F,e),e&&t(Ge),e&&t(T),e&&t(ze),y(Q,e),e&&t(Xe),e&&t(g),y(H),e&&t(Ne),e&&t(C),e&&t(Ye),y(x,e),e&&t(Ve),e&&t(U),y(P),e&&t(Re),e&&t(b),e&&t(Fe),y(D,e),e&&t(Qe),e&&t(ie),e&&t(He),y(K,e),e&&t(xe),e&&t(k),y(L),e&&t(Pe),e&&t(se),e&&t(De),e&&t(I),y(q),e&&t(Ke),e&&t(oe),e&&t(Le),y(O,e),e&&t(qe),e&&t(ce),e&&t(Oe),y(ee,e),e&&t(et),e&&t(A),y(te),e&&t(tt),e&&t(z),e&&t(rt),y(re,e),e&&t(nt),e&&t(X)}}}const Qr={local:"verteiltes-training-mit-accelerate",sections:[{local:"einrichtung",title:"Einrichtung"},{local:"vorbereiten-auf-die-beschleunigung",title:"Vorbereiten auf die Beschleunigung"},{local:"rckwrts",title:"R\xFCckw\xE4rts"},{local:"trainieren",sections:[{local:"trainieren-mit-einem-skript",title:"Trainieren mit einem Skript"},{local:"trainieren-mit-einem-notebook",title:"Trainieren mit einem Notebook"}],title:"Trainieren"}],title:"Verteiltes Training mit \u{1F917} Accelerate"};function Hr(nr){return Rr(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Kr extends zr{constructor(v){super();Xr(this,v,Hr,Fr,Nr,{})}}export{Kr as default,Qr as metadata};
