import{S as Qt,i as Ft,s as Pt,e as r,k as d,w as u,t as c,M as Ht,c as o,d as a,m,a as n,x as h,h as p,b as i,G as t,g as s,y as f,L as xt,q as M,o as y,B as w,v as Kt}from"../chunks/vendor-hf-doc-builder.js";import{I as se}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as S}from"../chunks/CodeBlock-hf-doc-builder.js";function qt(nt){let j,Ge,v,_,fe,V,ba,Me,Ja,We,g,ja,R,va,Ua,Xe,U,k,ye,z,Ta,we,Aa,Ye,ie,Ea,Ne,Q,Se,b,$a,F,be,Ia,_a,Je,ga,ka,Ve,P,Re,T,B,je,H,Ba,ve,Ca,ze,C,Za,x,Ue,Ga,Wa,Qe,K,Fe,A,Z,Te,q,Xa,Ae,Ya,Pe,J,Na,Ee,Sa,Va,D,$e,Ra,za,He,L,xe,ce,Qa,Ke,O,qe,E,G,Ie,ee,Fa,_e,Pa,De,pe,Ha,Le,$,W,ge,ae,xa,ke,Ka,Oe,de,qa,ea,te,aa,me,Da,ta,le,la,I,X,Be,re,La,Ce,Oa,ra,Y,et,Ze,at,tt,oa,oe,na,N,lt,ne,rt,ot,sa;return V=new se({}),z=new se({}),Q=new S({props:{code:"cGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGU=",highlighted:"pip install accelerate"}}),P=new S({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 se({}),K=new S({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>)`}}),q=new se({}),L=new S({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>)`}}),O=new S({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)`}}),ee=new se({}),ae=new se({}),te=new S({props:{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZw==",highlighted:"accelerate config"}}),le=new S({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMHRyYWluLnB5",highlighted:"accelerate launch train.py"}}),re=new se({}),oe=new S({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(){j=r("meta"),Ge=d(),v=r("h1"),_=r("a"),fe=r("span"),u(V.$$.fragment),ba=d(),Me=r("span"),Ja=c("Entrenamiento distribuido con \u{1F917} Accelerate"),We=d(),g=r("p"),ja=c("El paralelismo ha emergido como una estrategia para entrenar modelos grandes en hardware limitado e incrementar la velocidad de entrenamiento en varios \xF3rdenes de magnitud. En Hugging Face creamos la biblioteca "),R=r("a"),va=c("\u{1F917} Accelerate"),Ua=c(" para ayudar a los usuarios a entrenar modelos \u{1F917} Transformers en cualquier tipo de configuraci\xF3n distribuida, ya sea en una m\xE1quina con m\xFAltiples GPUs o en m\xFAltiples GPUs distribuidas entre muchas m\xE1quinas. En este tutorial aprender\xE1s c\xF3mo personalizar tu bucle de entrenamiento de PyTorch nativo para poder entrenar en entornos distribuidos."),Xe=d(),U=r("h2"),k=r("a"),ye=r("span"),u(z.$$.fragment),Ta=d(),we=r("span"),Aa=c("Configuraci\xF3n"),Ye=d(),ie=r("p"),Ea=c("Empecemos por instalar \u{1F917} Accelerate:"),Ne=d(),u(Q.$$.fragment),Se=d(),b=r("p"),$a=c("Luego, importamos y creamos un objeto "),F=r("a"),be=r("code"),Ia=c("Accelerator"),_a=c(". "),Je=r("code"),ga=c("Accelerator"),ka=c(" detectar\xE1 autom\xE1ticamente el tipo de configuraci\xF3n distribuida que tengas disponible e inicializar\xE1 todos los componentes necesarios para el entrenamiento. No necesitas especificar el dispositivo en donde se debe colocar tu modelo."),Ve=d(),u(P.$$.fragment),Re=d(),T=r("h2"),B=r("a"),je=r("span"),u(H.$$.fragment),Ba=d(),ve=r("span"),Ca=c("Prep\xE1rate para acelerar"),ze=d(),C=r("p"),Za=c("Pasa todos los objetos relevantes para el entrenamiento al m\xE9todo "),x=r("a"),Ue=r("code"),Ga=c("prepare"),Wa=c(". Esto incluye los DataLoaders de entrenamiento y evaluaci\xF3n, un modelo y un optimizador:"),Qe=d(),u(K.$$.fragment),Fe=d(),A=r("h2"),Z=r("a"),Te=r("span"),u(q.$$.fragment),Xa=d(),Ae=r("span"),Ya=c("Backward"),Pe=d(),J=r("p"),Na=c("Por \xFAltimo, reemplaza el t\xEDpico "),Ee=r("code"),Sa=c("loss.backward()"),Va=c(" en tu bucle de entrenamiento con el m\xE9todo "),D=r("a"),$e=r("code"),Ra=c("backward"),za=c(" de \u{1F917} Accelerate:"),He=d(),u(L.$$.fragment),xe=d(),ce=r("p"),Qa=c("Como se puede ver en el siguiente c\xF3digo, \xA1solo necesitas adicionar cuatro l\xEDneas de c\xF3digo a tu bucle de entrenamiento para habilitar el entrenamiento distribuido!"),Ke=d(),u(O.$$.fragment),qe=d(),E=r("h2"),G=r("a"),Ie=r("span"),u(ee.$$.fragment),Fa=d(),_e=r("span"),Pa=c("Entrenamiento"),De=d(),pe=r("p"),Ha=c("Una vez que hayas a\xF1adido las l\xEDneas de c\xF3digo relevantes, inicia el entrenamiento desde un script o notebook como Colaboratory."),Le=d(),$=r("h3"),W=r("a"),ge=r("span"),u(ae.$$.fragment),xa=d(),ke=r("span"),Ka=c("Entrenar con un script"),Oe=d(),de=r("p"),qa=c("Si est\xE1s corriendo tu entrenamiento desde un script ejecuta el siguiente comando para crear y guardar un archivo de configuraci\xF3n:"),ea=d(),u(te.$$.fragment),aa=d(),me=r("p"),Da=c("Comienza el entrenamiento con:"),ta=d(),u(le.$$.fragment),la=d(),I=r("h3"),X=r("a"),Be=r("span"),u(re.$$.fragment),La=d(),Ce=r("span"),Oa=c("Entrenar con un notebook"),ra=d(),Y=r("p"),et=c("\u{1F917} Accelerate puede correr en un notebook si, por ejemplo, est\xE1s planeando utilizar las TPUs de Colaboratory. Encierra el c\xF3digo responsable del entrenamiento en una funci\xF3n y p\xE1salo a "),Ze=r("code"),at=c("notebook_launcher"),tt=c(":"),oa=d(),u(oe.$$.fragment),na=d(),N=r("p"),lt=c("Para obtener m\xE1s informaci\xF3n sobre \u{1F917} Accelerate y sus numerosas funciones, consulta la "),ne=r("a"),rt=c("documentaci\xF3n"),ot=c("."),this.h()},l(e){const l=Ht('[data-svelte="svelte-1phssyn"]',document.head);j=o(l,"META",{name:!0,content:!0}),l.forEach(a),Ge=m(e),v=o(e,"H1",{class:!0});var ia=n(v);_=o(ia,"A",{id:!0,class:!0,href:!0});var st=n(_);fe=o(st,"SPAN",{});var it=n(fe);h(V.$$.fragment,it),it.forEach(a),st.forEach(a),ba=m(ia),Me=o(ia,"SPAN",{});var ct=n(Me);Ja=p(ct,"Entrenamiento distribuido con \u{1F917} Accelerate"),ct.forEach(a),ia.forEach(a),We=m(e),g=o(e,"P",{});var ca=n(g);ja=p(ca,"El paralelismo ha emergido como una estrategia para entrenar modelos grandes en hardware limitado e incrementar la velocidad de entrenamiento en varios \xF3rdenes de magnitud. En Hugging Face creamos la biblioteca "),R=o(ca,"A",{href:!0,rel:!0});var pt=n(R);va=p(pt,"\u{1F917} Accelerate"),pt.forEach(a),Ua=p(ca," para ayudar a los usuarios a entrenar modelos \u{1F917} Transformers en cualquier tipo de configuraci\xF3n distribuida, ya sea en una m\xE1quina con m\xFAltiples GPUs o en m\xFAltiples GPUs distribuidas entre muchas m\xE1quinas. En este tutorial aprender\xE1s c\xF3mo personalizar tu bucle de entrenamiento de PyTorch nativo para poder entrenar en entornos distribuidos."),ca.forEach(a),Xe=m(e),U=o(e,"H2",{class:!0});var pa=n(U);k=o(pa,"A",{id:!0,class:!0,href:!0});var dt=n(k);ye=o(dt,"SPAN",{});var mt=n(ye);h(z.$$.fragment,mt),mt.forEach(a),dt.forEach(a),Ta=m(pa),we=o(pa,"SPAN",{});var ut=n(we);Aa=p(ut,"Configuraci\xF3n"),ut.forEach(a),pa.forEach(a),Ye=m(e),ie=o(e,"P",{});var ht=n(ie);Ea=p(ht,"Empecemos por instalar \u{1F917} Accelerate:"),ht.forEach(a),Ne=m(e),h(Q.$$.fragment,e),Se=m(e),b=o(e,"P",{});var ue=n(b);$a=p(ue,"Luego, importamos y creamos un objeto "),F=o(ue,"A",{href:!0,rel:!0});var ft=n(F);be=o(ft,"CODE",{});var Mt=n(be);Ia=p(Mt,"Accelerator"),Mt.forEach(a),ft.forEach(a),_a=p(ue,". "),Je=o(ue,"CODE",{});var yt=n(Je);ga=p(yt,"Accelerator"),yt.forEach(a),ka=p(ue," detectar\xE1 autom\xE1ticamente el tipo de configuraci\xF3n distribuida que tengas disponible e inicializar\xE1 todos los componentes necesarios para el entrenamiento. No necesitas especificar el dispositivo en donde se debe colocar tu modelo."),ue.forEach(a),Ve=m(e),h(P.$$.fragment,e),Re=m(e),T=o(e,"H2",{class:!0});var da=n(T);B=o(da,"A",{id:!0,class:!0,href:!0});var wt=n(B);je=o(wt,"SPAN",{});var bt=n(je);h(H.$$.fragment,bt),bt.forEach(a),wt.forEach(a),Ba=m(da),ve=o(da,"SPAN",{});var Jt=n(ve);Ca=p(Jt,"Prep\xE1rate para acelerar"),Jt.forEach(a),da.forEach(a),ze=m(e),C=o(e,"P",{});var ma=n(C);Za=p(ma,"Pasa todos los objetos relevantes para el entrenamiento al m\xE9todo "),x=o(ma,"A",{href:!0,rel:!0});var jt=n(x);Ue=o(jt,"CODE",{});var vt=n(Ue);Ga=p(vt,"prepare"),vt.forEach(a),jt.forEach(a),Wa=p(ma,". Esto incluye los DataLoaders de entrenamiento y evaluaci\xF3n, un modelo y un optimizador:"),ma.forEach(a),Qe=m(e),h(K.$$.fragment,e),Fe=m(e),A=o(e,"H2",{class:!0});var ua=n(A);Z=o(ua,"A",{id:!0,class:!0,href:!0});var Ut=n(Z);Te=o(Ut,"SPAN",{});var Tt=n(Te);h(q.$$.fragment,Tt),Tt.forEach(a),Ut.forEach(a),Xa=m(ua),Ae=o(ua,"SPAN",{});var At=n(Ae);Ya=p(At,"Backward"),At.forEach(a),ua.forEach(a),Pe=m(e),J=o(e,"P",{});var he=n(J);Na=p(he,"Por \xFAltimo, reemplaza el t\xEDpico "),Ee=o(he,"CODE",{});var Et=n(Ee);Sa=p(Et,"loss.backward()"),Et.forEach(a),Va=p(he," en tu bucle de entrenamiento con el m\xE9todo "),D=o(he,"A",{href:!0,rel:!0});var $t=n(D);$e=o($t,"CODE",{});var It=n($e);Ra=p(It,"backward"),It.forEach(a),$t.forEach(a),za=p(he," de \u{1F917} Accelerate:"),he.forEach(a),He=m(e),h(L.$$.fragment,e),xe=m(e),ce=o(e,"P",{});var _t=n(ce);Qa=p(_t,"Como se puede ver en el siguiente c\xF3digo, \xA1solo necesitas adicionar cuatro l\xEDneas de c\xF3digo a tu bucle de entrenamiento para habilitar el entrenamiento distribuido!"),_t.forEach(a),Ke=m(e),h(O.$$.fragment,e),qe=m(e),E=o(e,"H2",{class:!0});var ha=n(E);G=o(ha,"A",{id:!0,class:!0,href:!0});var gt=n(G);Ie=o(gt,"SPAN",{});var kt=n(Ie);h(ee.$$.fragment,kt),kt.forEach(a),gt.forEach(a),Fa=m(ha),_e=o(ha,"SPAN",{});var Bt=n(_e);Pa=p(Bt,"Entrenamiento"),Bt.forEach(a),ha.forEach(a),De=m(e),pe=o(e,"P",{});var Ct=n(pe);Ha=p(Ct,"Una vez que hayas a\xF1adido las l\xEDneas de c\xF3digo relevantes, inicia el entrenamiento desde un script o notebook como Colaboratory."),Ct.forEach(a),Le=m(e),$=o(e,"H3",{class:!0});var fa=n($);W=o(fa,"A",{id:!0,class:!0,href:!0});var Zt=n(W);ge=o(Zt,"SPAN",{});var Gt=n(ge);h(ae.$$.fragment,Gt),Gt.forEach(a),Zt.forEach(a),xa=m(fa),ke=o(fa,"SPAN",{});var Wt=n(ke);Ka=p(Wt,"Entrenar con un script"),Wt.forEach(a),fa.forEach(a),Oe=m(e),de=o(e,"P",{});var Xt=n(de);qa=p(Xt,"Si est\xE1s corriendo tu entrenamiento desde un script ejecuta el siguiente comando para crear y guardar un archivo de configuraci\xF3n:"),Xt.forEach(a),ea=m(e),h(te.$$.fragment,e),aa=m(e),me=o(e,"P",{});var Yt=n(me);Da=p(Yt,"Comienza el entrenamiento con:"),Yt.forEach(a),ta=m(e),h(le.$$.fragment,e),la=m(e),I=o(e,"H3",{class:!0});var Ma=n(I);X=o(Ma,"A",{id:!0,class:!0,href:!0});var Nt=n(X);Be=o(Nt,"SPAN",{});var St=n(Be);h(re.$$.fragment,St),St.forEach(a),Nt.forEach(a),La=m(Ma),Ce=o(Ma,"SPAN",{});var Vt=n(Ce);Oa=p(Vt,"Entrenar con un notebook"),Vt.forEach(a),Ma.forEach(a),ra=m(e),Y=o(e,"P",{});var ya=n(Y);et=p(ya,"\u{1F917} Accelerate puede correr en un notebook si, por ejemplo, est\xE1s planeando utilizar las TPUs de Colaboratory. Encierra el c\xF3digo responsable del entrenamiento en una funci\xF3n y p\xE1salo a "),Ze=o(ya,"CODE",{});var Rt=n(Ze);at=p(Rt,"notebook_launcher"),Rt.forEach(a),tt=p(ya,":"),ya.forEach(a),oa=m(e),h(oe.$$.fragment,e),na=m(e),N=o(e,"P",{});var wa=n(N);lt=p(wa,"Para obtener m\xE1s informaci\xF3n sobre \u{1F917} Accelerate y sus numerosas funciones, consulta la "),ne=o(wa,"A",{href:!0,rel:!0});var zt=n(ne);rt=p(zt,"documentaci\xF3n"),zt.forEach(a),ot=p(wa,"."),wa.forEach(a),this.h()},h(){i(j,"name","hf:doc:metadata"),i(j,"content",JSON.stringify(Dt)),i(_,"id","entrenamiento-distribuido-con-accelerate"),i(_,"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"),i(_,"href","#entrenamiento-distribuido-con-accelerate"),i(v,"class","relative group"),i(R,"href","https://huggingface.co/docs/accelerate"),i(R,"rel","nofollow"),i(k,"id","configuracin"),i(k,"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"),i(k,"href","#configuracin"),i(U,"class","relative group"),i(F,"href","https://huggingface.co/docs/accelerate/package_reference/accelerator#accelerate.Accelerator"),i(F,"rel","nofollow"),i(B,"id","preprate-para-acelerar"),i(B,"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"),i(B,"href","#preprate-para-acelerar"),i(T,"class","relative group"),i(x,"href","https://huggingface.co/docs/accelerate/package_reference/accelerator#accelerate.Accelerator.prepare"),i(x,"rel","nofollow"),i(Z,"id","backward"),i(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"),i(Z,"href","#backward"),i(A,"class","relative group"),i(D,"href","https://huggingface.co/docs/accelerate/package_reference/accelerator#accelerate.Accelerator.backward"),i(D,"rel","nofollow"),i(G,"id","entrenamiento"),i(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"),i(G,"href","#entrenamiento"),i(E,"class","relative group"),i(W,"id","entrenar-con-un-script"),i(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"),i(W,"href","#entrenar-con-un-script"),i($,"class","relative group"),i(X,"id","entrenar-con-un-notebook"),i(X,"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"),i(X,"href","#entrenar-con-un-notebook"),i(I,"class","relative group"),i(ne,"href","https://huggingface.co/docs/accelerate"),i(ne,"rel","nofollow")},m(e,l){t(document.head,j),s(e,Ge,l),s(e,v,l),t(v,_),t(_,fe),f(V,fe,null),t(v,ba),t(v,Me),t(Me,Ja),s(e,We,l),s(e,g,l),t(g,ja),t(g,R),t(R,va),t(g,Ua),s(e,Xe,l),s(e,U,l),t(U,k),t(k,ye),f(z,ye,null),t(U,Ta),t(U,we),t(we,Aa),s(e,Ye,l),s(e,ie,l),t(ie,Ea),s(e,Ne,l),f(Q,e,l),s(e,Se,l),s(e,b,l),t(b,$a),t(b,F),t(F,be),t(be,Ia),t(b,_a),t(b,Je),t(Je,ga),t(b,ka),s(e,Ve,l),f(P,e,l),s(e,Re,l),s(e,T,l),t(T,B),t(B,je),f(H,je,null),t(T,Ba),t(T,ve),t(ve,Ca),s(e,ze,l),s(e,C,l),t(C,Za),t(C,x),t(x,Ue),t(Ue,Ga),t(C,Wa),s(e,Qe,l),f(K,e,l),s(e,Fe,l),s(e,A,l),t(A,Z),t(Z,Te),f(q,Te,null),t(A,Xa),t(A,Ae),t(Ae,Ya),s(e,Pe,l),s(e,J,l),t(J,Na),t(J,Ee),t(Ee,Sa),t(J,Va),t(J,D),t(D,$e),t($e,Ra),t(J,za),s(e,He,l),f(L,e,l),s(e,xe,l),s(e,ce,l),t(ce,Qa),s(e,Ke,l),f(O,e,l),s(e,qe,l),s(e,E,l),t(E,G),t(G,Ie),f(ee,Ie,null),t(E,Fa),t(E,_e),t(_e,Pa),s(e,De,l),s(e,pe,l),t(pe,Ha),s(e,Le,l),s(e,$,l),t($,W),t(W,ge),f(ae,ge,null),t($,xa),t($,ke),t(ke,Ka),s(e,Oe,l),s(e,de,l),t(de,qa),s(e,ea,l),f(te,e,l),s(e,aa,l),s(e,me,l),t(me,Da),s(e,ta,l),f(le,e,l),s(e,la,l),s(e,I,l),t(I,X),t(X,Be),f(re,Be,null),t(I,La),t(I,Ce),t(Ce,Oa),s(e,ra,l),s(e,Y,l),t(Y,et),t(Y,Ze),t(Ze,at),t(Y,tt),s(e,oa,l),f(oe,e,l),s(e,na,l),s(e,N,l),t(N,lt),t(N,ne),t(ne,rt),t(N,ot),sa=!0},p:xt,i(e){sa||(M(V.$$.fragment,e),M(z.$$.fragment,e),M(Q.$$.fragment,e),M(P.$$.fragment,e),M(H.$$.fragment,e),M(K.$$.fragment,e),M(q.$$.fragment,e),M(L.$$.fragment,e),M(O.$$.fragment,e),M(ee.$$.fragment,e),M(ae.$$.fragment,e),M(te.$$.fragment,e),M(le.$$.fragment,e),M(re.$$.fragment,e),M(oe.$$.fragment,e),sa=!0)},o(e){y(V.$$.fragment,e),y(z.$$.fragment,e),y(Q.$$.fragment,e),y(P.$$.fragment,e),y(H.$$.fragment,e),y(K.$$.fragment,e),y(q.$$.fragment,e),y(L.$$.fragment,e),y(O.$$.fragment,e),y(ee.$$.fragment,e),y(ae.$$.fragment,e),y(te.$$.fragment,e),y(le.$$.fragment,e),y(re.$$.fragment,e),y(oe.$$.fragment,e),sa=!1},d(e){a(j),e&&a(Ge),e&&a(v),w(V),e&&a(We),e&&a(g),e&&a(Xe),e&&a(U),w(z),e&&a(Ye),e&&a(ie),e&&a(Ne),w(Q,e),e&&a(Se),e&&a(b),e&&a(Ve),w(P,e),e&&a(Re),e&&a(T),w(H),e&&a(ze),e&&a(C),e&&a(Qe),w(K,e),e&&a(Fe),e&&a(A),w(q),e&&a(Pe),e&&a(J),e&&a(He),w(L,e),e&&a(xe),e&&a(ce),e&&a(Ke),w(O,e),e&&a(qe),e&&a(E),w(ee),e&&a(De),e&&a(pe),e&&a(Le),e&&a($),w(ae),e&&a(Oe),e&&a(de),e&&a(ea),w(te,e),e&&a(aa),e&&a(me),e&&a(ta),w(le,e),e&&a(la),e&&a(I),w(re),e&&a(ra),e&&a(Y),e&&a(oa),w(oe,e),e&&a(na),e&&a(N)}}}const Dt={local:"entrenamiento-distribuido-con-accelerate",sections:[{local:"configuracin",title:"Configuraci\xF3n"},{local:"preprate-para-acelerar",title:"Prep\xE1rate para acelerar"},{local:"backward",title:"Backward"},{local:"entrenamiento",sections:[{local:"entrenar-con-un-script",title:"Entrenar con un script"},{local:"entrenar-con-un-notebook",title:"Entrenar con un notebook"}],title:"Entrenamiento"}],title:"Entrenamiento distribuido con \u{1F917} Accelerate"};function Lt(nt){return Kt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class tl extends Qt{constructor(j){super();Ft(this,j,Lt,qt,Pt,{})}}export{tl as default,Dt as metadata};
