Buckets:

rtrm's picture
download
raw
42.8 kB
import{s as al,o as il,n as ms}from"../chunks/scheduler.6e0d5ff7.js";import{S as pl,i as fl,g as i,s as n,r as m,E as ol,h as p,f as s,c as a,j as nl,u,x as f,k as fs,y as ml,a as l,v as c,d as r,t as d,w as g}from"../chunks/index.d7c1b260.js";import{T as os}from"../chunks/Tip.c000e27b.js";import{C as M}from"../chunks/CodeBlock.09a08494.js";import{D as ul}from"../chunks/DocNotebookDropdown.b1b23d60.js";import{H as Se}from"../chunks/Heading.30a009b0.js";function cl(j){let o,b='훑어보기는 간결한 버전의 🧨 Diffusers 소개로서 <a href="https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb" rel="nofollow">노트북</a> 빠르게 시작할 수 있도록 도와드립니다. 디퓨저의 목표, 디자인 철학, 핵심 API에 대한 추가 세부 정보를 자세히 알아보려면 노트북을 확인하세요!';return{c(){o=i("p"),o.innerHTML=b},l(h){o=p(h,"P",{"data-svelte-h":!0}),f(o)!=="svelte-nicsxa"&&(o.innerHTML=b)},m(h,$){l(h,o,$)},p:ms,d(h){h&&s(o)}}}function rl(j){let o,b='<a href="https://huggingface.co/CompVis/stable-diffusion" rel="nofollow">Stable Diffusion</a> 모델의 경우, 모델을 실행하기 전에 <a href="https://huggingface.co/spaces/CompVis/stable-diffusion-license" rel="nofollow">라이선스</a>를 먼저 주의 깊게 읽어주세요. 🧨 Diffusers는 불쾌하거나 유해한 콘텐츠를 방지하기 위해 <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/safety_checker.py" rel="nofollow"><code>safety_checker</code></a>를 구현하고 있지만, 모델의 향상된 이미지 생성 기능으로 인해 여전히 잠재적으로 유해한 콘텐츠가 생성될 수 있습니다.';return{c(){o=i("p"),o.innerHTML=b},l(h){o=p(h,"P",{"data-svelte-h":!0}),f(o)!=="svelte-ctam5l"&&(o.innerHTML=b)},m(h,$){l(h,o,$)},p:ms,d(h){h&&s(o)}}}function dl(j){let o,b="🧨 Diffusers는 Diffusion 시스템을 구축하기 위한 툴박스입니다. <code>DiffusionPipeline</code>을 사용하면 미리 만들어진 Diffusion 시스템을 편리하게 시작할 수 있지만, 모델과 스케줄러 구성 요소를 개별적으로 선택하여 사용자 지정 Diffusion 시스템을 구축할 수도 있습니다.";return{c(){o=i("p"),o.innerHTML=b},l(h){o=p(h,"P",{"data-svelte-h":!0}),f(o)!=="svelte-13gse24"&&(o.innerHTML=b)},m(h,$){l(h,o,$)},p:ms,d(h){h&&s(o)}}}function gl(j){let o,b="💡 스케줄러가 구성에서 어떻게 인스턴스화되는지 주목하세요. 모델과 달리 스케줄러에는 학습 가능한 가중치가 없으며 매개변수도 없습니다!";return{c(){o=i("p"),o.textContent=b},l(h){o=p(h,"P",{"data-svelte-h":!0}),f(o)!=="svelte-1m82qjr"&&(o.textContent=b)},m(h,$){l(h,o,$)},p:ms,d(h){h&&s(o)}}}function hl(j){let o,b,h,$,v,De,J,Xe,k,us="Diffusion 모델은 이미지나 오디오와 같은 관심 샘플들을 생성하기 위해 랜덤 가우시안 노이즈를 단계별로 제거하도록 학습됩니다. 이로 인해 생성 AI에 대한 관심이 매우 높아졌으며, 인터넷에서 diffusion 생성 이미지의 예를 본 적이 있을 것입니다. 🧨 Diffusers는 누구나 diffusion 모델들을 널리 이용할 수 있도록 하기 위한 라이브러리입니다.",Ne,x,cs="개발자든 일반 사용자든 이 훑어보기를 통해 🧨 diffusers를 소개하고 빠르게 생성할 수 있도록 도와드립니다! 알아야 할 라이브러리의 주요 구성 요소는 크게 세 가지입니다:",Qe,Z,rs='<li><code>DiffusionPipeline</code>은 추론을 위해 사전 학습된 diffusion 모델에서 샘플을 빠르게 생성하도록 설계된 높은 수준의 엔드투엔드 클래스입니다.</li> <li>Diffusion 시스템 생성을 위한 빌딩 블록으로 사용할 수 있는 널리 사용되는 사전 학습된 <a href="./api/models">model</a> 아키텍처 및 모듈.</li> <li>다양한 <a href="./api/schedulers/overview">schedulers</a> - 학습을 위해 노이즈를 추가하는 방법과 추론 중에 노이즈 제거된 이미지를 생성하는 방법을 제어하는 알고리즘입니다.</li>',ze,G,ds="훑어보기에서는 추론을 위해 <code>DiffusionPipeline</code>을 사용하는 방법을 보여준 다음, 모델과 스케줄러를 결합하여 <code>DiffusionPipeline</code> 내부에서 일어나는 일을 복제하는 방법을 안내합니다.",Re,y,Ee,W,gs="시작하기 전에 필요한 라이브러리가 모두 설치되어 있는지 확인하세요:",Ye,q,Ae,I,hs='<li><a href="https://huggingface.co/docs/accelerate/index" rel="nofollow">🤗 Accelerate</a>는 추론 및 학습을 위한 모델 로딩 속도를 높여줍니다.</li> <li><a href="https://huggingface.co/docs/transformers/index" rel="nofollow">🤗 Transformers</a>는 <a href="https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/overview" rel="nofollow">Stable Diffusion</a>과 같이 가장 많이 사용되는 diffusion 모델을 실행하는 데 필요합니다.</li>',Fe,H,Ke,B,Ms='<code>DiffusionPipeline</code> 은 추론을 위해 사전 학습된 diffusion 시스템을 사용하는 가장 쉬운 방법입니다. 모델과 스케줄러를 포함하는 엔드 투 엔드 시스템입니다. 다양한 작업에 <code>DiffusionPipeline</code>을 바로 사용할 수 있습니다. 아래 표에서 지원되는 몇 가지 작업을 살펴보고, 지원되는 작업의 전체 목록은 <a href="./api/pipelines/overview#diffusers-summary">🧨 Diffusers Summary</a> 표에서 확인할 수 있습니다.',Oe,L,bs='<thead><tr><th><strong>Task</strong></th> <th><strong>Description</strong></th> <th><strong>Pipeline</strong></th></tr></thead> <tbody><tr><td>Unconditional Image Generation</td> <td>generate an image from Gaussian noise</td> <td><a href="./using-diffusers/unconditional_image_generation">unconditional_image_generation</a></td></tr> <tr><td>Text-Guided Image Generation</td> <td>generate an image given a text prompt</td> <td><a href="./using-diffusers/conditional_image_generation">conditional_image_generation</a></td></tr> <tr><td>Text-Guided Image-to-Image Translation</td> <td>adapt an image guided by a text prompt</td> <td><a href="./using-diffusers/img2img">img2img</a></td></tr> <tr><td>Text-Guided Image-Inpainting</td> <td>fill the masked part of an image given the image, the mask and a text prompt</td> <td><a href="./using-diffusers/inpaint">inpaint</a></td></tr> <tr><td>Text-Guided Depth-to-Image Translation</td> <td>adapt parts of an image guided by a text prompt while preserving structure via depth estimation</td> <td><a href="./using-diffusers/depth2img">depth2img</a></td></tr></tbody>',et,P,$s=`먼저 <code>DiffusionPipeline</code>의 인스턴스를 생성하고 다운로드할 파이프라인 체크포인트를 지정합니다.
허깅페이스 허브에 저장된 모든 <a href="https://huggingface.co/models?library=diffusers&amp;sort=downloads" rel="nofollow">checkpoint</a>에 대해 <code>DiffusionPipeline</code>을 사용할 수 있습니다.
이 훑어보기에서는 text-to-image 생성을 위한 <a href="https://huggingface.co/runwayml/stable-diffusion-v1-5" rel="nofollow"><code>stable-diffusion-v1-5</code></a> 체크포인트를 로드합니다.`,tt,w,st,S,js="<code>from_pretrained()</code> 방법으로 모델 로드하기:",lt,V,nt,D,ys="The <code>DiffusionPipeline</code>은 모든 모델링, 토큰화, 스케줄링 컴포넌트를 다운로드하고 캐시합니다. Stable Diffusion Pipeline은 무엇보다도 <code>UNet2DConditionModel</code>과 <code>PNDMScheduler</code>로 구성되어 있음을 알 수 있습니다:",at,X,it,N,ws=`이 모델은 약 14억 개의 파라미터로 구성되어 있으므로 GPU에서 파이프라인을 실행할 것을 강력히 권장합니다.
PyTorch에서와 마찬가지로 제너레이터 객체를 GPU로 이동할 수 있습니다:`,pt,Q,ft,z,Us='이제 <code>파이프라인</code>에 텍스트 프롬프트를 전달하여 이미지를 생성한 다음 노이즈가 제거된 이미지에 액세스할 수 있습니다. 기본적으로 이미지 출력은 <a href="https://pillow.readthedocs.io/en/stable/reference/Image.html?highlight=image#the-image-class" rel="nofollow"><code>PIL.Image</code></a> 객체로 감싸집니다.',ot,R,mt,U,_s='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/image_of_squirrel_painting.png"/>',ut,E,Ts="<code>save</code>를 호출하여 이미지를 저장합니다:",ct,Y,rt,A,dt,F,Cs="파이프라인을 로컬에서 사용할 수도 있습니다. 유일한 차이점은 가중치를 먼저 다운로드해야 한다는 점입니다:",gt,K,ht,O,vs="그런 다음 저장된 가중치를 파이프라인에 로드합니다:",Mt,ee,bt,te,Js="이제 위 섹션에서와 같이 파이프라인을 실행할 수 있습니다.",$t,se,jt,le,ks="스케줄러마다 노이즈 제거 속도와 품질이 서로 다릅니다. 자신에게 가장 적합한 스케줄러를 찾는 가장 좋은 방법은 직접 사용해 보는 것입니다! 🧨 Diffusers의 주요 기능 중 하나는 스케줄러 간에 쉽게 전환이 가능하다는 것입니다. 예를 들어, 기본 스케줄러인 <code>PNDMScheduler</code>를 <code>EulerDiscreteScheduler</code>로 바꾸려면, <code>from_config()</code> 메서드를 사용하여 로드하세요:",yt,ne,wt,ae,xs="새 스케줄러로 이미지를 생성해보고 어떤 차이가 있는지 확인해 보세요!",Ut,ie,Zs="다음 섹션에서는 모델과 스케줄러라는 <code>DiffusionPipeline</code>을 구성하는 컴포넌트를 자세히 살펴보고 이러한 컴포넌트를 사용하여 고양이 이미지를 생성하는 방법을 배워보겠습니다.",_t,pe,Tt,fe,Gs='대부분의 모델은 노이즈가 있는 샘플을 가져와 각 시간 간격마다 노이즈가 적은 이미지와 입력 이미지 사이의 차이인 <em>노이즈 잔차</em>(다른 모델은 이전 샘플을 직접 예측하거나 속도 또는 <a href="https://github.com/huggingface/diffusers/blob/5e5ce13e2f89ac45a0066cb3f369462a3cf1d9ef/src/diffusers/schedulers/scheduling_ddim.py#L110" rel="nofollow"><code>v-prediction</code></a>을 예측하는 학습을 합니다)을 예측합니다. 모델을 믹스 앤 매치하여 다른 diffusion 시스템을 만들 수 있습니다.',Ct,oe,Ws="모델은 <code>from_pretrained()</code> 메서드로 시작되며, 이 메서드는 모델 가중치를 로컬에 캐시하여 다음에 모델을 로드할 때 더 빠르게 로드할 수 있습니다. 훑어보기에서는 고양이 이미지에 대해 학습된 체크포인트가 있는 기본적인 unconditional 이미지 생성 모델인 <code>UNet2DModel</code>을 로드합니다:",vt,me,Jt,ue,qs="모델 매개변수에 액세스하려면 <code>model.config</code>를 호출합니다:",kt,ce,xt,re,Is="모델 구성은 🧊 고정된 🧊 딕셔너리로, 모델이 생성된 후에는 해당 매개 변수들을 변경할 수 없습니다. 이는 의도적인 것으로, 처음에 모델 아키텍처를 정의하는 데 사용된 매개변수는 동일하게 유지하면서 다른 매개변수는 추론 중에 조정할 수 있도록 하기 위한 것입니다.",Zt,de,Hs="가장 중요한 매개변수들은 다음과 같습니다:",Gt,ge,Bs="<li><code>sample_size</code>: 입력 샘플의 높이 및 너비 치수입니다.</li> <li><code>in_channels</code>: 입력 샘플의 입력 채널 수입니다.</li> <li><code>down_block_types</code> 및 <code>up_block_types</code>: UNet 아키텍처를 생성하는 데 사용되는 다운 및 업샘플링 블록의 유형.</li> <li><code>block_out_channels</code>: 다운샘플링 블록의 출력 채널 수. 업샘플링 블록의 입력 채널 수에 역순으로 사용되기도 합니다.</li> <li><code>layers_per_block</code>: 각 UNet 블록에 존재하는 ResNet 블록의 수입니다.</li>",Wt,he,Ls="추론에 모델을 사용하려면 랜덤 가우시안 노이즈로 이미지 모양을 만듭니다. 모델이 여러 개의 무작위 노이즈를 수신할 수 있으므로 ‘batch’ 축, 입력 채널 수에 해당하는 ‘channel’ 축, 이미지의 높이와 너비를 나타내는 ‘sample_size’ 축이 있어야 합니다:",qt,Me,It,be,Ps="추론을 위해 모델에 노이즈가 있는 이미지와 <code>timestep</code>을 전달합니다. ‘timestep’은 입력 이미지의 노이즈 정도를 나타내며, 시작 부분에 더 많은 노이즈가 있고 끝 부분에 더 적은 노이즈가 있습니다. 이를 통해 모델이 diffusion 과정에서 시작 또는 끝에 더 가까운 위치를 결정할 수 있습니다. <code>sample</code> 메서드를 사용하여 모델 출력을 얻습니다:",Ht,$e,Bt,je,Ss="하지만 실제 예를 생성하려면 노이즈 제거 프로세스를 안내할 스케줄러가 필요합니다. 다음 섹션에서는 모델을 스케줄러와 결합하는 방법에 대해 알아봅니다.",Lt,ye,Pt,we,Vs="스케줄러는 모델 출력이 주어졌을 때 노이즈가 많은 샘플에서 노이즈가 적은 샘플로 전환하는 것을 관리합니다 - 이 경우 ‘noisy_residual’.",St,_,Vt,Ue,Ds="훑어보기의 경우, <code>from_config()</code> 메서드를 사용하여 <code>DDPMScheduler</code>를 인스턴스화합니다:",Dt,_e,Xt,T,Nt,Te,Xs="가장 중요한 매개변수는 다음과 같습니다:",Qt,Ce,Ns="<li><code>num_train_timesteps</code>: 노이즈 제거 프로세스의 길이, 즉 랜덤 가우스 노이즈를 데이터 샘플로 처리하는 데 필요한 타임스텝 수입니다.</li> <li><code>beta_schedule</code>: 추론 및 학습에 사용할 노이즈 스케줄 유형입니다.</li> <li><code>beta_start</code> 및 <code>beta_end</code>: 노이즈 스케줄의 시작 및 종료 노이즈 값입니다.</li>",zt,ve,Qs="노이즈가 약간 적은 이미지를 예측하려면 스케줄러의 <code>step()</code> 메서드에 모델 출력, <code>timestep</code>, 현재 <code>sample</code>을 전달하세요.",Rt,Je,Et,ke,zs="<code>less_noisy_sample</code>을 다음 <code>timestep</code>으로 넘기면 노이즈가 더 줄어듭니다! 이제 이 모든 것을 한데 모아 전체 노이즈 제거 과정을 시각화해 보겠습니다.",Yt,xe,Rs="먼저 노이즈 제거된 이미지를 후처리하여 <code>PIL.Image</code>로 표시하는 함수를 만듭니다:",At,Ze,Ft,Ge,Es="노이즈 제거 프로세스의 속도를 높이려면 입력과 모델을 GPU로 옮기세요:",Kt,We,Ot,qe,Ys="이제 노이즈가 적은 샘플의 잔차를 예측하고 스케줄러로 노이즈가 적은 샘플을 계산하는 노이즈 제거 루프를 생성합니다:",es,Ie,ts,He,As="가만히 앉아서 고양이가 소음으로만 생성되는 것을 지켜보세요!😻",ss,C,Fs='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/diffusion-quicktour.png"/>',ls,Be,ns,Le,Ks="이번 훑어보기에서 🧨 Diffusers로 멋진 이미지를 만들어 보셨기를 바랍니다! 다음 단계로 넘어가세요:",as,Pe,Os='<li><a href="./tutorials/basic_training">training</a> 튜토리얼에서 모델을 학습하거나 파인튜닝하여 나만의 이미지를 생성할 수 있습니다.</li> <li>다양한 사용 사례는 공식 및 커뮤니티 <a href="https://github.com/huggingface/diffusers/tree/main/examples#-diffusers-examples" rel="nofollow">학습 또는 파인튜닝 스크립트</a> 예시를 참조하세요.</li> <li>스케줄러 로드, 액세스, 변경 및 비교에 대한 자세한 내용은 <a href="./using-diffusers/schedulers">다른 스케줄러 사용</a> 가이드에서 확인하세요.</li> <li><a href="./stable_diffusion">Stable Diffusion</a> 가이드에서 프롬프트 엔지니어링, 속도 및 메모리 최적화, 고품질 이미지 생성을 위한 팁과 요령을 살펴보세요.</li> <li><a href="./optimization/fp16">GPU에서 파이토치 최적화</a> 가이드와 <a href="./optimization/mps">애플 실리콘(M1/M2)에서의 Stable Diffusion</a> 및 <a href="./optimization/onnx">ONNX 런타임</a> 실행에 대한 추론 가이드를 통해 🧨 Diffuser 속도를 높이는 방법을 더 자세히 알아보세요.</li>',is,Ve,ps;return v=new ul({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/quicktour.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/quicktour.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/quicktour.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/quicktour.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/quicktour.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/quicktour.ipynb"}]}}),J=new Se({props:{title:"훑어보기",local:"훑어보기",headingTag:"h1"}}),y=new os({props:{$$slots:{default:[cl]},$$scope:{ctx:j}}}),q=new M({props:{code:"JTIzJTIwJUVDJUEzJUJDJUVDJTg0JTlEJTIwJUVEJTkyJTgwJUVDJTk2JUI0JUVDJTg0JTlDJTIwQ29sYWIlRUMlOTclOTAlMjAlRUQlOTUlODQlRUMlOUElOTQlRUQlOTUlOUMlMjAlRUIlOUQlQkMlRUMlOUQlQjQlRUIlQjglOEMlRUIlOUYlQUMlRUIlQTYlQUMlMjAlRUMlODQlQTQlRUMlQjklOTglRUQlOTUlOTglRUElQjglQjAuJTBBJTIzIXBpcCUyMGluc3RhbGwlMjAtLXVwZ3JhZGUlMjBkaWZmdXNlcnMlMjBhY2NlbGVyYXRlJTIwdHJhbnNmb3JtZXJz",highlighted:`<span class="hljs-comment"># 주석 풀어서 Colab에 필요한 라이브러리 설치하기.</span>
<span class="hljs-comment">#!pip install --upgrade diffusers accelerate transformers</span>`,wrap:!1}}),H=new Se({props:{title:"DiffusionPipeline",local:"diffusionpipeline",headingTag:"h2"}}),w=new os({props:{warning:!0,$$slots:{default:[rl]},$$scope:{ctx:j}}}),V=new M({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIycnVud2F5bWwlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline
<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;runwayml/stable-diffusion-v1-5&quot;</span>)`,wrap:!1}}),X=new M({props:{code:"cGlwZWxpbmU=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline
StableDiffusionPipeline {
<span class="hljs-string">&quot;_class_name&quot;</span>: <span class="hljs-string">&quot;StableDiffusionPipeline&quot;</span>,
<span class="hljs-string">&quot;_diffusers_version&quot;</span>: <span class="hljs-string">&quot;0.13.1&quot;</span>,
...,
<span class="hljs-string">&quot;scheduler&quot;</span>: [
<span class="hljs-string">&quot;diffusers&quot;</span>,
<span class="hljs-string">&quot;PNDMScheduler&quot;</span>
],
...,
<span class="hljs-string">&quot;unet&quot;</span>: [
<span class="hljs-string">&quot;diffusers&quot;</span>,
<span class="hljs-string">&quot;UNet2DConditionModel&quot;</span>
],
<span class="hljs-string">&quot;vae&quot;</span>: [
<span class="hljs-string">&quot;diffusers&quot;</span>,
<span class="hljs-string">&quot;AutoencoderKL&quot;</span>
]
}`,wrap:!1}}),Q=new M({props:{code:"cGlwZWxpbmUudG8oJTIyY3VkYSUyMik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)',wrap:!1}}),R=new M({props:{code:"aW1hZ2UlMjAlM0QlMjBwaXBlbGluZSglMjJBbiUyMGltYWdlJTIwb2YlMjBhJTIwc3F1aXJyZWwlMjBpbiUyMFBpY2Fzc28lMjBzdHlsZSUyMikuaW1hZ2VzJTVCMCU1RCUwQWltYWdl",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>image = pipeline(<span class="hljs-string">&quot;An image of a squirrel in Picasso style&quot;</span>).images[<span class="hljs-number">0</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>image`,wrap:!1}}),Y=new M({props:{code:"aW1hZ2Uuc2F2ZSglMjJpbWFnZV9vZl9zcXVpcnJlbF9wYWludGluZy5wbmclMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>image.save(<span class="hljs-string">&quot;image_of_squirrel_painting.png&quot;</span>)',wrap:!1}}),A=new Se({props:{title:"로컬 파이프라인",local:"로컬-파이프라인",headingTag:"h3"}}),K=new M({props:{code:"IWdpdCUyMGxmcyUyMGluc3RhbGwlMEEhZ2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGcnVud2F5bWwlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTU=",highlighted:`!git lfs install
!git <span class="hljs-built_in">clone</span> https://huggingface.co/runwayml/stable-diffusion-v1-5`,wrap:!1}}),ee=new M({props:{code:"cGlwZWxpbmUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyLiUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;./stable-diffusion-v1-5&quot;</span>)',wrap:!1}}),se=new Se({props:{title:"스케줄러 교체",local:"스케줄러-교체",headingTag:"h3"}}),ne=new M({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEV1bGVyRGlzY3JldGVTY2hlZHVsZXIlMEElMEFwaXBlbGluZSUyMCUzRCUyMERpZmZ1c2lvblBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiklMEFwaXBlbGluZS5zY2hlZHVsZXIlMjAlM0QlMjBFdWxlckRpc2NyZXRlU2NoZWR1bGVyLmZyb21fY29uZmlnKHBpcGVsaW5lLnNjaGVkdWxlci5jb25maWcp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> EulerDiscreteScheduler
<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline = DiffusionPipeline.from_pretrained(<span class="hljs-string">&quot;runwayml/stable-diffusion-v1-5&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)`,wrap:!1}}),pe=new Se({props:{title:"모델",local:"모델",headingTag:"h2"}}),me=new M({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFVOZXQyRE1vZGVsJTBBJTBBcmVwb19pZCUyMCUzRCUyMCUyMmdvb2dsZSUyRmRkcG0tY2F0LTI1NiUyMiUwQW1vZGVsJTIwJTNEJTIwVU5ldDJETW9kZWwuZnJvbV9wcmV0cmFpbmVkKHJlcG9faWQp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> UNet2DModel
<span class="hljs-meta">&gt;&gt;&gt; </span>repo_id = <span class="hljs-string">&quot;google/ddpm-cat-256&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>model = UNet2DModel.from_pretrained(repo_id)`,wrap:!1}}),ce=new M({props:{code:"bW9kZWwuY29uZmln",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>model.config',wrap:!1}}),Me=new M({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEF0b3JjaC5tYW51YWxfc2VlZCgwKSUwQSUwQW5vaXN5X3NhbXBsZSUyMCUzRCUyMHRvcmNoLnJhbmRuKDElMkMlMjBtb2RlbC5jb25maWcuaW5fY2hhbm5lbHMlMkMlMjBtb2RlbC5jb25maWcuc2FtcGxlX3NpemUlMkMlMjBtb2RlbC5jb25maWcuc2FtcGxlX3NpemUpJTBBbm9pc3lfc2FtcGxlLnNoYXBl",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch
<span class="hljs-meta">&gt;&gt;&gt; </span>torch.manual_seed(<span class="hljs-number">0</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>noisy_sample = torch.randn(<span class="hljs-number">1</span>, model.config.in_channels, model.config.sample_size, model.config.sample_size)
<span class="hljs-meta">&gt;&gt;&gt; </span>noisy_sample.shape
torch.Size([<span class="hljs-number">1</span>, <span class="hljs-number">3</span>, <span class="hljs-number">256</span>, <span class="hljs-number">256</span>])`,wrap:!1}}),$e=new M({props:{code:"d2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMG5vaXN5X3Jlc2lkdWFsJTIwJTNEJTIwbW9kZWwoc2FtcGxlJTNEbm9pc3lfc2FtcGxlJTJDJTIwdGltZXN0ZXAlM0QyKS5zYW1wbGU=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span> noisy_residual = model(sample=noisy_sample, timestep=<span class="hljs-number">2</span>).sample`,wrap:!1}}),ye=new Se({props:{title:"스케줄러",local:"스케줄러",headingTag:"h2"}}),_=new os({props:{$$slots:{default:[dl]},$$scope:{ctx:j}}}),_e=new M({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEREUE1TY2hlZHVsZXIlMEElMEFzY2hlZHVsZXIlMjAlM0QlMjBERFBNU2NoZWR1bGVyLmZyb21fY29uZmlnKHJlcG9faWQpJTBBc2NoZWR1bGVy",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DDPMScheduler
<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler = DDPMScheduler.from_config(repo_id)
<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler
DDPMScheduler {
<span class="hljs-string">&quot;_class_name&quot;</span>: <span class="hljs-string">&quot;DDPMScheduler&quot;</span>,
<span class="hljs-string">&quot;_diffusers_version&quot;</span>: <span class="hljs-string">&quot;0.13.1&quot;</span>,
<span class="hljs-string">&quot;beta_end&quot;</span>: <span class="hljs-number">0.02</span>,
<span class="hljs-string">&quot;beta_schedule&quot;</span>: <span class="hljs-string">&quot;linear&quot;</span>,
<span class="hljs-string">&quot;beta_start&quot;</span>: <span class="hljs-number">0.0001</span>,
<span class="hljs-string">&quot;clip_sample&quot;</span>: true,
<span class="hljs-string">&quot;clip_sample_range&quot;</span>: <span class="hljs-number">1.0</span>,
<span class="hljs-string">&quot;num_train_timesteps&quot;</span>: <span class="hljs-number">1000</span>,
<span class="hljs-string">&quot;prediction_type&quot;</span>: <span class="hljs-string">&quot;epsilon&quot;</span>,
<span class="hljs-string">&quot;trained_betas&quot;</span>: null,
<span class="hljs-string">&quot;variance_type&quot;</span>: <span class="hljs-string">&quot;fixed_small&quot;</span>
}`,wrap:!1}}),T=new os({props:{$$slots:{default:[gl]},$$scope:{ctx:j}}}),Je=new M({props:{code:"bGVzc19ub2lzeV9zYW1wbGUlMjAlM0QlMjBzY2hlZHVsZXIuc3RlcChtb2RlbF9vdXRwdXQlM0Rub2lzeV9yZXNpZHVhbCUyQyUyMHRpbWVzdGVwJTNEMiUyQyUyMHNhbXBsZSUzRG5vaXN5X3NhbXBsZSkucHJldl9zYW1wbGUlMEFsZXNzX25vaXN5X3NhbXBsZS5zaGFwZQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>less_noisy_sample = scheduler.step(model_output=noisy_residual, timestep=<span class="hljs-number">2</span>, sample=noisy_sample).prev_sample
<span class="hljs-meta">&gt;&gt;&gt; </span>less_noisy_sample.shape`,wrap:!1}}),Ze=new M({props:{code:"aW1wb3J0JTIwUElMLkltYWdlJTBBaW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwZGlzcGxheV9zYW1wbGUoc2FtcGxlJTJDJTIwaSklM0ElMEElMjAlMjAlMjAlMjBpbWFnZV9wcm9jZXNzZWQlMjAlM0QlMjBzYW1wbGUuY3B1KCkucGVybXV0ZSgwJTJDJTIwMiUyQyUyMDMlMkMlMjAxKSUwQSUyMCUyMCUyMCUyMGltYWdlX3Byb2Nlc3NlZCUyMCUzRCUyMChpbWFnZV9wcm9jZXNzZWQlMjAlMkIlMjAxLjApJTIwKiUyMDEyNy41JTBBJTIwJTIwJTIwJTIwaW1hZ2VfcHJvY2Vzc2VkJTIwJTNEJTIwaW1hZ2VfcHJvY2Vzc2VkLm51bXB5KCkuYXN0eXBlKG5wLnVpbnQ4KSUwQSUwQSUyMCUyMCUyMCUyMGltYWdlX3BpbCUyMCUzRCUyMFBJTC5JbWFnZS5mcm9tYXJyYXkoaW1hZ2VfcHJvY2Vzc2VkJTVCMCU1RCklMEElMjAlMjAlMjAlMjBkaXNwbGF5KGYlMjJJbWFnZSUyMGF0JTIwc3RlcCUyMCU3QmklN0QlMjIpJTBBJTIwJTIwJTIwJTIwZGlzcGxheShpbWFnZV9waWwp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> PIL.Image
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">display_sample</span>(<span class="hljs-params">sample, i</span>):
<span class="hljs-meta">... </span> image_processed = sample.cpu().permute(<span class="hljs-number">0</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">1</span>)
<span class="hljs-meta">... </span> image_processed = (image_processed + <span class="hljs-number">1.0</span>) * <span class="hljs-number">127.5</span>
<span class="hljs-meta">... </span> image_processed = image_processed.numpy().astype(np.uint8)
<span class="hljs-meta">... </span> image_pil = PIL.Image.fromarray(image_processed[<span class="hljs-number">0</span>])
<span class="hljs-meta">... </span> display(<span class="hljs-string">f&quot;Image at step <span class="hljs-subst">{i}</span>&quot;</span>)
<span class="hljs-meta">... </span> display(image_pil)`,wrap:!1}}),We=new M({props:{code:"bW9kZWwudG8oJTIyY3VkYSUyMiklMEFub2lzeV9zYW1wbGUlMjAlM0QlMjBub2lzeV9zYW1wbGUudG8oJTIyY3VkYSUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>model.to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>noisy_sample = noisy_sample.to(<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),Ie=new M({props:{code:"aW1wb3J0JTIwdHFkbSUwQSUwQXNhbXBsZSUyMCUzRCUyMG5vaXN5X3NhbXBsZSUwQSUwQWZvciUyMGklMkMlMjB0JTIwaW4lMjBlbnVtZXJhdGUodHFkbS50cWRtKHNjaGVkdWxlci50aW1lc3RlcHMpKSUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyMDEuJTIwcHJlZGljdCUyMG5vaXNlJTIwcmVzaWR1YWwlMEElMjAlMjAlMjAlMjB3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVzaWR1YWwlMjAlM0QlMjBtb2RlbChzYW1wbGUlMkMlMjB0KS5zYW1wbGUlMEElMEElMjAlMjAlMjAlMjAlMjMlMjAyLiUyMGNvbXB1dGUlMjBsZXNzJTIwbm9pc3klMjBpbWFnZSUyMGFuZCUyMHNldCUyMHhfdCUyMC0lM0UlMjB4X3QtMSUwQSUyMCUyMCUyMCUyMHNhbXBsZSUyMCUzRCUyMHNjaGVkdWxlci5zdGVwKHJlc2lkdWFsJTJDJTIwdCUyQyUyMHNhbXBsZSkucHJldl9zYW1wbGUlMEElMEElMjAlMjAlMjAlMjAlMjMlMjAzLiUyMG9wdGlvbmFsbHklMjBsb29rJTIwYXQlMjBpbWFnZSUwQSUyMCUyMCUyMCUyMGlmJTIwKGklMjAlMkIlMjAxKSUyMCUyNSUyMDUwJTIwJTNEJTNEJTIwMCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGRpc3BsYXlfc2FtcGxlKHNhbXBsZSUyQyUyMGklMjAlMkIlMjAxKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> tqdm
<span class="hljs-meta">&gt;&gt;&gt; </span>sample = noisy_sample
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> i, t <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(tqdm.tqdm(scheduler.timesteps)):
<span class="hljs-meta">... </span> <span class="hljs-comment"># 1. predict noise residual</span>
<span class="hljs-meta">... </span> <span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span> residual = model(sample, t).sample
<span class="hljs-meta">... </span> <span class="hljs-comment"># 2. compute less noisy image and set x_t -&gt; x_t-1</span>
<span class="hljs-meta">... </span> sample = scheduler.step(residual, t, sample).prev_sample
<span class="hljs-meta">... </span> <span class="hljs-comment"># 3. optionally look at image</span>
<span class="hljs-meta">... </span> <span class="hljs-keyword">if</span> (i + <span class="hljs-number">1</span>) % <span class="hljs-number">50</span> == <span class="hljs-number">0</span>:
<span class="hljs-meta">... </span> display_sample(sample, i + <span class="hljs-number">1</span>)`,wrap:!1}}),Be=new Se({props:{title:"다음 단계",local:"다음-단계",headingTag:"h2"}}),{c(){o=i("meta"),b=n(),h=i("p"),$=n(),m(v.$$.fragment),De=n(),m(J.$$.fragment),Xe=n(),k=i("p"),k.textContent=us,Ne=n(),x=i("p"),x.textContent=cs,Qe=n(),Z=i("ul"),Z.innerHTML=rs,ze=n(),G=i("p"),G.innerHTML=ds,Re=n(),m(y.$$.fragment),Ee=n(),W=i("p"),W.textContent=gs,Ye=n(),m(q.$$.fragment),Ae=n(),I=i("ul"),I.innerHTML=hs,Fe=n(),m(H.$$.fragment),Ke=n(),B=i("p"),B.innerHTML=Ms,Oe=n(),L=i("table"),L.innerHTML=bs,et=n(),P=i("p"),P.innerHTML=$s,tt=n(),m(w.$$.fragment),st=n(),S=i("p"),S.innerHTML=js,lt=n(),m(V.$$.fragment),nt=n(),D=i("p"),D.innerHTML=ys,at=n(),m(X.$$.fragment),it=n(),N=i("p"),N.textContent=ws,pt=n(),m(Q.$$.fragment),ft=n(),z=i("p"),z.innerHTML=Us,ot=n(),m(R.$$.fragment),mt=n(),U=i("div"),U.innerHTML=_s,ut=n(),E=i("p"),E.innerHTML=Ts,ct=n(),m(Y.$$.fragment),rt=n(),m(A.$$.fragment),dt=n(),F=i("p"),F.textContent=Cs,gt=n(),m(K.$$.fragment),ht=n(),O=i("p"),O.textContent=vs,Mt=n(),m(ee.$$.fragment),bt=n(),te=i("p"),te.textContent=Js,$t=n(),m(se.$$.fragment),jt=n(),le=i("p"),le.innerHTML=ks,yt=n(),m(ne.$$.fragment),wt=n(),ae=i("p"),ae.textContent=xs,Ut=n(),ie=i("p"),ie.innerHTML=Zs,_t=n(),m(pe.$$.fragment),Tt=n(),fe=i("p"),fe.innerHTML=Gs,Ct=n(),oe=i("p"),oe.innerHTML=Ws,vt=n(),m(me.$$.fragment),Jt=n(),ue=i("p"),ue.innerHTML=qs,kt=n(),m(ce.$$.fragment),xt=n(),re=i("p"),re.textContent=Is,Zt=n(),de=i("p"),de.textContent=Hs,Gt=n(),ge=i("ul"),ge.innerHTML=Bs,Wt=n(),he=i("p"),he.textContent=Ls,qt=n(),m(Me.$$.fragment),It=n(),be=i("p"),be.innerHTML=Ps,Ht=n(),m($e.$$.fragment),Bt=n(),je=i("p"),je.textContent=Ss,Lt=n(),m(ye.$$.fragment),Pt=n(),we=i("p"),we.textContent=Vs,St=n(),m(_.$$.fragment),Vt=n(),Ue=i("p"),Ue.innerHTML=Ds,Dt=n(),m(_e.$$.fragment),Xt=n(),m(T.$$.fragment),Nt=n(),Te=i("p"),Te.textContent=Xs,Qt=n(),Ce=i("ul"),Ce.innerHTML=Ns,zt=n(),ve=i("p"),ve.innerHTML=Qs,Rt=n(),m(Je.$$.fragment),Et=n(),ke=i("p"),ke.innerHTML=zs,Yt=n(),xe=i("p"),xe.innerHTML=Rs,At=n(),m(Ze.$$.fragment),Ft=n(),Ge=i("p"),Ge.textContent=Es,Kt=n(),m(We.$$.fragment),Ot=n(),qe=i("p"),qe.textContent=Ys,es=n(),m(Ie.$$.fragment),ts=n(),He=i("p"),He.textContent=As,ss=n(),C=i("div"),C.innerHTML=Fs,ls=n(),m(Be.$$.fragment),ns=n(),Le=i("p"),Le.textContent=Ks,as=n(),Pe=i("ul"),Pe.innerHTML=Os,is=n(),Ve=i("p"),this.h()},l(e){const t=ol("svelte-u9bgzb",document.head);o=p(t,"META",{name:!0,content:!0}),t.forEach(s),b=a(e),h=p(e,"P",{}),nl(h).forEach(s),$=a(e),u(v.$$.fragment,e),De=a(e),u(J.$$.fragment,e),Xe=a(e),k=p(e,"P",{"data-svelte-h":!0}),f(k)!=="svelte-12ydspm"&&(k.textContent=us),Ne=a(e),x=p(e,"P",{"data-svelte-h":!0}),f(x)!=="svelte-zp1olp"&&(x.textContent=cs),Qe=a(e),Z=p(e,"UL",{"data-svelte-h":!0}),f(Z)!=="svelte-1hg1a9y"&&(Z.innerHTML=rs),ze=a(e),G=p(e,"P",{"data-svelte-h":!0}),f(G)!=="svelte-kc7anl"&&(G.innerHTML=ds),Re=a(e),u(y.$$.fragment,e),Ee=a(e),W=p(e,"P",{"data-svelte-h":!0}),f(W)!=="svelte-1k0z9pm"&&(W.textContent=gs),Ye=a(e),u(q.$$.fragment,e),Ae=a(e),I=p(e,"UL",{"data-svelte-h":!0}),f(I)!=="svelte-8l98oh"&&(I.innerHTML=hs),Fe=a(e),u(H.$$.fragment,e),Ke=a(e),B=p(e,"P",{"data-svelte-h":!0}),f(B)!=="svelte-1szdpxj"&&(B.innerHTML=Ms),Oe=a(e),L=p(e,"TABLE",{"data-svelte-h":!0}),f(L)!=="svelte-1jwscsx"&&(L.innerHTML=bs),et=a(e),P=p(e,"P",{"data-svelte-h":!0}),f(P)!=="svelte-c2cjve"&&(P.innerHTML=$s),tt=a(e),u(w.$$.fragment,e),st=a(e),S=p(e,"P",{"data-svelte-h":!0}),f(S)!=="svelte-28n0vb"&&(S.innerHTML=js),lt=a(e),u(V.$$.fragment,e),nt=a(e),D=p(e,"P",{"data-svelte-h":!0}),f(D)!=="svelte-1puhto3"&&(D.innerHTML=ys),at=a(e),u(X.$$.fragment,e),it=a(e),N=p(e,"P",{"data-svelte-h":!0}),f(N)!=="svelte-167uutc"&&(N.textContent=ws),pt=a(e),u(Q.$$.fragment,e),ft=a(e),z=p(e,"P",{"data-svelte-h":!0}),f(z)!=="svelte-16e2uh9"&&(z.innerHTML=Us),ot=a(e),u(R.$$.fragment,e),mt=a(e),U=p(e,"DIV",{class:!0,"data-svelte-h":!0}),f(U)!=="svelte-6cjtp1"&&(U.innerHTML=_s),ut=a(e),E=p(e,"P",{"data-svelte-h":!0}),f(E)!=="svelte-igu1m"&&(E.innerHTML=Ts),ct=a(e),u(Y.$$.fragment,e),rt=a(e),u(A.$$.fragment,e),dt=a(e),F=p(e,"P",{"data-svelte-h":!0}),f(F)!=="svelte-7ma6tc"&&(F.textContent=Cs),gt=a(e),u(K.$$.fragment,e),ht=a(e),O=p(e,"P",{"data-svelte-h":!0}),f(O)!=="svelte-vb7nw9"&&(O.textContent=vs),Mt=a(e),u(ee.$$.fragment,e),bt=a(e),te=p(e,"P",{"data-svelte-h":!0}),f(te)!=="svelte-1hsys9q"&&(te.textContent=Js),$t=a(e),u(se.$$.fragment,e),jt=a(e),le=p(e,"P",{"data-svelte-h":!0}),f(le)!=="svelte-lrbk5l"&&(le.innerHTML=ks),yt=a(e),u(ne.$$.fragment,e),wt=a(e),ae=p(e,"P",{"data-svelte-h":!0}),f(ae)!=="svelte-6o48o0"&&(ae.textContent=xs),Ut=a(e),ie=p(e,"P",{"data-svelte-h":!0}),f(ie)!=="svelte-bvjymx"&&(ie.innerHTML=Zs),_t=a(e),u(pe.$$.fragment,e),Tt=a(e),fe=p(e,"P",{"data-svelte-h":!0}),f(fe)!=="svelte-6xp0qa"&&(fe.innerHTML=Gs),Ct=a(e),oe=p(e,"P",{"data-svelte-h":!0}),f(oe)!=="svelte-yb1tdz"&&(oe.innerHTML=Ws),vt=a(e),u(me.$$.fragment,e),Jt=a(e),ue=p(e,"P",{"data-svelte-h":!0}),f(ue)!=="svelte-wgpd7u"&&(ue.innerHTML=qs),kt=a(e),u(ce.$$.fragment,e),xt=a(e),re=p(e,"P",{"data-svelte-h":!0}),f(re)!=="svelte-1al6c1n"&&(re.textContent=Is),Zt=a(e),de=p(e,"P",{"data-svelte-h":!0}),f(de)!=="svelte-pvrthk"&&(de.textContent=Hs),Gt=a(e),ge=p(e,"UL",{"data-svelte-h":!0}),f(ge)!=="svelte-36fna6"&&(ge.innerHTML=Bs),Wt=a(e),he=p(e,"P",{"data-svelte-h":!0}),f(he)!=="svelte-qeu9h5"&&(he.textContent=Ls),qt=a(e),u(Me.$$.fragment,e),It=a(e),be=p(e,"P",{"data-svelte-h":!0}),f(be)!=="svelte-d3vota"&&(be.innerHTML=Ps),Ht=a(e),u($e.$$.fragment,e),Bt=a(e),je=p(e,"P",{"data-svelte-h":!0}),f(je)!=="svelte-so2glq"&&(je.textContent=Ss),Lt=a(e),u(ye.$$.fragment,e),Pt=a(e),we=p(e,"P",{"data-svelte-h":!0}),f(we)!=="svelte-tx8cwd"&&(we.textContent=Vs),St=a(e),u(_.$$.fragment,e),Vt=a(e),Ue=p(e,"P",{"data-svelte-h":!0}),f(Ue)!=="svelte-1127l8u"&&(Ue.innerHTML=Ds),Dt=a(e),u(_e.$$.fragment,e),Xt=a(e),u(T.$$.fragment,e),Nt=a(e),Te=p(e,"P",{"data-svelte-h":!0}),f(Te)!=="svelte-14g28lg"&&(Te.textContent=Xs),Qt=a(e),Ce=p(e,"UL",{"data-svelte-h":!0}),f(Ce)!=="svelte-j8ll1k"&&(Ce.innerHTML=Ns),zt=a(e),ve=p(e,"P",{"data-svelte-h":!0}),f(ve)!=="svelte-1q2pjlh"&&(ve.innerHTML=Qs),Rt=a(e),u(Je.$$.fragment,e),Et=a(e),ke=p(e,"P",{"data-svelte-h":!0}),f(ke)!=="svelte-rs2mtc"&&(ke.innerHTML=zs),Yt=a(e),xe=p(e,"P",{"data-svelte-h":!0}),f(xe)!=="svelte-gihb52"&&(xe.innerHTML=Rs),At=a(e),u(Ze.$$.fragment,e),Ft=a(e),Ge=p(e,"P",{"data-svelte-h":!0}),f(Ge)!=="svelte-m7443v"&&(Ge.textContent=Es),Kt=a(e),u(We.$$.fragment,e),Ot=a(e),qe=p(e,"P",{"data-svelte-h":!0}),f(qe)!=="svelte-s236ae"&&(qe.textContent=Ys),es=a(e),u(Ie.$$.fragment,e),ts=a(e),He=p(e,"P",{"data-svelte-h":!0}),f(He)!=="svelte-1h1yyvi"&&(He.textContent=As),ss=a(e),C=p(e,"DIV",{class:!0,"data-svelte-h":!0}),f(C)!=="svelte-1yzsrw6"&&(C.innerHTML=Fs),ls=a(e),u(Be.$$.fragment,e),ns=a(e),Le=p(e,"P",{"data-svelte-h":!0}),f(Le)!=="svelte-u5qyb5"&&(Le.textContent=Ks),as=a(e),Pe=p(e,"UL",{"data-svelte-h":!0}),f(Pe)!=="svelte-1j7psol"&&(Pe.innerHTML=Os),is=a(e),Ve=p(e,"P",{}),nl(Ve).forEach(s),this.h()},h(){fs(o,"name","hf:doc:metadata"),fs(o,"content",Ml),fs(U,"class","flex justify-center"),fs(C,"class","flex justify-center")},m(e,t){ml(document.head,o),l(e,b,t),l(e,h,t),l(e,$,t),c(v,e,t),l(e,De,t),c(J,e,t),l(e,Xe,t),l(e,k,t),l(e,Ne,t),l(e,x,t),l(e,Qe,t),l(e,Z,t),l(e,ze,t),l(e,G,t),l(e,Re,t),c(y,e,t),l(e,Ee,t),l(e,W,t),l(e,Ye,t),c(q,e,t),l(e,Ae,t),l(e,I,t),l(e,Fe,t),c(H,e,t),l(e,Ke,t),l(e,B,t),l(e,Oe,t),l(e,L,t),l(e,et,t),l(e,P,t),l(e,tt,t),c(w,e,t),l(e,st,t),l(e,S,t),l(e,lt,t),c(V,e,t),l(e,nt,t),l(e,D,t),l(e,at,t),c(X,e,t),l(e,it,t),l(e,N,t),l(e,pt,t),c(Q,e,t),l(e,ft,t),l(e,z,t),l(e,ot,t),c(R,e,t),l(e,mt,t),l(e,U,t),l(e,ut,t),l(e,E,t),l(e,ct,t),c(Y,e,t),l(e,rt,t),c(A,e,t),l(e,dt,t),l(e,F,t),l(e,gt,t),c(K,e,t),l(e,ht,t),l(e,O,t),l(e,Mt,t),c(ee,e,t),l(e,bt,t),l(e,te,t),l(e,$t,t),c(se,e,t),l(e,jt,t),l(e,le,t),l(e,yt,t),c(ne,e,t),l(e,wt,t),l(e,ae,t),l(e,Ut,t),l(e,ie,t),l(e,_t,t),c(pe,e,t),l(e,Tt,t),l(e,fe,t),l(e,Ct,t),l(e,oe,t),l(e,vt,t),c(me,e,t),l(e,Jt,t),l(e,ue,t),l(e,kt,t),c(ce,e,t),l(e,xt,t),l(e,re,t),l(e,Zt,t),l(e,de,t),l(e,Gt,t),l(e,ge,t),l(e,Wt,t),l(e,he,t),l(e,qt,t),c(Me,e,t),l(e,It,t),l(e,be,t),l(e,Ht,t),c($e,e,t),l(e,Bt,t),l(e,je,t),l(e,Lt,t),c(ye,e,t),l(e,Pt,t),l(e,we,t),l(e,St,t),c(_,e,t),l(e,Vt,t),l(e,Ue,t),l(e,Dt,t),c(_e,e,t),l(e,Xt,t),c(T,e,t),l(e,Nt,t),l(e,Te,t),l(e,Qt,t),l(e,Ce,t),l(e,zt,t),l(e,ve,t),l(e,Rt,t),c(Je,e,t),l(e,Et,t),l(e,ke,t),l(e,Yt,t),l(e,xe,t),l(e,At,t),c(Ze,e,t),l(e,Ft,t),l(e,Ge,t),l(e,Kt,t),c(We,e,t),l(e,Ot,t),l(e,qe,t),l(e,es,t),c(Ie,e,t),l(e,ts,t),l(e,He,t),l(e,ss,t),l(e,C,t),l(e,ls,t),c(Be,e,t),l(e,ns,t),l(e,Le,t),l(e,as,t),l(e,Pe,t),l(e,is,t),l(e,Ve,t),ps=!0},p(e,[t]){const el={};t&2&&(el.$$scope={dirty:t,ctx:e}),y.$set(el);const tl={};t&2&&(tl.$$scope={dirty:t,ctx:e}),w.$set(tl);const sl={};t&2&&(sl.$$scope={dirty:t,ctx:e}),_.$set(sl);const ll={};t&2&&(ll.$$scope={dirty:t,ctx:e}),T.$set(ll)},i(e){ps||(r(v.$$.fragment,e),r(J.$$.fragment,e),r(y.$$.fragment,e),r(q.$$.fragment,e),r(H.$$.fragment,e),r(w.$$.fragment,e),r(V.$$.fragment,e),r(X.$$.fragment,e),r(Q.$$.fragment,e),r(R.$$.fragment,e),r(Y.$$.fragment,e),r(A.$$.fragment,e),r(K.$$.fragment,e),r(ee.$$.fragment,e),r(se.$$.fragment,e),r(ne.$$.fragment,e),r(pe.$$.fragment,e),r(me.$$.fragment,e),r(ce.$$.fragment,e),r(Me.$$.fragment,e),r($e.$$.fragment,e),r(ye.$$.fragment,e),r(_.$$.fragment,e),r(_e.$$.fragment,e),r(T.$$.fragment,e),r(Je.$$.fragment,e),r(Ze.$$.fragment,e),r(We.$$.fragment,e),r(Ie.$$.fragment,e),r(Be.$$.fragment,e),ps=!0)},o(e){d(v.$$.fragment,e),d(J.$$.fragment,e),d(y.$$.fragment,e),d(q.$$.fragment,e),d(H.$$.fragment,e),d(w.$$.fragment,e),d(V.$$.fragment,e),d(X.$$.fragment,e),d(Q.$$.fragment,e),d(R.$$.fragment,e),d(Y.$$.fragment,e),d(A.$$.fragment,e),d(K.$$.fragment,e),d(ee.$$.fragment,e),d(se.$$.fragment,e),d(ne.$$.fragment,e),d(pe.$$.fragment,e),d(me.$$.fragment,e),d(ce.$$.fragment,e),d(Me.$$.fragment,e),d($e.$$.fragment,e),d(ye.$$.fragment,e),d(_.$$.fragment,e),d(_e.$$.fragment,e),d(T.$$.fragment,e),d(Je.$$.fragment,e),d(Ze.$$.fragment,e),d(We.$$.fragment,e),d(Ie.$$.fragment,e),d(Be.$$.fragment,e),ps=!1},d(e){e&&(s(b),s(h),s($),s(De),s(Xe),s(k),s(Ne),s(x),s(Qe),s(Z),s(ze),s(G),s(Re),s(Ee),s(W),s(Ye),s(Ae),s(I),s(Fe),s(Ke),s(B),s(Oe),s(L),s(et),s(P),s(tt),s(st),s(S),s(lt),s(nt),s(D),s(at),s(it),s(N),s(pt),s(ft),s(z),s(ot),s(mt),s(U),s(ut),s(E),s(ct),s(rt),s(dt),s(F),s(gt),s(ht),s(O),s(Mt),s(bt),s(te),s($t),s(jt),s(le),s(yt),s(wt),s(ae),s(Ut),s(ie),s(_t),s(Tt),s(fe),s(Ct),s(oe),s(vt),s(Jt),s(ue),s(kt),s(xt),s(re),s(Zt),s(de),s(Gt),s(ge),s(Wt),s(he),s(qt),s(It),s(be),s(Ht),s(Bt),s(je),s(Lt),s(Pt),s(we),s(St),s(Vt),s(Ue),s(Dt),s(Xt),s(Nt),s(Te),s(Qt),s(Ce),s(zt),s(ve),s(Rt),s(Et),s(ke),s(Yt),s(xe),s(At),s(Ft),s(Ge),s(Kt),s(Ot),s(qe),s(es),s(ts),s(He),s(ss),s(C),s(ls),s(ns),s(Le),s(as),s(Pe),s(is),s(Ve)),s(o),g(v,e),g(J,e),g(y,e),g(q,e),g(H,e),g(w,e),g(V,e),g(X,e),g(Q,e),g(R,e),g(Y,e),g(A,e),g(K,e),g(ee,e),g(se,e),g(ne,e),g(pe,e),g(me,e),g(ce,e),g(Me,e),g($e,e),g(ye,e),g(_,e),g(_e,e),g(T,e),g(Je,e),g(Ze,e),g(We,e),g(Ie,e),g(Be,e)}}}const Ml='{"title":"훑어보기","local":"훑어보기","sections":[{"title":"DiffusionPipeline","local":"diffusionpipeline","sections":[{"title":"로컬 파이프라인","local":"로컬-파이프라인","sections":[],"depth":3},{"title":"스케줄러 교체","local":"스케줄러-교체","sections":[],"depth":3}],"depth":2},{"title":"모델","local":"모델","sections":[],"depth":2},{"title":"스케줄러","local":"스케줄러","sections":[],"depth":2},{"title":"다음 단계","local":"다음-단계","sections":[],"depth":2}],"depth":1}';function bl(j){return il(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Tl extends pl{constructor(o){super(),fl(this,o,bl,hl,al,{})}}export{Tl as component};

Xet Storage Details

Size:
42.8 kB
·
Xet hash:
06ee9db89ff2c23723e6a236665ba32bcc4af2e1b7ced05ec2d9232d69920f09

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