import{s as Pt,n as gt,o as xt}from"../chunks/scheduler.56730f09.js";import{S as Ct,i as bt,g as r,s as i,r as E,A as vt,h as p,f as n,c as a,j as $t,u as I,x as s,k as _t,y as Tt,a as l,v as y,d as U,t as H,w as L}from"../chunks/index.1f144517.js";import{C as wt}from"../chunks/CodeBlock.738eeccb.js";import{H as B,E as Mt}from"../chunks/EditOnGithub.854793f1.js";function Xt(it){let o,F,A,G,m,V,f,at="이 가이드는 CPU에서 대규모 모델을 효율적으로 훈련하는 데 초점을 맞춥니다.",q,u,z,c,rt="IPEX는 AVX-512 이상을 지원하는 CPU에 최적화되어 있으며, AVX2만 지원하는 CPU에도 기능적으로 작동합니다. 따라서 AVX-512 이상의 Intel CPU 세대에서는 성능상 이점이 있을 것으로 예상되지만, AVX2만 지원하는 CPU (예: AMD CPU 또는 오래된 Intel CPU)의 경우에는 IPEX 아래에서 더 나은 성능을 보일 수 있지만 이는 보장되지 않습니다. IPEX는 Float32와 BFloat16를 모두 사용하여 CPU 훈련을 위한 성능 최적화를 제공합니다. BFloat16의 사용은 다음 섹션의 주요 초점입니다.",S,d,pt="저정밀도 데이터 타입인 BFloat16은 3세대 Xeon® Scalable 프로세서 (코드명: Cooper Lake)에서 AVX512 명령어 집합을 네이티브로 지원해 왔으며, 다음 세대의 Intel® Xeon® Scalable 프로세서에서 Intel® Advanced Matrix Extensions (Intel® AMX) 명령어 집합을 지원하여 성능을 크게 향상시킬 예정입니다. CPU 백엔드의 자동 혼합 정밀도 기능은 PyTorch-1.10부터 활성화되었습니다. 동시에, Intel® Extension for PyTorch에서 BFloat16에 대한 CPU의 자동 혼합 정밀도 및 연산자의 BFloat16 최적화를 대규모로 활성화하고, PyTorch 마스터 브랜치로 부분적으로 업스트림을 반영했습니다. 사용자들은 IPEX 자동 혼합 정밀도를 사용하여 더 나은 성능과 사용자 경험을 얻을 수 있습니다.",R,h,st='<a href="https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/features/amp.html" rel="nofollow">자동 혼합 정밀도</a>에 대한 자세한 정보를 확인하십시오.',Z,$,J,_,ot="IPEX 릴리스는 PyTorch를 따라갑니다. pip를 통해 설치하려면:",j,P,mt='<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>',W,g,Y,x,ft='<a href="https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/installation.html" rel="nofollow">IPEX 설치</a>에 대한 더 많은 접근 방법을 확인하십시오.',N,C,Q,b,ut="Trainer에서 IPEX의 자동 혼합 정밀도를 활성화하려면 사용자는 훈련 명령 인수에 <code>use_ipex</code>, <code>bf16</code>, <code>no_cuda</code>를 추가해야 합니다.",D,v,ct='<a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering" rel="nofollow">Transformers 질문-응답</a>의 사용 사례를 살펴보겠습니다.',O,T,dt=`<li>CPU에서 BF16 자동 혼합 정밀도를 사용하여 IPEX로 훈련하기:<pre> python run_qa.py \\
--model_name_or_path google-bert/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,tt,M,ht='블로그: <a href="https://huggingface.co/blog/intel-sapphire-rapids" rel="nofollow">Intel Sapphire Rapids로 PyTorch Transformers 가속화</a>',et,X,nt,k,lt;return m=new B({props:{title:"CPU에서 효율적인 훈련",local:"efficient-training-on-cpu",headingTag:"h1"}}),u=new B({props:{title:"IPEX와 혼합 정밀도",local:"mixed-precision-with-ipex",headingTag:"h2"}}),$=new B({props:{title:"IPEX 설치:",local:"ipex-installation",headingTag:"h3"}}),g=new wt({props:{code:"cGlwJTIwaW5zdGFsbCUyMGludGVsX2V4dGVuc2lvbl9mb3JfcHl0b3JjaCUzRCUzRCUzQ3ZlcnNpb25fbmFtZSUzRSUyMC1mJTIwaHR0cHMlM0ElMkYlMkZkZXZlbG9wZXIuaW50ZWwuY29tJTJGaXBleC13aGwtc3RhYmxlLWNwdQ==",highlighted:"pip install intel_extension_for_pytorch==&lt;version_name&gt; -f https://developer.intel.com/ipex-whl-stable-cpu",wrap:!1}}),C=new B({props:{title:"Trainer에서의 사용법",local:"usage-in-trainer",headingTag:"h3"}}),w=new B({props:{title:"실습 예시",local:"practice-example",headingTag:"h3"}}),X=new Mt({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ko/perf_train_cpu.md"}}),{c(){o=r("meta"),F=i(),A=r("p"),G=i(),E(m.$$.fragment),V=i(),f=r("p"),f.textContent=at,q=i(),E(u.$$.fragment),z=i(),c=r("p"),c.textContent=rt,S=i(),d=r("p"),d.textContent=pt,R=i(),h=r("p"),h.innerHTML=st,Z=i(),E($.$$.fragment),J=i(),_=r("p"),_.textContent=ot,j=i(),P=r("table"),P.innerHTML=mt,W=i(),E(g.$$.fragment),Y=i(),x=r("p"),x.innerHTML=ft,N=i(),E(C.$$.fragment),Q=i(),b=r("p"),b.innerHTML=ut,D=i(),v=r("p"),v.innerHTML=ct,O=i(),T=r("ul"),T.innerHTML=dt,K=i(),E(w.$$.fragment),tt=i(),M=r("p"),M.innerHTML=ht,et=i(),E(X.$$.fragment),nt=i(),k=r("p"),this.h()},l(t){const e=vt("svelte-u9bgzb",document.head);o=p(e,"META",{name:!0,content:!0}),e.forEach(n),F=a(t),A=p(t,"P",{}),$t(A).forEach(n),G=a(t),I(m.$$.fragment,t),V=a(t),f=p(t,"P",{"data-svelte-h":!0}),s(f)!=="svelte-1hdugqm"&&(f.textContent=at),q=a(t),I(u.$$.fragment,t),z=a(t),c=p(t,"P",{"data-svelte-h":!0}),s(c)!=="svelte-40eybl"&&(c.textContent=rt),S=a(t),d=p(t,"P",{"data-svelte-h":!0}),s(d)!=="svelte-pijyqv"&&(d.textContent=pt),R=a(t),h=p(t,"P",{"data-svelte-h":!0}),s(h)!=="svelte-nnpzlr"&&(h.innerHTML=st),Z=a(t),I($.$$.fragment,t),J=a(t),_=p(t,"P",{"data-svelte-h":!0}),s(_)!=="svelte-armibm"&&(_.textContent=ot),j=a(t),P=p(t,"TABLE",{"data-svelte-h":!0}),s(P)!=="svelte-okkx16"&&(P.innerHTML=mt),W=a(t),I(g.$$.fragment,t),Y=a(t),x=p(t,"P",{"data-svelte-h":!0}),s(x)!=="svelte-ipbj1s"&&(x.innerHTML=ft),N=a(t),I(C.$$.fragment,t),Q=a(t),b=p(t,"P",{"data-svelte-h":!0}),s(b)!=="svelte-10c35bg"&&(b.innerHTML=ut),D=a(t),v=p(t,"P",{"data-svelte-h":!0}),s(v)!=="svelte-152wvr6"&&(v.innerHTML=ct),O=a(t),T=p(t,"UL",{"data-svelte-h":!0}),s(T)!=="svelte-ncvo0w"&&(T.innerHTML=dt),K=a(t),I(w.$$.fragment,t),tt=a(t),M=p(t,"P",{"data-svelte-h":!0}),s(M)!=="svelte-51a2ou"&&(M.innerHTML=ht),et=a(t),I(X.$$.fragment,t),nt=a(t),k=p(t,"P",{}),$t(k).forEach(n),this.h()},h(){_t(o,"name","hf:doc:metadata"),_t(o,"content",Et)},m(t,e){Tt(document.head,o),l(t,F,e),l(t,A,e),l(t,G,e),y(m,t,e),l(t,V,e),l(t,f,e),l(t,q,e),y(u,t,e),l(t,z,e),l(t,c,e),l(t,S,e),l(t,d,e),l(t,R,e),l(t,h,e),l(t,Z,e),y($,t,e),l(t,J,e),l(t,_,e),l(t,j,e),l(t,P,e),l(t,W,e),y(g,t,e),l(t,Y,e),l(t,x,e),l(t,N,e),y(C,t,e),l(t,Q,e),l(t,b,e),l(t,D,e),l(t,v,e),l(t,O,e),l(t,T,e),l(t,K,e),y(w,t,e),l(t,tt,e),l(t,M,e),l(t,et,e),y(X,t,e),l(t,nt,e),l(t,k,e),lt=!0},p:gt,i(t){lt||(U(m.$$.fragment,t),U(u.$$.fragment,t),U($.$$.fragment,t),U(g.$$.fragment,t),U(C.$$.fragment,t),U(w.$$.fragment,t),U(X.$$.fragment,t),lt=!0)},o(t){H(m.$$.fragment,t),H(u.$$.fragment,t),H($.$$.fragment,t),H(g.$$.fragment,t),H(C.$$.fragment,t),H(w.$$.fragment,t),H(X.$$.fragment,t),lt=!1},d(t){t&&(n(F),n(A),n(G),n(V),n(f),n(q),n(z),n(c),n(S),n(d),n(R),n(h),n(Z),n(J),n(_),n(j),n(P),n(W),n(Y),n(x),n(N),n(Q),n(b),n(D),n(v),n(O),n(T),n(K),n(tt),n(M),n(et),n(nt),n(k)),n(o),L(m,t),L(u,t),L($,t),L(g,t),L(C,t),L(w,t),L(X,t)}}}const Et='{"title":"CPU에서 효율적인 훈련","local":"efficient-training-on-cpu","sections":[{"title":"IPEX와 혼합 정밀도","local":"mixed-precision-with-ipex","sections":[{"title":"IPEX 설치:","local":"ipex-installation","sections":[],"depth":3},{"title":"Trainer에서의 사용법","local":"usage-in-trainer","sections":[],"depth":3},{"title":"실습 예시","local":"practice-example","sections":[],"depth":3}],"depth":2}],"depth":1}';function It(it){return xt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class At extends Ct{constructor(o){super(),bt(this,o,It,Xt,Pt,{})}}export{At as component};
