Buckets:
| import"../chunks/DsnmJJEf.js";import{i as Q,h as g,C as f,H as a,a as h,E as w,s as j}from"../chunks/CFM6C53a.js";import{p as y,o as I,s as l,f as C,a as T,b as O,c as J,n as R}from"../chunks/CNc7KuUZ.js";const V='{"title":"Apple Silicon (M1/M2)에서 Stable Diffusion을 사용하는 방법","local":"apple-silicon-m1m2에서-stable-diffusion을-사용하는-방법","sections":[{"title":"요구 사항","local":"요구-사항","sections":[],"depth":2},{"title":"추론 파이프라인","local":"추론-파이프라인","sections":[],"depth":2},{"title":"성능 추천","local":"성능-추천","sections":[],"depth":2},{"title":"Known Issues","local":"known-issues","sections":[],"depth":2}],"depth":1}';var E=J('<meta name="hf:doc:metadata"/>'),b=J('<p></p> <!> <!> <p>Diffusers는 Stable Diffusion 추론을 위해 PyTorch <code>mps</code>를 사용해 Apple 실리콘과 호환됩니다. 다음은 Stable Diffusion이 있는 M1 또는 M2 컴퓨터를 사용하기 위해 따라야 하는 단계입니다.</p> <!> <ul><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></ul> <!> <p>아래 코도는 익숙한 <code>to()</code> 인터페이스를 사용하여 <code>mps</code> 백엔드로 Stable Diffusion 파이프라인을 M1 또는 M2 장치로 이동하는 방법을 보여줍니다.</p> <blockquote class="warning"><p><strong>PyTorch 1.13을 사용 중일 때</strong> 추가 일회성 전달을 사용하여 파이프라인을 “프라이밍”하는 것을 추천합니다. 이것은 발견한 이상한 문제에 대한 임시 해결 방법입니다. 첫 번째 추론 전달은 후속 전달와 약간 다른 결과를 생성합니다. 이 전달은 한 번만 수행하면 되며 추론 단계를 한 번만 사용하고 결과를 폐기해도 됩니다.</p></blockquote> <p>이전 팁에서 설명한 것들을 포함한 여러 문제를 해결하므로 PyTorch 2 이상을 사용하는 것이 좋습니다.</p> <!> <!> <p>M1/M2 성능은 메모리 압력에 매우 민감합니다. 시스템은 필요한 경우 자동으로 스왑되지만 스왑할 때 성능이 크게 저하됩니다.</p> <p>특히 컴퓨터의 시스템 RAM이 64GB 미만이거나 512 × 512픽셀보다 큰 비표준 해상도에서 이미지를 생성하는 경우, 추론 중에 메모리 압력을 줄이고 스와핑을 방지하기 위해 <em>어텐션 슬라이싱</em>을 사용하는 것이 좋습니다. 어텐션 슬라이싱은 비용이 많이 드는 어텐션 작업을 한 번에 모두 수행하는 대신 여러 단계로 수행합니다. 일반적으로 범용 메모리가 없는 컴퓨터에서 ~20%의 성능 영향을 미치지만 64GB 이상이 아닌 경우 대부분의 Apple Silicon 컴퓨터에서 <em>더 나은 성능</em>이 관찰되었습니다.</p> <!> <!> <ul><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></ul> <!> <p></p>',1);function N(m,d){y(d,!1),I(()=>{new URLSearchParams(window.location.search).get("fw")}),Q();var s=b();g("122qmil",M=>{var r=E();j(r,"content",V),T(M,r)});var o=l(C(s),2);f(o,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var e=l(o,2);a(e,{title:"Apple Silicon (M1/M2)에서 Stable Diffusion을 사용하는 방법",local:"apple-silicon-m1m2에서-stable-diffusion을-사용하는-방법",headingTag:"h1"});var t=l(e,4);a(t,{title:"요구 사항",local:"요구-사항",headingTag:"h2"});var i=l(t,4);a(i,{title:"추론 파이프라인",local:"추론-파이프라인",headingTag:"h2"});var n=l(i,8);h(n,{code:"JTIzJTIwJTYwaGYlMjBhdXRoJTIwbG9naW4lNjAlRUMlOTclOTAlMjAlRUIlQTElOUMlRUElQjclQjglRUMlOUQlQjglRUIlOTAlOTglRUMlOTYlQjQlMjAlRUMlOUUlODglRUMlOUQlOEMlRUMlOUQlODQlMjAlRUQlOTklOTUlRUMlOUQlQjglMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEElMEFwaXBlJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiklMEFwaXBlJTIwJTNEJTIwcGlwZS50byglMjJtcHMlMjIpJTBBJTBBJTIzJTIwJUVDJUJCJUI0JUVEJTkzJUE4JUVEJTg0JUIwJUVBJUIwJTgwJTIwNjRHQiUyMCVFQyU5RCVCNCVFRCU5NSU5OCVFQyU5RCU5OCUyMFJBTSUyMCVFQiU5RSVBOCVFQyU5RCVCQyUyMCVFQiU5NSU4QyUyMCVFQyVCNiU5NCVFQyVCMiU5QyUwQXBpcGUuZW5hYmxlX2F0dGVudGlvbl9zbGljaW5nKCklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJhJTIwcGhvdG8lMjBvZiUyMGFuJTIwYXN0cm9uYXV0JTIwcmlkaW5nJTIwYSUyMGhvcnNlJTIwb24lMjBtYXJzJTIyJTBBJTBBJTIzJTIwJUVDJUIyJTk4JUVDJTlEJThDJTIwJTIyJUVDJTlCJThDJUVCJUIwJThEJUVDJTk3JTg1JTIyJTIwJUVDJUEwJTg0JUVCJThCJUFDJTIwKCVFQyU5QyU4NCUyMCVFQyU4NCVBNCVFQiVBQSU4NSVFQyU5RCU4NCUyMCVFQiVCMyVCNCVFQyU4NCVCOCVFQyU5QSU5NCklMEFfJTIwJTNEJTIwcGlwZShwcm9tcHQlMkMlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNEMSklMEElMEElMjMlMjAlRUElQjIlQjAlRUElQjMlQkMlRUIlOEElOTQlMjAlRUMlOUIlOEMlRUIlQjAlOEQlRUMlOTclODUlMjAlRUMlQTAlODQlRUIlOEIlQUMlMjAlRUQlOUIlODQlRUMlOUQlOTglMjBDUFUlMjAlRUMlOUUlQTUlRUMlQjklOTglRUMlOUQlOTglMjAlRUElQjIlQjAlRUElQjMlQkMlRUMlOTklODAlMjAlRUMlOUQlQkMlRUMlQjklOTglRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTBBaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCkuaW1hZ2VzJTVCMCU1RA==",highlighted:`<span class="hljs-comment"># \`hf auth login\`에 로그인되어 있음을 확인</span> | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| pipe = DiffusionPipeline.from_pretrained(<span class="hljs-string">"stable-diffusion-v1-5/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>]`,lang:"python",wrap:!1});var p=l(n,2);a(p,{title:"성능 추천",local:"성능-추천",headingTag:"h2"});var U=l(p,6);h(U,{code:"cGlwZWxpbmUuZW5hYmxlX2F0dGVudGlvbl9zbGljaW5nKCk=",highlighted:"pipeline.enable_attention_slicing()",lang:"python",wrap:!1});var c=l(U,2);a(c,{title:"Known Issues",local:"known-issues",headingTag:"h2"});var u=l(c,4);w(u,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/optimization/mps.md"}),R(2),T(m,s),O()}export{N as component}; | |
Xet Storage Details
- Size:
- 7.28 kB
- Xet hash:
- 9f6e57684a22e8e63bc1f2cfad61ce749c233f7a059d5ab0a94c781c312d7e31
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.