Buckets:
| import{s as Gl,c as As,u as $s,g as Zs,d as Xs,e as Cs,h as Vl,o as Bs,n as Z}from"../chunks/scheduler.36a0863c.js";import{S as kl,i as Rl,g as f,s as M,h as J,j as Ee,f as t,c as d,k as Ce,a as n,d as w,t as y,z as vs,m as Ns,n as Es,y as Wl,C as Vs,o as Ws,e as hs,p as Gs,b as ks,r as h,A as Rs,u as b,x as U,v as _,w as g}from"../chunks/index.f891bdb2.js";import{T as El}from"../chunks/Tip.a8272f7f.js";import{C as $}from"../chunks/CodeBlock.3ec784ea.js";import{H as E,E as Fs}from"../chunks/EditOnGithub.a58e27a9.js";import{e as bs}from"../chunks/each.e59479a4.js";import{s as Ne}from"../chunks/stores.300cf1d0.js";function zs(m,s){const i=new URL(window.location.href),l=new URLSearchParams(i.search);l.set(m,s),i.search=l.toString(),history.replaceState(null,"",i.toString())}function Ss(m){const s=new URL(window.location.href);return new URLSearchParams(s.search).get(m)}function _s(m,s,i){const l=m.slice();return l[7]=s[i],l}function gs(m){let s,i=m[7]+"",l,r,p,o,j;function T(){return m[6](m[7])}return{c(){s=f("div"),l=Ns(i),r=M(),this.h()},l(c){s=J(c,"DIV",{class:!0});var u=Ee(s);l=Es(u,i),r=d(u),u.forEach(t),this.h()},h(){Ce(s,"class",p="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd "+(m[2][m[0]]===m[7]?"border-gray-800 bg-black dark:bg-gray-700 text-white":"text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm"))},m(c,u){n(c,s,u),Wl(s,l),Wl(s,r),o||(j=Vs(s,"click",T),o=!0)},p(c,u){m=c,u&2&&i!==(i=m[7]+"")&&Ws(l,i),u&7&&p!==(p="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd "+(m[2][m[0]]===m[7]?"border-gray-800 bg-black dark:bg-gray-700 text-white":"text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm"))&&Ce(s,"class",p)},d(c){c&&t(s),o=!1,j()}}}function Hs(m){let s,i,l,r,p=bs(m[1]),o=[];for(let c=0;c<p.length;c+=1)o[c]=gs(_s(m,p,c));const j=m[5].default,T=As(j,m,m[4],null);return{c(){s=f("div");for(let c=0;c<o.length;c+=1)o[c].c();i=M(),l=f("div"),T&&T.c(),this.h()},l(c){s=J(c,"DIV",{class:!0});var u=Ee(s);for(let A=0;A<o.length;A+=1)o[A].l(u);u.forEach(t),i=d(c),l=J(c,"DIV",{class:!0});var I=Ee(l);T&&T.l(I),I.forEach(t),this.h()},h(){Ce(s,"class","flex space-x-2 items-center my-1.5 mr-8 h-7 !pl-0 -mx-3 md:mx-0"),Ce(l,"class","language-select")},m(c,u){n(c,s,u);for(let I=0;I<o.length;I+=1)o[I]&&o[I].m(s,null);n(c,i,u),n(c,l,u),T&&T.m(l,null),r=!0},p(c,[u]){if(u&15){p=bs(c[1]);let I;for(I=0;I<p.length;I+=1){const A=_s(c,p,I);o[I]?o[I].p(A,u):(o[I]=gs(A),o[I].c(),o[I].m(s,null))}for(;I<o.length;I+=1)o[I].d(1);o.length=p.length}T&&T.p&&(!r||u&16)&&$s(T,j,c,c[4],r?Xs(j,c[4],u,null):Zs(c[4]),null)},i(c){r||(w(T,c),r=!0)},o(c){y(T,c),r=!1},d(c){c&&(t(s),t(i),t(l)),vs(o,c),T&&T.d(c)}}}function Ys(m,s,i){let l;Cs(m,Ne,u=>i(2,l=u));let{$$slots:r={},$$scope:p}=s,{id:o}=s,{options:j}=s;Vl(Ne,l[o]=j[0],l);function T(u){Vl(Ne,l[o]=u,l),zs(o,u)}Bs(()=>{const u=Ss(o);u&&j.includes(u)&&Vl(Ne,l[o]=u,l)});const c=u=>T(u);return m.$$set=u=>{"id"in u&&i(0,o=u.id),"options"in u&&i(1,j=u.options),"$$scope"in u&&i(4,p=u.$$scope)},[o,j,l,T,p,r,c]}class Us extends kl{constructor(s){super(),Rl(this,s,Ys,Hs,Gl,{id:0,options:1})}}function Is(m){let s;const i=m[4].default,l=As(i,m,m[3],null);return{c(){l&&l.c()},l(r){l&&l.l(r)},m(r,p){l&&l.m(r,p),s=!0},p(r,p){l&&l.p&&(!s||p&8)&&$s(l,i,r,r[3],s?Xs(i,r[3],p,null):Zs(r[3]),null)},i(r){s||(w(l,r),s=!0)},o(r){y(l,r),s=!1},d(r){l&&l.d(r)}}}function Qs(m){let s,i,l=m[2][m[0]]===m[1]&&Is(m);return{c(){l&&l.c(),s=hs()},l(r){l&&l.l(r),s=hs()},m(r,p){l&&l.m(r,p),n(r,s,p),i=!0},p(r,[p]){r[2][r[0]]===r[1]?l?(l.p(r,p),p&7&&w(l,1)):(l=Is(r),l.c(),w(l,1),l.m(s.parentNode,s)):l&&(Gs(),y(l,1,1,()=>{l=null}),ks())},i(r){i||(w(l),i=!0)},o(r){y(l),i=!1},d(r){r&&t(s),l&&l.d(r)}}}function Ls(m,s,i){let l;Cs(m,Ne,T=>i(2,l=T));let{$$slots:r={},$$scope:p}=s,{id:o}=s,{option:j}=s;return m.$$set=T=>{"id"in T&&i(0,o=T.id),"option"in T&&i(1,j=T.option),"$$scope"in T&&i(3,p=T.$$scope)},[o,j,l,p,r]}class Xe extends kl{constructor(s){super(),Rl(this,s,Ls,Qs,Gl,{id:0,option:1})}}function xs(m){let s,i='Además de la clase <code>Trainer</code>, Transformers también proporciona una clase <code>Seq2SeqTrainer</code> para tareas de secuencia a secuencia como traducción o resumen. También está la clase [~trl.SFTTrainer] de la biblioteca <a href="https://hf.co/docs/trl" rel="nofollow">TRL</a> que envuelve la clase <code>Trainer</code> y está optimizada para entrenar modelos de lenguaje como Llama-2 y Mistral con técnicas autoregresivas. <code>SFTTrainer</code> también admite funciones como el empaquetado de secuencias, LoRA, cuantización y DeepSpeed para escalar eficientemente a cualquier tamaño de modelo.',l,r,p,o,j='Siéntete libre de consultar <a href="./main_classes/trainer">la referencia de API</a> para estas otras clases tipo <code>Trainer</code> para aprender más sobre cuándo usar cada una. En general, <code>Trainer</code> es la opción más versátil y es apropiada para una amplia gama de tareas. <code>Seq2SeqTrainer</code> está diseñado para tareas de secuencia a secuencia y <code>SFTTrainer</code> está diseñado para entrenar modelos de lenguaje.';return{c(){s=f("p"),s.innerHTML=i,l=M(),r=f("br"),p=M(),o=f("p"),o.innerHTML=j},l(T){s=J(T,"P",{"data-svelte-h":!0}),U(s)!=="svelte-14g3i1f"&&(s.innerHTML=i),l=d(T),r=J(T,"BR",{}),p=d(T),o=J(T,"P",{"data-svelte-h":!0}),U(o)!=="svelte-uuzxeg"&&(o.innerHTML=j)},m(T,c){n(T,s,c),n(T,l,c),n(T,r,c),n(T,p,c),n(T,o,c)},p:Z,d(T){T&&(t(s),t(l),t(r),t(p),t(o))}}}function Ps(m){let s,i='Comprueba el API referencia <a href="./main_classes/logging">logging</a> para mas información sobre los niveles differentes de logging.';return{c(){s=f("p"),s.innerHTML=i},l(l){s=J(l,"P",{"data-svelte-h":!0}),U(s)!=="svelte-13mq4uk"&&(s.innerHTML=i)},m(l,r){n(l,s,r)},p:Z,d(l){l&&t(s)}}}function Ds(m){let s,i="<code>Trainer</code> establece el nivel de registro por separado para cada nodo en el método <code>Trainer.init</code>, por lo que es posible que desees considerar establecer esto antes si estás utilizando otras funcionalidades de Transformers antes de crear el objeto <code>Trainer</code>.";return{c(){s=f("p"),s.innerHTML=i},l(l){s=J(l,"P",{"data-svelte-h":!0}),U(s)!=="svelte-1byrfxg"&&(s.innerHTML=i)},m(l,r){n(l,s,r)},p:Z,d(l){l&&t(s)}}}function qs(m){let s,i="Usa diferentes combinaciones de <code>log_level</code> y <code>log_level_replica</code> para configurar qué se registra en cada uno de los nodos.",l,r,p;return r=new $({props:{code:"bXlfYXBwLnB5JTIwLi4uJTIwLS1sb2dfbGV2ZWwlMjB3YXJuaW5nJTIwLS1sb2dfbGV2ZWxfcmVwbGljYSUyMGVycm9y",highlighted:"my_app.py ... --log_level warning --log_level_replica error",wrap:!1}}),{c(){s=f("p"),s.innerHTML=i,l=M(),h(r.$$.fragment)},l(o){s=J(o,"P",{"data-svelte-h":!0}),U(s)!=="svelte-1sh5o9n"&&(s.innerHTML=i),l=d(o),b(r.$$.fragment,o)},m(o,j){n(o,s,j),n(o,l,j),_(r,o,j),p=!0},p:Z,i(o){p||(w(r.$$.fragment,o),p=!0)},o(o){y(r.$$.fragment,o),p=!1},d(o){o&&(t(s),t(l)),g(r,o)}}}function Ks(m){let s,i="Agrega el parámetro <code>log_on_each_node 0</code> para entornos multi-nodo.",l,r,p;return r=new $({props:{code:"bXlfYXBwLnB5JTIwLi4uJTIwLS1sb2dfbGV2ZWwlMjB3YXJuaW5nJTIwLS1sb2dfbGV2ZWxfcmVwbGljYSUyMGVycm9yJTIwLS1sb2dfb25fZWFjaF9ub2RlJTIwMCUwQSUwQSUyMyUyMHNldCUyMHRvJTIwb25seSUyMHJlcG9ydCUyMGVycm9ycyUwQW15X2FwcC5weSUyMC4uLiUyMC0tbG9nX2xldmVsJTIwZXJyb3IlMjAtLWxvZ19sZXZlbF9yZXBsaWNhJTIwZXJyb3IlMjAtLWxvZ19vbl9lYWNoX25vZGUlMjAw",highlighted:`my_app.py ... --log_level warning --log_level_replica error --log_on_each_node 0 | |
| <span class="hljs-comment"># set to only report errors</span> | |
| my_app.py ... --log_level error --log_level_replica error --log_on_each_node 0`,wrap:!1}}),{c(){s=f("p"),s.innerHTML=i,l=M(),h(r.$$.fragment)},l(o){s=J(o,"P",{"data-svelte-h":!0}),U(s)!=="svelte-1tzz1kn"&&(s.innerHTML=i),l=d(o),b(r.$$.fragment,o)},m(o,j){n(o,s,j),n(o,l,j),_(r,o,j),p=!0},p:Z,i(o){p||(w(r.$$.fragment,o),p=!0)},o(o){y(r.$$.fragment,o),p=!1},d(o){o&&(t(s),t(l)),g(r,o)}}}function Os(m){let s,i,l,r;return s=new Xe({props:{id:"logging",option:"single node",$$slots:{default:[qs]},$$scope:{ctx:m}}}),l=new Xe({props:{id:"logging",option:"multi-node",$$slots:{default:[Ks]},$$scope:{ctx:m}}}),{c(){h(s.$$.fragment),i=M(),h(l.$$.fragment)},l(p){b(s.$$.fragment,p),i=d(p),b(l.$$.fragment,p)},m(p,o){_(s,p,o),n(p,i,o),_(l,p,o),r=!0},p(p,o){const j={};o&2&&(j.$$scope={dirty:o,ctx:p}),s.$set(j);const T={};o&2&&(T.$$scope={dirty:o,ctx:p}),l.$set(T)},i(p){r||(w(s.$$.fragment,p),w(l.$$.fragment,p),r=!0)},o(p){y(s.$$.fragment,p),y(l.$$.fragment,p),r=!1},d(p){p&&t(i),g(s,p),g(l,p)}}}function ea(m){let s,i='Aprende más sobre las estrategias de fragmentación FSDP, descarga de CPU y más con el <code>Trainer</code> en la guía <a href="fsdp">Paralela de Datos Completamente Fragmentados</a>.';return{c(){s=f("p"),s.innerHTML=i},l(l){s=J(l,"P",{"data-svelte-h":!0}),U(s)!=="svelte-49ofm"&&(s.innerHTML=i)},m(l,r){n(l,s,r)},p:Z,d(l){l&&t(s)}}}function la(m){let s,i;return s=new $({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMEFkaXN0cmlidXRlZF90eXBlJTNBJTIwTVVMVElfR1BVJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTBBZG93bmNhc3RfYmYxNiUzQSUyMCdubyclMEFncHVfaWRzJTNBJTIwYWxsJTBBbWFjaGluZV9yYW5rJTNBJTIwMCUyMCUyM2NoYW5nZSUyMHJhbmslMjBhcyUyMHBlciUyMHRoZSUyMG5vZGUlMEFtYWluX3Byb2Nlc3NfaXAlM0ElMjAxOTIuMTY4LjIwLjElMEFtYWluX3Byb2Nlc3NfcG9ydCUzQSUyMDk4OTglMEFtYWluX3RyYWluaW5nX2Z1bmN0aW9uJTNBJTIwbWFpbiUwQW1peGVkX3ByZWNpc2lvbiUzQSUyMGZwMTYlMEFudW1fbWFjaGluZXMlM0ElMjAyJTBBbnVtX3Byb2Nlc3NlcyUzQSUyMDglMEFyZHp2X2JhY2tlbmQlM0ElMjBzdGF0aWMlMEFzYW1lX25ldHdvcmslM0ElMjB0cnVlJTBBdHB1X2VudiUzQSUyMCU1QiU1RCUwQXRwdV91c2VfY2x1c3RlciUzQSUyMGZhbHNlJTBBdHB1X3VzZV9zdWRvJTNBJTIwZmFsc2UlMEF1c2VfY3B1JTNBJTIwZmFsc2U=",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">MULTI_GPU</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">gpu_ids:</span> <span class="hljs-string">all</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> <span class="hljs-comment">#change rank as per the node</span> | |
| <span class="hljs-attr">main_process_ip:</span> <span class="hljs-number">192.168</span><span class="hljs-number">.20</span><span class="hljs-number">.1</span> | |
| <span class="hljs-attr">main_process_port:</span> <span class="hljs-number">9898</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">fp16</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">2</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">8</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){h(s.$$.fragment)},l(l){b(s.$$.fragment,l)},m(l,r){_(s,l,r),i=!0},p:Z,i(l){i||(w(s.$$.fragment,l),i=!0)},o(l){y(s.$$.fragment,l),i=!1},d(l){g(s,l)}}}function sa(m){let s,i;return s=new $({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMEFkaXN0cmlidXRlZF90eXBlJTNBJTIwRlNEUCUwQWRvd25jYXN0X2JmMTYlM0ElMjAnbm8nJTBBZnNkcF9jb25maWclM0ElMEElMjAlMjBmc2RwX2F1dG9fd3JhcF9wb2xpY3klM0ElMjBUUkFOU0ZPUk1FUl9CQVNFRF9XUkFQJTBBJTIwJTIwZnNkcF9iYWNrd2FyZF9wcmVmZXRjaF9wb2xpY3klM0ElMjBCQUNLV0FSRF9QUkUlMEElMjAlMjBmc2RwX2ZvcndhcmRfcHJlZmV0Y2glM0ElMjB0cnVlJTBBJTIwJTIwZnNkcF9vZmZsb2FkX3BhcmFtcyUzQSUyMGZhbHNlJTBBJTIwJTIwZnNkcF9zaGFyZGluZ19zdHJhdGVneSUzQSUyMDElMEElMjAlMjBmc2RwX3N0YXRlX2RpY3RfdHlwZSUzQSUyMEZVTExfU1RBVEVfRElDVCUwQSUyMCUyMGZzZHBfc3luY19tb2R1bGVfc3RhdGVzJTNBJTIwdHJ1ZSUwQSUyMCUyMGZzZHBfdHJhbnNmb3JtZXJfbGF5ZXJfY2xzX3RvX3dyYXAlM0ElMjBCZXJ0TGF5ZXIlMEElMjAlMjBmc2RwX3VzZV9vcmlnX3BhcmFtcyUzQSUyMHRydWUlMEFtYWNoaW5lX3JhbmslM0ElMjAwJTBBbWFpbl90cmFpbmluZ19mdW5jdGlvbiUzQSUyMG1haW4lMEFtaXhlZF9wcmVjaXNpb24lM0ElMjBiZjE2JTBBbnVtX21hY2hpbmVzJTNBJTIwMSUwQW51bV9wcm9jZXNzZXMlM0ElMjAyJTBBcmR6dl9iYWNrZW5kJTNBJTIwc3RhdGljJTBBc2FtZV9uZXR3b3JrJTNBJTIwdHJ1ZSUwQXRwdV9lbnYlM0ElMjAlNUIlNUQlMEF0cHVfdXNlX2NsdXN0ZXIlM0ElMjBmYWxzZSUwQXRwdV91c2Vfc3VkbyUzQSUyMGZhbHNlJTBBdXNlX2NwdSUzQSUyMGZhbHNl",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">FSDP</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">fsdp_config:</span> | |
| <span class="hljs-attr">fsdp_auto_wrap_policy:</span> <span class="hljs-string">TRANSFORMER_BASED_WRAP</span> | |
| <span class="hljs-attr">fsdp_backward_prefetch_policy:</span> <span class="hljs-string">BACKWARD_PRE</span> | |
| <span class="hljs-attr">fsdp_forward_prefetch:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">fsdp_offload_params:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">fsdp_sharding_strategy:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">fsdp_state_dict_type:</span> <span class="hljs-string">FULL_STATE_DICT</span> | |
| <span class="hljs-attr">fsdp_sync_module_states:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">fsdp_transformer_layer_cls_to_wrap:</span> <span class="hljs-string">BertLayer</span> | |
| <span class="hljs-attr">fsdp_use_orig_params:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">bf16</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">2</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){h(s.$$.fragment)},l(l){b(s.$$.fragment,l)},m(l,r){_(s,l,r),i=!0},p:Z,i(l){i||(w(s.$$.fragment,l),i=!0)},o(l){y(s.$$.fragment,l),i=!1},d(l){g(s,l)}}}function aa(m){let s,i;return s=new $({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMEFkZWVwc3BlZWRfY29uZmlnJTNBJTBBJTIwJTIwZGVlcHNwZWVkX2NvbmZpZ19maWxlJTNBJTIwJTJGaG9tZSUyRnVzZXIlMkZjb25maWdzJTJGZHNfemVybzNfY29uZmlnLmpzb24lMEElMjAlMjB6ZXJvM19pbml0X2ZsYWclM0ElMjB0cnVlJTBBZGlzdHJpYnV0ZWRfdHlwZSUzQSUyMERFRVBTUEVFRCUwQWRvd25jYXN0X2JmMTYlM0ElMjAnbm8nJTBBbWFjaGluZV9yYW5rJTNBJTIwMCUwQW1haW5fdHJhaW5pbmdfZnVuY3Rpb24lM0ElMjBtYWluJTBBbnVtX21hY2hpbmVzJTNBJTIwMSUwQW51bV9wcm9jZXNzZXMlM0ElMjA0JTBBcmR6dl9iYWNrZW5kJTNBJTIwc3RhdGljJTBBc2FtZV9uZXR3b3JrJTNBJTIwdHJ1ZSUwQXRwdV9lbnYlM0ElMjAlNUIlNUQlMEF0cHVfdXNlX2NsdXN0ZXIlM0ElMjBmYWxzZSUwQXRwdV91c2Vfc3VkbyUzQSUyMGZhbHNlJTBBdXNlX2NwdSUzQSUyMGZhbHNl",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">deepspeed_config:</span> | |
| <span class="hljs-attr">deepspeed_config_file:</span> <span class="hljs-string">/home/user/configs/ds_zero3_config.json</span> | |
| <span class="hljs-attr">zero3_init_flag:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">DEEPSPEED</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">4</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span>`,wrap:!1}}),{c(){h(s.$$.fragment)},l(l){b(s.$$.fragment,l)},m(l,r){_(s,l,r),i=!0},p:Z,i(l){i||(w(s.$$.fragment,l),i=!0)},o(l){y(s.$$.fragment,l),i=!1},d(l){g(s,l)}}}function ta(m){let s,i;return s=new $({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMEFkZWVwc3BlZWRfY29uZmlnJTNBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTBBJTIwJTIwZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNBJTIwMSUwQSUyMCUyMGdyYWRpZW50X2NsaXBwaW5nJTNBJTIwMC43JTBBJTIwJTIwb2ZmbG9hZF9vcHRpbWl6ZXJfZGV2aWNlJTNBJTIwY3B1JTBBJTIwJTIwb2ZmbG9hZF9wYXJhbV9kZXZpY2UlM0ElMjBjcHUlMEElMjAlMjB6ZXJvM19pbml0X2ZsYWclM0ElMjB0cnVlJTBBJTIwJTIwemVyb19zdGFnZSUzQSUyMDIlMEFkaXN0cmlidXRlZF90eXBlJTNBJTIwREVFUFNQRUVEJTBBZG93bmNhc3RfYmYxNiUzQSUyMCdubyclMEFtYWNoaW5lX3JhbmslM0ElMjAwJTBBbWFpbl90cmFpbmluZ19mdW5jdGlvbiUzQSUyMG1haW4lMEFtaXhlZF9wcmVjaXNpb24lM0ElMjBiZjE2JTBBbnVtX21hY2hpbmVzJTNBJTIwMSUwQW51bV9wcm9jZXNzZXMlM0ElMjA0JTBBcmR6dl9iYWNrZW5kJTNBJTIwc3RhdGljJTBBc2FtZV9uZXR3b3JrJTNBJTIwdHJ1ZSUwQXRwdV9lbnYlM0ElMjAlNUIlNUQlMEF0cHVfdXNlX2NsdXN0ZXIlM0ElMjBmYWxzZSUwQXRwdV91c2Vfc3VkbyUzQSUyMGZhbHNlJTBBdXNlX2NwdSUzQSUyMGZhbHNlJTBB",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span> | |
| <span class="hljs-attr">deepspeed_config:</span> | |
| <span class="hljs-attr">gradient_accumulation_steps:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">gradient_clipping:</span> <span class="hljs-number">0.7</span> | |
| <span class="hljs-attr">offload_optimizer_device:</span> <span class="hljs-string">cpu</span> | |
| <span class="hljs-attr">offload_param_device:</span> <span class="hljs-string">cpu</span> | |
| <span class="hljs-attr">zero3_init_flag:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">zero_stage:</span> <span class="hljs-number">2</span> | |
| <span class="hljs-attr">distributed_type:</span> <span class="hljs-string">DEEPSPEED</span> | |
| <span class="hljs-attr">downcast_bf16:</span> <span class="hljs-string">'no'</span> | |
| <span class="hljs-attr">machine_rank:</span> <span class="hljs-number">0</span> | |
| <span class="hljs-attr">main_training_function:</span> <span class="hljs-string">main</span> | |
| <span class="hljs-attr">mixed_precision:</span> <span class="hljs-string">bf16</span> | |
| <span class="hljs-attr">num_machines:</span> <span class="hljs-number">1</span> | |
| <span class="hljs-attr">num_processes:</span> <span class="hljs-number">4</span> | |
| <span class="hljs-attr">rdzv_backend:</span> <span class="hljs-string">static</span> | |
| <span class="hljs-attr">same_network:</span> <span class="hljs-literal">true</span> | |
| <span class="hljs-attr">tpu_env:</span> [] | |
| <span class="hljs-attr">tpu_use_cluster:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">tpu_use_sudo:</span> <span class="hljs-literal">false</span> | |
| <span class="hljs-attr">use_cpu:</span> <span class="hljs-literal">false</span> | |
| `,wrap:!1}}),{c(){h(s.$$.fragment)},l(l){b(s.$$.fragment,l)},m(l,r){_(s,l,r),i=!0},p:Z,i(l){i||(w(s.$$.fragment,l),i=!0)},o(l){y(s.$$.fragment,l),i=!1},d(l){g(s,l)}}}function na(m){let s,i,l,r,p,o,j,T;return s=new Xe({props:{id:"config",option:"DistributedDataParallel",$$slots:{default:[la]},$$scope:{ctx:m}}}),l=new Xe({props:{id:"config",option:"FSDP",$$slots:{default:[sa]},$$scope:{ctx:m}}}),p=new Xe({props:{id:"config",option:"DeepSpeed",$$slots:{default:[aa]},$$scope:{ctx:m}}}),j=new Xe({props:{id:"config",option:"DeepSpeed with Accelerate plugin",$$slots:{default:[ta]},$$scope:{ctx:m}}}),{c(){h(s.$$.fragment),i=M(),h(l.$$.fragment),r=M(),h(p.$$.fragment),o=M(),h(j.$$.fragment)},l(c){b(s.$$.fragment,c),i=d(c),b(l.$$.fragment,c),r=d(c),b(p.$$.fragment,c),o=d(c),b(j.$$.fragment,c)},m(c,u){_(s,c,u),n(c,i,u),_(l,c,u),n(c,r,u),_(p,c,u),n(c,o,u),_(j,c,u),T=!0},p(c,u){const I={};u&2&&(I.$$scope={dirty:u,ctx:c}),s.$set(I);const A={};u&2&&(A.$$scope={dirty:u,ctx:c}),l.$set(A);const Be={};u&2&&(Be.$$scope={dirty:u,ctx:c}),p.$set(Be);const V={};u&2&&(V.$$scope={dirty:u,ctx:c}),j.$set(V)},i(c){T||(w(s.$$.fragment,c),w(l.$$.fragment,c),w(p.$$.fragment,c),w(j.$$.fragment,c),T=!0)},o(c){y(s.$$.fragment,c),y(l.$$.fragment,c),y(p.$$.fragment,c),y(j.$$.fragment,c),T=!1},d(c){c&&(t(i),t(r),t(o)),g(s,c),g(l,c),g(p,c),g(j,c)}}}function ra(m){let s,i,l,r,p,o,j,T="El <code>Trainer</code> es un bucle completo de entrenamiento y evaluación para modelos de PyTorch implementado en la biblioteca Transformers. Solo necesitas pasarle las piezas necesarias para el entrenamiento (modelo, tokenizador, conjunto de datos, función de evaluación, hiperparámetros de entrenamiento, etc.), y la clase <code>Trainer</code> se encarga del resto. Esto facilita comenzar a entrenar más rápido sin tener que escribir manualmente tu propio bucle de entrenamiento. Pero al mismo tiempo, <code>Trainer</code> es muy personalizable y ofrece una gran cantidad de opciones de entrenamiento para que puedas adaptarlo a tus necesidades exactas de entrenamiento.",c,u,I,A,Be='Antes de comenzar, asegúrate de tener instalado <a href="https://hf.co/docs/accelerate" rel="nofollow">Accelerate</a>, una biblioteca para habilitar y ejecutar el entrenamiento de PyTorch en entornos distribuidos.',V,W,Ve,G,Fl="Esta guía proporciona una visión general de la clase <code>Trainer</code>.",We,k,Ge,R,zl="<code>Trainer</code> incluye todo el código que encontrarías en un bucle de entrenamiento básico:",ke,F,Sl="<li>Realiza un paso de entrenamiento para calcular la pérdida</li> <li>Calcula los gradientes con el método [~accelerate.Accelerator.backward]</li> <li>Actualiza los pesos basados en los gradientes</li> <li>Repite este proceso hasta alcanzar un número predeterminado de épocas</li>",Re,z,Hl="La clase <code>Trainer</code> abstrae todo este código para que no tengas que preocuparte por escribir manualmente un bucle de entrenamiento cada vez o si estás empezando con PyTorch y el entrenamiento. Solo necesitas proporcionar los componentes esenciales requeridos para el entrenamiento, como un modelo y un conjunto de datos, y la clase <code>Trainer</code> maneja todo lo demás.",Fe,S,Yl="Si deseas especificar opciones de entrenamiento o hiperparámetros, puedes encontrarlos en la clase <code>TrainingArguments</code>. Por ejemplo, vamos a definir dónde guardar el modelo en output_dir y subir el modelo al Hub después del entrenamiento con <code>push_to_hub=True</code>.",ze,H,Se,Y,Ql="Pase <code>training_args</code> al <code>Trainer</code> con un modelo, un conjunto de datos o algo para preprocesar el conjunto de datos (dependiendo en el tipo de datos pueda ser un tokenizer, extractor de caracteristicas o procesor del imagen), un recopilador de datos y una función para calcular las métricas que desea rastrear durante el entrenamiento.",He,Q,Ll="Finalmente, llame <code>train()</code> para empezar entrenamiento!",Ye,L,Qe,x,Le,P,xl="La clase <code>Trainer</code> guarda los puntos de control del modelo en el directorio especificado en el parámetro <code>output_dir</code> de <code>TrainingArguments</code>. Encontrarás los puntos de control guardados en una subcarpeta checkpoint-000 donde los números al final corresponden al paso de entrenamiento. Guardar puntos de control es útil para reanudar el entrenamiento más tarde.",xe,D,Pe,q,Pl='Puedes guardar tus puntos de control (por defecto, el estado del optimizador no se guarda) en el Hub configurando <code>push_to_hub=True</code> en <code>TrainingArguments</code> para confirmar y enviarlos. Otras opciones para decidir cómo se guardan tus puntos de control están configuradas en el parámetro <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments.hub_strategy" rel="nofollow"><code>hub_strategy</code></a>:',De,K,Dl="<li><p>hub_strategy=“checkpoint” envía el último punto de control a una subcarpeta llamada “last-checkpoint” desde la cual puedes reanudar el entrenamiento.</p></li> <li><p>hub_strategy=“all_checkpoints” envía todos los puntos de control al directorio definido en <code>output_dir</code> (verás un punto de control por carpeta en tu repositorio de modelos).</p></li>",qe,O,ql='Cuando reanudas el entrenamiento desde un punto de control, el <code>Trainer</code> intenta mantener los estados de los generadores de números aleatorios (RNG) de Python, NumPy y PyTorch iguales a como estaban cuando se guardó el punto de control. Pero debido a que PyTorch tiene varias configuraciones predeterminadas no determinísticas, no se garantiza que los estados de RNG sean los mismos. Si deseas habilitar la plena determinismo, echa un vistazo a la guía <a href="https://pytorch.org/docs/stable/notes/randomness#controlling-sources-of-randomness" rel="nofollow">“Controlling sources of randomness”</a> para aprender qué puedes habilitar para hacer que tu entrenamiento sea completamente determinista. Sin embargo, ten en cuenta que al hacer ciertas configuraciones deterministas, el entrenamiento puede ser más lento.',Ke,ee,Oe,le,Kl="Si bien la clase <code>Trainer</code> está diseñada para ser accesible y fácil de usar, también ofrece mucha capacidad de personalización para usuarios más aventureros. Muchos de los métodos del <code>Trainer</code> pueden ser subclasificados y sobrescritos para admitir la funcionalidad que deseas, sin tener que reescribir todo el bucle de entrenamiento desde cero para adaptarlo. Estos métodos incluyen:",el,se,Ol="<li>[~Trainer.get_train_dataloader] crea un entrenamiento de DataLoader</li> <li>[~Trainer.get_eval_dataloader] crea una evaluación DataLoader</li> <li>[~Trainer.get_test_dataloader] crea una prueba de DataLoader</li> <li>[~Trainer.log] anota la información de los objetos varios que observa el entrenamiento</li> <li>[~Trainer.create_optimizer_and_scheduler] crea un optimizador y la tasa programada de aprendizaje si no lo pasaron en <strong>init</strong>; estos pueden ser personalizados independientes con [~Trainer.create_optimizer] y [~Trainer.create_scheduler] respectivamente</li> <li>[~Trainer.compute_loss] computa la pérdida en lote con las aportes del entrenamiento</li> <li>[~Trainer.training_step] realiza el paso del entrenamiento</li> <li>[~Trainer.prediction_step] realiza la predicción y paso de prueba</li> <li>[~Trainer.evaluate] evalua el modelo y da las metricas evaluativas</li> <li>[~Trainer.predict] hace las predicciones (con las metricas si hay etiquetas disponibles) en lote de prueba</li>",ll,ae,es="Por ejemplo, si deseas personalizar el método <code>compute_loss()</code> para usar una pérdida ponderada en su lugar, puedes hacerlo de la siguiente manera:",sl,te,al,ne,tl,re,ls='Otra opción para personalizar el <code>Trainer</code> es utilizar <a href="callbacks">callbacks</a>. Los callbacks <em>no cambian nada</em> en el bucle de entrenamiento. Inspeccionan el estado del bucle de entrenamiento y luego ejecutan alguna acción (detención anticipada, registro de resultados, etc.) según el estado. En otras palabras, un callback no puede usarse para implementar algo como una función de pérdida personalizada y necesitarás subclasificar y sobrescribir el método <code>compute_loss()</code> para eso.',nl,ie,ss="Por ejemplo, si deseas agregar un callback de detención anticipada al bucle de entrenamiento después de 10 pasos.",rl,oe,il,ce,as="Luego, pásalo al parámetro <code>callback</code> del <code>Trainer</code>:",ol,pe,cl,Me,pl,X,Ml,de,ts='El <code>Trainer</code> está configurado a <code>logging.INFO</code> de forma predeterminada el cual informa errores, advertencias y otra información basica. Un <code>Trainer</code> réplica - en entornos distributos - está configurado a <code>logging.WARNING</code> el cual solamente informa errores y advertencias. Puedes cambiar el nivel de logging con los parametros <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments.log_level" rel="nofollow"><code>log_level</code></a> y <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments.log_level_replica" rel="nofollow"><code>log_level_replica</code></a> en <code>TrainingArguments</code>.',dl,me,ns='Para configurar el nivel de registro para cada nodo, usa el parámetro <a href="https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments.log_on_each_node" rel="nofollow"><code>log_on_each_node</code></a> para determinar si deseas utilizar el nivel de registro en cada nodo o solo en el nodo principal.',ml,C,ul,ue,rs="Por ejemplo, para establecer que tu código principal y los módulos utilicen el mismo nivel de registro según cada nodo:",Tl,Te,jl,B,fl,je,Jl,fe,is='<a href="https://hf.co/papers/2310.05914" rel="nofollow">NEFTune</a> es una técnica que puede mejorar el rendimiento al agregar ruido a los vectores de incrustación durante el entrenamiento. Para habilitarlo en <code>Trainer</code>, establece el parámetro <code>neftune_noise_alpha</code> en <code>TrainingArguments</code> para controlar cuánto ruido se agrega.',wl,Je,yl,we,os="NEFTune se desactiva después del entrenamiento para restaurar la capa de incrustación original y evitar cualquier comportamiento inesperado.",hl,ye,bl,he,cs='La clase <code>Trainer</code> está impulsada por <a href="https://hf.co/docs/accelerate" rel="nofollow">Accelerate</a>, una biblioteca para entrenar fácilmente modelos de PyTorch en entornos distribuidos con soporte para integraciones como <a href="https://pytorch.org/blog/introducing-pytorch-fully-sharded-data-parallel-api/" rel="nofollow">FullyShardedDataParallel (FSDP)</a> y <a href="https://www.deepspeed.ai/" rel="nofollow">DeepSpeed</a>.',_l,v,gl,be,ps='Para usar Accelerate con <code>Trainer</code>, ejecuta el comando <a href="https://huggingface.co/docs/accelerate/package_reference/cli#accelerate-config" rel="nofollow"><code>accelerate.config</code></a> para configurar el entrenamiento para tu entorno de entrenamiento. Este comando crea un <code>config_file.yaml</code> que se utilizará cuando inicies tu script de entrenamiento. Por ejemplo, algunas configuraciones de ejemplo que puedes configurar son:',Ul,N,Il,_e,Ms='El comando <a href="https://huggingface.co/docs/accelerate/package_reference/cli#accelerate-launch" rel="nofollow"><code>accelerate_launch</code></a> es la forma recomendada de lanzar tu script de entrenamiento en un sistema distribuido con Accelerate y <code>Trainer</code> con los parámetros especificados en <code>config_file.yaml</code>. Este archivo se guarda en la carpeta de caché de Accelerate y se carga automáticamente cuando ejecutas <code>accelerate_launch</code>.',Al,ge,ds='Por ejemplo, para ejecutar el script de entrenamiento <a href="https://github.com/huggingface/transformers/blob/f4db565b695582891e43a5e042e5d318e28f20b8/examples/pytorch/text-classification/run_glue.py#L4" rel="nofollow"><code>run_glue.py</code></a> con la configuración de FSDP:',$l,Ue,Zl,Ie,ms="También puedes especificar los parámetros del archivo config_file.yaml directamente en la línea de comandos:",Xl,Ae,Cl,$e,us='Consulta el tutorial <a href="https://huggingface.co/docs/accelerate/basic_tutorials/launch" rel="nofollow">Lanzamiento de tus scripts con Accelerate</a> para obtener más información sobre <code>accelerate_launch</code> y las configuraciones personalizadas.',Bl,Ze,vl,ve,Nl;return p=new E({props:{title:"El Trainer",local:"el-trainer",headingTag:"h1"}}),u=new El({props:{$$slots:{default:[xs]},$$scope:{ctx:m}}}),W=new $({props:{code:"cGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGUlMEElMEElMjMlMjB1cGdyYWRlJTBBcGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGUlMjAtLXVwZ3JhZGU=",highlighted:`pip install accelerate | |
| <span class="hljs-comment"># upgrade</span> | |
| pip install accelerate --upgrade`,wrap:!1}}),k=new E({props:{title:"Uso básico",local:"uso-básico",headingTag:"h2"}}),H=new $({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0QlMjJ5b3VyLW1vZGVsJTIyJTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDJlLTUlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlM0QxNiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEMTYlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5fZXBvY2hzJTNEMiUyQyUwQSUyMCUyMCUyMCUyMHdlaWdodF9kZWNheSUzRDAuMDElMkMlMEElMjAlMjAlMjAlMjBldmFsX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBzYXZlX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTNEVHJ1ZSUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments | |
| training_args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"your-model"</span>, | |
| learning_rate=<span class="hljs-number">2e-5</span>, | |
| per_device_train_batch_size=<span class="hljs-number">16</span>, | |
| per_device_eval_batch_size=<span class="hljs-number">16</span>, | |
| num_train_epochs=<span class="hljs-number">2</span>, | |
| weight_decay=<span class="hljs-number">0.01</span>, | |
| eval_strategy=<span class="hljs-string">"epoch"</span>, | |
| save_strategy=<span class="hljs-string">"epoch"</span>, | |
| load_best_model_at_end=<span class="hljs-literal">True</span>, | |
| push_to_hub=<span class="hljs-literal">True</span>, | |
| )`,wrap:!1}}),L=new $({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXIlMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwYXJncyUzRHRyYWluaW5nX2FyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRlc3QlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMEElMjAlMjAlMjAlMjBkYXRhX2NvbGxhdG9yJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSklMEElMEF0cmFpbmVyLnRyYWluKCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| trainer = Trainer( | |
| model=model, | |
| args=training_args, | |
| train_dataset=dataset[<span class="hljs-string">"train"</span>], | |
| eval_dataset=dataset[<span class="hljs-string">"test"</span>], | |
| tokenizer=tokenizer, | |
| data_collator=data_collator, | |
| compute_metrics=compute_metrics, | |
| ) | |
| trainer.train()`,wrap:!1}}),x=new E({props:{title:"Los puntos de control",local:"los-puntos-de-control",headingTag:"h3"}}),D=new $({props:{code:"JTIzJTIwcmVzdW1lJTIwZnJvbSUyMGxhdGVzdCUyMGNoZWNrcG9pbnQlMEF0cmFpbmVyLnRyYWluKHJlc3VtZV9mcm9tX2NoZWNrcG9pbnQlM0RUcnVlKSUwQSUwQSUyMyUyMHJlc3VtZSUyMGZyb20lMjBzcGVjaWZpYyUyMGNoZWNrcG9pbnQlMjBzYXZlZCUyMGluJTIwb3V0cHV0JTIwZGlyZWN0b3J5JTBBdHJhaW5lci50cmFpbihyZXN1bWVfZnJvbV9jaGVja3BvaW50JTNEJTIyeW91ci1tb2RlbCUyRmNoZWNrcG9pbnQtMTAwMCUyMik=",highlighted:`<span class="hljs-comment"># resume from latest checkpoint</span> | |
| trainer.train(resume_from_checkpoint=<span class="hljs-literal">True</span>) | |
| <span class="hljs-comment"># resume from specific checkpoint saved in output directory</span> | |
| trainer.train(resume_from_checkpoint=<span class="hljs-string">"your-model/checkpoint-1000"</span>)`,wrap:!1}}),ee=new E({props:{title:"Personaliza el Trainer",local:"personaliza-el-trainer",headingTag:"h2"}}),te=new $({props:{code:"ZnJvbSUyMHRvcmNoJTIwaW1wb3J0JTIwbm4lMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwVHJhaW5lciUwQSUwQWNsYXNzJTIwQ3VzdG9tVHJhaW5lcihUcmFpbmVyKSUzQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGNvbXB1dGVfbG9zcyhzZWxmJTJDJTIwbW9kZWwlMkMlMjBpbnB1dHMlMkMlMjByZXR1cm5fb3V0cHV0cyUzREZhbHNlKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMGlucHV0cy5wb3AoJTIybGFiZWxzJTIyKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMGZvcndhcmQlMjBwYXNzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvZ2l0cyUyMCUzRCUyMG91dHB1dHMuZ2V0KCUyMmxvZ2l0cyUyMiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBjb21wdXRlJTIwY3VzdG9tJTIwbG9zcyUyMGZvciUyMDMlMjBsYWJlbHMlMjB3aXRoJTIwZGlmZmVyZW50JTIwd2VpZ2h0cyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvc3NfZmN0JTIwJTNEJTIwbm4uQ3Jvc3NFbnRyb3B5TG9zcyh3ZWlnaHQlM0R0b3JjaC50ZW5zb3IoJTVCMS4wJTJDJTIwMi4wJTJDJTIwMy4wJTVEJTJDJTIwZGV2aWNlJTNEbW9kZWwuZGV2aWNlKSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwbG9zc19mY3QobG9naXRzLnZpZXcoLTElMkMlMjBzZWxmLm1vZGVsLmNvbmZpZy5udW1fbGFiZWxzKSUyQyUyMGxhYmVscy52aWV3KC0xKSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAobG9zcyUyQyUyMG91dHB1dHMpJTIwaWYlMjByZXR1cm5fb3V0cHV0cyUyMGVsc2UlMjBsb3Nz",highlighted:`<span class="hljs-keyword">from</span> torch <span class="hljs-keyword">import</span> nn | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">CustomTrainer</span>(<span class="hljs-title class_ inherited__">Trainer</span>): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_loss</span>(<span class="hljs-params">self, model, inputs, return_outputs=<span class="hljs-literal">False</span></span>): | |
| labels = inputs.pop(<span class="hljs-string">"labels"</span>) | |
| <span class="hljs-comment"># forward pass</span> | |
| outputs = model(**inputs) | |
| logits = outputs.get(<span class="hljs-string">"logits"</span>) | |
| <span class="hljs-comment"># compute custom loss for 3 labels with different weights</span> | |
| loss_fct = nn.CrossEntropyLoss(weight=torch.tensor([<span class="hljs-number">1.0</span>, <span class="hljs-number">2.0</span>, <span class="hljs-number">3.0</span>], device=model.device)) | |
| loss = loss_fct(logits.view(-<span class="hljs-number">1</span>, self.model.config.num_labels), labels.view(-<span class="hljs-number">1</span>)) | |
| <span class="hljs-keyword">return</span> (loss, outputs) <span class="hljs-keyword">if</span> return_outputs <span class="hljs-keyword">else</span> loss`,wrap:!1}}),ne=new E({props:{title:"Callbacks",local:"callbacks",headingTag:"h3"}}),oe=new $({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXJDYWxsYmFjayUwQSUwQWNsYXNzJTIwRWFybHlTdG9wcGluZ0NhbGxiYWNrKFRyYWluZXJDYWxsYmFjayklM0ElMEElMjAlMjAlMjAlMjBkZWYlMjBfX2luaXRfXyhzZWxmJTJDJTIwbnVtX3N0ZXBzJTNEMTApJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5udW1fc3RlcHMlMjAlM0QlMjBudW1fc3RlcHMlMEElMjAlMjAlMjAlMjAlMEElMjAlMjAlMjAlMjBkZWYlMjBvbl9zdGVwX2VuZChzZWxmJTJDJTIwYXJncyUyQyUyMHN0YXRlJTJDJTIwY29udHJvbCUyQyUyMCoqa3dhcmdzKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwc3RhdGUuZ2xvYmFsX3N0ZXAlMjAlM0UlM0QlMjBzZWxmLm51bV9zdGVwcyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMnNob3VsZF90cmFpbmluZ19zdG9wJTIyJTNBJTIwVHJ1ZSU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVsc2UlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlN0QlMEE=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainerCallback | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">EarlyStoppingCallback</span>(<span class="hljs-title class_ inherited__">TrainerCallback</span>): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, num_steps=<span class="hljs-number">10</span></span>): | |
| self.num_steps = num_steps | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">on_step_end</span>(<span class="hljs-params">self, args, state, control, **kwargs</span>): | |
| <span class="hljs-keyword">if</span> state.global_step >= self.num_steps: | |
| <span class="hljs-keyword">return</span> {<span class="hljs-string">"should_training_stop"</span>: <span class="hljs-literal">True</span>} | |
| <span class="hljs-keyword">else</span>: | |
| <span class="hljs-keyword">return</span> {} | |
| `,wrap:!1}}),pe=new $({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXIlMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwYXJncyUzRHRyYWluaW5nX2FyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEZGF0YXNldCU1QiUyMnRlc3QlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMEElMjAlMjAlMjAlMjBkYXRhX2NvbGxhdG9yJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSUyMCUyMCUyMCUyMGNhbGxiYWNrJTNEJTVCRWFybHlTdG9wcGluZ0NhbGxiYWNrKCklNUQlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer | |
| trainer = Trainer( | |
| model=model, | |
| args=training_args, | |
| train_dataset=dataset[<span class="hljs-string">"train"</span>], | |
| eval_dataset=dataset[<span class="hljs-string">"test"</span>], | |
| tokenizer=tokenizer, | |
| data_collator=data_collator, | |
| compute_metrics=compute_metrics, | |
| callback=[EarlyStoppingCallback()], | |
| )`,wrap:!1}}),Me=new E({props:{title:"Logging",local:"logging",headingTag:"h2"}}),X=new El({props:{$$slots:{default:[Ps]},$$scope:{ctx:m}}}),C=new El({props:{$$slots:{default:[Ds]},$$scope:{ctx:m}}}),Te=new $({props:{code:"bG9nZ2VyJTIwJTNEJTIwbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pJTBBJTBBbG9nZ2luZy5iYXNpY0NvbmZpZyglMEElMjAlMjAlMjAlMjBmb3JtYXQlM0QlMjIlMjUoYXNjdGltZSlzJTIwLSUyMCUyNShsZXZlbG5hbWUpcyUyMC0lMjAlMjUobmFtZSlzJTIwLSUyMCUyNShtZXNzYWdlKXMlMjIlMkMlMEElMjAlMjAlMjAlMjBkYXRlZm10JTNEJTIyJTI1bSUyRiUyNWQlMkYlMjVZJTIwJTI1SCUzQSUyNU0lM0ElMjVTJTIyJTJDJTBBJTIwJTIwJTIwJTIwaGFuZGxlcnMlM0QlNUJsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCklNUQlMkMlMEEpJTBBJTBBbG9nX2xldmVsJTIwJTNEJTIwdHJhaW5pbmdfYXJncy5nZXRfcHJvY2Vzc19sb2dfbGV2ZWwoKSUwQWxvZ2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpJTBBZGF0YXNldHMudXRpbHMubG9nZ2luZy5zZXRfdmVyYm9zaXR5KGxvZ19sZXZlbCklMEF0cmFuc2Zvcm1lcnMudXRpbHMubG9nZ2luZy5zZXRfdmVyYm9zaXR5KGxvZ19sZXZlbCklMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciguLi4p",highlighted:`logger = logging.getLogger(__name__) | |
| logging.basicConfig( | |
| <span class="hljs-built_in">format</span>=<span class="hljs-string">"%(asctime)s - %(levelname)s - %(name)s - %(message)s"</span>, | |
| datefmt=<span class="hljs-string">"%m/%d/%Y %H:%M:%S"</span>, | |
| handlers=[logging.StreamHandler(sys.stdout)], | |
| ) | |
| log_level = training_args.get_process_log_level() | |
| logger.setLevel(log_level) | |
| datasets.utils.logging.set_verbosity(log_level) | |
| transformers.utils.logging.set_verbosity(log_level) | |
| trainer = Trainer(...)`,wrap:!1}}),B=new Us({props:{id:"logging",options:["single node","multi-node"],$$slots:{default:[Os]},$$scope:{ctx:m}}}),je=new E({props:{title:"NEFTune",local:"neftune",headingTag:"h2"}}),Je=new $({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyguLi4lMkMlMjBuZWZ0dW5lX25vaXNlX2FscGhhJTNEMC4xKSUwQXRyYWluZXIlMjAlM0QlMjBUcmFpbmVyKC4uLiUyQyUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer | |
| training_args = TrainingArguments(..., neftune_noise_alpha=<span class="hljs-number">0.1</span>) | |
| trainer = Trainer(..., args=training_args)`,wrap:!1}}),ye=new E({props:{title:"Accelerate y Trainer",local:"accelerate-y-trainer",headingTag:"h2"}}),v=new El({props:{$$slots:{default:[ea]},$$scope:{ctx:m}}}),N=new Us({props:{id:"config",options:["DistributedDataParallel","FSDP","DeepSpeed","DeepSpeed with Accelerate plugin"],$$slots:{default:[na]},$$scope:{ctx:m}}}),Ue=new $({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMCU1QyUwQSUyMCUyMCUyMCUyMC4lMkZleGFtcGxlcyUyRnB5dG9yY2glMkZ0ZXh0LWNsYXNzaWZpY2F0aW9uJTJGcnVuX2dsdWUucHklMjAlNUMlMEElMjAlMjAlMjAlMjAtLW1vZGVsX25hbWVfb3JfcGF0aCUyMGJlcnQtYmFzZS1jYXNlZCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGFza19uYW1lJTIwJTI0VEFTS19OQU1FJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kb190cmFpbiUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZG9fZXZhbCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tbWF4X3NlcV9sZW5ndGglMjAxMjglMjAlNUMlMEElMjAlMjAlMjAlMjAtLXBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUyMDE2JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1sZWFybmluZ19yYXRlJTIwNWUtNSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tbnVtX3RyYWluX2Vwb2NocyUyMDMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLW91dHB1dF9kaXIlMjAlMkZ0bXAlMkYlMjRUQVNLX05BTUUlMkYlMjAlNUMlMEElMjAlMjAlMjAlMjAtLW92ZXJ3cml0ZV9vdXRwdXRfZGly",highlighted:`accelerate launch \\ | |
| ./examples/pytorch/text-classification/run_glue.py \\ | |
| --model_name_or_path bert-base-cased \\ | |
| --task_name <span class="hljs-variable">$TASK_NAME</span> \\ | |
| --do_train \\ | |
| --do_eval \\ | |
| --max_seq_length 128 \\ | |
| --per_device_train_batch_size 16 \\ | |
| --learning_rate 5e-5 \\ | |
| --num_train_epochs 3 \\ | |
| --output_dir /tmp/<span class="hljs-variable">$TASK_NAME</span>/ \\ | |
| --overwrite_output_dir`,wrap:!1}}),Ae=new $({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMC0tbnVtX3Byb2Nlc3NlcyUzRDIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXVzZV9mc2RwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1taXhlZF9wcmVjaXNpb24lM0RiZjE2JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mc2RwX2F1dG9fd3JhcF9wb2xpY3klM0RUUkFOU0ZPUk1FUl9CQVNFRF9XUkFQJTIwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mc2RwX3RyYW5zZm9ybWVyX2xheWVyX2Nsc190b193cmFwJTNEJTIyQmVydExheWVyJTIyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mc2RwX3NoYXJkaW5nX3N0cmF0ZWd5JTNEMSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZnNkcF9zdGF0ZV9kaWN0X3R5cGUlM0RGVUxMX1NUQVRFX0RJQ1QlMjAlNUMlMEElMjAlMjAlMjAlMjAuJTJGZXhhbXBsZXMlMkZweXRvcmNoJTJGdGV4dC1jbGFzc2lmaWNhdGlvbiUyRnJ1bl9nbHVlLnB5JTBBJTIwJTIwJTIwJTIwLS1tb2RlbF9uYW1lX29yX3BhdGglMjBiZXJ0LWJhc2UtY2FzZWQlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRhc2tfbmFtZSUyMCUyNFRBU0tfTkFNRSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZG9fdHJhaW4lMjAlNUMlMEElMjAlMjAlMjAlMjAtLWRvX2V2YWwlMjAlNUMlMEElMjAlMjAlMjAlMjAtLW1heF9zZXFfbGVuZ3RoJTIwMTI4JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1wZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlMjAxNiUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tbGVhcm5pbmdfcmF0ZSUyMDVlLTUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLW51bV90cmFpbl9lcG9jaHMlMjAzJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1vdXRwdXRfZGlyJTIwJTJGdG1wJTJGJTI0VEFTS19OQU1FJTJGJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1vdmVyd3JpdGVfb3V0cHV0X2Rpcg==",highlighted:`accelerate launch --num_processes=2 \\ | |
| --use_fsdp \\ | |
| --mixed_precision=bf16 \\ | |
| --fsdp_auto_wrap_policy=TRANSFORMER_BASED_WRAP \\ | |
| --fsdp_transformer_layer_cls_to_wrap=<span class="hljs-string">"BertLayer"</span> \\ | |
| --fsdp_sharding_strategy=1 \\ | |
| --fsdp_state_dict_type=FULL_STATE_DICT \\ | |
| ./examples/pytorch/text-classification/run_glue.py | |
| --model_name_or_path bert-base-cased \\ | |
| --task_name <span class="hljs-variable">$TASK_NAME</span> \\ | |
| --do_train \\ | |
| --do_eval \\ | |
| --max_seq_length 128 \\ | |
| --per_device_train_batch_size 16 \\ | |
| --learning_rate 5e-5 \\ | |
| --num_train_epochs 3 \\ | |
| --output_dir /tmp/<span class="hljs-variable">$TASK_NAME</span>/ \\ | |
| --overwrite_output_dir`,wrap:!1}}),Ze=new Fs({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/es/trainer.md"}}),{c(){s=f("meta"),i=M(),l=f("p"),r=M(),h(p.$$.fragment),o=M(),j=f("p"),j.innerHTML=T,c=M(),h(u.$$.fragment),I=M(),A=f("p"),A.innerHTML=Be,V=M(),h(W.$$.fragment),Ve=M(),G=f("p"),G.innerHTML=Fl,We=M(),h(k.$$.fragment),Ge=M(),R=f("p"),R.innerHTML=zl,ke=M(),F=f("ol"),F.innerHTML=Sl,Re=M(),z=f("p"),z.innerHTML=Hl,Fe=M(),S=f("p"),S.innerHTML=Yl,ze=M(),h(H.$$.fragment),Se=M(),Y=f("p"),Y.innerHTML=Ql,He=M(),Q=f("p"),Q.innerHTML=Ll,Ye=M(),h(L.$$.fragment),Qe=M(),h(x.$$.fragment),Le=M(),P=f("p"),P.innerHTML=xl,xe=M(),h(D.$$.fragment),Pe=M(),q=f("p"),q.innerHTML=Pl,De=M(),K=f("ul"),K.innerHTML=Dl,qe=M(),O=f("p"),O.innerHTML=ql,Ke=M(),h(ee.$$.fragment),Oe=M(),le=f("p"),le.innerHTML=Kl,el=M(),se=f("ul"),se.innerHTML=Ol,ll=M(),ae=f("p"),ae.innerHTML=es,sl=M(),h(te.$$.fragment),al=M(),h(ne.$$.fragment),tl=M(),re=f("p"),re.innerHTML=ls,nl=M(),ie=f("p"),ie.textContent=ss,rl=M(),h(oe.$$.fragment),il=M(),ce=f("p"),ce.innerHTML=as,ol=M(),h(pe.$$.fragment),cl=M(),h(Me.$$.fragment),pl=M(),h(X.$$.fragment),Ml=M(),de=f("p"),de.innerHTML=ts,dl=M(),me=f("p"),me.innerHTML=ns,ml=M(),h(C.$$.fragment),ul=M(),ue=f("p"),ue.textContent=rs,Tl=M(),h(Te.$$.fragment),jl=M(),h(B.$$.fragment),fl=M(),h(je.$$.fragment),Jl=M(),fe=f("p"),fe.innerHTML=is,wl=M(),h(Je.$$.fragment),yl=M(),we=f("p"),we.textContent=os,hl=M(),h(ye.$$.fragment),bl=M(),he=f("p"),he.innerHTML=cs,_l=M(),h(v.$$.fragment),gl=M(),be=f("p"),be.innerHTML=ps,Ul=M(),h(N.$$.fragment),Il=M(),_e=f("p"),_e.innerHTML=Ms,Al=M(),ge=f("p"),ge.innerHTML=ds,$l=M(),h(Ue.$$.fragment),Zl=M(),Ie=f("p"),Ie.textContent=ms,Xl=M(),h(Ae.$$.fragment),Cl=M(),$e=f("p"),$e.innerHTML=us,Bl=M(),h(Ze.$$.fragment),vl=M(),ve=f("p"),this.h()},l(e){const a=Rs("svelte-u9bgzb",document.head);s=J(a,"META",{name:!0,content:!0}),a.forEach(t),i=d(e),l=J(e,"P",{}),Ee(l).forEach(t),r=d(e),b(p.$$.fragment,e),o=d(e),j=J(e,"P",{"data-svelte-h":!0}),U(j)!=="svelte-1kg49yy"&&(j.innerHTML=T),c=d(e),b(u.$$.fragment,e),I=d(e),A=J(e,"P",{"data-svelte-h":!0}),U(A)!=="svelte-1y4mdbs"&&(A.innerHTML=Be),V=d(e),b(W.$$.fragment,e),Ve=d(e),G=J(e,"P",{"data-svelte-h":!0}),U(G)!=="svelte-tddi8r"&&(G.innerHTML=Fl),We=d(e),b(k.$$.fragment,e),Ge=d(e),R=J(e,"P",{"data-svelte-h":!0}),U(R)!=="svelte-58ly8j"&&(R.innerHTML=zl),ke=d(e),F=J(e,"OL",{"data-svelte-h":!0}),U(F)!=="svelte-jtunc9"&&(F.innerHTML=Sl),Re=d(e),z=J(e,"P",{"data-svelte-h":!0}),U(z)!=="svelte-e0nc9r"&&(z.innerHTML=Hl),Fe=d(e),S=J(e,"P",{"data-svelte-h":!0}),U(S)!=="svelte-lmsc47"&&(S.innerHTML=Yl),ze=d(e),b(H.$$.fragment,e),Se=d(e),Y=J(e,"P",{"data-svelte-h":!0}),U(Y)!=="svelte-1h5wkew"&&(Y.innerHTML=Ql),He=d(e),Q=J(e,"P",{"data-svelte-h":!0}),U(Q)!=="svelte-1glhf6g"&&(Q.innerHTML=Ll),Ye=d(e),b(L.$$.fragment,e),Qe=d(e),b(x.$$.fragment,e),Le=d(e),P=J(e,"P",{"data-svelte-h":!0}),U(P)!=="svelte-1s1k7yc"&&(P.innerHTML=xl),xe=d(e),b(D.$$.fragment,e),Pe=d(e),q=J(e,"P",{"data-svelte-h":!0}),U(q)!=="svelte-1mc41j3"&&(q.innerHTML=Pl),De=d(e),K=J(e,"UL",{"data-svelte-h":!0}),U(K)!=="svelte-912qys"&&(K.innerHTML=Dl),qe=d(e),O=J(e,"P",{"data-svelte-h":!0}),U(O)!=="svelte-146p59t"&&(O.innerHTML=ql),Ke=d(e),b(ee.$$.fragment,e),Oe=d(e),le=J(e,"P",{"data-svelte-h":!0}),U(le)!=="svelte-jne7w1"&&(le.innerHTML=Kl),el=d(e),se=J(e,"UL",{"data-svelte-h":!0}),U(se)!=="svelte-6j0203"&&(se.innerHTML=Ol),ll=d(e),ae=J(e,"P",{"data-svelte-h":!0}),U(ae)!=="svelte-h7bj6z"&&(ae.innerHTML=es),sl=d(e),b(te.$$.fragment,e),al=d(e),b(ne.$$.fragment,e),tl=d(e),re=J(e,"P",{"data-svelte-h":!0}),U(re)!=="svelte-ii4ao"&&(re.innerHTML=ls),nl=d(e),ie=J(e,"P",{"data-svelte-h":!0}),U(ie)!=="svelte-1efutac"&&(ie.textContent=ss),rl=d(e),b(oe.$$.fragment,e),il=d(e),ce=J(e,"P",{"data-svelte-h":!0}),U(ce)!=="svelte-1m0tpah"&&(ce.innerHTML=as),ol=d(e),b(pe.$$.fragment,e),cl=d(e),b(Me.$$.fragment,e),pl=d(e),b(X.$$.fragment,e),Ml=d(e),de=J(e,"P",{"data-svelte-h":!0}),U(de)!=="svelte-1vzhuch"&&(de.innerHTML=ts),dl=d(e),me=J(e,"P",{"data-svelte-h":!0}),U(me)!=="svelte-1thl5vc"&&(me.innerHTML=ns),ml=d(e),b(C.$$.fragment,e),ul=d(e),ue=J(e,"P",{"data-svelte-h":!0}),U(ue)!=="svelte-1ily46r"&&(ue.textContent=rs),Tl=d(e),b(Te.$$.fragment,e),jl=d(e),b(B.$$.fragment,e),fl=d(e),b(je.$$.fragment,e),Jl=d(e),fe=J(e,"P",{"data-svelte-h":!0}),U(fe)!=="svelte-11n3370"&&(fe.innerHTML=is),wl=d(e),b(Je.$$.fragment,e),yl=d(e),we=J(e,"P",{"data-svelte-h":!0}),U(we)!=="svelte-c2b79h"&&(we.textContent=os),hl=d(e),b(ye.$$.fragment,e),bl=d(e),he=J(e,"P",{"data-svelte-h":!0}),U(he)!=="svelte-dfwow9"&&(he.innerHTML=cs),_l=d(e),b(v.$$.fragment,e),gl=d(e),be=J(e,"P",{"data-svelte-h":!0}),U(be)!=="svelte-1eskknk"&&(be.innerHTML=ps),Ul=d(e),b(N.$$.fragment,e),Il=d(e),_e=J(e,"P",{"data-svelte-h":!0}),U(_e)!=="svelte-j3vgm6"&&(_e.innerHTML=Ms),Al=d(e),ge=J(e,"P",{"data-svelte-h":!0}),U(ge)!=="svelte-13vmkyy"&&(ge.innerHTML=ds),$l=d(e),b(Ue.$$.fragment,e),Zl=d(e),Ie=J(e,"P",{"data-svelte-h":!0}),U(Ie)!=="svelte-iryjdg"&&(Ie.textContent=ms),Xl=d(e),b(Ae.$$.fragment,e),Cl=d(e),$e=J(e,"P",{"data-svelte-h":!0}),U($e)!=="svelte-v4s2pp"&&($e.innerHTML=us),Bl=d(e),b(Ze.$$.fragment,e),vl=d(e),ve=J(e,"P",{}),Ee(ve).forEach(t),this.h()},h(){Ce(s,"name","hf:doc:metadata"),Ce(s,"content",ia)},m(e,a){Wl(document.head,s),n(e,i,a),n(e,l,a),n(e,r,a),_(p,e,a),n(e,o,a),n(e,j,a),n(e,c,a),_(u,e,a),n(e,I,a),n(e,A,a),n(e,V,a),_(W,e,a),n(e,Ve,a),n(e,G,a),n(e,We,a),_(k,e,a),n(e,Ge,a),n(e,R,a),n(e,ke,a),n(e,F,a),n(e,Re,a),n(e,z,a),n(e,Fe,a),n(e,S,a),n(e,ze,a),_(H,e,a),n(e,Se,a),n(e,Y,a),n(e,He,a),n(e,Q,a),n(e,Ye,a),_(L,e,a),n(e,Qe,a),_(x,e,a),n(e,Le,a),n(e,P,a),n(e,xe,a),_(D,e,a),n(e,Pe,a),n(e,q,a),n(e,De,a),n(e,K,a),n(e,qe,a),n(e,O,a),n(e,Ke,a),_(ee,e,a),n(e,Oe,a),n(e,le,a),n(e,el,a),n(e,se,a),n(e,ll,a),n(e,ae,a),n(e,sl,a),_(te,e,a),n(e,al,a),_(ne,e,a),n(e,tl,a),n(e,re,a),n(e,nl,a),n(e,ie,a),n(e,rl,a),_(oe,e,a),n(e,il,a),n(e,ce,a),n(e,ol,a),_(pe,e,a),n(e,cl,a),_(Me,e,a),n(e,pl,a),_(X,e,a),n(e,Ml,a),n(e,de,a),n(e,dl,a),n(e,me,a),n(e,ml,a),_(C,e,a),n(e,ul,a),n(e,ue,a),n(e,Tl,a),_(Te,e,a),n(e,jl,a),_(B,e,a),n(e,fl,a),_(je,e,a),n(e,Jl,a),n(e,fe,a),n(e,wl,a),_(Je,e,a),n(e,yl,a),n(e,we,a),n(e,hl,a),_(ye,e,a),n(e,bl,a),n(e,he,a),n(e,_l,a),_(v,e,a),n(e,gl,a),n(e,be,a),n(e,Ul,a),_(N,e,a),n(e,Il,a),n(e,_e,a),n(e,Al,a),n(e,ge,a),n(e,$l,a),_(Ue,e,a),n(e,Zl,a),n(e,Ie,a),n(e,Xl,a),_(Ae,e,a),n(e,Cl,a),n(e,$e,a),n(e,Bl,a),_(Ze,e,a),n(e,vl,a),n(e,ve,a),Nl=!0},p(e,[a]){const Ts={};a&2&&(Ts.$$scope={dirty:a,ctx:e}),u.$set(Ts);const js={};a&2&&(js.$$scope={dirty:a,ctx:e}),X.$set(js);const fs={};a&2&&(fs.$$scope={dirty:a,ctx:e}),C.$set(fs);const Js={};a&2&&(Js.$$scope={dirty:a,ctx:e}),B.$set(Js);const ws={};a&2&&(ws.$$scope={dirty:a,ctx:e}),v.$set(ws);const ys={};a&2&&(ys.$$scope={dirty:a,ctx:e}),N.$set(ys)},i(e){Nl||(w(p.$$.fragment,e),w(u.$$.fragment,e),w(W.$$.fragment,e),w(k.$$.fragment,e),w(H.$$.fragment,e),w(L.$$.fragment,e),w(x.$$.fragment,e),w(D.$$.fragment,e),w(ee.$$.fragment,e),w(te.$$.fragment,e),w(ne.$$.fragment,e),w(oe.$$.fragment,e),w(pe.$$.fragment,e),w(Me.$$.fragment,e),w(X.$$.fragment,e),w(C.$$.fragment,e),w(Te.$$.fragment,e),w(B.$$.fragment,e),w(je.$$.fragment,e),w(Je.$$.fragment,e),w(ye.$$.fragment,e),w(v.$$.fragment,e),w(N.$$.fragment,e),w(Ue.$$.fragment,e),w(Ae.$$.fragment,e),w(Ze.$$.fragment,e),Nl=!0)},o(e){y(p.$$.fragment,e),y(u.$$.fragment,e),y(W.$$.fragment,e),y(k.$$.fragment,e),y(H.$$.fragment,e),y(L.$$.fragment,e),y(x.$$.fragment,e),y(D.$$.fragment,e),y(ee.$$.fragment,e),y(te.$$.fragment,e),y(ne.$$.fragment,e),y(oe.$$.fragment,e),y(pe.$$.fragment,e),y(Me.$$.fragment,e),y(X.$$.fragment,e),y(C.$$.fragment,e),y(Te.$$.fragment,e),y(B.$$.fragment,e),y(je.$$.fragment,e),y(Je.$$.fragment,e),y(ye.$$.fragment,e),y(v.$$.fragment,e),y(N.$$.fragment,e),y(Ue.$$.fragment,e),y(Ae.$$.fragment,e),y(Ze.$$.fragment,e),Nl=!1},d(e){e&&(t(i),t(l),t(r),t(o),t(j),t(c),t(I),t(A),t(V),t(Ve),t(G),t(We),t(Ge),t(R),t(ke),t(F),t(Re),t(z),t(Fe),t(S),t(ze),t(Se),t(Y),t(He),t(Q),t(Ye),t(Qe),t(Le),t(P),t(xe),t(Pe),t(q),t(De),t(K),t(qe),t(O),t(Ke),t(Oe),t(le),t(el),t(se),t(ll),t(ae),t(sl),t(al),t(tl),t(re),t(nl),t(ie),t(rl),t(il),t(ce),t(ol),t(cl),t(pl),t(Ml),t(de),t(dl),t(me),t(ml),t(ul),t(ue),t(Tl),t(jl),t(fl),t(Jl),t(fe),t(wl),t(yl),t(we),t(hl),t(bl),t(he),t(_l),t(gl),t(be),t(Ul),t(Il),t(_e),t(Al),t(ge),t($l),t(Zl),t(Ie),t(Xl),t(Cl),t($e),t(Bl),t(vl),t(ve)),t(s),g(p,e),g(u,e),g(W,e),g(k,e),g(H,e),g(L,e),g(x,e),g(D,e),g(ee,e),g(te,e),g(ne,e),g(oe,e),g(pe,e),g(Me,e),g(X,e),g(C,e),g(Te,e),g(B,e),g(je,e),g(Je,e),g(ye,e),g(v,e),g(N,e),g(Ue,e),g(Ae,e),g(Ze,e)}}}const ia='{"title":"El Trainer","local":"el-trainer","sections":[{"title":"Uso básico","local":"uso-básico","sections":[{"title":"Los puntos de control","local":"los-puntos-de-control","sections":[],"depth":3}],"depth":2},{"title":"Personaliza el Trainer","local":"personaliza-el-trainer","sections":[{"title":"Callbacks","local":"callbacks","sections":[],"depth":3}],"depth":2},{"title":"Logging","local":"logging","sections":[],"depth":2},{"title":"NEFTune","local":"neftune","sections":[],"depth":2},{"title":"Accelerate y Trainer","local":"accelerate-y-trainer","sections":[],"depth":2}],"depth":1}';function oa(m){return Bs(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ja extends kl{constructor(s){super(),Rl(this,s,oa,ra,Gl,{})}}export{ja as component}; | |
Xet Storage Details
- Size:
- 59 kB
- Xet hash:
- 4e1f80e786641b7927336d6124f1d7b2cf3e18f4e6dd95ce63d2db70c4c46ff0
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.