Buckets:
| import{s as gt,o as xt,n as Rt}from"../chunks/scheduler.6e0d5ff7.js";import{S as St,i as It,g as s,s as a,u as B,E as Ot,h as i,f as e,c as o,j as w,v as P,y as U,k as r,o as M,a as n,w as G,d as H,t as N,x as Z}from"../chunks/index.db83ee3c.js";import{T as At}from"../chunks/Tip.1078c3e8.js";import{I as Et}from"../chunks/IconCopyLink.ded2a565.js";import{C as _t}from"../chunks/CodeBlock.5f50d466.js";function Ft(L){let p,Q="<strong>PyTorch 1.13을 사용 중일 때</strong> 추가 일회성 전달을 사용하여 파이프라인을 “프라이밍”하는 것을 추천합니다. 이것은 발견한 이상한 문제에 대한 임시 해결 방법입니다. 첫 번째 추론 전달은 후속 전달와 약간 다른 결과를 생성합니다. 이 전달은 한 번만 수행하면 되며 추론 단계를 한 번만 사용하고 결과를 폐기해도 됩니다.";return{c(){p=s("p"),p.innerHTML=Q},l(m){p=i(m,"P",{"data-svelte-h":!0}),U(p)!=="svelte-1uj24v1"&&(p.innerHTML=Q)},m(m,I){n(m,p,I)},p:Rt,d(m){m&&e(p)}}}function Dt(L){let p,Q,m,I,c,u,F,V,mt,O,ft="Apple Silicon (M1/M2)에서 Stable Diffusion을 사용하는 방법",W,d,Mt="Diffusers는 Stable Diffusion 추론을 위해 PyTorch <code>mps</code>를 사용해 Apple 실리콘과 호환됩니다. 다음은 Stable Diffusion이 있는 M1 또는 M2 컴퓨터를 사용하기 위해 따라야 하는 단계입니다.",z,h,ut="요구 사항",X,v,ht='<li>Apple silicon (M1/M2) 하드웨어의 Mac 컴퓨터.</li> <li>macOS 12.6 또는 이후 (13.0 또는 이후 추천).</li> <li>Python arm64 버전</li> <li>PyTorch 2.0(추천) 또는 1.13(<code>mps</code>를 지원하는 최소 버전). Y<a href="https://pytorch.org/get-started/locally/%EC%9D%98" rel="nofollow">https://pytorch.org/get-started/locally/의</a> 지침에 따라 <code>pip</code> 또는 <code>conda</code>로 설치할 수 있습니다.</li>',K,C,Ct="추론 파이프라인",q,$,yt="아래 코도는 익숙한 <code>to()</code> 인터페이스를 사용하여 <code>mps</code> 백엔드로 Stable Diffusion 파이프라인을 M1 또는 M2 장치로 이동하는 방법을 보여줍니다.",Y,y,tt,j,Jt="이전 팁에서 설명한 것들을 포함한 여러 문제를 해결하므로 PyTorch 2 이상을 사용하는 것이 좋습니다.",et,b,lt,J,Tt="성능 추천",nt,E,wt="M1/M2 성능은 메모리 압력에 매우 민감합니다. 시스템은 필요한 경우 자동으로 스왑되지만 스왑할 때 성능이 크게 저하됩니다.",st,_,Qt="특히 컴퓨터의 시스템 RAM이 64GB 미만이거나 512 × 512픽셀보다 큰 비표준 해상도에서 이미지를 생성하는 경우, 추론 중에 메모리 압력을 줄이고 스와핑을 방지하기 위해 <em>어텐션 슬라이싱</em>을 사용하는 것이 좋습니다. 어텐션 슬라이싱은 비용이 많이 드는 어텐션 작업을 한 번에 모두 수행하는 대신 여러 단계로 수행합니다. 일반적으로 범용 메모리가 없는 컴퓨터에서 ~20%의 성능 영향을 미치지만 64GB 이상이 아닌 경우 대부분의 Apple Silicon 컴퓨터에서 <em>더 나은 성능</em>이 관찰되었습니다.",it,g,at,f,T,D,x,ct,A,Vt="Known Issues",ot,R,dt='<li>여러 프롬프트를 배치로 생성하는 것은 <a href="https://github.com/huggingface/diffusers/issues/363" rel="nofollow">충돌이 발생하거나 안정적으로 작동하지 않습니다</a>. 우리는 이것이 <a href="https://github.com/pytorch/pytorch/issues/84039" rel="nofollow">PyTorch의 <code>mps</code> 백엔드</a>와 관련이 있다고 생각합니다. 이 문제는 해결되고 있지만 지금은 배치 대신 반복 방법을 사용하는 것이 좋습니다.</li>',pt,k,rt;return V=new Et({}),y=new At({props:{warning:!0,$$slots:{default:[Ft]},$$scope:{ctx:L}}}),b=new _t({props:{code:"JTIzJTIwJTYwaHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4lNjAlRUMlOTclOTAlMjAlRUIlQTElOUMlRUElQjclQjglRUMlOUQlQjglRUIlOTAlOTglRUMlOTYlQjQlMjAlRUMlOUUlODglRUMlOUQlOEMlRUMlOUQlODQlMjAlRUQlOTklOTUlRUMlOUQlQjglMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEElMEFwaXBlJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMnJ1bndheW1sJTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyKSUwQXBpcGUlMjAlM0QlMjBwaXBlLnRvKCUyMm1wcyUyMiklMEElMEElMjMlMjAlRUMlQkIlQjQlRUQlOTMlQTglRUQlODQlQjAlRUElQjAlODAlMjA2NEdCJTIwJUVDJTlEJUI0JUVEJTk1JTk4JUVDJTlEJTk4JTIwUkFNJTIwJUVCJTlFJUE4JUVDJTlEJUJDJTIwJUVCJTk1JThDJTIwJUVDJUI2JTk0JUVDJUIyJTlDJTBBcGlwZS5lbmFibGVfYXR0ZW50aW9uX3NsaWNpbmcoKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmElMjBwaG90byUyMG9mJTIwYW4lMjBhc3Ryb25hdXQlMjByaWRpbmclMjBhJTIwaG9yc2UlMjBvbiUyMG1hcnMlMjIlMEElMEElMjMlMjAlRUMlQjIlOTglRUMlOUQlOEMlMjAlMjIlRUMlOUIlOEMlRUIlQjAlOEQlRUMlOTclODUlMjIlMjAlRUMlQTAlODQlRUIlOEIlQUMlMjAoJUVDJTlDJTg0JTIwJUVDJTg0JUE0JUVCJUFBJTg1JUVDJTlEJTg0JTIwJUVCJUIzJUI0JUVDJTg0JUI4JUVDJTlBJTk0KSUwQV8lMjAlM0QlMjBwaXBlKHByb21wdCUyQyUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0QxKSUwQSUwQSUyMyUyMCVFQSVCMiVCMCVFQSVCMyVCQyVFQiU4QSU5NCUyMCVFQyU5QiU4QyVFQiVCMCU4RCVFQyU5NyU4NSUyMCVFQyVBMCU4NCVFQiU4QiVBQyUyMCVFRCU5QiU4NCVFQyU5RCU5OCUyMENQVSUyMCVFQyU5RSVBNSVFQyVCOSU5OCVFQyU5RCU5OCUyMCVFQSVCMiVCMCVFQSVCMyVCQyVFQyU5OSU4MCUyMCVFQyU5RCVCQyVFQyVCOSU5OCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMEFpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0KS5pbWFnZXMlNUIwJTVE",highlighted:`<span class="hljs-comment"># \`huggingface-cli login\`에 로그인되어 있음을 확인</span> | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| pipe = DiffusionPipeline.from_pretrained(<span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>) | |
| pipe = pipe.to(<span class="hljs-string">"mps"</span>) | |
| <span class="hljs-comment"># 컴퓨터가 64GB 이하의 RAM 램일 때 추천</span> | |
| pipe.enable_attention_slicing() | |
| prompt = <span class="hljs-string">"a photo of an astronaut riding a horse on mars"</span> | |
| <span class="hljs-comment"># 처음 "워밍업" 전달 (위 설명을 보세요)</span> | |
| _ = pipe(prompt, num_inference_steps=<span class="hljs-number">1</span>) | |
| <span class="hljs-comment"># 결과는 워밍업 전달 후의 CPU 장치의 결과와 일치합니다.</span> | |
| image = pipe(prompt).images[<span class="hljs-number">0</span>]`,wrap:!1}}),g=new _t({props:{code:"cGlwZWxpbmUuZW5hYmxlX2F0dGVudGlvbl9zbGljaW5nKCk=",highlighted:"pipeline.enable_attention_slicing()",wrap:!1}}),x=new Et({}),{c(){p=s("meta"),Q=a(),m=s("p"),I=a(),c=s("h1"),u=s("a"),F=s("span"),B(V.$$.fragment),mt=a(),O=s("span"),O.textContent=ft,W=a(),d=s("p"),d.innerHTML=Mt,z=a(),h=s("h2"),h.textContent=ut,X=a(),v=s("ul"),v.innerHTML=ht,K=a(),C=s("h2"),C.textContent=Ct,q=a(),$=s("p"),$.innerHTML=yt,Y=a(),B(y.$$.fragment),tt=a(),j=s("p"),j.textContent=Jt,et=a(),B(b.$$.fragment),lt=a(),J=s("h2"),J.textContent=Tt,nt=a(),E=s("p"),E.textContent=wt,st=a(),_=s("p"),_.innerHTML=Qt,it=a(),B(g.$$.fragment),at=a(),f=s("h2"),T=s("a"),D=s("span"),B(x.$$.fragment),ct=a(),A=s("span"),A.textContent=Vt,ot=a(),R=s("ul"),R.innerHTML=dt,pt=a(),k=s("p"),this.h()},l(t){const l=Ot("svelte-1phssyn",document.head);p=i(l,"META",{name:!0,content:!0}),l.forEach(e),Q=o(t),m=i(t,"P",{}),w(m).forEach(e),I=o(t),c=i(t,"H1",{class:!0});var S=w(c);u=i(S,"A",{id:!0,class:!0,href:!0});var vt=w(u);F=i(vt,"SPAN",{});var $t=w(F);P(V.$$.fragment,$t),$t.forEach(e),vt.forEach(e),mt=o(S),O=i(S,"SPAN",{"data-svelte-h":!0}),U(O)!=="svelte-160u75e"&&(O.textContent=ft),S.forEach(e),W=o(t),d=i(t,"P",{"data-svelte-h":!0}),U(d)!=="svelte-1cmhw56"&&(d.innerHTML=Mt),z=o(t),h=i(t,"H2",{id:!0,"data-svelte-h":!0}),U(h)!=="svelte-vh5ppn"&&(h.textContent=ut),X=o(t),v=i(t,"UL",{"data-svelte-h":!0}),U(v)!=="svelte-xmgm9h"&&(v.innerHTML=ht),K=o(t),C=i(t,"H2",{id:!0,"data-svelte-h":!0}),U(C)!=="svelte-ozsxg2"&&(C.textContent=Ct),q=o(t),$=i(t,"P",{"data-svelte-h":!0}),U($)!=="svelte-26dp8q"&&($.innerHTML=yt),Y=o(t),P(y.$$.fragment,t),tt=o(t),j=i(t,"P",{"data-svelte-h":!0}),U(j)!=="svelte-d7ffo5"&&(j.textContent=Jt),et=o(t),P(b.$$.fragment,t),lt=o(t),J=i(t,"H2",{id:!0,"data-svelte-h":!0}),U(J)!=="svelte-12uog1g"&&(J.textContent=Tt),nt=o(t),E=i(t,"P",{"data-svelte-h":!0}),U(E)!=="svelte-1rzz618"&&(E.textContent=wt),st=o(t),_=i(t,"P",{"data-svelte-h":!0}),U(_)!=="svelte-1bz9ahf"&&(_.innerHTML=Qt),it=o(t),P(g.$$.fragment,t),at=o(t),f=i(t,"H2",{class:!0});var Ut=w(f);T=i(Ut,"A",{id:!0,class:!0,href:!0});var jt=w(T);D=i(jt,"SPAN",{});var bt=w(D);P(x.$$.fragment,bt),bt.forEach(e),jt.forEach(e),ct=o(Ut),A=i(Ut,"SPAN",{"data-svelte-h":!0}),U(A)!=="svelte-hx5m8e"&&(A.textContent=Vt),Ut.forEach(e),ot=o(t),R=i(t,"UL",{"data-svelte-h":!0}),U(R)!=="svelte-1uyieu0"&&(R.innerHTML=dt),pt=o(t),k=i(t,"P",{}),w(k).forEach(e),this.h()},h(){r(p,"name","hf:doc:metadata"),r(p,"content",JSON.stringify(kt)),r(u,"id","apple-silicon-m1m2-stable-diffusion"),r(u,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),r(u,"href","#apple-silicon-m1m2-stable-diffusion"),r(c,"class","relative group"),r(h,"id",""),r(C,"id",""),r(J,"id",""),r(T,"id","known-issues"),r(T,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),r(T,"href","#known-issues"),r(f,"class","relative group")},m(t,l){M(document.head,p),n(t,Q,l),n(t,m,l),n(t,I,l),n(t,c,l),M(c,u),M(u,F),G(V,F,null),M(c,mt),M(c,O),n(t,W,l),n(t,d,l),n(t,z,l),n(t,h,l),n(t,X,l),n(t,v,l),n(t,K,l),n(t,C,l),n(t,q,l),n(t,$,l),n(t,Y,l),G(y,t,l),n(t,tt,l),n(t,j,l),n(t,et,l),G(b,t,l),n(t,lt,l),n(t,J,l),n(t,nt,l),n(t,E,l),n(t,st,l),n(t,_,l),n(t,it,l),G(g,t,l),n(t,at,l),n(t,f,l),M(f,T),M(T,D),G(x,D,null),M(f,ct),M(f,A),n(t,ot,l),n(t,R,l),n(t,pt,l),n(t,k,l),rt=!0},p(t,[l]){const S={};l&2&&(S.$$scope={dirty:l,ctx:t}),y.$set(S)},i(t){rt||(H(V.$$.fragment,t),H(y.$$.fragment,t),H(b.$$.fragment,t),H(g.$$.fragment,t),H(x.$$.fragment,t),rt=!0)},o(t){N(V.$$.fragment,t),N(y.$$.fragment,t),N(b.$$.fragment,t),N(g.$$.fragment,t),N(x.$$.fragment,t),rt=!1},d(t){t&&(e(Q),e(m),e(I),e(c),e(W),e(d),e(z),e(h),e(X),e(v),e(K),e(C),e(q),e($),e(Y),e(tt),e(j),e(et),e(lt),e(J),e(nt),e(E),e(st),e(_),e(it),e(at),e(f),e(ot),e(R),e(pt),e(k)),e(p),Z(V),Z(y,t),Z(b,t),Z(g,t),Z(x)}}}const kt={local:"apple-silicon-m1m2-stable-diffusion",sections:[{local:"",title:"요구 사항"},{local:"",title:"추론 파이프라인"},{local:"",title:"성능 추천"},{local:"known-issues",title:"Known Issues"}],title:"Apple Silicon (M1/M2)에서 Stable Diffusion을 사용하는 방법"};function Bt(L){return xt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Lt extends St{constructor(p){super(),It(this,p,Bt,Dt,gt,{})}}export{Lt as component}; | |
Xet Storage Details
- Size:
- 10.7 kB
- Xet hash:
- f1b727a1c0f34144cd0186523433db5f2eb600400a4ff6e0dfbfc38256f2295b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.