import{s as _t,n as xt,o as Pt}from"../chunks/scheduler.56730f09.js";import{S as $t,i as Ct,g as r,s as i,r as X,A as gt,h as s,f as n,c as a,j as dt,u as E,x as p,k as ht,y as Tt,a as l,v as I,d as y,t as U,w as H}from"../chunks/index.61415d3e.js";import{C as vt}from"../chunks/CodeBlock.e6fa6bff.js";import{H as k}from"../chunks/Heading.9036b585.js";function bt(nt){let o,z,L,B,c,F,m,lt="このガイドは、CPU上で大規模なモデルを効率的にトレーニングする方法に焦点を当てています。",V,f,G,u,it="IPEXはAVX-512以上のCPUに最適化されており、AVX2のみのCPUでも機能的に動作します。そのため、AVX-512以上のIntel CPU世代ではパフォーマンスの向上が期待されますが、AVX2のみのCPU（例：AMD CPUまたは古いIntel CPU）ではIPEXの下でより良いパフォーマンスが得られるかもしれませんが、保証されません。IPEXは、Float32とBFloat16の両方でCPUトレーニングのパフォーマンスを最適化します。以下のセクションでは、BFloat16の使用に重点を置いて説明します。",S,d,at="低精度データ型であるBFloat16は、AVX512命令セットを備えた第3世代Xeon® Scalable Processors（別名Cooper Lake）でネイティブサポートされており、さらに高性能なIntel® Advanced Matrix Extensions（Intel® AMX）命令セットを備えた次世代のIntel® Xeon® Scalable Processorsでもサポートされます。CPUバックエンド用の自動混合精度がPyTorch-1.10以降で有効になっています。同時に、Intel® Extension for PyTorchでのCPU用BFloat16の自動混合精度サポートと、オペレーターのBFloat16最適化のサポートが大幅に向上し、一部がPyTorchのメインブランチにアップストリームされています。ユーザーはIPEX Auto Mixed Precisionを使用することで、より優れたパフォーマンスとユーザーエクスペリエンスを得ることができます。",q,h,rt='詳細な情報については、<a href="https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/features/amp.html" rel="nofollow">Auto Mixed Precision</a>を確認してください。',R,_,Z,x,st="IPEXのリリースはPyTorchに従っており、pipを使用してインストールできます：",j,P,pt='<thead><tr><th align="center">PyTorch Version</th> <th align="center">IPEX version</th></tr></thead> <tbody><tr><td align="center">1.13</td> <td align="center">1.13.0+cpu</td></tr> <tr><td align="center">1.12</td> <td align="center">1.12.300+cpu</td></tr> <tr><td align="center">1.11</td> <td align="center">1.11.200+cpu</td></tr> <tr><td align="center">1.10</td> <td align="center">1.10.100+cpu</td></tr></tbody>',J,$,W,C,ot='<a href="https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/installation.html" rel="nofollow">IPEXのインストール方法</a>について、さらなるアプローチを確認してください。',Y,g,N,T,ct="TrainerでIPEXの自動混合精度を有効にするには、ユーザーはトレーニングコマンド引数に <code>use_ipex</code>、<code>bf16</code>、および <code>no_cuda</code> を追加する必要があります。",Q,v,mt='<a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering" rel="nofollow">Transformersの質問応答</a>のユースケースを例に説明します。',D,b,ft=`<li>CPU上でBF16自動混合精度を使用してIPEXでトレーニングを行う場合：<pre> python run_qa.py \\
--model_name_or_path bert-base-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/ \\
<b>--use_ipex \\</b>
<b>--bf16 --no_cuda</b></pre></li>`,K,w,O,M,ut='Blog: <a href="https://huggingface.co/blog/intel-sapphire-rapids" rel="nofollow">Accelerating PyTorch Transformers with Intel Sapphire Rapids</a>',tt,A,et;return c=new k({props:{title:"Efficient Training on CPU",local:"efficient-training-on-cpu",headingTag:"h1"}}),f=new k({props:{title:"Mixed precision with IPEX",local:"mixed-precision-with-ipex",headingTag:"h2"}}),_=new k({props:{title:"IPEX installation:",local:"ipex-installation",headingTag:"h3"}}),$=new vt({props:{code:"cGlwJTIwaW5zdGFsbCUyMGludGVsX2V4dGVuc2lvbl9mb3JfcHl0b3JjaCUzRCUzRCUzQ3ZlcnNpb25fbmFtZSUzRSUyMC1mJTIwaHR0cHMlM0ElMkYlMkZkZXZlbG9wZXIuaW50ZWwuY29tJTJGaXBleC13aGwtc3RhYmxlLWNwdQ==",highlighted:'pip install <span class="hljs-built_in">int</span>el_extension_for_pytorch==&lt;version_name&gt; -f https:<span class="hljs-comment">//developer.intel.com/ipex-whl-stable-cpu</span>',wrap:!1}}),g=new k({props:{title:"Trainerでの使用方法",local:"trainerでの使用方法",headingTag:"h3"}}),w=new k({props:{title:"Practice example",local:"practice-example",headingTag:"h3"}}),{c(){o=r("meta"),z=i(),L=r("p"),B=i(),X(c.$$.fragment),F=i(),m=r("p"),m.textContent=lt,V=i(),X(f.$$.fragment),G=i(),u=r("p"),u.textContent=it,S=i(),d=r("p"),d.textContent=at,q=i(),h=r("p"),h.innerHTML=rt,R=i(),X(_.$$.fragment),Z=i(),x=r("p"),x.textContent=st,j=i(),P=r("table"),P.innerHTML=pt,J=i(),X($.$$.fragment),W=i(),C=r("p"),C.innerHTML=ot,Y=i(),X(g.$$.fragment),N=i(),T=r("p"),T.innerHTML=ct,Q=i(),v=r("p"),v.innerHTML=mt,D=i(),b=r("ul"),b.innerHTML=ft,K=i(),X(w.$$.fragment),O=i(),M=r("p"),M.innerHTML=ut,tt=i(),A=r("p"),this.h()},l(t){const e=gt("svelte-u9bgzb",document.head);o=s(e,"META",{name:!0,content:!0}),e.forEach(n),z=a(t),L=s(t,"P",{}),dt(L).forEach(n),B=a(t),E(c.$$.fragment,t),F=a(t),m=s(t,"P",{"data-svelte-h":!0}),p(m)!=="svelte-11xh6oz"&&(m.textContent=lt),V=a(t),E(f.$$.fragment,t),G=a(t),u=s(t,"P",{"data-svelte-h":!0}),p(u)!=="svelte-hle050"&&(u.textContent=it),S=a(t),d=s(t,"P",{"data-svelte-h":!0}),p(d)!=="svelte-uvmlso"&&(d.textContent=at),q=a(t),h=s(t,"P",{"data-svelte-h":!0}),p(h)!=="svelte-1xnbmj5"&&(h.innerHTML=rt),R=a(t),E(_.$$.fragment,t),Z=a(t),x=s(t,"P",{"data-svelte-h":!0}),p(x)!=="svelte-1qi2p9c"&&(x.textContent=st),j=a(t),P=s(t,"TABLE",{"data-svelte-h":!0}),p(P)!=="svelte-okkx16"&&(P.innerHTML=pt),J=a(t),E($.$$.fragment,t),W=a(t),C=s(t,"P",{"data-svelte-h":!0}),p(C)!=="svelte-1xti9kg"&&(C.innerHTML=ot),Y=a(t),E(g.$$.fragment,t),N=a(t),T=s(t,"P",{"data-svelte-h":!0}),p(T)!=="svelte-1szp3tw"&&(T.innerHTML=ct),Q=a(t),v=s(t,"P",{"data-svelte-h":!0}),p(v)!=="svelte-yud8x"&&(v.innerHTML=mt),D=a(t),b=s(t,"UL",{"data-svelte-h":!0}),p(b)!=="svelte-22vc8s"&&(b.innerHTML=ft),K=a(t),E(w.$$.fragment,t),O=a(t),M=s(t,"P",{"data-svelte-h":!0}),p(M)!=="svelte-w7zs5j"&&(M.innerHTML=ut),tt=a(t),A=s(t,"P",{}),dt(A).forEach(n),this.h()},h(){ht(o,"name","hf:doc:metadata"),ht(o,"content",wt)},m(t,e){Tt(document.head,o),l(t,z,e),l(t,L,e),l(t,B,e),I(c,t,e),l(t,F,e),l(t,m,e),l(t,V,e),I(f,t,e),l(t,G,e),l(t,u,e),l(t,S,e),l(t,d,e),l(t,q,e),l(t,h,e),l(t,R,e),I(_,t,e),l(t,Z,e),l(t,x,e),l(t,j,e),l(t,P,e),l(t,J,e),I($,t,e),l(t,W,e),l(t,C,e),l(t,Y,e),I(g,t,e),l(t,N,e),l(t,T,e),l(t,Q,e),l(t,v,e),l(t,D,e),l(t,b,e),l(t,K,e),I(w,t,e),l(t,O,e),l(t,M,e),l(t,tt,e),l(t,A,e),et=!0},p:xt,i(t){et||(y(c.$$.fragment,t),y(f.$$.fragment,t),y(_.$$.fragment,t),y($.$$.fragment,t),y(g.$$.fragment,t),y(w.$$.fragment,t),et=!0)},o(t){U(c.$$.fragment,t),U(f.$$.fragment,t),U(_.$$.fragment,t),U($.$$.fragment,t),U(g.$$.fragment,t),U(w.$$.fragment,t),et=!1},d(t){t&&(n(z),n(L),n(B),n(F),n(m),n(V),n(G),n(u),n(S),n(d),n(q),n(h),n(R),n(Z),n(x),n(j),n(P),n(J),n(W),n(C),n(Y),n(N),n(T),n(Q),n(v),n(D),n(b),n(K),n(O),n(M),n(tt),n(A)),n(o),H(c,t),H(f,t),H(_,t),H($,t),H(g,t),H(w,t)}}}const wt='{"title":"Efficient Training on CPU","local":"efficient-training-on-cpu","sections":[{"title":"Mixed precision with IPEX","local":"mixed-precision-with-ipex","sections":[{"title":"IPEX installation:","local":"ipex-installation","sections":[],"depth":3},{"title":"Trainerでの使用方法","local":"trainerでの使用方法","sections":[],"depth":3},{"title":"Practice example","local":"practice-example","sections":[],"depth":3}],"depth":2}],"depth":1}';function Mt(nt){return Pt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ut extends $t{constructor(o){super(),Ct(this,o,Mt,bt,_t,{})}}export{Ut as component};
