import{S as oa,i as ra,s as la,e as a,k as d,w as ce,t as l,M as na,c as o,d as i,m as u,a as r,x as de,h as n,b as s,G as t,g as c,y as ue,L as sa,q as fe,o as he,B as me,v as pa}from"../chunks/vendor-hf-doc-builder.js";import{I as Me}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as ca}from"../chunks/CodeBlock-hf-doc-builder.js";function da(_i){let m,Se,_,z,_e,U,ft,ve,ht,Be,Q,mt,Ve,v,w,Pe,k,_t,Ee,vt,qe,W,Pt,Fe,Y,Et,De,x,bt,M,gt,zt,Re,P,A,be,S,wt,ge,xt,Ge,j,At,Le,I,ze,B,K,It,$t,ee,yt,Tt,h,V,te,Xt,Ct,ie,Ut,kt,q,ae,Mt,St,oe,Bt,Vt,F,re,qt,Ft,le,Dt,Rt,D,ne,Gt,Lt,se,Nt,Ne,R,He,$,Ht,G,Jt,Zt,Je,E,y,we,L,Ot,xe,Qt,Ze,f,Wt,Ae,Yt,jt,Ie,Kt,ei,$e,ti,ii,Oe,N,ai,H,oi,Qe,pe,ye,ri,We,b,li,Te,ni,si,Xe,pi,Ye,g,T,Ce,J,ci,Ue,di,je,Z,ui,O,fi,Ke;return U=new Me({}),k=new Me({}),S=new Me({}),R=new ca({props:{code:"cGlwJTIwaW5zdGFsbCUyMGludGVsX2V4dGVuc2lvbl9mb3JfcHl0b3JjaCUzRCUzRCUzQ3ZlcnNpb25fbmFtZSUzRSUyMC1mJTIwaHR0cHMlM0ElMkYlMkZkZXZlbG9wZXIuaW50ZWwuY29tJTJGaXBleC13aGwtc3RhYmxlLWNwdQ==",highlighted:"pip install intel_extension_for_pytorch==&lt;version_name&gt; -f https://developer.intel.com/ipex-whl-stable-cpu"}}),L=new Me({}),J=new Me({}),{c(){m=a("meta"),Se=d(),_=a("h1"),z=a("a"),_e=a("span"),ce(U.$$.fragment),ft=d(),ve=a("span"),ht=l("Addestramento efficiente su CPU"),Be=d(),Q=a("p"),mt=l("Questa guida si concentra su come addestrare in maniera efficiente grandi modelli su CPU."),Ve=d(),v=a("h2"),w=a("a"),Pe=a("span"),ce(k.$$.fragment),_t=d(),Ee=a("span"),vt=l("Mixed precision con IPEX"),qe=d(),W=a("p"),Pt=l("IPEX \xE8 ottimizzato per CPU con AVX-512 o superiore, e funziona per le CPU con solo AVX2. Pertanto, si prevede che le prestazioni saranno pi\xF9 vantaggiose per le le CPU Intel con AVX-512 o superiori, mentre le CPU con solo AVX2 (ad esempio, le CPU AMD o le CPU Intel pi\xF9 vecchie) potrebbero ottenere prestazioni migliori con IPEX, ma non sono garantite. IPEX offre ottimizzazioni delle prestazioni per l\u2019addestramento della CPU sia con Float32 che con BFloat16. L\u2019uso di BFloat16 \xE8 l\u2019argomento principale delle seguenti sezioni."),Fe=d(),Y=a("p"),Et=l("Il tipo di dati a bassa precisione BFloat16 \xE8 stato supportato in modo nativo su 3rd Generation Xeon\xAE Scalable Processors (aka Cooper Lake) con AVX512 e sar\xE0 supportata dalla prossima generazione di Intel\xAE Xeon\xAE Scalable Processors con Intel\xAE Advanced Matrix Extensions (Intel\xAE AMX) instruction set con prestazioni ulteriormente migliorate. L\u2019Auto Mixed Precision per il backende della CPU \xE8 stato abilitato da PyTorch-1.10. allo stesso tempo, il supporto di Auto Mixed Precision con BFloat16 per CPU e l\u2019ottimizzazione degli operatori BFloat16 \xE8 stata abilitata in modo massiccio in Intel\xAE Extension per PyTorch, and parzialmente aggiornato al branch master di PyTorch. Gli utenti possono ottenere prestazioni migliori ed users experience con IPEX Auto Mixed Precision.."),De=d(),x=a("p"),bt=l("Vedi informazioni pi\xF9 dettagliate su "),M=a("a"),gt=l("Auto Mixed Precision"),zt=l("."),Re=d(),P=a("h3"),A=a("a"),be=a("span"),ce(S.$$.fragment),wt=d(),ge=a("span"),xt=l("Installazione di IPEX:"),Ge=d(),j=a("p"),At=l("Il rilascio di IPEX segue quello di PyTorch, da installare via pip:"),Le=d(),I=a("table"),ze=a("thead"),B=a("tr"),K=a("th"),It=l("PyTorch Version"),$t=d(),ee=a("th"),yt=l("IPEX version"),Tt=d(),h=a("tbody"),V=a("tr"),te=a("td"),Xt=l("1.13"),Ct=d(),ie=a("td"),Ut=l("1.13.0+cpu"),kt=d(),q=a("tr"),ae=a("td"),Mt=l("1.12"),St=d(),oe=a("td"),Bt=l("1.12.300+cpu"),Vt=d(),F=a("tr"),re=a("td"),qt=l("1.11"),Ft=d(),le=a("td"),Dt=l("1.11.200+cpu"),Rt=d(),D=a("tr"),ne=a("td"),Gt=l("1.10"),Lt=d(),se=a("td"),Nt=l("1.10.100+cpu"),Ne=d(),ce(R.$$.fragment),He=d(),$=a("p"),Ht=l("Vedi altri approcci per "),G=a("a"),Jt=l("IPEX installation"),Zt=l("."),Je=d(),E=a("h3"),y=a("a"),we=a("span"),ce(L.$$.fragment),Ot=d(),xe=a("span"),Qt=l("Utilizzo nel Trainer"),Ze=d(),f=a("p"),Wt=l("Per abilitare la auto mixed precision con IPEX in Trainer, l\u2019utende dovrebbe aggiungere "),Ae=a("code"),Yt=l("use_ipex"),jt=l(", "),Ie=a("code"),Kt=l("bf16"),ei=l(" e "),$e=a("code"),ti=l("no_cuda"),ii=l(" negli argomenti del comando di addestramento."),Oe=d(),N=a("p"),ai=l("Vedi un sempio di un caso d\u2019uso "),H=a("a"),oi=l("Transformers question-answering"),Qe=d(),pe=a("ul"),ye=a("li"),ri=l("Training with IPEX using BF16 auto mixed precision on CPU:"),We=d(),b=a("pre"),li=l(` python run_qa.py \\
--model_name_or_path bert-base-uncased \\
--dataset_name squad \\
--do_train \\
--do_eval \\
--per_device_train_batch_size 12 \\
--learning_rate 3e-5 \\
--num_train_epochs 2 \\
--max_seq_length 384 \\
--doc_stride 128 \\
--output_dir /tmp/debug_squad/ \\
`),Te=a("b"),ni=l("--use_ipex \\"),si=l(`
`),Xe=a("b"),pi=l("--bf16 --no_cuda"),Ye=d(),g=a("h3"),T=a("a"),Ce=a("span"),ce(J.$$.fragment),ci=d(),Ue=a("span"),di=l("Esempi pratici"),je=d(),Z=a("p"),ui=l("Blog: "),O=a("a"),fi=l("Accelerating PyTorch Transformers with Intel Sapphire Rapids"),this.h()},l(e){const p=na('[data-svelte="svelte-1phssyn"]',document.head);m=o(p,"META",{name:!0,content:!0}),p.forEach(i),Se=u(e),_=o(e,"H1",{class:!0});var et=r(_);z=o(et,"A",{id:!0,class:!0,href:!0});var vi=r(z);_e=o(vi,"SPAN",{});var Pi=r(_e);de(U.$$.fragment,Pi),Pi.forEach(i),vi.forEach(i),ft=u(et),ve=o(et,"SPAN",{});var Ei=r(ve);ht=n(Ei,"Addestramento efficiente su CPU"),Ei.forEach(i),et.forEach(i),Be=u(e),Q=o(e,"P",{});var bi=r(Q);mt=n(bi,"Questa guida si concentra su come addestrare in maniera efficiente grandi modelli su CPU."),bi.forEach(i),Ve=u(e),v=o(e,"H2",{class:!0});var tt=r(v);w=o(tt,"A",{id:!0,class:!0,href:!0});var gi=r(w);Pe=o(gi,"SPAN",{});var zi=r(Pe);de(k.$$.fragment,zi),zi.forEach(i),gi.forEach(i),_t=u(tt),Ee=o(tt,"SPAN",{});var wi=r(Ee);vt=n(wi,"Mixed precision con IPEX"),wi.forEach(i),tt.forEach(i),qe=u(e),W=o(e,"P",{});var xi=r(W);Pt=n(xi,"IPEX \xE8 ottimizzato per CPU con AVX-512 o superiore, e funziona per le CPU con solo AVX2. Pertanto, si prevede che le prestazioni saranno pi\xF9 vantaggiose per le le CPU Intel con AVX-512 o superiori, mentre le CPU con solo AVX2 (ad esempio, le CPU AMD o le CPU Intel pi\xF9 vecchie) potrebbero ottenere prestazioni migliori con IPEX, ma non sono garantite. IPEX offre ottimizzazioni delle prestazioni per l\u2019addestramento della CPU sia con Float32 che con BFloat16. L\u2019uso di BFloat16 \xE8 l\u2019argomento principale delle seguenti sezioni."),xi.forEach(i),Fe=u(e),Y=o(e,"P",{});var Ai=r(Y);Et=n(Ai,"Il tipo di dati a bassa precisione BFloat16 \xE8 stato supportato in modo nativo su 3rd Generation Xeon\xAE Scalable Processors (aka Cooper Lake) con AVX512 e sar\xE0 supportata dalla prossima generazione di Intel\xAE Xeon\xAE Scalable Processors con Intel\xAE Advanced Matrix Extensions (Intel\xAE AMX) instruction set con prestazioni ulteriormente migliorate. L\u2019Auto Mixed Precision per il backende della CPU \xE8 stato abilitato da PyTorch-1.10. allo stesso tempo, il supporto di Auto Mixed Precision con BFloat16 per CPU e l\u2019ottimizzazione degli operatori BFloat16 \xE8 stata abilitata in modo massiccio in Intel\xAE Extension per PyTorch, and parzialmente aggiornato al branch master di PyTorch. Gli utenti possono ottenere prestazioni migliori ed users experience con IPEX Auto Mixed Precision.."),Ai.forEach(i),De=u(e),x=o(e,"P",{});var it=r(x);bt=n(it,"Vedi informazioni pi\xF9 dettagliate su "),M=o(it,"A",{href:!0,rel:!0});var Ii=r(M);gt=n(Ii,"Auto Mixed Precision"),Ii.forEach(i),zt=n(it,"."),it.forEach(i),Re=u(e),P=o(e,"H3",{class:!0});var at=r(P);A=o(at,"A",{id:!0,class:!0,href:!0});var $i=r(A);be=o($i,"SPAN",{});var yi=r(be);de(S.$$.fragment,yi),yi.forEach(i),$i.forEach(i),wt=u(at),ge=o(at,"SPAN",{});var Ti=r(ge);xt=n(Ti,"Installazione di IPEX:"),Ti.forEach(i),at.forEach(i),Ge=u(e),j=o(e,"P",{});var Xi=r(j);At=n(Xi,"Il rilascio di IPEX segue quello di PyTorch, da installare via pip:"),Xi.forEach(i),Le=u(e),I=o(e,"TABLE",{});var ot=r(I);ze=o(ot,"THEAD",{});var Ci=r(ze);B=o(Ci,"TR",{});var rt=r(B);K=o(rt,"TH",{align:!0});var Ui=r(K);It=n(Ui,"PyTorch Version"),Ui.forEach(i),$t=u(rt),ee=o(rt,"TH",{align:!0});var ki=r(ee);yt=n(ki,"IPEX version"),ki.forEach(i),rt.forEach(i),Ci.forEach(i),Tt=u(ot),h=o(ot,"TBODY",{});var X=r(h);V=o(X,"TR",{});var lt=r(V);te=o(lt,"TD",{align:!0});var Mi=r(te);Xt=n(Mi,"1.13"),Mi.forEach(i),Ct=u(lt),ie=o(lt,"TD",{align:!0});var Si=r(ie);Ut=n(Si,"1.13.0+cpu"),Si.forEach(i),lt.forEach(i),kt=u(X),q=o(X,"TR",{});var nt=r(q);ae=o(nt,"TD",{align:!0});var Bi=r(ae);Mt=n(Bi,"1.12"),Bi.forEach(i),St=u(nt),oe=o(nt,"TD",{align:!0});var Vi=r(oe);Bt=n(Vi,"1.12.300+cpu"),Vi.forEach(i),nt.forEach(i),Vt=u(X),F=o(X,"TR",{});var st=r(F);re=o(st,"TD",{align:!0});var qi=r(re);qt=n(qi,"1.11"),qi.forEach(i),Ft=u(st),le=o(st,"TD",{align:!0});var Fi=r(le);Dt=n(Fi,"1.11.200+cpu"),Fi.forEach(i),st.forEach(i),Rt=u(X),D=o(X,"TR",{});var pt=r(D);ne=o(pt,"TD",{align:!0});var Di=r(ne);Gt=n(Di,"1.10"),Di.forEach(i),Lt=u(pt),se=o(pt,"TD",{align:!0});var Ri=r(se);Nt=n(Ri,"1.10.100+cpu"),Ri.forEach(i),pt.forEach(i),X.forEach(i),ot.forEach(i),Ne=u(e),de(R.$$.fragment,e),He=u(e),$=o(e,"P",{});var ct=r($);Ht=n(ct,"Vedi altri approcci per "),G=o(ct,"A",{href:!0,rel:!0});var Gi=r(G);Jt=n(Gi,"IPEX installation"),Gi.forEach(i),Zt=n(ct,"."),ct.forEach(i),Je=u(e),E=o(e,"H3",{class:!0});var dt=r(E);y=o(dt,"A",{id:!0,class:!0,href:!0});var Li=r(y);we=o(Li,"SPAN",{});var Ni=r(we);de(L.$$.fragment,Ni),Ni.forEach(i),Li.forEach(i),Ot=u(dt),xe=o(dt,"SPAN",{});var Hi=r(xe);Qt=n(Hi,"Utilizzo nel Trainer"),Hi.forEach(i),dt.forEach(i),Ze=u(e),f=o(e,"P",{});var C=r(f);Wt=n(C,"Per abilitare la auto mixed precision con IPEX in Trainer, l\u2019utende dovrebbe aggiungere "),Ae=o(C,"CODE",{});var Ji=r(Ae);Yt=n(Ji,"use_ipex"),Ji.forEach(i),jt=n(C,", "),Ie=o(C,"CODE",{});var Zi=r(Ie);Kt=n(Zi,"bf16"),Zi.forEach(i),ei=n(C," e "),$e=o(C,"CODE",{});var Oi=r($e);ti=n(Oi,"no_cuda"),Oi.forEach(i),ii=n(C," negli argomenti del comando di addestramento."),C.forEach(i),Oe=u(e),N=o(e,"P",{});var hi=r(N);ai=n(hi,"Vedi un sempio di un caso d\u2019uso "),H=o(hi,"A",{href:!0,rel:!0});var Qi=r(H);oi=n(Qi,"Transformers question-answering"),Qi.forEach(i),hi.forEach(i),Qe=u(e),pe=o(e,"UL",{});var Wi=r(pe);ye=o(Wi,"LI",{});var Yi=r(ye);ri=n(Yi,"Training with IPEX using BF16 auto mixed precision on CPU:"),Yi.forEach(i),Wi.forEach(i),We=u(e),b=o(e,"PRE",{});var ke=r(b);li=n(ke,` python run_qa.py \\
--model_name_or_path bert-base-uncased \\
--dataset_name squad \\
--do_train \\
--do_eval \\
--per_device_train_batch_size 12 \\
--learning_rate 3e-5 \\
--num_train_epochs 2 \\
--max_seq_length 384 \\
--doc_stride 128 \\
--output_dir /tmp/debug_squad/ \\
`),Te=o(ke,"B",{});var ji=r(Te);ni=n(ji,"--use_ipex \\"),ji.forEach(i),si=n(ke,`
`),Xe=o(ke,"B",{});var Ki=r(Xe);pi=n(Ki,"--bf16 --no_cuda"),Ki.forEach(i),ke.forEach(i),Ye=u(e),g=o(e,"H3",{class:!0});var ut=r(g);T=o(ut,"A",{id:!0,class:!0,href:!0});var ea=r(T);Ce=o(ea,"SPAN",{});var ta=r(Ce);de(J.$$.fragment,ta),ta.forEach(i),ea.forEach(i),ci=u(ut),Ue=o(ut,"SPAN",{});var ia=r(Ue);di=n(ia,"Esempi pratici"),ia.forEach(i),ut.forEach(i),je=u(e),Z=o(e,"P",{});var mi=r(Z);ui=n(mi,"Blog: "),O=o(mi,"A",{href:!0,rel:!0});var aa=r(O);fi=n(aa,"Accelerating PyTorch Transformers with Intel Sapphire Rapids"),aa.forEach(i),mi.forEach(i),this.h()},h(){s(m,"name","hf:doc:metadata"),s(m,"content",JSON.stringify(ua)),s(z,"id","addestramento-efficiente-su-cpu"),s(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"),s(z,"href","#addestramento-efficiente-su-cpu"),s(_,"class","relative group"),s(w,"id","mixed-precision-con-ipex"),s(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"),s(w,"href","#mixed-precision-con-ipex"),s(v,"class","relative group"),s(M,"href","https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/features/amp.html"),s(M,"rel","nofollow"),s(A,"id","installazione-di-ipex"),s(A,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),s(A,"href","#installazione-di-ipex"),s(P,"class","relative group"),s(K,"align","center"),s(ee,"align","center"),s(te,"align","center"),s(ie,"align","center"),s(ae,"align","center"),s(oe,"align","center"),s(re,"align","center"),s(le,"align","center"),s(ne,"align","center"),s(se,"align","center"),s(G,"href","https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/installation.html"),s(G,"rel","nofollow"),s(y,"id","utilizzo-nel-trainer"),s(y,"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"),s(y,"href","#utilizzo-nel-trainer"),s(E,"class","relative group"),s(H,"href","https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering"),s(H,"rel","nofollow"),s(T,"id","esempi-pratici"),s(T,"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"),s(T,"href","#esempi-pratici"),s(g,"class","relative group"),s(O,"href","https://huggingface.co/blog/intel-sapphire-rapids"),s(O,"rel","nofollow")},m(e,p){t(document.head,m),c(e,Se,p),c(e,_,p),t(_,z),t(z,_e),ue(U,_e,null),t(_,ft),t(_,ve),t(ve,ht),c(e,Be,p),c(e,Q,p),t(Q,mt),c(e,Ve,p),c(e,v,p),t(v,w),t(w,Pe),ue(k,Pe,null),t(v,_t),t(v,Ee),t(Ee,vt),c(e,qe,p),c(e,W,p),t(W,Pt),c(e,Fe,p),c(e,Y,p),t(Y,Et),c(e,De,p),c(e,x,p),t(x,bt),t(x,M),t(M,gt),t(x,zt),c(e,Re,p),c(e,P,p),t(P,A),t(A,be),ue(S,be,null),t(P,wt),t(P,ge),t(ge,xt),c(e,Ge,p),c(e,j,p),t(j,At),c(e,Le,p),c(e,I,p),t(I,ze),t(ze,B),t(B,K),t(K,It),t(B,$t),t(B,ee),t(ee,yt),t(I,Tt),t(I,h),t(h,V),t(V,te),t(te,Xt),t(V,Ct),t(V,ie),t(ie,Ut),t(h,kt),t(h,q),t(q,ae),t(ae,Mt),t(q,St),t(q,oe),t(oe,Bt),t(h,Vt),t(h,F),t(F,re),t(re,qt),t(F,Ft),t(F,le),t(le,Dt),t(h,Rt),t(h,D),t(D,ne),t(ne,Gt),t(D,Lt),t(D,se),t(se,Nt),c(e,Ne,p),ue(R,e,p),c(e,He,p),c(e,$,p),t($,Ht),t($,G),t(G,Jt),t($,Zt),c(e,Je,p),c(e,E,p),t(E,y),t(y,we),ue(L,we,null),t(E,Ot),t(E,xe),t(xe,Qt),c(e,Ze,p),c(e,f,p),t(f,Wt),t(f,Ae),t(Ae,Yt),t(f,jt),t(f,Ie),t(Ie,Kt),t(f,ei),t(f,$e),t($e,ti),t(f,ii),c(e,Oe,p),c(e,N,p),t(N,ai),t(N,H),t(H,oi),c(e,Qe,p),c(e,pe,p),t(pe,ye),t(ye,ri),c(e,We,p),c(e,b,p),t(b,li),t(b,Te),t(Te,ni),t(b,si),t(b,Xe),t(Xe,pi),c(e,Ye,p),c(e,g,p),t(g,T),t(T,Ce),ue(J,Ce,null),t(g,ci),t(g,Ue),t(Ue,di),c(e,je,p),c(e,Z,p),t(Z,ui),t(Z,O),t(O,fi),Ke=!0},p:sa,i(e){Ke||(fe(U.$$.fragment,e),fe(k.$$.fragment,e),fe(S.$$.fragment,e),fe(R.$$.fragment,e),fe(L.$$.fragment,e),fe(J.$$.fragment,e),Ke=!0)},o(e){he(U.$$.fragment,e),he(k.$$.fragment,e),he(S.$$.fragment,e),he(R.$$.fragment,e),he(L.$$.fragment,e),he(J.$$.fragment,e),Ke=!1},d(e){i(m),e&&i(Se),e&&i(_),me(U),e&&i(Be),e&&i(Q),e&&i(Ve),e&&i(v),me(k),e&&i(qe),e&&i(W),e&&i(Fe),e&&i(Y),e&&i(De),e&&i(x),e&&i(Re),e&&i(P),me(S),e&&i(Ge),e&&i(j),e&&i(Le),e&&i(I),e&&i(Ne),me(R,e),e&&i(He),e&&i($),e&&i(Je),e&&i(E),me(L),e&&i(Ze),e&&i(f),e&&i(Oe),e&&i(N),e&&i(Qe),e&&i(pe),e&&i(We),e&&i(b),e&&i(Ye),e&&i(g),me(J),e&&i(je),e&&i(Z)}}}const ua={local:"addestramento-efficiente-su-cpu",sections:[{local:"mixed-precision-con-ipex",sections:[{local:"installazione-di-ipex",title:"Installazione di IPEX:"},{local:"utilizzo-nel-trainer",title:"Utilizzo nel Trainer"},{local:"esempi-pratici",title:"Esempi pratici"}],title:"Mixed precision con IPEX"}],title:"Addestramento efficiente su CPU"};function fa(_i){return pa(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class va extends oa{constructor(m){super();ra(this,m,fa,da,la,{})}}export{va as default,ua as metadata};
