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