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