import{s as fe,o as me,n as de}from"../chunks/scheduler.bdbef820.js";import{S as Me,i as he,g as a,s as i,r as d,A as _e,h as p,f as l,c as r,j as pe,u as f,x as s,k as se,y as Ce,a as n,v as m,d as M,t as h,w as _}from"../chunks/index.33f81d56.js";import{T as ce}from"../chunks/Tip.34194030.js";import{C as et}from"../chunks/CodeBlock.362b34a4.js";import{H as lt,E as ue}from"../chunks/EditOnGithub.a9246e21.js";function Te(tt){let o,C=`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(){o=a("p"),o.textContent=C},l(c){o=p(c,"P",{"data-svelte-h":!0}),s(o)!=="svelte-is6c7w"&&(o.textContent=C)},m(c,u){n(c,o,u)},p:de,d(c){c&&l(o)}}}function ye(tt){let o,C="<code>oneccl_bindings_for_pytorch</code>の1.12.0プリビルトホイールはPyTorch 1.12.1と互換性がありません（これはPyTorch 1.12.0用です）。PyTorch 1.12.1を使用する場合は、<code>oneccl_bindings_for_pytorch</code>バージョン1.12.100を使用する必要があります。";return{c(){o=a("p"),o.innerHTML=C},l(c){o=p(c,"P",{"data-svelte-h":!0}),s(o)!=="svelte-qkrsq0"&&(o.innerHTML=C)},m(c,u){n(c,o,u)},p:de,d(c){c&&l(o)}}}function Ue(tt){let o,C,c,u,U,it,$,Gt="1つのCPUでのトレーニングが遅すぎる場合、複数のCPUを使用できます。このガイドは、PyTorchベースのDDPを使用した分散CPUトレーニングに焦点を当てています。",rt,w,ot,b,Vt='<a href="https://github.com/oneapi-src/oneCCL" rel="nofollow">Intel® oneCCL</a>（集合通信ライブラリ）は、allreduce、allgather、alltoallなどの収集通信を実装した効率的な分散ディープラーニングトレーニング用のライブラリです。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,g,At="モジュール<code>oneccl_bindings_for_pytorch</code>（バージョン1.12以前は<code>torch_ccl</code>）は、PyTorch C10D ProcessGroup APIを実装し、外部のProcessGroupとして動的にロードでき、現在はLinuxプラットフォームでのみ動作します。",pt,x,Qt='<a href="https://github.com/intel/torch-ccl" rel="nofollow">torch-ccl</a>の詳細情報を確認してください。',st,J,ct,v,Wt="Wheelファイルは、以下のPythonバージョン用に利用可能です:",dt,j,kt='<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>',ft,I,mt,P,St=`where <code>{pytorch_version}</code> should be your PyTorch version, for instance 1.13.0.
Check more approaches for <a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_pt installation</a>.
Versions of oneCCL and PyTorch must match.`,Mt,T,ht,L,Yt='<code>{pytorch_version}</code> は、あなたのPyTorchのバージョン（例：1.13.0）に置き換える必要があります。重要なのは、oneCCLとPyTorchのバージョンが一致していることです。<a href="https://github.com/intel/torch-ccl" rel="nofollow">oneccl_bind_ptのインストール</a>に関するさらなるアプローチを確認できます。',_t,y,Ct,X,ut,E,Ft="この基準ベースのMPI実装を使用して、Intel®アーキテクチャ上で柔軟で効率的、スケーラブルなクラスタメッセージングを提供します。このコンポーネントは、Intel® oneAPI HPC Toolkitの一部です。",Tt,R,zt="oneccl_bindings_for_pytorchはMPIツールセットと一緒にインストールされます。使用する前に環境をソース化する必要があります。",yt,B,Dt="for Intel® oneCCL >= 1.12.0",Ut,N,$t,Z,Ot="for Intel® oneCCL whose version < 1.12.0",wt,H,bt,G,gt,V,qt='IPEXは、Float32およびBFloat16の両方でCPUトレーニングのパフォーマンス最適化を提供します。詳細は<a href="./perf_train_cpu">こちらのシングルCPUセクション</a>をご参照ください。',xt,A,Kt="以下の「トレーナーでの使用」は、Intel® MPIライブラリでmpirunを使用する例を示しています。",Jt,Q,vt,W,te="トレーナーでのマルチCPU分散トレーニングを有効にするために、ユーザーはコマンド引数に <strong><code>--ddp_backend ccl</code></strong> を追加する必要があります。",jt,k,ee='例を見てみましょう。<a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering" rel="nofollow">質問応答の例</a>',It,S,le="以下のコマンドは、1つのXeonノードで2つのプロセスを使用してトレーニングを有効にします。1つのプロセスが1つのソケットで実行されます。OMP_NUM_THREADS/CCL_WORKER_COUNT変数は、最適なパフォーマンスを調整するために調整できます。",Pt,Y,Lt,F,ne="以下のコマンドは、2つのXeonプロセッサ（node0とnode1、node0をメインプロセスとして使用）で合計4つのプロセスを使用してトレーニングを有効にします。ppn（ノードごとのプロセス数）は2に設定され、1つのソケットごとに1つのプロセスが実行されます。最適なパフォーマンスを得るために、OMP_NUM_THREADS/CCL_WORKER_COUNT変数を調整できます。",Xt,z,ie="node0では、各ノードのIPアドレスを含む構成ファイルを作成し、その構成ファイルのパスを引数として渡す必要があります。",Et,D,Rt,O,re="ノード0で次のコマンドを実行すると、ノード0とノード1で<strong>4DDP</strong>がBF16自動混合精度で有効になります。",Bt,q,Nt,K,Zt,nt,Ht;return U=new lt({props:{title:"Efficient Training on Multiple CPUs",local:"efficient-training-on-multiple-cpus",headingTag:"h1"}}),w=new lt({props:{title:"Intel® oneCCL Bindings for PyTorch",local:"intel-oneccl-bindings-for-pytorch",headingTag:"h2"}}),J=new lt({props:{title:"Intel® oneCCL Bindings for PyTorch installation:",local:"intel-oneccl-bindings-for-pytorch-installation",headingTag:"h3"}}),I=new et({props:{code:"cGlwJTIwaW5zdGFsbCUyMG9uZWNjbF9iaW5kX3B0JTNEJTNEJTdCcHl0b3JjaF92ZXJzaW9uJTdEJTIwLWYlMjBodHRwcyUzQSUyRiUyRmRldmVsb3Blci5pbnRlbC5jb20lMkZpcGV4LXdobC1zdGFibGUtY3B1",highlighted:"pip install oneccl_bind_pt=={pytorch_version} -f https://developer.intel.com/ipex-whl-stable-cpu",wrap:!1}}),T=new ce({props:{warning:!0,$$slots:{default:[Te]},$$scope:{ctx:tt}}}),y=new ce({props:{warning:!0,$$slots:{default:[ye]},$$scope:{ctx:tt}}}),X=new lt({props:{title:"Intel® MPI library",local:"intel-mpi-library",headingTag:"h2"}}),N=new et({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}}),H=new et({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}}),G=new lt({props:{title:"IPEX installation:",local:"ipex-installation",headingTag:"h4"}}),Q=new lt({props:{title:"Usage in Trainer",local:"usage-in-trainer",headingTag:"h2"}}),Y=new et({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}}),D=new et({props:{code:"JTIwY2F0JTIwaG9zdGZpbGUlMEElMjB4eHgueHh4Lnh4eC54eHglMjAlMjNub2RlMCUyMGlwJTBBJTIweHh4Lnh4eC54eHgueHh4JTIwJTIzbm9kZTElMjBpcA==",highlighted:` cat hostfile
 xxx.xxx.xxx.xxx #node0 ip
 xxx.xxx.xxx.xxx #node1 ip`,wrap:!1}}),q=new et({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}}),K=new ue({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ja/perf_train_cpu_many.md"}}),{c(){o=a("meta"),C=i(),c=a("p"),u=i(),d(U.$$.fragment),it=i(),$=a("p"),$.textContent=Gt,rt=i(),d(w.$$.fragment),ot=i(),b=a("p"),b.innerHTML=Vt,at=i(),g=a("p"),g.innerHTML=At,pt=i(),x=a("p"),x.innerHTML=Qt,st=i(),d(J.$$.fragment),ct=i(),v=a("p"),v.textContent=Wt,dt=i(),j=a("table"),j.innerHTML=kt,ft=i(),d(I.$$.fragment),mt=i(),P=a("p"),P.innerHTML=St,Mt=i(),d(T.$$.fragment),ht=i(),L=a("p"),L.innerHTML=Yt,_t=i(),d(y.$$.fragment),Ct=i(),d(X.$$.fragment),ut=i(),E=a("p"),E.textContent=Ft,Tt=i(),R=a("p"),R.textContent=zt,yt=i(),B=a("p"),B.textContent=Dt,Ut=i(),d(N.$$.fragment),$t=i(),Z=a("p"),Z.textContent=Ot,wt=i(),d(H.$$.fragment),bt=i(),d(G.$$.fragment),gt=i(),V=a("p"),V.innerHTML=qt,xt=i(),A=a("p"),A.textContent=Kt,Jt=i(),d(Q.$$.fragment),vt=i(),W=a("p"),W.innerHTML=te,jt=i(),k=a("p"),k.innerHTML=ee,It=i(),S=a("p"),S.textContent=le,Pt=i(),d(Y.$$.fragment),Lt=i(),F=a("p"),F.textContent=ne,Xt=i(),z=a("p"),z.textContent=ie,Et=i(),d(D.$$.fragment),Rt=i(),O=a("p"),O.innerHTML=re,Bt=i(),d(q.$$.fragment),Nt=i(),d(K.$$.fragment),Zt=i(),nt=a("p"),this.h()},l(t){const e=_e("svelte-u9bgzb",document.head);o=p(e,"META",{name:!0,content:!0}),e.forEach(l),C=r(t),c=p(t,"P",{}),pe(c).forEach(l),u=r(t),f(U.$$.fragment,t),it=r(t),$=p(t,"P",{"data-svelte-h":!0}),s($)!=="svelte-x4ob9g"&&($.textContent=Gt),rt=r(t),f(w.$$.fragment,t),ot=r(t),b=p(t,"P",{"data-svelte-h":!0}),s(b)!=="svelte-iaalck"&&(b.innerHTML=Vt),at=r(t),g=p(t,"P",{"data-svelte-h":!0}),s(g)!=="svelte-12luyx0"&&(g.innerHTML=At),pt=r(t),x=p(t,"P",{"data-svelte-h":!0}),s(x)!=="svelte-imt8h1"&&(x.innerHTML=Qt),st=r(t),f(J.$$.fragment,t),ct=r(t),v=p(t,"P",{"data-svelte-h":!0}),s(v)!=="svelte-1tdwdd8"&&(v.textContent=Wt),dt=r(t),j=p(t,"TABLE",{"data-svelte-h":!0}),s(j)!=="svelte-1yk106u"&&(j.innerHTML=kt),ft=r(t),f(I.$$.fragment,t),mt=r(t),P=p(t,"P",{"data-svelte-h":!0}),s(P)!=="svelte-gwf101"&&(P.innerHTML=St),Mt=r(t),f(T.$$.fragment,t),ht=r(t),L=p(t,"P",{"data-svelte-h":!0}),s(L)!=="svelte-1o5c06n"&&(L.innerHTML=Yt),_t=r(t),f(y.$$.fragment,t),Ct=r(t),f(X.$$.fragment,t),ut=r(t),E=p(t,"P",{"data-svelte-h":!0}),s(E)!=="svelte-1ozjsp6"&&(E.textContent=Ft),Tt=r(t),R=p(t,"P",{"data-svelte-h":!0}),s(R)!=="svelte-riba3m"&&(R.textContent=zt),yt=r(t),B=p(t,"P",{"data-svelte-h":!0}),s(B)!=="svelte-324hiy"&&(B.textContent=Dt),Ut=r(t),f(N.$$.fragment,t),$t=r(t),Z=p(t,"P",{"data-svelte-h":!0}),s(Z)!=="svelte-1x3l803"&&(Z.textContent=Ot),wt=r(t),f(H.$$.fragment,t),bt=r(t),f(G.$$.fragment,t),gt=r(t),V=p(t,"P",{"data-svelte-h":!0}),s(V)!=="svelte-g3w6te"&&(V.innerHTML=qt),xt=r(t),A=p(t,"P",{"data-svelte-h":!0}),s(A)!=="svelte-p0koup"&&(A.textContent=Kt),Jt=r(t),f(Q.$$.fragment,t),vt=r(t),W=p(t,"P",{"data-svelte-h":!0}),s(W)!=="svelte-9wlwki"&&(W.innerHTML=te),jt=r(t),k=p(t,"P",{"data-svelte-h":!0}),s(k)!=="svelte-zu2hn2"&&(k.innerHTML=ee),It=r(t),S=p(t,"P",{"data-svelte-h":!0}),s(S)!=="svelte-bujigo"&&(S.textContent=le),Pt=r(t),f(Y.$$.fragment,t),Lt=r(t),F=p(t,"P",{"data-svelte-h":!0}),s(F)!=="svelte-4pe4cr"&&(F.textContent=ne),Xt=r(t),z=p(t,"P",{"data-svelte-h":!0}),s(z)!=="svelte-1jhnnso"&&(z.textContent=ie),Et=r(t),f(D.$$.fragment,t),Rt=r(t),O=p(t,"P",{"data-svelte-h":!0}),s(O)!=="svelte-smvu0d"&&(O.innerHTML=re),Bt=r(t),f(q.$$.fragment,t),Nt=r(t),f(K.$$.fragment,t),Zt=r(t),nt=p(t,"P",{}),pe(nt).forEach(l),this.h()},h(){se(o,"name","hf:doc:metadata"),se(o,"content",$e)},m(t,e){Ce(document.head,o),n(t,C,e),n(t,c,e),n(t,u,e),m(U,t,e),n(t,it,e),n(t,$,e),n(t,rt,e),m(w,t,e),n(t,ot,e),n(t,b,e),n(t,at,e),n(t,g,e),n(t,pt,e),n(t,x,e),n(t,st,e),m(J,t,e),n(t,ct,e),n(t,v,e),n(t,dt,e),n(t,j,e),n(t,ft,e),m(I,t,e),n(t,mt,e),n(t,P,e),n(t,Mt,e),m(T,t,e),n(t,ht,e),n(t,L,e),n(t,_t,e),m(y,t,e),n(t,Ct,e),m(X,t,e),n(t,ut,e),n(t,E,e),n(t,Tt,e),n(t,R,e),n(t,yt,e),n(t,B,e),n(t,Ut,e),m(N,t,e),n(t,$t,e),n(t,Z,e),n(t,wt,e),m(H,t,e),n(t,bt,e),m(G,t,e),n(t,gt,e),n(t,V,e),n(t,xt,e),n(t,A,e),n(t,Jt,e),m(Q,t,e),n(t,vt,e),n(t,W,e),n(t,jt,e),n(t,k,e),n(t,It,e),n(t,S,e),n(t,Pt,e),m(Y,t,e),n(t,Lt,e),n(t,F,e),n(t,Xt,e),n(t,z,e),n(t,Et,e),m(D,t,e),n(t,Rt,e),n(t,O,e),n(t,Bt,e),m(q,t,e),n(t,Nt,e),m(K,t,e),n(t,Zt,e),n(t,nt,e),Ht=!0},p(t,[e]){const oe={};e&2&&(oe.$$scope={dirty:e,ctx:t}),T.$set(oe);const ae={};e&2&&(ae.$$scope={dirty:e,ctx:t}),y.$set(ae)},i(t){Ht||(M(U.$$.fragment,t),M(w.$$.fragment,t),M(J.$$.fragment,t),M(I.$$.fragment,t),M(T.$$.fragment,t),M(y.$$.fragment,t),M(X.$$.fragment,t),M(N.$$.fragment,t),M(H.$$.fragment,t),M(G.$$.fragment,t),M(Q.$$.fragment,t),M(Y.$$.fragment,t),M(D.$$.fragment,t),M(q.$$.fragment,t),M(K.$$.fragment,t),Ht=!0)},o(t){h(U.$$.fragment,t),h(w.$$.fragment,t),h(J.$$.fragment,t),h(I.$$.fragment,t),h(T.$$.fragment,t),h(y.$$.fragment,t),h(X.$$.fragment,t),h(N.$$.fragment,t),h(H.$$.fragment,t),h(G.$$.fragment,t),h(Q.$$.fragment,t),h(Y.$$.fragment,t),h(D.$$.fragment,t),h(q.$$.fragment,t),h(K.$$.fragment,t),Ht=!1},d(t){t&&(l(C),l(c),l(u),l(it),l($),l(rt),l(ot),l(b),l(at),l(g),l(pt),l(x),l(st),l(ct),l(v),l(dt),l(j),l(ft),l(mt),l(P),l(Mt),l(ht),l(L),l(_t),l(Ct),l(ut),l(E),l(Tt),l(R),l(yt),l(B),l(Ut),l($t),l(Z),l(wt),l(bt),l(gt),l(V),l(xt),l(A),l(Jt),l(vt),l(W),l(jt),l(k),l(It),l(S),l(Pt),l(Lt),l(F),l(Xt),l(z),l(Et),l(Rt),l(O),l(Bt),l(Nt),l(Zt),l(nt)),l(o),_(U,t),_(w,t),_(J,t),_(I,t),_(T,t),_(y,t),_(X,t),_(N,t),_(H,t),_(G,t),_(Q,t),_(Y,t),_(D,t),_(q,t),_(K,t)}}}const $e='{"title":"Efficient Training on Multiple CPUs","local":"efficient-training-on-multiple-cpus","sections":[{"title":"Intel® oneCCL Bindings for PyTorch","local":"intel-oneccl-bindings-for-pytorch","sections":[{"title":"Intel® oneCCL Bindings for PyTorch installation:","local":"intel-oneccl-bindings-for-pytorch-installation","sections":[],"depth":3}],"depth":2},{"title":"Intel® MPI library","local":"intel-mpi-library","sections":[{"title":"IPEX installation:","local":"ipex-installation","sections":[],"depth":4}],"depth":2},{"title":"Usage in Trainer","local":"usage-in-trainer","sections":[],"depth":2}],"depth":1}';function we(tt){return me(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class je extends Me{constructor(o){super(),he(this,o,we,Ue,fe,{})}}export{je as component};
