import{s as Oe,o as Ke,n as tl}from"../chunks/scheduler.56730f09.js";import{S as el,i as ll,g as a,s as r,u as f,m as De,A as nl,h as i,f as e,c as o,j as h,v as u,y as p,n as qe,k as s,o as c,a as n,w as M,d as m,t as _,x as w}from"../chunks/index.ba464511.js";import{T as al}from"../chunks/Tip.70442610.js";import{I as _t}from"../chunks/IconCopyLink.89bde88e.js";import{C as wt}from"../chunks/CodeBlock.2302fd0d.js";function il(bt){let d,k=`oneccl_bindings_for_pytorch 1.12.0 버전의 미리 빌드된 Wheel 파일은 PyTorch 1.12.1과 호환되지 않습니다(PyTorch 1.12.0용입니다).
PyTorch 1.12.1은 oneccl_bindings_for_pytorch 1.12.10 버전과 함께 사용해야 합니다.`;return{c(){d=a("p"),d.textContent=k},l(C){d=i(C,"P",{"data-svelte-h":!0}),p(d)!=="svelte-1k8o8ah"&&(d.textContent=k)},m(C,pt){n(C,d,pt)},p:tl,d(C){C&&e(d)}}}function rl(bt){let d,k,C,pt,v,b,Ct,A,ce,ht,Me="다중 CPU에서 효율적으로 훈련하기",Jt,L,me="하나의 CPU에서 훈련하는 것이 너무 느릴 때는 다중 CPU를 사용할 수 있습니다. 이 가이드는 PyTorch 기반의 DDP를 사용하여 분산 CPU 훈련을 효율적으로 수행하는 방법에 대해 설명합니다.",$t,y,J,vt,N,pe,dt,_e="PyTorch용 Intel® oneCCL 바인딩",jt,X,we='<a href="https://github.com/oneapi-src/oneCCL" rel="nofollow">Intel® oneCCL</a> (collective communications library)은 allreduce, allgather, alltoall과 같은 집합 통신(collective communications)을 구현한 효율적인 분산 딥러닝 훈련을 위한 라이브러리입니다. oneCCL에 대한 자세한 정보는 <a href="https://spec.oneapi.com/versions/latest/elements/oneCCL/source/index.html" rel="nofollow">oneCCL 문서</a>와 <a href="https://spec.oneapi.com/versions/latest/elements/oneCCL/source/index.html" rel="nofollow">oneCCL 사양</a>을 참조하세요.',It,R,Ce="<code>oneccl_bindings_for_pytorch</code> 모듈 (<code>torch_ccl</code>은 버전 1.12 이전에 사용)은 PyTorch C10D ProcessGroup API를 구현하며, 외부 ProcessGroup로 동적으로 가져올 수 있으며 현재 Linux 플랫폼에서만 작동합니다.",Pt,B,ve='<a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt</a>에서 더 자세한 정보를 확인하세요.',Et,T,$,yt,Z,he,ft,ye="PyTorch용 Intel® oneCCL 바인딩 설치:",kt,H,Te="다음 Python 버전에 대한 Wheel 파일을 사용할 수 있습니다.",At,S,xe='<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>',Lt,G,Nt,V,Ue=`<code>{pytorch_version}</code>은 1.13.0과 같이 PyTorch 버전을 나타냅니다.
<a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt 설치</a>에 대한 더 많은 접근 방법을 확인해 보세요.
oneCCL과 PyTorch의 버전은 일치해야 합니다.`,Xt,j,Rt,x,I,Tt,W,de,ut,ge="Intel® MPI 라이브러리",Bt,Y,be="oneccl_bindings_for_pytorch는 MPI 도구 세트와 함께 설치됩니다. 사용하기 전에 환경을 소스로 지정해야 합니다.",Zt,Q,Je="Intel® oneCCL 버전 1.12.0 이상인 경우",Ht,F,St,z,$e="Intel® oneCCL 버전이 1.12.0 미만인 경우",Gt,D,Vt,U,P,xt,q,fe,Mt,je="IPEX 설치:",Wt,O,Ie='IPEX는 Float32와 BFloat16을 모두 사용하는 CPU 훈련을 위한 성능 최적화를 제공합니다. <a href="./perf_train_cpu">single CPU section</a>을 참조하세요.',Yt,K,Pe="이어서 나오는 “Trainer에서의 사용”은 Intel® MPI 라이브러리의 mpirun을 예로 들었습니다.",Qt,g,E,Ut,tt,ue,mt,Ee="Trainer에서의 사용",Ft,et,ke='<a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering" rel="nofollow">질의 응답 예제</a>를 사용한 예를 살펴보겠습니다.',zt,lt,Ae="다음 명령은 한 Xeon 노드에서 2개의 프로세스로 훈련을 활성화하며, 각 소켓당 하나의 프로세스가 실행됩니다. OMP_NUM_THREADS/CCL_WORKER_COUNT 변수는 최적의 성능을 위해 조정할 수 있습니다.",Dt,nt,qt,at,Le="다음 명령은 두 개의 Xeon(노드0 및 노드1, 주 프로세스로 노드0을 사용)에서 총 4개의 프로세스로 훈련을 활성화하며, 각 소켓당 하나의 프로세스가 실행됩니다. OMP_NUM_THREADS/CCL_WORKER_COUNT 변수는 최적의 성능을 위해 조정할 수 있습니다.",Ot,it,Ne="노드0에서는 각 노드의 IP 주소를 포함하는 구성 파일(예: hostfile)을 생성하고 해당 구성 파일 경로를 인수로 전달해야 합니다.",Kt,rt,te,ot,Xe="이제 노드0에서 다음 명령을 실행하면 <strong>4DDP</strong>가 노드0 및 노드1에서 BF16 자동 혼합 정밀도로 활성화됩니다.",ee,st,le,gt,ne;return A=new _t({}),N=new _t({}),Z=new _t({}),G=new wt({props:{code:"cGlwJTIwaW5zdGFsbCUyMG9uZWNjbF9iaW5kX3B0JTNEJTNEJTdCcHl0b3JjaF92ZXJzaW9uJTdEJTIwLWYlMjBodHRwcyUzQSUyRiUyRmRldmVsb3Blci5pbnRlbC5jb20lMkZpcGV4LXdobC1zdGFibGUtY3B1",highlighted:'pip install oneccl_bind_pt=={<span class="hljs-attribute">pytorch_version} -f https</span>://developer<span class="hljs-variable">.intel</span><span class="hljs-variable">.com</span>/ipex-whl-stable-cpu',wrap:!1}}),j=new al({props:{warning:!0,$$slots:{default:[il]},$$scope:{ctx:bt}}}),W=new _t({}),F=new wt({props:{code:"b25lY2NsX2JpbmRpbmdzX2Zvcl9weXRvcmNoX3BhdGglM0QlMjQocHl0aG9uJTIwLWMlMjAlMjJmcm9tJTIwb25lY2NsX2JpbmRpbmdzX2Zvcl9weXRvcmNoJTIwaW1wb3J0JTIwY3dkJTNCJTIwcHJpbnQoY3dkKSUyMiklMEFzb3VyY2UlMjAlMjRvbmVjY2xfYmluZGluZ3NfZm9yX3B5dG9yY2hfcGF0aCUyRmVudiUyRnNldHZhcnMuc2g=",highlighted:`oneccl_bindings_for_pytorch_path=$(<span class="hljs-keyword">python</span> -c <span class="hljs-string">&quot;from oneccl_bindings_for_pytorch import cwd; print(cwd)&quot;</span>)
<span class="hljs-keyword">source</span> $oneccl_bindings_for_pytorch_path/<span class="hljs-keyword">env</span>/setvars.sh`,wrap:!1}}),D=new wt({props:{code:"dG9yY2hfY2NsX3BhdGglM0QlMjQocHl0aG9uJTIwLWMlMjAlMjJpbXBvcnQlMjB0b3JjaCUzQiUyMGltcG9ydCUyMHRvcmNoX2NjbCUzQiUyMGltcG9ydCUyMG9zJTNCJTIwJTIwcHJpbnQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZSh0b3JjaF9jY2wuX19maWxlX18pKSklMjIpJTBBc291cmNlJTIwJTI0dG9yY2hfY2NsX3BhdGglMkZlbnYlMkZzZXR2YXJzLnNo",highlighted:`torch_ccl_path=$(<span class="hljs-keyword">python</span> -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-keyword">source</span> $torch_ccl_path/<span class="hljs-keyword">env</span>/setvars.sh`,wrap:!1}}),q=new _t({}),tt=new _t({}),nt=new wt({props:{code:"JTIwZXhwb3J0JTIwQ0NMX1dPUktFUl9DT1VOVCUzRDElMEElMjBleHBvcnQlMjBNQVNURVJfQUREUiUzRDEyNy4wLjAuMSUwQSUyMG1waXJ1biUyMC1uJTIwMiUyMC1nZW52JTIwT01QX05VTV9USFJFQURTJTNEMjMlMjAlNUMlMEElMjBweXRob24zJTIwcnVuX3FhLnB5JTIwJTVDJTBBJTIwLS1tb2RlbF9uYW1lX29yX3BhdGglMjBiZXJ0LWxhcmdlLXVuY2FzZWQlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUyMHNxdWFkJTIwJTVDJTBBJTIwLS1kb190cmFpbiUyMCU1QyUwQSUyMC0tZG9fZXZhbCUyMCU1QyUwQSUyMC0tcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTIwMTIlMjAlMjAlNUMlMEElMjAtLWxlYXJuaW5nX3JhdGUlMjAzZS01JTIwJTIwJTVDJTBBJTIwLS1udW1fdHJhaW5fZXBvY2hzJTIwMiUyMCUyMCU1QyUwQSUyMC0tbWF4X3NlcV9sZW5ndGglMjAzODQlMjAlNUMlMEElMjAtLWRvY19zdHJpZGUlMjAxMjglMjAlMjAlNUMlMEElMjAtLW91dHB1dF9kaXIlMjAlMkZ0bXAlMkZkZWJ1Z19zcXVhZCUyRiUyMCU1QyUwQSUyMC0tbm9fY3VkYSUyMCU1QyUwQSUyMC0tZGRwX2JhY2tlbmQlMjBjY2wlMjAlNUMlMEElMjAtLXVzZV9pcGV4",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 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}}),rt=new wt({props:{code:"JTIwY2F0JTIwaG9zdGZpbGUlMEElMjB4eHgueHh4Lnh4eC54eHglMjAlMjNub2RlMCUyMGlwJTBBJTIweHh4Lnh4eC54eHgueHh4JTIwJTIzbm9kZTElMjBpcA==",highlighted:` cat hostfile
 xxx.xxx.xxx.xxx #node0 ip
 xxx.xxx.xxx.xxx #node1 ip`,wrap:!1}}),st=new wt({props:{code:"JTIwZXhwb3J0JTIwQ0NMX1dPUktFUl9DT1VOVCUzRDElMEElMjBleHBvcnQlMjBNQVNURVJfQUREUiUzRHh4eC54eHgueHh4Lnh4eCUyMCUyM25vZGUwJTIwaXAlMEElMjBtcGlydW4lMjAtZiUyMGhvc3RmaWxlJTIwLW4lMjA0JTIwLXBwbiUyMDIlMjAlNUMlMEElMjAtZ2VudiUyME9NUF9OVU1fVEhSRUFEUyUzRDIzJTIwJTVDJTBBJTIwcHl0aG9uMyUyMHJ1bl9xYS5weSUyMCU1QyUwQSUyMC0tbW9kZWxfbmFtZV9vcl9wYXRoJTIwYmVydC1sYXJnZS11bmNhc2VkJTIwJTVDJTBBJTIwLS1kYXRhc2V0X25hbWUlMjBzcXVhZCUyMCU1QyUwQSUyMC0tZG9fdHJhaW4lMjAlNUMlMEElMjAtLWRvX2V2YWwlMjAlNUMlMEElMjAtLXBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUyMDEyJTIwJTIwJTVDJTBBJTIwLS1sZWFybmluZ19yYXRlJTIwM2UtNSUyMCUyMCU1QyUwQSUyMC0tbnVtX3RyYWluX2Vwb2NocyUyMDIlMjAlMjAlNUMlMEElMjAtLW1heF9zZXFfbGVuZ3RoJTIwMzg0JTIwJTVDJTBBJTIwLS1kb2Nfc3RyaWRlJTIwMTI4JTIwJTIwJTVDJTBBJTIwLS1vdXRwdXRfZGlyJTIwJTJGdG1wJTJGZGVidWdfc3F1YWQlMkYlMjAlNUMlMEElMjAtLW5vX2N1ZGElMjAlNUMlMEElMjAtLWRkcF9iYWNrZW5kJTIwY2NsJTIwJTVDJTBBJTIwLS11c2VfaXBleCUyMCU1QyUwQSUyMC0tYmYxNg==",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 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}}),{c(){d=a("meta"),k=r(),C=a("p"),pt=r(),v=a("h1"),b=a("a"),Ct=a("span"),f(A.$$.fragment),ce=r(),ht=a("span"),ht.textContent=Me,Jt=r(),L=a("p"),L.textContent=me,$t=r(),y=a("h2"),J=a("a"),vt=a("span"),f(N.$$.fragment),pe=r(),dt=a("span"),dt.textContent=_e,jt=r(),X=a("p"),X.innerHTML=we,It=r(),R=a("p"),R.innerHTML=Ce,Pt=r(),B=a("p"),B.innerHTML=ve,Et=r(),T=a("h3"),$=a("a"),yt=a("span"),f(Z.$$.fragment),he=r(),ft=a("span"),ft.textContent=ye,kt=r(),H=a("p"),H.textContent=Te,At=r(),S=a("table"),S.innerHTML=xe,Lt=r(),f(G.$$.fragment),Nt=r(),V=a("p"),V.innerHTML=Ue,Xt=r(),f(j.$$.fragment),Rt=r(),x=a("h2"),I=a("a"),Tt=a("span"),f(W.$$.fragment),de=r(),ut=a("span"),ut.textContent=ge,Bt=De(`


이 표준 기반 MPI 구현을 사용하여 Intel® 아키텍처에서 유연하고 효율적이며 확장 가능한 클러스터 메시징을 제공하세요. 이 구성 요소는 Intel® oneAPI HPC Toolkit의 일부입니다.
`),Y=a("p"),Y.textContent=be,Zt=r(),Q=a("p"),Q.textContent=Je,Ht=r(),f(F.$$.fragment),St=r(),z=a("p"),z.textContent=$e,Gt=r(),f(D.$$.fragment),Vt=r(),U=a("h4"),P=a("a"),xt=a("span"),f(q.$$.fragment),fe=r(),Mt=a("span"),Mt.textContent=je,Wt=r(),O=a("p"),O.innerHTML=Ie,Yt=r(),K=a("p"),K.textContent=Pe,Qt=r(),g=a("h2"),E=a("a"),Ut=a("span"),f(tt.$$.fragment),ue=r(),mt=a("span"),mt.textContent=Ee,Ft=De(`


Trainer에서 ccl 백엔드를 사용하여 멀티 CPU 분산 훈련을 활성화하려면 명령 인수에 **\`--ddp_backend ccl\`**을 추가해야 합니다.
`),et=a("p"),et.innerHTML=ke,zt=r(),lt=a("p"),lt.textContent=Ae,Dt=r(),f(nt.$$.fragment),qt=r(),at=a("p"),at.textContent=Le,Ot=r(),it=a("p"),it.textContent=Ne,Kt=r(),f(rt.$$.fragment),te=r(),ot=a("p"),ot.innerHTML=Xe,ee=r(),f(st.$$.fragment),le=r(),gt=a("p"),this.h()},l(t){const l=nl("svelte-1phssyn",document.head);d=i(l,"META",{name:!0,content:!0}),l.forEach(e),k=o(t),C=i(t,"P",{}),h(C).forEach(e),pt=o(t),v=i(t,"H1",{class:!0});var ct=h(v);b=i(ct,"A",{id:!0,class:!0,href:!0});var Re=h(b);Ct=i(Re,"SPAN",{});var Be=h(Ct);u(A.$$.fragment,Be),Be.forEach(e),Re.forEach(e),ce=o(ct),ht=i(ct,"SPAN",{"data-svelte-h":!0}),p(ht)!=="svelte-jju877"&&(ht.textContent=Me),ct.forEach(e),Jt=o(t),L=i(t,"P",{"data-svelte-h":!0}),p(L)!=="svelte-17py23s"&&(L.textContent=me),$t=o(t),y=i(t,"H2",{class:!0});var ae=h(y);J=i(ae,"A",{id:!0,class:!0,href:!0});var Ze=h(J);vt=i(Ze,"SPAN",{});var He=h(vt);u(N.$$.fragment,He),He.forEach(e),Ze.forEach(e),pe=o(ae),dt=i(ae,"SPAN",{"data-svelte-h":!0}),p(dt)!=="svelte-ccejn4"&&(dt.textContent=_e),ae.forEach(e),jt=o(t),X=i(t,"P",{"data-svelte-h":!0}),p(X)!=="svelte-sgb8g"&&(X.innerHTML=we),It=o(t),R=i(t,"P",{"data-svelte-h":!0}),p(R)!=="svelte-1mnjdt1"&&(R.innerHTML=Ce),Pt=o(t),B=i(t,"P",{"data-svelte-h":!0}),p(B)!=="svelte-2n68ea"&&(B.innerHTML=ve),Et=o(t),T=i(t,"H3",{class:!0});var ie=h(T);$=i(ie,"A",{id:!0,class:!0,href:!0});var Se=h($);yt=i(Se,"SPAN",{});var Ge=h(yt);u(Z.$$.fragment,Ge),Ge.forEach(e),Se.forEach(e),he=o(ie),ft=i(ie,"SPAN",{"data-svelte-h":!0}),p(ft)!=="svelte-1j3fx4a"&&(ft.textContent=ye),ie.forEach(e),kt=o(t),H=i(t,"P",{"data-svelte-h":!0}),p(H)!=="svelte-1plon6x"&&(H.textContent=Te),At=o(t),S=i(t,"TABLE",{"data-svelte-h":!0}),p(S)!=="svelte-1yk106u"&&(S.innerHTML=xe),Lt=o(t),u(G.$$.fragment,t),Nt=o(t),V=i(t,"P",{"data-svelte-h":!0}),p(V)!=="svelte-rqhm0h"&&(V.innerHTML=Ue),Xt=o(t),u(j.$$.fragment,t),Rt=o(t),x=i(t,"H2",{class:!0});var re=h(x);I=i(re,"A",{id:!0,class:!0,href:!0});var Ve=h(I);Tt=i(Ve,"SPAN",{});var We=h(Tt);u(W.$$.fragment,We),We.forEach(e),Ve.forEach(e),de=o(re),ut=i(re,"SPAN",{"data-svelte-h":!0}),p(ut)!=="svelte-11juool"&&(ut.textContent=ge),re.forEach(e),Bt=qe(t,`


이 표준 기반 MPI 구현을 사용하여 Intel® 아키텍처에서 유연하고 효율적이며 확장 가능한 클러스터 메시징을 제공하세요. 이 구성 요소는 Intel® oneAPI HPC Toolkit의 일부입니다.
`),Y=i(t,"P",{"data-svelte-h":!0}),p(Y)!=="svelte-1mrjmgk"&&(Y.textContent=be),Zt=o(t),Q=i(t,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-1kggybc"&&(Q.textContent=Je),Ht=o(t),u(F.$$.fragment,t),St=o(t),z=i(t,"P",{"data-svelte-h":!0}),p(z)!=="svelte-r8fj7f"&&(z.textContent=$e),Gt=o(t),u(D.$$.fragment,t),Vt=o(t),U=i(t,"H4",{class:!0});var oe=h(U);P=i(oe,"A",{id:!0,class:!0,href:!0});var Ye=h(P);xt=i(Ye,"SPAN",{});var Qe=h(xt);u(q.$$.fragment,Qe),Qe.forEach(e),Ye.forEach(e),fe=o(oe),Mt=i(oe,"SPAN",{"data-svelte-h":!0}),p(Mt)!=="svelte-fb7ufp"&&(Mt.textContent=je),oe.forEach(e),Wt=o(t),O=i(t,"P",{"data-svelte-h":!0}),p(O)!=="svelte-1f1m2ii"&&(O.innerHTML=Ie),Yt=o(t),K=i(t,"P",{"data-svelte-h":!0}),p(K)!=="svelte-1yf9ppj"&&(K.textContent=Pe),Qt=o(t),g=i(t,"H2",{class:!0});var se=h(g);E=i(se,"A",{id:!0,class:!0,href:!0});var Fe=h(E);Ut=i(Fe,"SPAN",{});var ze=h(Ut);u(tt.$$.fragment,ze),ze.forEach(e),Fe.forEach(e),ue=o(se),mt=i(se,"SPAN",{"data-svelte-h":!0}),p(mt)!=="svelte-1kk0v0n"&&(mt.textContent=Ee),se.forEach(e),Ft=qe(t,`


Trainer에서 ccl 백엔드를 사용하여 멀티 CPU 분산 훈련을 활성화하려면 명령 인수에 **\`--ddp_backend ccl\`**을 추가해야 합니다.
`),et=i(t,"P",{"data-svelte-h":!0}),p(et)!=="svelte-1j3t9q7"&&(et.innerHTML=ke),zt=o(t),lt=i(t,"P",{"data-svelte-h":!0}),p(lt)!=="svelte-1ttrd84"&&(lt.textContent=Ae),Dt=o(t),u(nt.$$.fragment,t),qt=o(t),at=i(t,"P",{"data-svelte-h":!0}),p(at)!=="svelte-1k6xbsv"&&(at.textContent=Le),Ot=o(t),it=i(t,"P",{"data-svelte-h":!0}),p(it)!=="svelte-wix00e"&&(it.textContent=Ne),Kt=o(t),u(rt.$$.fragment,t),te=o(t),ot=i(t,"P",{"data-svelte-h":!0}),p(ot)!=="svelte-1u90oxq"&&(ot.innerHTML=Xe),ee=o(t),u(st.$$.fragment,t),le=o(t),gt=i(t,"P",{}),h(gt).forEach(e),this.h()},h(){s(d,"name","hf:doc:metadata"),s(d,"content",JSON.stringify(ol)),s(b,"id","efficient-training-on-multiple-cpus"),s(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"),s(b,"href","#efficient-training-on-multiple-cpus"),s(v,"class","relative group"),s(J,"id","intel-oneccl-bindings-for-pytorch"),s(J,"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(J,"href","#intel-oneccl-bindings-for-pytorch"),s(y,"class","relative group"),s($,"id","intel-oneccl-bindings-for-pytorch-installation"),s($,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),s($,"href","#intel-oneccl-bindings-for-pytorch-installation"),s(T,"class","relative group"),s(I,"id","intel-mpi-library"),s(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"),s(I,"href","#intel-mpi-library"),s(x,"class","relative group"),s(P,"id","ipex-installation"),s(P,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),s(P,"href","#ipex-installation"),s(U,"class","relative group"),s(E,"id","usage-in-trainer"),s(E,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),s(E,"href","#usage-in-trainer"),s(g,"class","relative group")},m(t,l){c(document.head,d),n(t,k,l),n(t,C,l),n(t,pt,l),n(t,v,l),c(v,b),c(b,Ct),M(A,Ct,null),c(v,ce),c(v,ht),n(t,Jt,l),n(t,L,l),n(t,$t,l),n(t,y,l),c(y,J),c(J,vt),M(N,vt,null),c(y,pe),c(y,dt),n(t,jt,l),n(t,X,l),n(t,It,l),n(t,R,l),n(t,Pt,l),n(t,B,l),n(t,Et,l),n(t,T,l),c(T,$),c($,yt),M(Z,yt,null),c(T,he),c(T,ft),n(t,kt,l),n(t,H,l),n(t,At,l),n(t,S,l),n(t,Lt,l),M(G,t,l),n(t,Nt,l),n(t,V,l),n(t,Xt,l),M(j,t,l),n(t,Rt,l),n(t,x,l),c(x,I),c(I,Tt),M(W,Tt,null),c(x,de),c(x,ut),n(t,Bt,l),n(t,Y,l),n(t,Zt,l),n(t,Q,l),n(t,Ht,l),M(F,t,l),n(t,St,l),n(t,z,l),n(t,Gt,l),M(D,t,l),n(t,Vt,l),n(t,U,l),c(U,P),c(P,xt),M(q,xt,null),c(U,fe),c(U,Mt),n(t,Wt,l),n(t,O,l),n(t,Yt,l),n(t,K,l),n(t,Qt,l),n(t,g,l),c(g,E),c(E,Ut),M(tt,Ut,null),c(g,ue),c(g,mt),n(t,Ft,l),n(t,et,l),n(t,zt,l),n(t,lt,l),n(t,Dt,l),M(nt,t,l),n(t,qt,l),n(t,at,l),n(t,Ot,l),n(t,it,l),n(t,Kt,l),M(rt,t,l),n(t,te,l),n(t,ot,l),n(t,ee,l),M(st,t,l),n(t,le,l),n(t,gt,l),ne=!0},p(t,[l]){const ct={};l&2&&(ct.$$scope={dirty:l,ctx:t}),j.$set(ct)},i(t){ne||(m(A.$$.fragment,t),m(N.$$.fragment,t),m(Z.$$.fragment,t),m(G.$$.fragment,t),m(j.$$.fragment,t),m(W.$$.fragment,t),m(F.$$.fragment,t),m(D.$$.fragment,t),m(q.$$.fragment,t),m(tt.$$.fragment,t),m(nt.$$.fragment,t),m(rt.$$.fragment,t),m(st.$$.fragment,t),ne=!0)},o(t){_(A.$$.fragment,t),_(N.$$.fragment,t),_(Z.$$.fragment,t),_(G.$$.fragment,t),_(j.$$.fragment,t),_(W.$$.fragment,t),_(F.$$.fragment,t),_(D.$$.fragment,t),_(q.$$.fragment,t),_(tt.$$.fragment,t),_(nt.$$.fragment,t),_(rt.$$.fragment,t),_(st.$$.fragment,t),ne=!1},d(t){t&&(e(k),e(C),e(pt),e(v),e(Jt),e(L),e($t),e(y),e(jt),e(X),e(It),e(R),e(Pt),e(B),e(Et),e(T),e(kt),e(H),e(At),e(S),e(Lt),e(Nt),e(V),e(Xt),e(Rt),e(x),e(Bt),e(Y),e(Zt),e(Q),e(Ht),e(St),e(z),e(Gt),e(Vt),e(U),e(Wt),e(O),e(Yt),e(K),e(Qt),e(g),e(Ft),e(et),e(zt),e(lt),e(Dt),e(qt),e(at),e(Ot),e(it),e(Kt),e(te),e(ot),e(ee),e(le),e(gt)),e(d),w(A),w(N),w(Z),w(G,t),w(j,t),w(W),w(F,t),w(D,t),w(q),w(tt),w(nt,t),w(rt,t),w(st,t)}}}const ol={local:"efficient-training-on-multiple-cpus",sections:[{local:"intel-oneccl-bindings-for-pytorch",sections:[{local:"intel-oneccl-bindings-for-pytorch-installation",title:"PyTorch용 Intel® oneCCL 바인딩 설치: "}],title:"PyTorch용 Intel® oneCCL 바인딩 "},{local:"intel-mpi-library",sections:[{local:"ipex-installation",title:"IPEX 설치: "}],title:"Intel® MPI 라이브러리 "},{local:"usage-in-trainer",title:"Trainer에서의 사용 "}],title:"다중 CPU에서 효율적으로 훈련하기 "};function sl(bt){return Ke(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ul extends el{constructor(d){super(),ll(this,d,sl,rl,Oe,{})}}export{ul as component};
