Buckets:

rtrm's picture
download
raw
39.4 kB
import{s as Ft,o as Dt,n as Et}from"../chunks/scheduler.6e0d5ff7.js";import{S as Yt,i as At,g as a,s as i,r as M,E as Pt,h as p,f as t,c as n,j as St,u as m,x as r,k as J,y as qt,a as s,v as c,d as o,t as f,w as u}from"../chunks/index.d7c1b260.js";import{T as Qt}from"../chunks/Tip.c000e27b.js";import{C as y}from"../chunks/CodeBlock.09a08494.js";import{D as Kt}from"../chunks/DocNotebookDropdown.b1b23d60.js";import{H as _}from"../chunks/Heading.30a009b0.js";function Ot(xe){let d,h='💡 GPU에 액세스할 수 없는 경우 다음과 같은 GPU 제공업체에서 무료로 사용할 수 있습니다!. <a href="https://colab.research.google.com/" rel="nofollow">Colab</a>';return{c(){d=a("p"),d.innerHTML=h},l(b){d=p(b,"P",{"data-svelte-h":!0}),r(d)!=="svelte-vjsly4"&&(d.innerHTML=h)},m(b,w){s(b,d,w)},p:Et,d(b){b&&t(d)}}}function es(xe){let d,h="💡 파이프라인은 항상 <code>float16</code>에서 실행할 것을 강력히 권장하며, 지금까지 출력 품질이 저하되는 경우는 거의 없었습니다.";return{c(){d=a("p"),d.innerHTML=h},l(b){d=p(b,"P",{"data-svelte-h":!0}),r(d)!=="svelte-169sehu"&&(d.innerHTML=h)},m(b,w){s(b,d,w)},p:Et,d(b){b&&t(d)}}}function ls(xe){let d,h,b,w,I,Re,C,Ne,k,lt="특정 스타일로 이미지를 생성하거나 원하는 내용을 포함하도록<code>DiffusionPipeline</code>을 설정하는 것은 까다로울 수 있습니다. 종종 만족스러운 이미지를 얻기까지 <code>DiffusionPipeline</code>을 여러 번 실행해야 하는 경우가 많습니다. 그러나 무에서 유를 창조하는 것은 특히 추론을 반복해서 실행하는 경우 계산 집약적인 프로세스입니다.",Le,B,tt="그렇기 때문에 파이프라인에서 <em>계산</em>(속도) 및 <em>메모리</em>(GPU RAM) 효율성을 극대화하여 추론 주기 사이의 시간을 단축하여 더 빠르게 반복할 수 있도록 하는 것이 중요합니다.",ze,V,st="이 튜토리얼에서는 <code>DiffusionPipeline</code>을 사용하여 더 빠르고 효과적으로 생성하는 방법을 안내합니다.",Se,H,it='<a href="https://huggingface.co/runwayml/stable-diffusion-v1-5" rel="nofollow"><code>runwayml/stable-diffusion-v1-5</code></a> 모델을 불러와서 시작합니다:',Qe,x,Ee,X,nt="예제 프롬프트는 “portrait of an old warrior chief” 이지만, 자유롭게 자신만의 프롬프트를 사용해도 됩니다:",Fe,R,De,N,Ye,T,Ae,L,at="추론 속도를 높이는 가장 간단한 방법 중 하나는 Pytorch 모듈을 사용할 때와 같은 방식으로 GPU에 파이프라인을 배치하는 것입니다:",Pe,z,qe,S,pt='동일한 이미지를 사용하고 개선할 수 있는지 확인하려면 <a href="https://pytorch.org/docs/stable/generated/torch.Generator.html" rel="nofollow"><code>Generator</code></a>를 사용하고 <a href="./using-diffusers/reproducibility">재현성</a>에 대한 시드를 설정하세요:',Ke,Q,Oe,E,rt="이제 이미지를 생성할 수 있습니다:",el,F,ll,U,Mt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_1.png"/>',tl,D,mt="이 프로세스는 T4 GPU에서 약 30초가 소요되었습니다(할당된 GPU가 T4보다 나은 경우 더 빠를 수 있음). 기본적으로 <code>DiffusionPipeline</code>은 50개의 추론 단계에 대해 전체 <code>float32</code> 정밀도로 추론을 실행합니다. <code>float16</code>과 같은 더 낮은 정밀도로 전환하거나 추론 단계를 더 적게 실행하여 속도를 높일 수 있습니다.",sl,Y,ct="<code>float16</code>으로 모델을 로드하고 이미지를 생성해 보겠습니다:",il,A,nl,Z,ot='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_2.png"/>',al,P,ft="이번에는 이미지를 생성하는 데 약 11초밖에 걸리지 않아 이전보다 3배 가까이 빨라졌습니다!",pl,j,rl,q,ut="또 다른 옵션은 추론 단계의 수를 줄이는 것입니다. 보다 효율적인 스케줄러를 선택하면 출력 품질 저하 없이 단계 수를 줄이는 데 도움이 될 수 있습니다. 현재 모델과 호환되는 스케줄러는 <code>compatibles</code> 메서드를 호출하여 <code>DiffusionPipeline</code>에서 찾을 수 있습니다:",Ml,K,ml,O,dt="Stable Diffusion 모델은 일반적으로 약 50개의 추론 단계가 필요한 <code>PNDMScheduler</code>를 기본으로 사용하지만, <code>DPMSolverMultistepScheduler</code>와 같이 성능이 더 뛰어난 스케줄러는 약 20개 또는 25개의 추론 단계만 필요로 합니다. 새 스케줄러를 로드하려면 <code>ConfigMixin.from_config()</code> 메서드를 사용합니다:",cl,ee,ol,le,yt="<code>num_inference_steps</code>를 20으로 설정합니다:",fl,te,ul,g,bt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_3.png"/>',dl,se,ht="추론시간을 4초로 단축할 수 있었습니다! ⚡️",yl,ie,bl,ne,Jt="파이프라인 성능 향상의 또 다른 핵심은 메모리 사용량을 줄이는 것인데, 초당 생성되는 이미지 수를 최대화하려고 하는 경우가 많기 때문에 간접적으로 더 빠른 속도를 의미합니다. 한 번에 생성할 수 있는 이미지 수를 확인하는 가장 쉬운 방법은 <code>OutOfMemoryError</code>(OOM)이 발생할 때까지 다양한 배치 크기를 시도해 보는 것입니다.",hl,ae,wt="프롬프트 목록과 <code>Generators</code>에서 이미지 배치를 생성하는 함수를 만듭니다. 좋은 결과를 생성하는 경우 재사용할 수 있도록 각 <code>Generator</code>에 시드를 할당해야 합니다.",Jl,pe,wl,re,Tt="또한 각 이미지 배치를 보여주는 기능이 필요합니다:",Tl,Me,Ul,me,Ut="<code>batch_size=4</code>부터 시작해 얼마나 많은 메모리를 소비했는지 확인합니다:",Zl,ce,jl,oe,Zt="RAM이 더 많은 GPU가 아니라면 위의 코드에서 <code>OOM</code> 오류가 반환되었을 것입니다! 대부분의 메모리는 cross-attention 레이어가 차지합니다. 이 작업을 배치로 실행하는 대신 순차적으로 실행하면 상당한 양의 메모리를 절약할 수 있습니다. 파이프라인을 구성하여 <code>enable_attention_slicing()</code> 함수를 사용하기만 하면 됩니다:",gl,fe,Gl,ue,jt="이제 <code>batch_size</code>를 8로 늘려보세요!",$l,de,vl,G,gt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_5.png"/>',Wl,ye,Gt="이전에는 4개의 이미지를 배치로 생성할 수도 없었지만, 이제는 이미지당 약 3.5초 만에 8개의 이미지를 배치로 생성할 수 있습니다! 이는 아마도 품질 저하 없이 T4 GPU에서 가장 빠른 속도일 것입니다.",_l,be,Il,he,$t="지난 두 섹션에서는 <code>fp16</code>을 사용하여 파이프라인의 속도를 최적화하고, 더 성능이 좋은 스케줄러를 사용하여 추론 단계의 수를 줄이고, attention slicing을 활성화하여 메모리 소비를 줄이는 방법을 배웠습니다. 이제 생성된 이미지의 품질을 개선하는 방법에 대해 집중적으로 알아보겠습니다.",Cl,Je,kl,we,vt='가장 확실한 단계는 더 나은 체크포인트를 사용하는 것입니다. Stable Diffusion 모델은 좋은 출발점이며, 공식 출시 이후 몇 가지 개선된 버전도 출시되었습니다. 하지만 최신 버전을 사용한다고 해서 자동으로 더 나은 결과를 얻을 수 있는 것은 아닙니다. 여전히 다양한 체크포인트를 직접 실험해보고, <a href="https://minimaxir.com/2022/11/stable-diffusion-negative-prompt/" rel="nofollow">negative prompts</a> 사용 등 약간의 조사를 통해 최상의 결과를 얻어야 합니다.',Bl,Te,Wt='이 분야가 성장함에 따라 특정 스타일을 연출할 수 있도록 세밀하게 조정된 고품질 체크포인트가 점점 더 많아지고 있습니다. <a href="https://huggingface.co/models?library=diffusers&amp;sort=downloads" rel="nofollow">Hub</a>와 <a href="https://huggingface.co/spaces/huggingface-projects/diffusers-gallery" rel="nofollow">Diffusers Gallery</a>를 둘러보고 관심 있는 것을 찾아보세요!',Vl,Ue,Hl,Ze,_t='현재 파이프라인 구성 요소를 최신 버전으로 교체해 볼 수도 있습니다. Stability AI의 최신 <a href="https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main/vae" rel="nofollow">autodecoder</a>를 파이프라인에 로드하고 몇 가지 이미지를 생성해 보겠습니다:',xl,je,Xl,$,It='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_6.png"/>',Rl,ge,Nl,Ge,Ct="이미지를 생성하는 데 사용하는 텍스트 프롬프트는 <em>prompt engineering</em>이라고 할 정도로 매우 중요합니다. 프롬프트 엔지니어링 시 고려해야 할 몇 가지 사항은 다음과 같습니다:",Ll,$e,kt="<li>생성하려는 이미지 또는 유사한 이미지가 인터넷에 어떻게 저장되어 있는가?</li> <li>내가 원하는 스타일로 모델을 유도하기 위해 어떤 추가 세부 정보를 제공할 수 있는가?</li>",zl,ve,Bt="이를 염두에 두고 색상과 더 높은 품질의 디테일을 포함하도록 프롬프트를 개선해 봅시다:",Sl,We,Ql,_e,Vt="새로운 프롬프트로 이미지 배치를 생성합니다:",El,Ie,Fl,v,Ht='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_7.png"/>',Dl,Ce,xt="꽤 인상적입니다! <code>1</code>의 시드를 가진 <code>Generator</code>에 해당하는 두 번째 이미지에 피사체의 나이에 대한 텍스트를 추가하여 조금 더 조정해 보겠습니다:",Yl,ke,Al,W,Xt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_8.png"/>',Pl,Be,ql,Ve,Rt="이 튜토리얼에서는 계산 및 메모리 효율을 높이고 생성된 출력의 품질을 개선하기 위해 <code>DiffusionPipeline</code>을 최적화하는 방법을 배웠습니다. 파이프라인을 더 빠르게 만드는 데 관심이 있다면 다음 리소스를 살펴보세요:",Kl,He,Nt='<li><a href="./optimization/torch2.0">PyTorch 2.0</a> 및 <a href="https://pytorch.org/docs/stable/generated/torch.compile.html" rel="nofollow"><code>torch.compile</code></a>이 어떻게 추론 속도를 5~300% 향상시킬 수 있는지 알아보세요. A100 GPU에서는 추론 속도가 최대 50%까지 빨라질 수 있습니다!</li> <li>PyTorch 2를 사용할 수 없는 경우, <a href="./optimization/xformers">xFormers</a>를 설치하는 것이 좋습니다. 메모리 효율적인 어텐션 메커니즘은 PyTorch 1.13.1과 함께 사용하면 속도가 빨라지고 메모리 소비가 줄어듭니다.</li> <li>모델 오프로딩과 같은 다른 최적화 기법은 <a href="./optimization/fp16">이 가이드</a>에서 다루고 있습니다.</li>',Ol,Xe,et;return I=new _({props:{title:"효과적이고 효율적인 Diffusion",local:"효과적이고-효율적인-diffusion",headingTag:"h1"}}),C=new Kt({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/stable_diffusion.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/stable_diffusion.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/stable_diffusion.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/stable_diffusion.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/stable_diffusion.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/stable_diffusion.ipynb"}]}}),x=new y({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUwQXBpcGVsaW5lJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline
model_id = <span class="hljs-string">&quot;runwayml/stable-diffusion-v1-5&quot;</span>
pipeline = DiffusionPipeline.from_pretrained(model_id)`,wrap:!1}}),R=new y({props:{code:"cHJvbXB0JTIwJTNEJTIwJTIycG9ydHJhaXQlMjBwaG90byUyMG9mJTIwYSUyMG9sZCUyMHdhcnJpb3IlMjBjaGllZiUyMg==",highlighted:'prompt = <span class="hljs-string">&quot;portrait photo of a old warrior chief&quot;</span>',wrap:!1}}),N=new _({props:{title:"속도",local:"속도",headingTag:"h2"}}),T=new Qt({props:{$$slots:{default:[Ot]},$$scope:{ctx:xe}}}),z=new y({props:{code:"cGlwZWxpbmUlMjAlM0QlMjBwaXBlbGluZS50byglMjJjdWRhJTIyKQ==",highlighted:'pipeline = pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)',wrap:!1}}),Q=new y({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5HZW5lcmF0b3IoJTIyY3VkYSUyMikubWFudWFsX3NlZWQoMCk=",highlighted:`<span class="hljs-keyword">import</span> torch
generator = torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">0</span>)`,wrap:!1}}),F=new y({props:{code:"aW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBnZW5lcmF0b3IlM0RnZW5lcmF0b3IpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`image = pipeline(prompt, generator=generator).images[<span class="hljs-number">0</span>]
image`,wrap:!1}}),A=new y({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwaXBlbGluZSUyMCUzRCUyMERpZmZ1c2lvblBpcGVsaW5lLmZyb21fcHJldHJhaW5lZChtb2RlbF9pZCUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiklMEFwaXBlbGluZSUyMCUzRCUyMHBpcGVsaW5lLnRvKCUyMmN1ZGElMjIpJTBBZ2VuZXJhdG9yJTIwJTNEJTIwdG9yY2guR2VuZXJhdG9yKCUyMmN1ZGElMjIpLm1hbnVhbF9zZWVkKDApJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBnZW5lcmF0b3IlM0RnZW5lcmF0b3IpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">import</span> torch
pipeline = DiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipeline = pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)
generator = torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">0</span>)
image = pipeline(prompt, generator=generator).images[<span class="hljs-number">0</span>]
image`,wrap:!1}}),j=new Qt({props:{$$slots:{default:[es]},$$scope:{ctx:xe}}}),K=new y({props:{code:"cGlwZWxpbmUuc2NoZWR1bGVyLmNvbXBhdGlibGVzJTBBJTVCJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19sbXNfZGlzY3JldGUuTE1TRGlzY3JldGVTY2hlZHVsZXIlMkMlMEElMjAlMjAlMjAlMjBkaWZmdXNlcnMuc2NoZWR1bGVycy5zY2hlZHVsaW5nX3VuaXBjX211bHRpc3RlcC5VbmlQQ011bHRpc3RlcFNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfa19kcG1fMl9kaXNjcmV0ZS5LRFBNMkRpc2NyZXRlU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19kZWlzX211bHRpc3RlcC5ERUlTTXVsdGlzdGVwU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19ldWxlcl9kaXNjcmV0ZS5FdWxlckRpc2NyZXRlU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19kcG1zb2x2ZXJfbXVsdGlzdGVwLkRQTVNvbHZlck11bHRpc3RlcFNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfZGRwbS5ERFBNU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19kcG1zb2x2ZXJfc2luZ2xlc3RlcC5EUE1Tb2x2ZXJTaW5nbGVzdGVwU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19rX2RwbV8yX2FuY2VzdHJhbF9kaXNjcmV0ZS5LRFBNMkFuY2VzdHJhbERpc2NyZXRlU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19oZXVuX2Rpc2NyZXRlLkhldW5EaXNjcmV0ZVNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfcG5kbS5QTkRNU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19ldWxlcl9hbmNlc3RyYWxfZGlzY3JldGUuRXVsZXJBbmNlc3RyYWxEaXNjcmV0ZVNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfZGRpbS5ERElNU2NoZWR1bGVyJTJDJTBBJTVE",highlighted:`pipeline.scheduler.compatibles
[
diffusers.schedulers.scheduling_lms_discrete.LMSDiscreteScheduler,
diffusers.schedulers.scheduling_unipc_multistep.UniPCMultistepScheduler,
diffusers.schedulers.scheduling_k_dpm_2_discrete.KDPM2DiscreteScheduler,
diffusers.schedulers.scheduling_deis_multistep.DEISMultistepScheduler,
diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteScheduler,
diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler,
diffusers.schedulers.scheduling_ddpm.DDPMScheduler,
diffusers.schedulers.scheduling_dpmsolver_singlestep.DPMSolverSinglestepScheduler,
diffusers.schedulers.scheduling_k_dpm_2_ancestral_discrete.KDPM2AncestralDiscreteScheduler,
diffusers.schedulers.scheduling_heun_discrete.HeunDiscreteScheduler,
diffusers.schedulers.scheduling_pndm.PNDMScheduler,
diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteScheduler,
diffusers.schedulers.scheduling_ddim.DDIMScheduler,
]`,wrap:!1}}),ee=new y({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERQTVNvbHZlck11bHRpc3RlcFNjaGVkdWxlciUwQSUwQXBpcGVsaW5lLnNjaGVkdWxlciUyMCUzRCUyMERQTVNvbHZlck11bHRpc3RlcFNjaGVkdWxlci5mcm9tX2NvbmZpZyhwaXBlbGluZS5zY2hlZHVsZXIuY29uZmlnKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DPMSolverMultistepScheduler
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)`,wrap:!1}}),te=new y({props:{code:"Z2VuZXJhdG9yJTIwJTNEJTIwdG9yY2guR2VuZXJhdG9yKCUyMmN1ZGElMjIpLm1hbnVhbF9zZWVkKDApJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBnZW5lcmF0b3IlM0RnZW5lcmF0b3IlMkMlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNEMjApLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`generator = torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">0</span>)
image = pipeline(prompt, generator=generator, num_inference_steps=<span class="hljs-number">20</span>).images[<span class="hljs-number">0</span>]
image`,wrap:!1}}),ie=new _({props:{title:"메모리",local:"메모리",headingTag:"h2"}}),pe=new y({props:{code:"ZGVmJTIwZ2V0X2lucHV0cyhiYXRjaF9zaXplJTNEMSklM0ElMEElMjAlMjAlMjAlMjBnZW5lcmF0b3IlMjAlM0QlMjAlNUJ0b3JjaC5HZW5lcmF0b3IoJTIyY3VkYSUyMikubWFudWFsX3NlZWQoaSklMjBmb3IlMjBpJTIwaW4lMjByYW5nZShiYXRjaF9zaXplKSU1RCUwQSUyMCUyMCUyMCUyMHByb21wdHMlMjAlM0QlMjBiYXRjaF9zaXplJTIwKiUyMCU1QnByb21wdCU1RCUwQSUyMCUyMCUyMCUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlMjAlM0QlMjAyMCUwQSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMnByb21wdCUyMiUzQSUyMHByb21wdHMlMkMlMjAlMjJnZW5lcmF0b3IlMjIlM0ElMjBnZW5lcmF0b3IlMkMlMjAlMjJudW1faW5mZXJlbmNlX3N0ZXBzJTIyJTNBJTIwbnVtX2luZmVyZW5jZV9zdGVwcyU3RA==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_inputs</span>(<span class="hljs-params">batch_size=<span class="hljs-number">1</span></span>):
generator = [torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(i) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(batch_size)]
prompts = batch_size * [prompt]
num_inference_steps = <span class="hljs-number">20</span>
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;prompt&quot;</span>: prompts, <span class="hljs-string">&quot;generator&quot;</span>: generator, <span class="hljs-string">&quot;num_inference_steps&quot;</span>: num_inference_steps}`,wrap:!1}}),Me=new y({props:{code:"ZnJvbSUyMFBJTCUyMGltcG9ydCUyMEltYWdlJTBBJTBBJTBBZGVmJTIwaW1hZ2VfZ3JpZChpbWdzJTJDJTIwcm93cyUzRDIlMkMlMjBjb2xzJTNEMiklM0ElMEElMjAlMjAlMjAlMjB3JTJDJTIwaCUyMCUzRCUyMGltZ3MlNUIwJTVELnNpemUlMEElMjAlMjAlMjAlMjBncmlkJTIwJTNEJTIwSW1hZ2UubmV3KCUyMlJHQiUyMiUyQyUyMHNpemUlM0QoY29scyUyMColMjB3JTJDJTIwcm93cyUyMColMjBoKSklMEElMEElMjAlMjAlMjAlMjBmb3IlMjBpJTJDJTIwaW1nJTIwaW4lMjBlbnVtZXJhdGUoaW1ncyklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBncmlkLnBhc3RlKGltZyUyQyUyMGJveCUzRChpJTIwJTI1JTIwY29scyUyMColMjB3JTJDJTIwaSUyMCUyRiUyRiUyMGNvbHMlMjAqJTIwaCkpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwZ3JpZA==",highlighted:`<span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image
<span class="hljs-keyword">def</span> <span class="hljs-title function_">image_grid</span>(<span class="hljs-params">imgs, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">2</span></span>):
w, h = imgs[<span class="hljs-number">0</span>].size
grid = Image.new(<span class="hljs-string">&quot;RGB&quot;</span>, size=(cols * w, rows * h))
<span class="hljs-keyword">for</span> i, img <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(imgs):
grid.paste(img, box=(i % cols * w, i // cols * h))
<span class="hljs-keyword">return</span> grid`,wrap:!1}}),ce=new y({props:{code:"aW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q0KSkuaW1hZ2VzJTBBaW1hZ2VfZ3JpZChpbWFnZXMp",highlighted:`images = pipeline(**get_inputs(batch_size=<span class="hljs-number">4</span>)).images
image_grid(images)`,wrap:!1}}),fe=new y({props:{code:"cGlwZWxpbmUuZW5hYmxlX2F0dGVudGlvbl9zbGljaW5nKCk=",highlighted:"pipeline.enable_attention_slicing()",wrap:!1}}),de=new y({props:{code:"aW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q4KSkuaW1hZ2VzJTBBaW1hZ2VfZ3JpZChpbWFnZXMlMkMlMjByb3dzJTNEMiUyQyUyMGNvbHMlM0Q0KQ==",highlighted:`images = pipeline(**get_inputs(batch_size=<span class="hljs-number">8</span>)).images
image_grid(images, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">4</span>)`,wrap:!1}}),be=new _({props:{title:"품질",local:"품질",headingTag:"h2"}}),Je=new _({props:{title:"더 나은 체크포인트",local:"더-나은-체크포인트",headingTag:"h3"}}),Ue=new _({props:{title:"더 나은 파이프라인 구성 요소",local:"더-나은-파이프라인-구성-요소",headingTag:"h3"}}),je=new y({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9lbmNvZGVyS0wlMEElMEF2YWUlMjAlM0QlMjBBdXRvZW5jb2RlcktMLmZyb21fcHJldHJhaW5lZCglMjJzdGFiaWxpdHlhaSUyRnNkLXZhZS1mdC1tc2UlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUudmFlJTIwJTNEJTIwdmFlJTBBaW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q4KSkuaW1hZ2VzJTBBaW1hZ2VfZ3JpZChpbWFnZXMlMkMlMjByb3dzJTNEMiUyQyUyMGNvbHMlM0Q0KQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoencoderKL
vae = AutoencoderKL.from_pretrained(<span class="hljs-string">&quot;stabilityai/sd-vae-ft-mse&quot;</span>, torch_dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.vae = vae
images = pipeline(**get_inputs(batch_size=<span class="hljs-number">8</span>)).images
image_grid(images, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">4</span>)`,wrap:!1}}),ge=new _({props:{title:"더 나은 프롬프트 엔지니어링",local:"더-나은-프롬프트-엔지니어링",headingTag:"h3"}}),We=new y({props:{code:"cHJvbXB0JTIwJTJCJTNEJTIwJTIyJTJDJTIwdHJpYmFsJTIwcGFudGhlciUyMG1ha2UlMjB1cCUyQyUyMGJsdWUlMjBvbiUyMHJlZCUyQyUyMHNpZGUlMjBwcm9maWxlJTJDJTIwbG9va2luZyUyMGF3YXklMkMlMjBzZXJpb3VzJTIwZXllcyUyMiUwQXByb21wdCUyMCUyQiUzRCUyMCUyMiUyMDUwbW0lMjBwb3J0cmFpdCUyMHBob3RvZ3JhcGh5JTJDJTIwaGFyZCUyMHJpbSUyMGxpZ2h0aW5nJTIwcGhvdG9ncmFwaHktLWJldGElMjAtLWFyJTIwMiUzQTMlMjAlMjAtLWJldGElMjAtLXVwYmV0YSUyMg==",highlighted:`prompt += <span class="hljs-string">&quot;, tribal panther make up, blue on red, side profile, looking away, serious eyes&quot;</span>
prompt += <span class="hljs-string">&quot; 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>`,wrap:!1}}),Ie=new y({props:{code:"aW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q4KSkuaW1hZ2VzJTBBaW1hZ2VfZ3JpZChpbWFnZXMlMkMlMjByb3dzJTNEMiUyQyUyMGNvbHMlM0Q0KQ==",highlighted:`images = pipeline(**get_inputs(batch_size=<span class="hljs-number">8</span>)).images
image_grid(images, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">4</span>)`,wrap:!1}}),ke=new y({props:{code:"cHJvbXB0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMnBvcnRyYWl0JTIwcGhvdG8lMjBvZiUyMHRoZSUyMG9sZGVzdCUyMHdhcnJpb3IlMjBjaGllZiUyQyUyMHRyaWJhbCUyMHBhbnRoZXIlMjBtYWtlJTIwdXAlMkMlMjBibHVlJTIwb24lMjByZWQlMkMlMjBzaWRlJTIwcHJvZmlsZSUyQyUyMGxvb2tpbmclMjBhd2F5JTJDJTIwc2VyaW91cyUyMGV5ZXMlMjA1MG1tJTIwcG9ydHJhaXQlMjBwaG90b2dyYXBoeSUyQyUyMGhhcmQlMjByaW0lMjBsaWdodGluZyUyMHBob3RvZ3JhcGh5LS1iZXRhJTIwLS1hciUyMDIlM0EzJTIwJTIwLS1iZXRhJTIwLS11cGJldGElMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJwb3J0cmFpdCUyMHBob3RvJTIwb2YlMjBhJTIwb2xkJTIwd2FycmlvciUyMGNoaWVmJTJDJTIwdHJpYmFsJTIwcGFudGhlciUyMG1ha2UlMjB1cCUyQyUyMGJsdWUlMjBvbiUyMHJlZCUyQyUyMHNpZGUlMjBwcm9maWxlJTJDJTIwbG9va2luZyUyMGF3YXklMkMlMjBzZXJpb3VzJTIwZXllcyUyMDUwbW0lMjBwb3J0cmFpdCUyMHBob3RvZ3JhcGh5JTJDJTIwaGFyZCUyMHJpbSUyMGxpZ2h0aW5nJTIwcGhvdG9ncmFwaHktLWJldGElMjAtLWFyJTIwMiUzQTMlMjAlMjAtLWJldGElMjAtLXVwYmV0YSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMnBvcnRyYWl0JTIwcGhvdG8lMjBvZiUyMGElMjB3YXJyaW9yJTIwY2hpZWYlMkMlMjB0cmliYWwlMjBwYW50aGVyJTIwbWFrZSUyMHVwJTJDJTIwYmx1ZSUyMG9uJTIwcmVkJTJDJTIwc2lkZSUyMHByb2ZpbGUlMkMlMjBsb29raW5nJTIwYXdheSUyQyUyMHNlcmlvdXMlMjBleWVzJTIwNTBtbSUyMHBvcnRyYWl0JTIwcGhvdG9ncmFwaHklMkMlMjBoYXJkJTIwcmltJTIwbGlnaHRpbmclMjBwaG90b2dyYXBoeS0tYmV0YSUyMC0tYXIlMjAyJTNBMyUyMCUyMC0tYmV0YSUyMC0tdXBiZXRhJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycG9ydHJhaXQlMjBwaG90byUyMG9mJTIwYSUyMHlvdW5nJTIwd2FycmlvciUyMGNoaWVmJTJDJTIwdHJpYmFsJTIwcGFudGhlciUyMG1ha2UlMjB1cCUyQyUyMGJsdWUlMjBvbiUyMHJlZCUyQyUyMHNpZGUlMjBwcm9maWxlJTJDJTIwbG9va2luZyUyMGF3YXklMkMlMjBzZXJpb3VzJTIwZXllcyUyMDUwbW0lMjBwb3J0cmFpdCUyMHBob3RvZ3JhcGh5JTJDJTIwaGFyZCUyMHJpbSUyMGxpZ2h0aW5nJTIwcGhvdG9ncmFwaHktLWJldGElMjAtLWFyJTIwMiUzQTMlMjAlMjAtLWJldGElMjAtLXVwYmV0YSUyMiUyQyUwQSU1RCUwQSUwQWdlbmVyYXRvciUyMCUzRCUyMCU1QnRvcmNoLkdlbmVyYXRvciglMjJjdWRhJTIyKS5tYW51YWxfc2VlZCgxKSUyMGZvciUyMF8lMjBpbiUyMHJhbmdlKGxlbihwcm9tcHRzKSklNUQlMEFpbWFnZXMlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlM0Rwcm9tcHRzJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDI1KS5pbWFnZXMlMEFpbWFnZV9ncmlkKGltYWdlcyk=",highlighted:`prompts = [
<span class="hljs-string">&quot;portrait photo of the oldest warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
<span class="hljs-string">&quot;portrait photo of a old warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
<span class="hljs-string">&quot;portrait photo of a warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
<span class="hljs-string">&quot;portrait photo of a young warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
]
generator = [torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">1</span>) <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(prompts))]
images = pipeline(prompt=prompts, generator=generator, num_inference_steps=<span class="hljs-number">25</span>).images
image_grid(images)`,wrap:!1}}),Be=new _({props:{title:"다음 단계",local:"다음-단계",headingTag:"h2"}}),{c(){d=a("meta"),h=i(),b=a("p"),w=i(),M(I.$$.fragment),Re=i(),M(C.$$.fragment),Ne=i(),k=a("p"),k.innerHTML=lt,Le=i(),B=a("p"),B.innerHTML=tt,ze=i(),V=a("p"),V.innerHTML=st,Se=i(),H=a("p"),H.innerHTML=it,Qe=i(),M(x.$$.fragment),Ee=i(),X=a("p"),X.textContent=nt,Fe=i(),M(R.$$.fragment),De=i(),M(N.$$.fragment),Ye=i(),M(T.$$.fragment),Ae=i(),L=a("p"),L.textContent=at,Pe=i(),M(z.$$.fragment),qe=i(),S=a("p"),S.innerHTML=pt,Ke=i(),M(Q.$$.fragment),Oe=i(),E=a("p"),E.textContent=rt,el=i(),M(F.$$.fragment),ll=i(),U=a("div"),U.innerHTML=Mt,tl=i(),D=a("p"),D.innerHTML=mt,sl=i(),Y=a("p"),Y.innerHTML=ct,il=i(),M(A.$$.fragment),nl=i(),Z=a("div"),Z.innerHTML=ot,al=i(),P=a("p"),P.textContent=ft,pl=i(),M(j.$$.fragment),rl=i(),q=a("p"),q.innerHTML=ut,Ml=i(),M(K.$$.fragment),ml=i(),O=a("p"),O.innerHTML=dt,cl=i(),M(ee.$$.fragment),ol=i(),le=a("p"),le.innerHTML=yt,fl=i(),M(te.$$.fragment),ul=i(),g=a("div"),g.innerHTML=bt,dl=i(),se=a("p"),se.textContent=ht,yl=i(),M(ie.$$.fragment),bl=i(),ne=a("p"),ne.innerHTML=Jt,hl=i(),ae=a("p"),ae.innerHTML=wt,Jl=i(),M(pe.$$.fragment),wl=i(),re=a("p"),re.textContent=Tt,Tl=i(),M(Me.$$.fragment),Ul=i(),me=a("p"),me.innerHTML=Ut,Zl=i(),M(ce.$$.fragment),jl=i(),oe=a("p"),oe.innerHTML=Zt,gl=i(),M(fe.$$.fragment),Gl=i(),ue=a("p"),ue.innerHTML=jt,$l=i(),M(de.$$.fragment),vl=i(),G=a("div"),G.innerHTML=gt,Wl=i(),ye=a("p"),ye.textContent=Gt,_l=i(),M(be.$$.fragment),Il=i(),he=a("p"),he.innerHTML=$t,Cl=i(),M(Je.$$.fragment),kl=i(),we=a("p"),we.innerHTML=vt,Bl=i(),Te=a("p"),Te.innerHTML=Wt,Vl=i(),M(Ue.$$.fragment),Hl=i(),Ze=a("p"),Ze.innerHTML=_t,xl=i(),M(je.$$.fragment),Xl=i(),$=a("div"),$.innerHTML=It,Rl=i(),M(ge.$$.fragment),Nl=i(),Ge=a("p"),Ge.innerHTML=Ct,Ll=i(),$e=a("ul"),$e.innerHTML=kt,zl=i(),ve=a("p"),ve.textContent=Bt,Sl=i(),M(We.$$.fragment),Ql=i(),_e=a("p"),_e.textContent=Vt,El=i(),M(Ie.$$.fragment),Fl=i(),v=a("div"),v.innerHTML=Ht,Dl=i(),Ce=a("p"),Ce.innerHTML=xt,Yl=i(),M(ke.$$.fragment),Al=i(),W=a("div"),W.innerHTML=Xt,Pl=i(),M(Be.$$.fragment),ql=i(),Ve=a("p"),Ve.innerHTML=Rt,Kl=i(),He=a("ul"),He.innerHTML=Nt,Ol=i(),Xe=a("p"),this.h()},l(e){const l=Pt("svelte-u9bgzb",document.head);d=p(l,"META",{name:!0,content:!0}),l.forEach(t),h=n(e),b=p(e,"P",{}),St(b).forEach(t),w=n(e),m(I.$$.fragment,e),Re=n(e),m(C.$$.fragment,e),Ne=n(e),k=p(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-18ayv9y"&&(k.innerHTML=lt),Le=n(e),B=p(e,"P",{"data-svelte-h":!0}),r(B)!=="svelte-oyyvon"&&(B.innerHTML=tt),ze=n(e),V=p(e,"P",{"data-svelte-h":!0}),r(V)!=="svelte-1enrctx"&&(V.innerHTML=st),Se=n(e),H=p(e,"P",{"data-svelte-h":!0}),r(H)!=="svelte-1xi264m"&&(H.innerHTML=it),Qe=n(e),m(x.$$.fragment,e),Ee=n(e),X=p(e,"P",{"data-svelte-h":!0}),r(X)!=="svelte-ssflff"&&(X.textContent=nt),Fe=n(e),m(R.$$.fragment,e),De=n(e),m(N.$$.fragment,e),Ye=n(e),m(T.$$.fragment,e),Ae=n(e),L=p(e,"P",{"data-svelte-h":!0}),r(L)!=="svelte-1rfznlg"&&(L.textContent=at),Pe=n(e),m(z.$$.fragment,e),qe=n(e),S=p(e,"P",{"data-svelte-h":!0}),r(S)!=="svelte-x9b02z"&&(S.innerHTML=pt),Ke=n(e),m(Q.$$.fragment,e),Oe=n(e),E=p(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-8nqpod"&&(E.textContent=rt),el=n(e),m(F.$$.fragment,e),ll=n(e),U=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(U)!=="svelte-1of5nwm"&&(U.innerHTML=Mt),tl=n(e),D=p(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-8kqs6b"&&(D.innerHTML=mt),sl=n(e),Y=p(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-1jr1trd"&&(Y.innerHTML=ct),il=n(e),m(A.$$.fragment,e),nl=n(e),Z=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(Z)!=="svelte-1why3l7"&&(Z.innerHTML=ot),al=n(e),P=p(e,"P",{"data-svelte-h":!0}),r(P)!=="svelte-1gv5jsc"&&(P.textContent=ft),pl=n(e),m(j.$$.fragment,e),rl=n(e),q=p(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-a5gi7u"&&(q.innerHTML=ut),Ml=n(e),m(K.$$.fragment,e),ml=n(e),O=p(e,"P",{"data-svelte-h":!0}),r(O)!=="svelte-gjxj1i"&&(O.innerHTML=dt),cl=n(e),m(ee.$$.fragment,e),ol=n(e),le=p(e,"P",{"data-svelte-h":!0}),r(le)!=="svelte-f76kxz"&&(le.innerHTML=yt),fl=n(e),m(te.$$.fragment,e),ul=n(e),g=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(g)!=="svelte-19w49w4"&&(g.innerHTML=bt),dl=n(e),se=p(e,"P",{"data-svelte-h":!0}),r(se)!=="svelte-gcc2pb"&&(se.textContent=ht),yl=n(e),m(ie.$$.fragment,e),bl=n(e),ne=p(e,"P",{"data-svelte-h":!0}),r(ne)!=="svelte-nqgs99"&&(ne.innerHTML=Jt),hl=n(e),ae=p(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-j2noup"&&(ae.innerHTML=wt),Jl=n(e),m(pe.$$.fragment,e),wl=n(e),re=p(e,"P",{"data-svelte-h":!0}),r(re)!=="svelte-wyajyh"&&(re.textContent=Tt),Tl=n(e),m(Me.$$.fragment,e),Ul=n(e),me=p(e,"P",{"data-svelte-h":!0}),r(me)!=="svelte-ubrl9r"&&(me.innerHTML=Ut),Zl=n(e),m(ce.$$.fragment,e),jl=n(e),oe=p(e,"P",{"data-svelte-h":!0}),r(oe)!=="svelte-i1t4xo"&&(oe.innerHTML=Zt),gl=n(e),m(fe.$$.fragment,e),Gl=n(e),ue=p(e,"P",{"data-svelte-h":!0}),r(ue)!=="svelte-u177c0"&&(ue.innerHTML=jt),$l=n(e),m(de.$$.fragment,e),vl=n(e),G=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(G)!=="svelte-vxa9bu"&&(G.innerHTML=gt),Wl=n(e),ye=p(e,"P",{"data-svelte-h":!0}),r(ye)!=="svelte-1nhne3o"&&(ye.textContent=Gt),_l=n(e),m(be.$$.fragment,e),Il=n(e),he=p(e,"P",{"data-svelte-h":!0}),r(he)!=="svelte-yzzx1p"&&(he.innerHTML=$t),Cl=n(e),m(Je.$$.fragment,e),kl=n(e),we=p(e,"P",{"data-svelte-h":!0}),r(we)!=="svelte-97fik6"&&(we.innerHTML=vt),Bl=n(e),Te=p(e,"P",{"data-svelte-h":!0}),r(Te)!=="svelte-1pk1tvb"&&(Te.innerHTML=Wt),Vl=n(e),m(Ue.$$.fragment,e),Hl=n(e),Ze=p(e,"P",{"data-svelte-h":!0}),r(Ze)!=="svelte-3m63vd"&&(Ze.innerHTML=_t),xl=n(e),m(je.$$.fragment,e),Xl=n(e),$=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r($)!=="svelte-610rhb"&&($.innerHTML=It),Rl=n(e),m(ge.$$.fragment,e),Nl=n(e),Ge=p(e,"P",{"data-svelte-h":!0}),r(Ge)!=="svelte-15owmr0"&&(Ge.innerHTML=Ct),Ll=n(e),$e=p(e,"UL",{"data-svelte-h":!0}),r($e)!=="svelte-1y16yq3"&&($e.innerHTML=kt),zl=n(e),ve=p(e,"P",{"data-svelte-h":!0}),r(ve)!=="svelte-17wtiaq"&&(ve.textContent=Bt),Sl=n(e),m(We.$$.fragment,e),Ql=n(e),_e=p(e,"P",{"data-svelte-h":!0}),r(_e)!=="svelte-8cwtf"&&(_e.textContent=Vt),El=n(e),m(Ie.$$.fragment,e),Fl=n(e),v=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(v)!=="svelte-n1o5lk"&&(v.innerHTML=Ht),Dl=n(e),Ce=p(e,"P",{"data-svelte-h":!0}),r(Ce)!=="svelte-1a7wb1e"&&(Ce.innerHTML=xt),Yl=n(e),m(ke.$$.fragment,e),Al=n(e),W=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(W)!=="svelte-1lkw2bx"&&(W.innerHTML=Xt),Pl=n(e),m(Be.$$.fragment,e),ql=n(e),Ve=p(e,"P",{"data-svelte-h":!0}),r(Ve)!=="svelte-10t9jtg"&&(Ve.innerHTML=Rt),Kl=n(e),He=p(e,"UL",{"data-svelte-h":!0}),r(He)!=="svelte-1xpkcqm"&&(He.innerHTML=Nt),Ol=n(e),Xe=p(e,"P",{}),St(Xe).forEach(t),this.h()},h(){J(d,"name","hf:doc:metadata"),J(d,"content",ts),J(U,"class","flex justify-center"),J(Z,"class","flex justify-center"),J(g,"class","flex justify-center"),J(G,"class","flex justify-center"),J($,"class","flex justify-center"),J(v,"class","flex justify-center"),J(W,"class","flex justify-center")},m(e,l){qt(document.head,d),s(e,h,l),s(e,b,l),s(e,w,l),c(I,e,l),s(e,Re,l),c(C,e,l),s(e,Ne,l),s(e,k,l),s(e,Le,l),s(e,B,l),s(e,ze,l),s(e,V,l),s(e,Se,l),s(e,H,l),s(e,Qe,l),c(x,e,l),s(e,Ee,l),s(e,X,l),s(e,Fe,l),c(R,e,l),s(e,De,l),c(N,e,l),s(e,Ye,l),c(T,e,l),s(e,Ae,l),s(e,L,l),s(e,Pe,l),c(z,e,l),s(e,qe,l),s(e,S,l),s(e,Ke,l),c(Q,e,l),s(e,Oe,l),s(e,E,l),s(e,el,l),c(F,e,l),s(e,ll,l),s(e,U,l),s(e,tl,l),s(e,D,l),s(e,sl,l),s(e,Y,l),s(e,il,l),c(A,e,l),s(e,nl,l),s(e,Z,l),s(e,al,l),s(e,P,l),s(e,pl,l),c(j,e,l),s(e,rl,l),s(e,q,l),s(e,Ml,l),c(K,e,l),s(e,ml,l),s(e,O,l),s(e,cl,l),c(ee,e,l),s(e,ol,l),s(e,le,l),s(e,fl,l),c(te,e,l),s(e,ul,l),s(e,g,l),s(e,dl,l),s(e,se,l),s(e,yl,l),c(ie,e,l),s(e,bl,l),s(e,ne,l),s(e,hl,l),s(e,ae,l),s(e,Jl,l),c(pe,e,l),s(e,wl,l),s(e,re,l),s(e,Tl,l),c(Me,e,l),s(e,Ul,l),s(e,me,l),s(e,Zl,l),c(ce,e,l),s(e,jl,l),s(e,oe,l),s(e,gl,l),c(fe,e,l),s(e,Gl,l),s(e,ue,l),s(e,$l,l),c(de,e,l),s(e,vl,l),s(e,G,l),s(e,Wl,l),s(e,ye,l),s(e,_l,l),c(be,e,l),s(e,Il,l),s(e,he,l),s(e,Cl,l),c(Je,e,l),s(e,kl,l),s(e,we,l),s(e,Bl,l),s(e,Te,l),s(e,Vl,l),c(Ue,e,l),s(e,Hl,l),s(e,Ze,l),s(e,xl,l),c(je,e,l),s(e,Xl,l),s(e,$,l),s(e,Rl,l),c(ge,e,l),s(e,Nl,l),s(e,Ge,l),s(e,Ll,l),s(e,$e,l),s(e,zl,l),s(e,ve,l),s(e,Sl,l),c(We,e,l),s(e,Ql,l),s(e,_e,l),s(e,El,l),c(Ie,e,l),s(e,Fl,l),s(e,v,l),s(e,Dl,l),s(e,Ce,l),s(e,Yl,l),c(ke,e,l),s(e,Al,l),s(e,W,l),s(e,Pl,l),c(Be,e,l),s(e,ql,l),s(e,Ve,l),s(e,Kl,l),s(e,He,l),s(e,Ol,l),s(e,Xe,l),et=!0},p(e,[l]){const Lt={};l&2&&(Lt.$$scope={dirty:l,ctx:e}),T.$set(Lt);const zt={};l&2&&(zt.$$scope={dirty:l,ctx:e}),j.$set(zt)},i(e){et||(o(I.$$.fragment,e),o(C.$$.fragment,e),o(x.$$.fragment,e),o(R.$$.fragment,e),o(N.$$.fragment,e),o(T.$$.fragment,e),o(z.$$.fragment,e),o(Q.$$.fragment,e),o(F.$$.fragment,e),o(A.$$.fragment,e),o(j.$$.fragment,e),o(K.$$.fragment,e),o(ee.$$.fragment,e),o(te.$$.fragment,e),o(ie.$$.fragment,e),o(pe.$$.fragment,e),o(Me.$$.fragment,e),o(ce.$$.fragment,e),o(fe.$$.fragment,e),o(de.$$.fragment,e),o(be.$$.fragment,e),o(Je.$$.fragment,e),o(Ue.$$.fragment,e),o(je.$$.fragment,e),o(ge.$$.fragment,e),o(We.$$.fragment,e),o(Ie.$$.fragment,e),o(ke.$$.fragment,e),o(Be.$$.fragment,e),et=!0)},o(e){f(I.$$.fragment,e),f(C.$$.fragment,e),f(x.$$.fragment,e),f(R.$$.fragment,e),f(N.$$.fragment,e),f(T.$$.fragment,e),f(z.$$.fragment,e),f(Q.$$.fragment,e),f(F.$$.fragment,e),f(A.$$.fragment,e),f(j.$$.fragment,e),f(K.$$.fragment,e),f(ee.$$.fragment,e),f(te.$$.fragment,e),f(ie.$$.fragment,e),f(pe.$$.fragment,e),f(Me.$$.fragment,e),f(ce.$$.fragment,e),f(fe.$$.fragment,e),f(de.$$.fragment,e),f(be.$$.fragment,e),f(Je.$$.fragment,e),f(Ue.$$.fragment,e),f(je.$$.fragment,e),f(ge.$$.fragment,e),f(We.$$.fragment,e),f(Ie.$$.fragment,e),f(ke.$$.fragment,e),f(Be.$$.fragment,e),et=!1},d(e){e&&(t(h),t(b),t(w),t(Re),t(Ne),t(k),t(Le),t(B),t(ze),t(V),t(Se),t(H),t(Qe),t(Ee),t(X),t(Fe),t(De),t(Ye),t(Ae),t(L),t(Pe),t(qe),t(S),t(Ke),t(Oe),t(E),t(el),t(ll),t(U),t(tl),t(D),t(sl),t(Y),t(il),t(nl),t(Z),t(al),t(P),t(pl),t(rl),t(q),t(Ml),t(ml),t(O),t(cl),t(ol),t(le),t(fl),t(ul),t(g),t(dl),t(se),t(yl),t(bl),t(ne),t(hl),t(ae),t(Jl),t(wl),t(re),t(Tl),t(Ul),t(me),t(Zl),t(jl),t(oe),t(gl),t(Gl),t(ue),t($l),t(vl),t(G),t(Wl),t(ye),t(_l),t(Il),t(he),t(Cl),t(kl),t(we),t(Bl),t(Te),t(Vl),t(Hl),t(Ze),t(xl),t(Xl),t($),t(Rl),t(Nl),t(Ge),t(Ll),t($e),t(zl),t(ve),t(Sl),t(Ql),t(_e),t(El),t(Fl),t(v),t(Dl),t(Ce),t(Yl),t(Al),t(W),t(Pl),t(ql),t(Ve),t(Kl),t(He),t(Ol),t(Xe)),t(d),u(I,e),u(C,e),u(x,e),u(R,e),u(N,e),u(T,e),u(z,e),u(Q,e),u(F,e),u(A,e),u(j,e),u(K,e),u(ee,e),u(te,e),u(ie,e),u(pe,e),u(Me,e),u(ce,e),u(fe,e),u(de,e),u(be,e),u(Je,e),u(Ue,e),u(je,e),u(ge,e),u(We,e),u(Ie,e),u(ke,e),u(Be,e)}}}const ts='{"title":"효과적이고 효율적인 Diffusion","local":"효과적이고-효율적인-diffusion","sections":[{"title":"속도","local":"속도","sections":[],"depth":2},{"title":"메모리","local":"메모리","sections":[],"depth":2},{"title":"품질","local":"품질","sections":[{"title":"더 나은 체크포인트","local":"더-나은-체크포인트","sections":[],"depth":3},{"title":"더 나은 파이프라인 구성 요소","local":"더-나은-파이프라인-구성-요소","sections":[],"depth":3},{"title":"더 나은 프롬프트 엔지니어링","local":"더-나은-프롬프트-엔지니어링","sections":[],"depth":3}],"depth":2},{"title":"다음 단계","local":"다음-단계","sections":[],"depth":2}],"depth":1}';function ss(xe){return Dt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ms extends Yt{constructor(d){super(),At(this,d,ss,ls,Ft,{})}}export{ms as component};

Xet Storage Details

Size:
39.4 kB
·
Xet hash:
3894f7d9cbe151f9180a826535096aaac94002869773b98e1e0d9ea7a3f365c0

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.