import{s as le,o as ne,n as ie}from"../chunks/scheduler.56730f09.js";import{S as ae,i as pe,g as p,s as i,r as c,A as re,h as r,f as l,c as a,j as te,u as d,x as s,k as ee,y as se,a as n,v as M,d as f,t as m,w as h}from"../chunks/index.1f144517.js";import{T as oe}from"../chunks/Tip.41e845e5.js";import{C as q}from"../chunks/CodeBlock.738eeccb.js";import{H as O}from"../chunks/Heading.57d46534.js";function ce(tt){let o,C=`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(){o=p("p"),o.textContent=C},l(T){o=r(T,"P",{"data-svelte-h":!0}),s(o)!=="svelte-1k8o8ah"&&(o.textContent=C)},m(T,D){n(T,o,D)},p:ie,d(T){T&&l(o)}}}function de(tt){let o,C,T,D,y,et,w,Et="하나의 CPU에서 훈련하는 것이 너무 느릴 때는 다중 CPU를 사용할 수 있습니다. 이 가이드는 PyTorch 기반의 DDP를 사용하여 분산 CPU 훈련을 효율적으로 수행하는 방법에 대해 설명합니다.",lt,u,nt,U,Rt='<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,$,Nt="<code>oneccl_bindings_for_pytorch</code> 모듈 (<code>torch_ccl</code>은 버전 1.12 이전에 사용)은 PyTorch C10D ProcessGroup API를 구현하며, 외부 ProcessGroup로 동적으로 가져올 수 있으며 현재 Linux 플랫폼에서만 작동합니다.",at,J,Bt='<a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt</a>에서 더 자세한 정보를 확인하세요.',pt,x,rt,b,Zt="다음 Python 버전에 대한 Wheel 파일을 사용할 수 있습니다.",st,g,At='<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>',ot,j,ct,I,Gt=`<code>{pytorch_version}</code>은 1.13.0과 같이 PyTorch 버전을 나타냅니다.
<a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt 설치</a>에 대한 더 많은 접근 방법을 확인해 보세요.
oneCCL과 PyTorch의 버전은 일치해야 합니다.`,dt,_,Mt,v,ft,L,Ht="이 표준 기반 MPI 구현을 사용하여 Intel® 아키텍처에서 유연하고 효율적이며 확장 가능한 클러스터 메시징을 제공하세요. 이 구성 요소는 Intel® oneAPI HPC Toolkit의 일부입니다.",mt,P,Vt="oneccl_bindings_for_pytorch는 MPI 도구 세트와 함께 설치됩니다. 사용하기 전에 환경을 소스로 지정해야 합니다.",ht,X,Wt="Intel® oneCCL 버전 1.12.0 이상인 경우",Tt,E,_t,R,kt="Intel® oneCCL 버전이 1.12.0 미만인 경우",Ct,N,yt,B,wt,Z,Yt='IPEX는 Float32와 BFloat16을 모두 사용하는 CPU 훈련을 위한 성능 최적화를 제공합니다. <a href="./perf_train_cpu">single CPU section</a>을 참조하세요.',ut,A,Qt="이어서 나오는 “Trainer에서의 사용”은 Intel® MPI 라이브러리의 mpirun을 예로 들었습니다.",Ut,G,$t,H,St="Trainer에서 ccl 백엔드를 사용하여 멀티 CPU 분산 훈련을 활성화하려면 명령 인수에 <strong><code>--ddp_backend ccl</code></strong>을 추가해야 합니다.",Jt,V,zt='<a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering" rel="nofollow">질의 응답 예제</a>를 사용한 예를 살펴보겠습니다.',xt,W,Ft="다음 명령은 한 Xeon 노드에서 2개의 프로세스로 훈련을 활성화하며, 각 소켓당 하나의 프로세스가 실행됩니다. OMP_NUM_THREADS/CCL_WORKER_COUNT 변수는 최적의 성능을 위해 조정할 수 있습니다.",bt,k,gt,Y,Dt="다음 명령은 두 개의 Xeon(노드0 및 노드1, 주 프로세스로 노드0을 사용)에서 총 4개의 프로세스로 훈련을 활성화하며, 각 소켓당 하나의 프로세스가 실행됩니다. OMP_NUM_THREADS/CCL_WORKER_COUNT 변수는 최적의 성능을 위해 조정할 수 있습니다.",jt,Q,qt="노드0에서는 각 노드의 IP 주소를 포함하는 구성 파일(예: hostfile)을 생성하고 해당 구성 파일 경로를 인수로 전달해야 합니다.",It,S,vt,z,Ot="이제 노드0에서 다음 명령을 실행하면 <strong>4DDP</strong>가 노드0 및 노드1에서 BF16 자동 혼합 정밀도로 활성화됩니다.",Lt,F,Pt,K,Xt;return y=new O({props:{title:"다중 CPU에서 효율적으로 훈련하기",local:"efficient-training-on-multiple-cpus",headingTag:"h1"}}),u=new O({props:{title:"PyTorch용 Intel® oneCCL 바인딩",local:"intel-oneccl-bindings-for-pytorch",headingTag:"h2"}}),x=new O({props:{title:"PyTorch용 Intel® oneCCL 바인딩 설치:",local:"intel-oneccl-bindings-for-pytorch-installation",headingTag:"h3"}}),j=new q({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}}),_=new oe({props:{warning:!0,$$slots:{default:[ce]},$$scope:{ctx:tt}}}),v=new O({props:{title:"Intel® MPI 라이브러리",local:"intel-mpi-library",headingTag:"h2"}}),E=new q({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}}),N=new q({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}}),B=new O({props:{title:"IPEX 설치:",local:"ipex-installation",headingTag:"h4"}}),G=new O({props:{title:"Trainer에서의 사용",local:"usage-in-trainer",headingTag:"h2"}}),k=new q({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}}),S=new q({props:{code:"JTIwY2F0JTIwaG9zdGZpbGUlMEElMjB4eHgueHh4Lnh4eC54eHglMjAlMjNub2RlMCUyMGlwJTBBJTIweHh4Lnh4eC54eHgueHh4JTIwJTIzbm9kZTElMjBpcA==",highlighted:` cat hostfile
 xxx.xxx.xxx.xxx #node0 ip
 xxx.xxx.xxx.xxx #node1 ip`,wrap:!1}}),F=new q({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(){o=p("meta"),C=i(),T=p("p"),D=i(),c(y.$$.fragment),et=i(),w=p("p"),w.textContent=Et,lt=i(),c(u.$$.fragment),nt=i(),U=p("p"),U.innerHTML=Rt,it=i(),$=p("p"),$.innerHTML=Nt,at=i(),J=p("p"),J.innerHTML=Bt,pt=i(),c(x.$$.fragment),rt=i(),b=p("p"),b.textContent=Zt,st=i(),g=p("table"),g.innerHTML=At,ot=i(),c(j.$$.fragment),ct=i(),I=p("p"),I.innerHTML=Gt,dt=i(),c(_.$$.fragment),Mt=i(),c(v.$$.fragment),ft=i(),L=p("p"),L.textContent=Ht,mt=i(),P=p("p"),P.textContent=Vt,ht=i(),X=p("p"),X.textContent=Wt,Tt=i(),c(E.$$.fragment),_t=i(),R=p("p"),R.textContent=kt,Ct=i(),c(N.$$.fragment),yt=i(),c(B.$$.fragment),wt=i(),Z=p("p"),Z.innerHTML=Yt,ut=i(),A=p("p"),A.textContent=Qt,Ut=i(),c(G.$$.fragment),$t=i(),H=p("p"),H.innerHTML=St,Jt=i(),V=p("p"),V.innerHTML=zt,xt=i(),W=p("p"),W.textContent=Ft,bt=i(),c(k.$$.fragment),gt=i(),Y=p("p"),Y.textContent=Dt,jt=i(),Q=p("p"),Q.textContent=qt,It=i(),c(S.$$.fragment),vt=i(),z=p("p"),z.innerHTML=Ot,Lt=i(),c(F.$$.fragment),Pt=i(),K=p("p"),this.h()},l(t){const e=re("svelte-u9bgzb",document.head);o=r(e,"META",{name:!0,content:!0}),e.forEach(l),C=a(t),T=r(t,"P",{}),te(T).forEach(l),D=a(t),d(y.$$.fragment,t),et=a(t),w=r(t,"P",{"data-svelte-h":!0}),s(w)!=="svelte-17py23s"&&(w.textContent=Et),lt=a(t),d(u.$$.fragment,t),nt=a(t),U=r(t,"P",{"data-svelte-h":!0}),s(U)!=="svelte-sgb8g"&&(U.innerHTML=Rt),it=a(t),$=r(t,"P",{"data-svelte-h":!0}),s($)!=="svelte-1mnjdt1"&&($.innerHTML=Nt),at=a(t),J=r(t,"P",{"data-svelte-h":!0}),s(J)!=="svelte-2n68ea"&&(J.innerHTML=Bt),pt=a(t),d(x.$$.fragment,t),rt=a(t),b=r(t,"P",{"data-svelte-h":!0}),s(b)!=="svelte-1plon6x"&&(b.textContent=Zt),st=a(t),g=r(t,"TABLE",{"data-svelte-h":!0}),s(g)!=="svelte-1yk106u"&&(g.innerHTML=At),ot=a(t),d(j.$$.fragment,t),ct=a(t),I=r(t,"P",{"data-svelte-h":!0}),s(I)!=="svelte-rqhm0h"&&(I.innerHTML=Gt),dt=a(t),d(_.$$.fragment,t),Mt=a(t),d(v.$$.fragment,t),ft=a(t),L=r(t,"P",{"data-svelte-h":!0}),s(L)!=="svelte-1d9ftxv"&&(L.textContent=Ht),mt=a(t),P=r(t,"P",{"data-svelte-h":!0}),s(P)!=="svelte-1mrjmgk"&&(P.textContent=Vt),ht=a(t),X=r(t,"P",{"data-svelte-h":!0}),s(X)!=="svelte-1kggybc"&&(X.textContent=Wt),Tt=a(t),d(E.$$.fragment,t),_t=a(t),R=r(t,"P",{"data-svelte-h":!0}),s(R)!=="svelte-r8fj7f"&&(R.textContent=kt),Ct=a(t),d(N.$$.fragment,t),yt=a(t),d(B.$$.fragment,t),wt=a(t),Z=r(t,"P",{"data-svelte-h":!0}),s(Z)!=="svelte-1f1m2ii"&&(Z.innerHTML=Yt),ut=a(t),A=r(t,"P",{"data-svelte-h":!0}),s(A)!=="svelte-1yf9ppj"&&(A.textContent=Qt),Ut=a(t),d(G.$$.fragment,t),$t=a(t),H=r(t,"P",{"data-svelte-h":!0}),s(H)!=="svelte-175tvds"&&(H.innerHTML=St),Jt=a(t),V=r(t,"P",{"data-svelte-h":!0}),s(V)!=="svelte-1j3t9q7"&&(V.innerHTML=zt),xt=a(t),W=r(t,"P",{"data-svelte-h":!0}),s(W)!=="svelte-1ttrd84"&&(W.textContent=Ft),bt=a(t),d(k.$$.fragment,t),gt=a(t),Y=r(t,"P",{"data-svelte-h":!0}),s(Y)!=="svelte-1k6xbsv"&&(Y.textContent=Dt),jt=a(t),Q=r(t,"P",{"data-svelte-h":!0}),s(Q)!=="svelte-wix00e"&&(Q.textContent=qt),It=a(t),d(S.$$.fragment,t),vt=a(t),z=r(t,"P",{"data-svelte-h":!0}),s(z)!=="svelte-1u90oxq"&&(z.innerHTML=Ot),Lt=a(t),d(F.$$.fragment,t),Pt=a(t),K=r(t,"P",{}),te(K).forEach(l),this.h()},h(){ee(o,"name","hf:doc:metadata"),ee(o,"content",Me)},m(t,e){se(document.head,o),n(t,C,e),n(t,T,e),n(t,D,e),M(y,t,e),n(t,et,e),n(t,w,e),n(t,lt,e),M(u,t,e),n(t,nt,e),n(t,U,e),n(t,it,e),n(t,$,e),n(t,at,e),n(t,J,e),n(t,pt,e),M(x,t,e),n(t,rt,e),n(t,b,e),n(t,st,e),n(t,g,e),n(t,ot,e),M(j,t,e),n(t,ct,e),n(t,I,e),n(t,dt,e),M(_,t,e),n(t,Mt,e),M(v,t,e),n(t,ft,e),n(t,L,e),n(t,mt,e),n(t,P,e),n(t,ht,e),n(t,X,e),n(t,Tt,e),M(E,t,e),n(t,_t,e),n(t,R,e),n(t,Ct,e),M(N,t,e),n(t,yt,e),M(B,t,e),n(t,wt,e),n(t,Z,e),n(t,ut,e),n(t,A,e),n(t,Ut,e),M(G,t,e),n(t,$t,e),n(t,H,e),n(t,Jt,e),n(t,V,e),n(t,xt,e),n(t,W,e),n(t,bt,e),M(k,t,e),n(t,gt,e),n(t,Y,e),n(t,jt,e),n(t,Q,e),n(t,It,e),M(S,t,e),n(t,vt,e),n(t,z,e),n(t,Lt,e),M(F,t,e),n(t,Pt,e),n(t,K,e),Xt=!0},p(t,[e]){const Kt={};e&2&&(Kt.$$scope={dirty:e,ctx:t}),_.$set(Kt)},i(t){Xt||(f(y.$$.fragment,t),f(u.$$.fragment,t),f(x.$$.fragment,t),f(j.$$.fragment,t),f(_.$$.fragment,t),f(v.$$.fragment,t),f(E.$$.fragment,t),f(N.$$.fragment,t),f(B.$$.fragment,t),f(G.$$.fragment,t),f(k.$$.fragment,t),f(S.$$.fragment,t),f(F.$$.fragment,t),Xt=!0)},o(t){m(y.$$.fragment,t),m(u.$$.fragment,t),m(x.$$.fragment,t),m(j.$$.fragment,t),m(_.$$.fragment,t),m(v.$$.fragment,t),m(E.$$.fragment,t),m(N.$$.fragment,t),m(B.$$.fragment,t),m(G.$$.fragment,t),m(k.$$.fragment,t),m(S.$$.fragment,t),m(F.$$.fragment,t),Xt=!1},d(t){t&&(l(C),l(T),l(D),l(et),l(w),l(lt),l(nt),l(U),l(it),l($),l(at),l(J),l(pt),l(rt),l(b),l(st),l(g),l(ot),l(ct),l(I),l(dt),l(Mt),l(ft),l(L),l(mt),l(P),l(ht),l(X),l(Tt),l(_t),l(R),l(Ct),l(yt),l(wt),l(Z),l(ut),l(A),l(Ut),l($t),l(H),l(Jt),l(V),l(xt),l(W),l(bt),l(gt),l(Y),l(jt),l(Q),l(It),l(vt),l(z),l(Lt),l(Pt),l(K)),l(o),h(y,t),h(u,t),h(x,t),h(j,t),h(_,t),h(v,t),h(E,t),h(N,t),h(B,t),h(G,t),h(k,t),h(S,t),h(F,t)}}}const Me='{"title":"다중 CPU에서 효율적으로 훈련하기","local":"efficient-training-on-multiple-cpus","sections":[{"title":"PyTorch용 Intel® oneCCL 바인딩","local":"intel-oneccl-bindings-for-pytorch","sections":[{"title":"PyTorch용 Intel® oneCCL 바인딩 설치:","local":"intel-oneccl-bindings-for-pytorch-installation","sections":[],"depth":3}],"depth":2},{"title":"Intel® MPI 라이브러리","local":"intel-mpi-library","sections":[{"title":"IPEX 설치:","local":"ipex-installation","sections":[],"depth":4}],"depth":2},{"title":"Trainer에서의 사용","local":"usage-in-trainer","sections":[],"depth":2}],"depth":1}';function fe(tt){return ne(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ye extends ae{constructor(o){super(),pe(this,o,fe,de,le,{})}}export{ye as component};
