import{s as it,o as at,n as ot}from"../chunks/scheduler.36a0863c.js";import{S as rt,i as st,g as o,s as i,r as c,A as pt,h as r,f as n,c as a,j as nt,u as d,x as s,k as lt,y as ct,a as l,v as m,d as u,t as f,w as M}from"../chunks/index.9c13489a.js";import{T as dt}from"../chunks/Tip.3b06990e.js";import{C as O}from"../chunks/CodeBlock.05d8ec32.js";import{H as K,E as mt}from"../chunks/EditOnGithub.e88f2b7b.js";function ut(te){let p,_=`oneccl_bindings_for_pytorch 1.12.0 prebuilt wheel does not work with PyTorch 1.12.1 (it is for PyTorch 1.12.0)
PyTorch 1.12.1 should work with oneccl_bindings_for_pytorch 1.12.100`;return{c(){p=o("p"),p.textContent=_},l(h){p=r(h,"P",{"data-svelte-h":!0}),s(p)!=="svelte-is6c7w"&&(p.textContent=_)},m(h,q){l(h,p,q)},p:ot,d(h){h&&n(p)}}}function ft(te){let p,_,h,q,T,ne,b,Ee="Quando l’addestramento su una singola CPU è troppo lento, possiamo usare CPU multiple. Quasta guida si concentra su DDP basato su PyTorch abilitando l’addetramento distribuito su CPU in maniera efficiente.",le,y,ie,U,Be='<a href="https://github.com/oneapi-src/oneCCL" rel="nofollow">Intel® oneCCL</a> (collective communications library) è una libreria per l’addestramento efficiente del deep learning in distribuito e implementa collettivi come allreduce, allgather, alltoall. Per maggiori informazioni su oneCCL, fai riferimento a <a href="https://spec.oneapi.com/versions/latest/elements/oneCCL/source/index.html" rel="nofollow">oneCCL documentation</a> e <a href="https://spec.oneapi.com/versions/latest/elements/oneCCL/source/index.html" rel="nofollow">oneCCL specification</a>.',ae,g,Ne="Il modulo <code>oneccl_bindings_for_pytorch</code> (<code>torch_ccl</code> precedentemente alla versione 1.12)  implementa PyTorch C10D ProcessGroup API e può essere caricato dinamicamente com external ProcessGroup e funziona solo su piattaforma Linux al momento.",oe,w,Ze='Qui trovi informazioni più dettagliate per <a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt</a>.',re,$,se,x,Ge="I file wheel sono disponibili per le seguenti versioni di Python:",pe,J,He='<thead><tr><th align="center">Extension Version</th> <th align="center">Python 3.6</th> <th align="center">Python 3.7</th> <th align="center">Python 3.8</th> <th align="center">Python 3.9</th> <th align="center">Python 3.10</th></tr></thead> <tbody><tr><td align="center">1.13.0</td> <td align="center"></td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td></tr> <tr><td align="center">1.12.100</td> <td align="center"></td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td></tr> <tr><td align="center">1.12.0</td> <td align="center"></td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td></tr> <tr><td align="center">1.11.0</td> <td align="center"></td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td></tr> <tr><td align="center">1.10.0</td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td> <td align="center">√</td> <td align="center"></td></tr></tbody>',ce,v,de,I,Qe=`dove <code>{pytorch_version}</code> deve essere la tua versione di PyTorch, per l’stanza 1.13.0.
Verifica altri approcci per <a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt installation</a>.
Le versioni di oneCCL e PyTorch devono combaciare.`,me,C,ue,j,fe,z,Ae="Usa questa implementazione basata su standard MPI per fornire una architettura flessibile, efficiente, scalabile su cluster per Intel®. Questo componente è parte di Intel® oneAPI HPC Toolkit.",Me,L,Ve="oneccl_bindings_for_pytorch è installato insieme al set di strumenti MPI. Necessità di reperire l’ambiente prima di utilizzarlo.",he,P,Se="per Intel® oneCCL >= 1.12.0",Ce,X,_e,R,We="per Intel® oneCCL con versione < 1.12.0",Te,E,be,B,ye,N,ke='IPEX fornisce ottimizzazioni delle prestazioni per l’addestramento della CPU sia con Float32 che con BFloat16; puoi fare riferimento a <a href="./perf_train_cpu">single CPU section</a>.',Ue,Z,Ye="Il seguente “Utilizzo in Trainer” prende come esempio mpirun nella libreria Intel® MPI.",ge,G,we,H,Fe="Per abilitare l’addestramento distribuito multi CPU nel Trainer con il ccl backend, gli utenti devono aggiungere <strong><code>--ddp_backend ccl</code></strong> negli argomenti del comando.",$e,Q,De='Vediamo un esempio per il <a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering" rel="nofollow">question-answering example</a>',xe,A,qe="Il seguente comando abilita due processi sul nodo Xeon, con un processo in esecuzione per ogni socket. Le variabili OMP_NUM_THREADS/CCL_WORKER_COUNT possono essere impostate per una prestazione ottimale.",Je,V,ve,S,Oe="Il seguente comando abilita l’addestramento per un totale di quattro processi su due Xeon (node0 e node1, prendendo node0 come processo principale), ppn (processes per node) è impostato a 2, on un processo in esecuzione per ogni socket. Le variabili OMP_NUM_THREADS/CCL_WORKER_COUNT possono essere impostate per una prestazione ottimale.",Ie,W,Ke="In node0, è necessario creare un file di configurazione che contenga gli indirizzi IP di ciascun nodo (per esempio hostfile) e passare il percorso del file di configurazione come parametro.",je,k,ze,Y,et="A questo punto, esegui il seguente comando nel nodo0 e <strong>4DDP</strong> sarà abilitato in node0 e node1 con BF16 auto mixed precision:",Le,F,Pe,D,Xe,ee,Re;return T=new K({props:{title:"Addestramento effciente su multiple CPU",local:"addestramento-effciente-su-multiple-cpu",headingTag:"h1"}}),y=new K({props:{title:"Intel® oneCCL Bindings per PyTorch",local:"intel-oneccl-bindings-per-pytorch",headingTag:"h2"}}),$=new K({props:{title:"Intel® oneCCL Bindings per l’installazione PyTorch:",local:"intel-oneccl-bindings-per-linstallazione-pytorch",headingTag:"h3"}}),v=new O({props:{code:"cGlwJTIwaW5zdGFsbCUyMG9uZWNjbF9iaW5kX3B0JTNEJTNEJTdCcHl0b3JjaF92ZXJzaW9uJTdEJTIwLWYlMjBodHRwcyUzQSUyRiUyRmRldmVsb3Blci5pbnRlbC5jb20lMkZpcGV4LXdobC1zdGFibGUtY3B1",highlighted:"pip install oneccl_bind_pt=={pytorch_version} -f https://developer.intel.com/ipex-whl-stable-cpu",wrap:!1}}),C=new dt({props:{warning:!0,$$slots:{default:[ut]},$$scope:{ctx:te}}}),j=new K({props:{title:"Intel® MPI library",local:"intel-mpi-library",headingTag:"h2"}}),X=new O({props:{code:"b25lY2NsX2JpbmRpbmdzX2Zvcl9weXRvcmNoX3BhdGglM0QlMjQocHl0aG9uJTIwLWMlMjAlMjJmcm9tJTIwb25lY2NsX2JpbmRpbmdzX2Zvcl9weXRvcmNoJTIwaW1wb3J0JTIwY3dkJTNCJTIwcHJpbnQoY3dkKSUyMiklMEFzb3VyY2UlMjAlMjRvbmVjY2xfYmluZGluZ3NfZm9yX3B5dG9yY2hfcGF0aCUyRmVudiUyRnNldHZhcnMuc2g=",highlighted:`oneccl_bindings_for_pytorch_path=$(python -c <span class="hljs-string">&quot;from oneccl_bindings_for_pytorch import cwd; print(cwd)&quot;</span>)
<span class="hljs-built_in">source</span> <span class="hljs-variable">$oneccl_bindings_for_pytorch_path</span>/env/setvars.sh`,wrap:!1}}),E=new O({props:{code:"dG9yY2hfY2NsX3BhdGglM0QlMjQocHl0aG9uJTIwLWMlMjAlMjJpbXBvcnQlMjB0b3JjaCUzQiUyMGltcG9ydCUyMHRvcmNoX2NjbCUzQiUyMGltcG9ydCUyMG9zJTNCJTIwJTIwcHJpbnQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZSh0b3JjaF9jY2wuX19maWxlX18pKSklMjIpJTBBc291cmNlJTIwJTI0dG9yY2hfY2NsX3BhdGglMkZlbnYlMkZzZXR2YXJzLnNo",highlighted:`torch_ccl_path=$(python -c <span class="hljs-string">&quot;import torch; import torch_ccl; import os;  print(os.path.abspath(os.path.dirname(torch_ccl.__file__)))&quot;</span>)
<span class="hljs-built_in">source</span> <span class="hljs-variable">$torch_ccl_path</span>/env/setvars.sh`,wrap:!1}}),B=new K({props:{title:"Installazione IPEX:",local:"installazione-ipex",headingTag:"h4"}}),G=new K({props:{title:"Utilizzo in Trainer",local:"utilizzo-in-trainer",headingTag:"h2"}}),V=new O({props:{code:"JTIwZXhwb3J0JTIwQ0NMX1dPUktFUl9DT1VOVCUzRDElMEElMjBleHBvcnQlMjBNQVNURVJfQUREUiUzRDEyNy4wLjAuMSUwQSUyMG1waXJ1biUyMC1uJTIwMiUyMC1nZW52JTIwT01QX05VTV9USFJFQURTJTNEMjMlMjAlNUMlMEElMjBweXRob24zJTIwcnVuX3FhLnB5JTIwJTVDJTBBJTIwLS1tb2RlbF9uYW1lX29yX3BhdGglMjBnb29nbGUtYmVydCUyRmJlcnQtbGFyZ2UtdW5jYXNlZCUyMCU1QyUwQSUyMC0tZGF0YXNldF9uYW1lJTIwc3F1YWQlMjAlNUMlMEElMjAtLWRvX3RyYWluJTIwJTVDJTBBJTIwLS1kb19ldmFsJTIwJTVDJTBBJTIwLS1wZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlMjAxMiUyMCUyMCU1QyUwQSUyMC0tbGVhcm5pbmdfcmF0ZSUyMDNlLTUlMjAlMjAlNUMlMEElMjAtLW51bV90cmFpbl9lcG9jaHMlMjAyJTIwJTIwJTVDJTBBJTIwLS1tYXhfc2VxX2xlbmd0aCUyMDM4NCUyMCU1QyUwQSUyMC0tZG9jX3N0cmlkZSUyMDEyOCUyMCUyMCU1QyUwQSUyMC0tb3V0cHV0X2RpciUyMCUyRnRtcCUyRmRlYnVnX3NxdWFkJTJGJTIwJTVDJTBBJTIwLS1ub19jdWRhJTIwJTVDJTBBJTIwLS1kZHBfYmFja2VuZCUyMGNjbCUyMCU1QyUwQSUyMC0tdXNlX2lwZXg=",highlighted:` export CCL_WORKER_COUNT=1
 export MASTER_ADDR=127.0.0.1
 mpirun -n 2 -genv OMP_NUM_THREADS=23 \\
 python3 run_qa.py \\
 --model_name_or_path google-bert/bert-large-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/ \\
 --no_cuda \\
 --ddp_backend ccl \\
 --use_ipex`,wrap:!1}}),k=new O({props:{code:"JTIwY2F0JTIwaG9zdGZpbGUlMEElMjB4eHgueHh4Lnh4eC54eHglMjAlMjNub2RlMCUyMGlwJTBBJTIweHh4Lnh4eC54eHgueHh4JTIwJTIzbm9kZTElMjBpcA==",highlighted:` cat hostfile
 xxx.xxx.xxx.xxx #node0 ip
 xxx.xxx.xxx.xxx #node1 ip`,wrap:!1}}),F=new O({props:{code:"JTIwZXhwb3J0JTIwQ0NMX1dPUktFUl9DT1VOVCUzRDElMEElMjBleHBvcnQlMjBNQVNURVJfQUREUiUzRHh4eC54eHgueHh4Lnh4eCUyMCUyM25vZGUwJTIwaXAlMEElMjBtcGlydW4lMjAtZiUyMGhvc3RmaWxlJTIwLW4lMjA0JTIwLXBwbiUyMDIlMjAlNUMlMEElMjAtZ2VudiUyME9NUF9OVU1fVEhSRUFEUyUzRDIzJTIwJTVDJTBBJTIwcHl0aG9uMyUyMHJ1bl9xYS5weSUyMCU1QyUwQSUyMC0tbW9kZWxfbmFtZV9vcl9wYXRoJTIwZ29vZ2xlLWJlcnQlMkZiZXJ0LWxhcmdlLXVuY2FzZWQlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUyMHNxdWFkJTIwJTVDJTBBJTIwLS1kb190cmFpbiUyMCU1QyUwQSUyMC0tZG9fZXZhbCUyMCU1QyUwQSUyMC0tcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTIwMTIlMjAlMjAlNUMlMEElMjAtLWxlYXJuaW5nX3JhdGUlMjAzZS01JTIwJTIwJTVDJTBBJTIwLS1udW1fdHJhaW5fZXBvY2hzJTIwMiUyMCUyMCU1QyUwQSUyMC0tbWF4X3NlcV9sZW5ndGglMjAzODQlMjAlNUMlMEElMjAtLWRvY19zdHJpZGUlMjAxMjglMjAlMjAlNUMlMEElMjAtLW91dHB1dF9kaXIlMjAlMkZ0bXAlMkZkZWJ1Z19zcXVhZCUyRiUyMCU1QyUwQSUyMC0tbm9fY3VkYSUyMCU1QyUwQSUyMC0tZGRwX2JhY2tlbmQlMjBjY2wlMjAlNUMlMEElMjAtLXVzZV9pcGV4JTIwJTVDJTBBJTIwLS1iZjE2",highlighted:` export CCL_WORKER_COUNT=1
 export MASTER_ADDR=xxx.xxx.xxx.xxx #node0 ip
 mpirun -f hostfile -n 4 -ppn 2 \\
 -genv OMP_NUM_THREADS=23 \\
 python3 run_qa.py \\
 --model_name_or_path google-bert/bert-large-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/ \\
 --no_cuda \\
 --ddp_backend ccl \\
 --use_ipex \\
 --bf16`,wrap:!1}}),D=new mt({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/it/perf_train_cpu_many.md"}}),{c(){p=o("meta"),_=i(),h=o("p"),q=i(),c(T.$$.fragment),ne=i(),b=o("p"),b.textContent=Ee,le=i(),c(y.$$.fragment),ie=i(),U=o("p"),U.innerHTML=Be,ae=i(),g=o("p"),g.innerHTML=Ne,oe=i(),w=o("p"),w.innerHTML=Ze,re=i(),c($.$$.fragment),se=i(),x=o("p"),x.textContent=Ge,pe=i(),J=o("table"),J.innerHTML=He,ce=i(),c(v.$$.fragment),de=i(),I=o("p"),I.innerHTML=Qe,me=i(),c(C.$$.fragment),ue=i(),c(j.$$.fragment),fe=i(),z=o("p"),z.textContent=Ae,Me=i(),L=o("p"),L.textContent=Ve,he=i(),P=o("p"),P.textContent=Se,Ce=i(),c(X.$$.fragment),_e=i(),R=o("p"),R.textContent=We,Te=i(),c(E.$$.fragment),be=i(),c(B.$$.fragment),ye=i(),N=o("p"),N.innerHTML=ke,Ue=i(),Z=o("p"),Z.textContent=Ye,ge=i(),c(G.$$.fragment),we=i(),H=o("p"),H.innerHTML=Fe,$e=i(),Q=o("p"),Q.innerHTML=De,xe=i(),A=o("p"),A.textContent=qe,Je=i(),c(V.$$.fragment),ve=i(),S=o("p"),S.textContent=Oe,Ie=i(),W=o("p"),W.textContent=Ke,je=i(),c(k.$$.fragment),ze=i(),Y=o("p"),Y.innerHTML=et,Le=i(),c(F.$$.fragment),Pe=i(),c(D.$$.fragment),Xe=i(),ee=o("p"),this.h()},l(e){const t=pt("svelte-u9bgzb",document.head);p=r(t,"META",{name:!0,content:!0}),t.forEach(n),_=a(e),h=r(e,"P",{}),nt(h).forEach(n),q=a(e),d(T.$$.fragment,e),ne=a(e),b=r(e,"P",{"data-svelte-h":!0}),s(b)!=="svelte-1kfu2az"&&(b.textContent=Ee),le=a(e),d(y.$$.fragment,e),ie=a(e),U=r(e,"P",{"data-svelte-h":!0}),s(U)!=="svelte-1lu0lvx"&&(U.innerHTML=Be),ae=a(e),g=r(e,"P",{"data-svelte-h":!0}),s(g)!=="svelte-ctw5mc"&&(g.innerHTML=Ne),oe=a(e),w=r(e,"P",{"data-svelte-h":!0}),s(w)!=="svelte-12jdnef"&&(w.innerHTML=Ze),re=a(e),d($.$$.fragment,e),se=a(e),x=r(e,"P",{"data-svelte-h":!0}),s(x)!=="svelte-awoh7n"&&(x.textContent=Ge),pe=a(e),J=r(e,"TABLE",{"data-svelte-h":!0}),s(J)!=="svelte-1yk106u"&&(J.innerHTML=He),ce=a(e),d(v.$$.fragment,e),de=a(e),I=r(e,"P",{"data-svelte-h":!0}),s(I)!=="svelte-xq4hi3"&&(I.innerHTML=Qe),me=a(e),d(C.$$.fragment,e),ue=a(e),d(j.$$.fragment,e),fe=a(e),z=r(e,"P",{"data-svelte-h":!0}),s(z)!=="svelte-1v3lzwy"&&(z.textContent=Ae),Me=a(e),L=r(e,"P",{"data-svelte-h":!0}),s(L)!=="svelte-7y5acl"&&(L.textContent=Ve),he=a(e),P=r(e,"P",{"data-svelte-h":!0}),s(P)!=="svelte-37i02y"&&(P.textContent=Se),Ce=a(e),d(X.$$.fragment,e),_e=a(e),R=r(e,"P",{"data-svelte-h":!0}),s(R)!=="svelte-2y4a8e"&&(R.textContent=We),Te=a(e),d(E.$$.fragment,e),be=a(e),d(B.$$.fragment,e),ye=a(e),N=r(e,"P",{"data-svelte-h":!0}),s(N)!=="svelte-ucejiq"&&(N.innerHTML=ke),Ue=a(e),Z=r(e,"P",{"data-svelte-h":!0}),s(Z)!=="svelte-1j4jwwj"&&(Z.textContent=Ye),ge=a(e),d(G.$$.fragment,e),we=a(e),H=r(e,"P",{"data-svelte-h":!0}),s(H)!=="svelte-c1ynuc"&&(H.innerHTML=Fe),$e=a(e),Q=r(e,"P",{"data-svelte-h":!0}),s(Q)!=="svelte-15bz7m"&&(Q.innerHTML=De),xe=a(e),A=r(e,"P",{"data-svelte-h":!0}),s(A)!=="svelte-1aptuua"&&(A.textContent=qe),Je=a(e),d(V.$$.fragment,e),ve=a(e),S=r(e,"P",{"data-svelte-h":!0}),s(S)!=="svelte-8wv2la"&&(S.textContent=Oe),Ie=a(e),W=r(e,"P",{"data-svelte-h":!0}),s(W)!=="svelte-1m5a0mz"&&(W.textContent=Ke),je=a(e),d(k.$$.fragment,e),ze=a(e),Y=r(e,"P",{"data-svelte-h":!0}),s(Y)!=="svelte-lx9bti"&&(Y.innerHTML=et),Le=a(e),d(F.$$.fragment,e),Pe=a(e),d(D.$$.fragment,e),Xe=a(e),ee=r(e,"P",{}),nt(ee).forEach(n),this.h()},h(){lt(p,"name","hf:doc:metadata"),lt(p,"content",Mt)},m(e,t){ct(document.head,p),l(e,_,t),l(e,h,t),l(e,q,t),m(T,e,t),l(e,ne,t),l(e,b,t),l(e,le,t),m(y,e,t),l(e,ie,t),l(e,U,t),l(e,ae,t),l(e,g,t),l(e,oe,t),l(e,w,t),l(e,re,t),m($,e,t),l(e,se,t),l(e,x,t),l(e,pe,t),l(e,J,t),l(e,ce,t),m(v,e,t),l(e,de,t),l(e,I,t),l(e,me,t),m(C,e,t),l(e,ue,t),m(j,e,t),l(e,fe,t),l(e,z,t),l(e,Me,t),l(e,L,t),l(e,he,t),l(e,P,t),l(e,Ce,t),m(X,e,t),l(e,_e,t),l(e,R,t),l(e,Te,t),m(E,e,t),l(e,be,t),m(B,e,t),l(e,ye,t),l(e,N,t),l(e,Ue,t),l(e,Z,t),l(e,ge,t),m(G,e,t),l(e,we,t),l(e,H,t),l(e,$e,t),l(e,Q,t),l(e,xe,t),l(e,A,t),l(e,Je,t),m(V,e,t),l(e,ve,t),l(e,S,t),l(e,Ie,t),l(e,W,t),l(e,je,t),m(k,e,t),l(e,ze,t),l(e,Y,t),l(e,Le,t),m(F,e,t),l(e,Pe,t),m(D,e,t),l(e,Xe,t),l(e,ee,t),Re=!0},p(e,[t]){const tt={};t&2&&(tt.$$scope={dirty:t,ctx:e}),C.$set(tt)},i(e){Re||(u(T.$$.fragment,e),u(y.$$.fragment,e),u($.$$.fragment,e),u(v.$$.fragment,e),u(C.$$.fragment,e),u(j.$$.fragment,e),u(X.$$.fragment,e),u(E.$$.fragment,e),u(B.$$.fragment,e),u(G.$$.fragment,e),u(V.$$.fragment,e),u(k.$$.fragment,e),u(F.$$.fragment,e),u(D.$$.fragment,e),Re=!0)},o(e){f(T.$$.fragment,e),f(y.$$.fragment,e),f($.$$.fragment,e),f(v.$$.fragment,e),f(C.$$.fragment,e),f(j.$$.fragment,e),f(X.$$.fragment,e),f(E.$$.fragment,e),f(B.$$.fragment,e),f(G.$$.fragment,e),f(V.$$.fragment,e),f(k.$$.fragment,e),f(F.$$.fragment,e),f(D.$$.fragment,e),Re=!1},d(e){e&&(n(_),n(h),n(q),n(ne),n(b),n(le),n(ie),n(U),n(ae),n(g),n(oe),n(w),n(re),n(se),n(x),n(pe),n(J),n(ce),n(de),n(I),n(me),n(ue),n(fe),n(z),n(Me),n(L),n(he),n(P),n(Ce),n(_e),n(R),n(Te),n(be),n(ye),n(N),n(Ue),n(Z),n(ge),n(we),n(H),n($e),n(Q),n(xe),n(A),n(Je),n(ve),n(S),n(Ie),n(W),n(je),n(ze),n(Y),n(Le),n(Pe),n(Xe),n(ee)),n(p),M(T,e),M(y,e),M($,e),M(v,e),M(C,e),M(j,e),M(X,e),M(E,e),M(B,e),M(G,e),M(V,e),M(k,e),M(F,e),M(D,e)}}}const Mt='{"title":"Addestramento effciente su multiple CPU","local":"addestramento-effciente-su-multiple-cpu","sections":[{"title":"Intel® oneCCL Bindings per PyTorch","local":"intel-oneccl-bindings-per-pytorch","sections":[{"title":"Intel® oneCCL Bindings per l’installazione PyTorch:","local":"intel-oneccl-bindings-per-linstallazione-pytorch","sections":[],"depth":3}],"depth":2},{"title":"Intel® MPI library","local":"intel-mpi-library","sections":[{"title":"Installazione IPEX:","local":"installazione-ipex","sections":[],"depth":4}],"depth":2},{"title":"Utilizzo in Trainer","local":"utilizzo-in-trainer","sections":[],"depth":2}],"depth":1}';function ht(te){return at(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ut extends rt{constructor(p){super(),st(this,p,ht,ft,it,{})}}export{Ut as component};
