Buckets:

rtrm's picture
download
raw
42.6 kB
import{s as pl,n as fl,o as ol}from"../chunks/scheduler.23542ac5.js";import{S as ml,i as ul,e as i,s as n,c as o,h as cl,a as p,d as s,b as a,f as il,g as m,j as f,k as He,l as rl,m as l,n as u,t as c,o as r,p as d}from"../chunks/index.9b1f405b.js";import{C as dl,H as Se,E as gl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.40e914c1.js";import{C as g}from"../chunks/CodeBlock.734f158f.js";import{D as hl}from"../chunks/DocNotebookDropdown.68a629d2.js";function Ml(cs){let h,Pe,Ve,Xe,w,Ne,U,Qe,T,Re,v,rs="Diffusion 모델은 이미지나 오디오와 같은 관심 샘플들을 생성하기 위해 랜덤 가우시안 노이즈를 단계별로 제거하도록 학습됩니다. 이로 인해 생성 AI에 대한 관심이 매우 높아졌으며, 인터넷에서 diffusion 생성 이미지의 예를 본 적이 있을 것입니다. 🧨 Diffusers는 누구나 diffusion 모델들을 널리 이용할 수 있도록 하기 위한 라이브러리입니다.",ze,_,ds="개발자든 일반 사용자든 이 훑어보기를 통해 🧨 Diffusers를 소개하고 빠르게 생성할 수 있도록 도와드립니다! 알아야 할 라이브러리의 주요 구성 요소는 크게 세 가지입니다:",Ee,C,gs='<li><code>DiffusionPipeline</code>은 추론을 위해 사전 학습된 diffusion 모델에서 샘플을 빠르게 생성하도록 설계된 높은 수준의 엔드투엔드 클래스입니다.</li> <li>Diffusion 시스템 생성을 위한 빌딩 블록으로 사용할 수 있는 널리 사용되는 사전 학습된 <a href="./api/models">model</a> 아키텍처 및 모듈.</li> <li>다양한 <a href="./api/schedulers/overview">schedulers</a> - 학습을 위해 노이즈를 추가하는 방법과 추론 중에 노이즈 제거된 이미지를 생성하는 방법을 제어하는 알고리즘입니다.</li>',Ye,J,hs="훑어보기에서는 추론을 위해 <code>DiffusionPipeline</code>을 사용하는 방법을 보여준 다음, 모델과 스케줄러를 결합하여 <code>DiffusionPipeline</code> 내부에서 일어나는 일을 복제하는 방법을 안내합니다.",Ae,M,Ms='<p>훑어보기는 간결한 버전의 🧨 Diffusers 소개로서 <a href="https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb" rel="nofollow">노트북</a> 빠르게 시작할 수 있도록 도와드립니다. 디퓨저의 목표, 디자인 철학, 핵심 API에 대한 추가 세부 정보를 자세히 알아보려면 노트북을 확인하세요!</p>',Fe,x,bs="시작하기 전에 필요한 라이브러리가 모두 설치되어 있는지 확인하세요:",Ke,k,Oe,Z,ys='<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>',et,G,tt,q,js='<code>DiffusionPipeline</code> 은 추론을 위해 사전 학습된 diffusion 시스템을 사용하는 가장 쉬운 방법입니다. 모델과 스케줄러를 포함하는 엔드 투 엔드 시스템입니다. 다양한 작업에 <code>DiffusionPipeline</code>을 바로 사용할 수 있습니다. 아래 표에서 지원되는 몇 가지 작업을 살펴보고, 지원되는 작업의 전체 목록은 <a href="./api/pipelines/overview#diffusers-summary">🧨 Diffusers Summary</a> 표에서 확인할 수 있습니다.',st,W,$s='<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>',lt,I,ws=`먼저 <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/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow"><code>stable-diffusion-v1-5</code></a> 체크포인트를 로드합니다.`,nt,L,Us='<p>[!WARNING][Stable Diffusion](<a href="https://huggingface.co/CompVis/stable-diffusion" rel="nofollow">https://huggingface.co/CompVis/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>를 구현하고 있지만, 모델의 향상된 이미지 생성 기능으로 인해 여전히 잠재적으로 유해한 콘텐츠가 생성될 수 있습니다.</p>',at,B,Ts="<code>from_pretrained()</code> 방법으로 모델 로드하기:",it,H,pt,S,vs="The <code>DiffusionPipeline</code>은 모든 모델링, 토큰화, 스케줄링 컴포넌트를 다운로드하고 캐시합니다. Stable Diffusion Pipeline은 무엇보다도 <code>UNet2DConditionModel</code>과 <code>PNDMScheduler</code>로 구성되어 있음을 알 수 있습니다:",ft,V,ot,D,_s=`이 모델은 약 14억 개의 파라미터로 구성되어 있으므로 GPU에서 파이프라인을 실행할 것을 강력히 권장합니다.
PyTorch에서와 마찬가지로 제너레이터 객체를 GPU로 이동할 수 있습니다:`,mt,P,ut,X,Cs='이제 <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> 객체로 감싸집니다.',ct,N,rt,b,Js='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/image_of_squirrel_painting.png"/>',dt,Q,xs="<code>save</code>를 호출하여 이미지를 저장합니다:",gt,R,ht,z,Mt,E,ks="파이프라인을 로컬에서 사용할 수도 있습니다. 유일한 차이점은 가중치를 먼저 다운로드해야 한다는 점입니다:",bt,Y,yt,A,Zs="그런 다음 저장된 가중치를 파이프라인에 로드합니다:",jt,F,$t,K,Gs="이제 위 섹션에서와 같이 파이프라인을 실행할 수 있습니다.",wt,O,Ut,ee,qs="스케줄러마다 노이즈 제거 속도와 품질이 서로 다릅니다. 자신에게 가장 적합한 스케줄러를 찾는 가장 좋은 방법은 직접 사용해 보는 것입니다! 🧨 Diffusers의 주요 기능 중 하나는 스케줄러 간에 쉽게 전환이 가능하다는 것입니다. 예를 들어, 기본 스케줄러인 <code>PNDMScheduler</code>를 <code>EulerDiscreteScheduler</code>로 바꾸려면, <code>from_config()</code> 메서드를 사용하여 로드하세요:",Tt,te,vt,se,Ws="새 스케줄러로 이미지를 생성해보고 어떤 차이가 있는지 확인해 보세요!",_t,le,Is="다음 섹션에서는 모델과 스케줄러라는 <code>DiffusionPipeline</code>을 구성하는 컴포넌트를 자세히 살펴보고 이러한 컴포넌트를 사용하여 고양이 이미지를 생성하는 방법을 배워보겠습니다.",Ct,ne,Jt,ae,Ls='대부분의 모델은 노이즈가 있는 샘플을 가져와 각 시간 간격마다 노이즈가 적은 이미지와 입력 이미지 사이의 차이인 <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 시스템을 만들 수 있습니다.',xt,ie,Bs="모델은 <code>from_pretrained()</code> 메서드로 시작되며, 이 메서드는 모델 가중치를 로컬에 캐시하여 다음에 모델을 로드할 때 더 빠르게 로드할 수 있습니다. 훑어보기에서는 고양이 이미지에 대해 학습된 체크포인트가 있는 기본적인 unconditional 이미지 생성 모델인 <code>UNet2DModel</code>을 로드합니다:",kt,pe,Zt,fe,Hs="모델 매개변수에 액세스하려면 <code>model.config</code>를 호출합니다:",Gt,oe,qt,me,Ss="모델 구성은 🧊 고정된 🧊 딕셔너리로, 모델이 생성된 후에는 해당 매개 변수들을 변경할 수 없습니다. 이는 의도적인 것으로, 처음에 모델 아키텍처를 정의하는 데 사용된 매개변수는 동일하게 유지하면서 다른 매개변수는 추론 중에 조정할 수 있도록 하기 위한 것입니다.",Wt,ue,Vs="가장 중요한 매개변수들은 다음과 같습니다:",It,ce,Ds="<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>",Lt,re,Ps="추론에 모델을 사용하려면 랜덤 가우시안 노이즈로 이미지 모양을 만듭니다. 모델이 여러 개의 무작위 노이즈를 수신할 수 있으므로 ‘batch’ 축, 입력 채널 수에 해당하는 ‘channel’ 축, 이미지의 높이와 너비를 나타내는 ‘sample_size’ 축이 있어야 합니다:",Bt,de,Ht,ge,Xs="추론을 위해 모델에 노이즈가 있는 이미지와 <code>timestep</code>을 전달합니다. ‘timestep’은 입력 이미지의 노이즈 정도를 나타내며, 시작 부분에 더 많은 노이즈가 있고 끝 부분에 더 적은 노이즈가 있습니다. 이를 통해 모델이 diffusion 과정에서 시작 또는 끝에 더 가까운 위치를 결정할 수 있습니다. <code>sample</code> 메서드를 사용하여 모델 출력을 얻습니다:",St,he,Vt,Me,Ns="하지만 실제 예를 생성하려면 노이즈 제거 프로세스를 안내할 스케줄러가 필요합니다. 다음 섹션에서는 모델을 스케줄러와 결합하는 방법에 대해 알아봅니다.",Dt,be,Pt,ye,Qs="스케줄러는 모델 출력이 주어졌을 때 노이즈가 많은 샘플에서 노이즈가 적은 샘플로 전환하는 것을 관리합니다 - 이 경우 ‘noisy_residual’.",Xt,y,Rs="<p>🧨 Diffusers는 Diffusion 시스템을 구축하기 위한 툴박스입니다. <code>DiffusionPipeline</code>을 사용하면 미리 만들어진 Diffusion 시스템을 편리하게 시작할 수 있지만, 모델과 스케줄러 구성 요소를 개별적으로 선택하여 사용자 지정 Diffusion 시스템을 구축할 수도 있습니다.</p>",Nt,je,zs="훑어보기의 경우, <code>from_config()</code> 메서드를 사용하여 <code>DDPMScheduler</code>를 인스턴스화합니다:",Qt,$e,Rt,j,Es="<p>💡 스케줄러가 구성에서 어떻게 인스턴스화되는지 주목하세요. 모델과 달리 스케줄러에는 학습 가능한 가중치가 없으며 매개변수도 없습니다!</p>",zt,we,Ys="가장 중요한 매개변수는 다음과 같습니다:",Et,Ue,As="<li><code>num_train_timesteps</code>: 노이즈 제거 프로세스의 길이, 즉 랜덤 가우스 노이즈를 데이터 샘플로 처리하는 데 필요한 타임스텝 수입니다.</li> <li><code>beta_schedule</code>: 추론 및 학습에 사용할 노이즈 스케줄 유형입니다.</li> <li><code>beta_start</code> 및 <code>beta_end</code>: 노이즈 스케줄의 시작 및 종료 노이즈 값입니다.</li>",Yt,Te,Fs="노이즈가 약간 적은 이미지를 예측하려면 스케줄러의 <code>step()</code> 메서드에 모델 출력, <code>timestep</code>, 현재 <code>sample</code>을 전달하세요.",At,ve,Ft,_e,Ks="<code>less_noisy_sample</code>을 다음 <code>timestep</code>으로 넘기면 노이즈가 더 줄어듭니다! 이제 이 모든 것을 한데 모아 전체 노이즈 제거 과정을 시각화해 보겠습니다.",Kt,Ce,Os="먼저 노이즈 제거된 이미지를 후처리하여 <code>PIL.Image</code>로 표시하는 함수를 만듭니다:",Ot,Je,es,xe,el="노이즈 제거 프로세스의 속도를 높이려면 입력과 모델을 GPU로 옮기세요:",ts,ke,ss,Ze,tl="이제 노이즈가 적은 샘플의 잔차를 예측하고 스케줄러로 노이즈가 적은 샘플을 계산하는 노이즈 제거 루프를 생성합니다:",ls,Ge,ns,qe,sl="가만히 앉아서 고양이가 소음으로만 생성되는 것을 지켜보세요!😻",as,$,ll='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/diffusion-quicktour.png"/>',is,We,ps,Ie,nl="이번 훑어보기에서 🧨 Diffusers로 멋진 이미지를 만들어 보셨기를 바랍니다! 다음 단계로 넘어가세요:",fs,Le,al='<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>',os,Be,ms,De,us;return w=new dl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),U=new hl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;",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"}]}}),T=new Se({props:{title:"훑어보기",local:"훑어보기",headingTag:"h1"}}),k=new g({props:{code:"JTIzJTIwJUVDJUEzJUJDJUVDJTg0JTlEJTIwJUVEJTkyJTgwJUVDJTk2JUI0JUVDJTg0JTlDJTIwQ29sYWIlRUMlOTclOTAlMjAlRUQlOTUlODQlRUMlOUElOTQlRUQlOTUlOUMlMjAlRUIlOUQlQkMlRUMlOUQlQjQlRUIlQjglOEMlRUIlOUYlQUMlRUIlQTYlQUMlMjAlRUMlODQlQTQlRUMlQjklOTglRUQlOTUlOTglRUElQjglQjAuJTBBJTIzIXBpcCUyMGluc3RhbGwlMjAtLXVwZ3JhZGUlMjBkaWZmdXNlcnMlMjBhY2NlbGVyYXRlJTIwdHJhbnNmb3JtZXJz",highlighted:`<span class="hljs-comment"># 주석 풀어서 Colab에 필요한 라이브러리 설치하기.</span>
<span class="hljs-comment">#!pip install --upgrade diffusers accelerate transformers</span>`,wrap:!1}}),G=new Se({props:{title:"DiffusionPipeline",local:"diffusionpipeline",headingTag:"h2"}}),H=new g({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyKQ==",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;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>)`,wrap:!1}}),V=new g({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}}),P=new g({props:{code:"cGlwZWxpbmUudG8oJTIyY3VkYSUyMik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)',wrap:!1}}),N=new g({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}}),R=new g({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}}),z=new Se({props:{title:"로컬 파이프라인",local:"로컬-파이프라인",headingTag:"h3"}}),Y=new g({props:{code:"IWdpdCUyMGxmcyUyMGluc3RhbGwlMEEhZ2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01",highlighted:`!git lfs install
!git <span class="hljs-built_in">clone</span> https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5`,wrap:!1}}),F=new g({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}}),O=new Se({props:{title:"스케줄러 교체",local:"스케줄러-교체",headingTag:"h3"}}),te=new g({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEV1bGVyRGlzY3JldGVTY2hlZHVsZXIlMEElMEFwaXBlbGluZSUyMCUzRCUyMERpZmZ1c2lvblBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIpJTBBcGlwZWxpbmUuc2NoZWR1bGVyJTIwJTNEJTIwRXVsZXJEaXNjcmV0ZVNjaGVkdWxlci5mcm9tX2NvbmZpZyhwaXBlbGluZS5zY2hlZHVsZXIuY29uZmlnKQ==",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;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)`,wrap:!1}}),ne=new Se({props:{title:"모델",local:"모델",headingTag:"h2"}}),pe=new g({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}}),oe=new g({props:{code:"bW9kZWwuY29uZmln",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>model.config',wrap:!1}}),de=new g({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}}),he=new g({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}}),be=new Se({props:{title:"스케줄러",local:"스케줄러",headingTag:"h2"}}),$e=new g({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}}),ve=new g({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}}),Je=new g({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}}),ke=new g({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}}),Ge=new g({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}}),We=new Se({props:{title:"다음 단계",local:"다음-단계",headingTag:"h2"}}),Be=new gl({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/quicktour.md"}}),{c(){h=i("meta"),Pe=n(),Ve=i("p"),Xe=n(),o(w.$$.fragment),Ne=n(),o(U.$$.fragment),Qe=n(),o(T.$$.fragment),Re=n(),v=i("p"),v.textContent=rs,ze=n(),_=i("p"),_.textContent=ds,Ee=n(),C=i("ul"),C.innerHTML=gs,Ye=n(),J=i("p"),J.innerHTML=hs,Ae=n(),M=i("blockquote"),M.innerHTML=Ms,Fe=n(),x=i("p"),x.textContent=bs,Ke=n(),o(k.$$.fragment),Oe=n(),Z=i("ul"),Z.innerHTML=ys,et=n(),o(G.$$.fragment),tt=n(),q=i("p"),q.innerHTML=js,st=n(),W=i("table"),W.innerHTML=$s,lt=n(),I=i("p"),I.innerHTML=ws,nt=n(),L=i("blockquote"),L.innerHTML=Us,at=n(),B=i("p"),B.innerHTML=Ts,it=n(),o(H.$$.fragment),pt=n(),S=i("p"),S.innerHTML=vs,ft=n(),o(V.$$.fragment),ot=n(),D=i("p"),D.textContent=_s,mt=n(),o(P.$$.fragment),ut=n(),X=i("p"),X.innerHTML=Cs,ct=n(),o(N.$$.fragment),rt=n(),b=i("div"),b.innerHTML=Js,dt=n(),Q=i("p"),Q.innerHTML=xs,gt=n(),o(R.$$.fragment),ht=n(),o(z.$$.fragment),Mt=n(),E=i("p"),E.textContent=ks,bt=n(),o(Y.$$.fragment),yt=n(),A=i("p"),A.textContent=Zs,jt=n(),o(F.$$.fragment),$t=n(),K=i("p"),K.textContent=Gs,wt=n(),o(O.$$.fragment),Ut=n(),ee=i("p"),ee.innerHTML=qs,Tt=n(),o(te.$$.fragment),vt=n(),se=i("p"),se.textContent=Ws,_t=n(),le=i("p"),le.innerHTML=Is,Ct=n(),o(ne.$$.fragment),Jt=n(),ae=i("p"),ae.innerHTML=Ls,xt=n(),ie=i("p"),ie.innerHTML=Bs,kt=n(),o(pe.$$.fragment),Zt=n(),fe=i("p"),fe.innerHTML=Hs,Gt=n(),o(oe.$$.fragment),qt=n(),me=i("p"),me.textContent=Ss,Wt=n(),ue=i("p"),ue.textContent=Vs,It=n(),ce=i("ul"),ce.innerHTML=Ds,Lt=n(),re=i("p"),re.textContent=Ps,Bt=n(),o(de.$$.fragment),Ht=n(),ge=i("p"),ge.innerHTML=Xs,St=n(),o(he.$$.fragment),Vt=n(),Me=i("p"),Me.textContent=Ns,Dt=n(),o(be.$$.fragment),Pt=n(),ye=i("p"),ye.textContent=Qs,Xt=n(),y=i("blockquote"),y.innerHTML=Rs,Nt=n(),je=i("p"),je.innerHTML=zs,Qt=n(),o($e.$$.fragment),Rt=n(),j=i("blockquote"),j.innerHTML=Es,zt=n(),we=i("p"),we.textContent=Ys,Et=n(),Ue=i("ul"),Ue.innerHTML=As,Yt=n(),Te=i("p"),Te.innerHTML=Fs,At=n(),o(ve.$$.fragment),Ft=n(),_e=i("p"),_e.innerHTML=Ks,Kt=n(),Ce=i("p"),Ce.innerHTML=Os,Ot=n(),o(Je.$$.fragment),es=n(),xe=i("p"),xe.textContent=el,ts=n(),o(ke.$$.fragment),ss=n(),Ze=i("p"),Ze.textContent=tl,ls=n(),o(Ge.$$.fragment),ns=n(),qe=i("p"),qe.textContent=sl,as=n(),$=i("div"),$.innerHTML=ll,is=n(),o(We.$$.fragment),ps=n(),Ie=i("p"),Ie.textContent=nl,fs=n(),Le=i("ul"),Le.innerHTML=al,os=n(),o(Be.$$.fragment),ms=n(),De=i("p"),this.h()},l(e){const t=cl("svelte-u9bgzb",document.head);h=p(t,"META",{name:!0,content:!0}),t.forEach(s),Pe=a(e),Ve=p(e,"P",{}),il(Ve).forEach(s),Xe=a(e),m(w.$$.fragment,e),Ne=a(e),m(U.$$.fragment,e),Qe=a(e),m(T.$$.fragment,e),Re=a(e),v=p(e,"P",{"data-svelte-h":!0}),f(v)!=="svelte-12ydspm"&&(v.textContent=rs),ze=a(e),_=p(e,"P",{"data-svelte-h":!0}),f(_)!=="svelte-fidl65"&&(_.textContent=ds),Ee=a(e),C=p(e,"UL",{"data-svelte-h":!0}),f(C)!=="svelte-1hg1a9y"&&(C.innerHTML=gs),Ye=a(e),J=p(e,"P",{"data-svelte-h":!0}),f(J)!=="svelte-kc7anl"&&(J.innerHTML=hs),Ae=a(e),M=p(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),f(M)!=="svelte-1n890cv"&&(M.innerHTML=Ms),Fe=a(e),x=p(e,"P",{"data-svelte-h":!0}),f(x)!=="svelte-1k0z9pm"&&(x.textContent=bs),Ke=a(e),m(k.$$.fragment,e),Oe=a(e),Z=p(e,"UL",{"data-svelte-h":!0}),f(Z)!=="svelte-8l98oh"&&(Z.innerHTML=ys),et=a(e),m(G.$$.fragment,e),tt=a(e),q=p(e,"P",{"data-svelte-h":!0}),f(q)!=="svelte-1szdpxj"&&(q.innerHTML=js),st=a(e),W=p(e,"TABLE",{"data-svelte-h":!0}),f(W)!=="svelte-1jwscsx"&&(W.innerHTML=$s),lt=a(e),I=p(e,"P",{"data-svelte-h":!0}),f(I)!=="svelte-y8tkc8"&&(I.innerHTML=ws),nt=a(e),L=p(e,"BLOCKQUOTE",{"data-svelte-h":!0}),f(L)!=="svelte-1sqdffb"&&(L.innerHTML=Us),at=a(e),B=p(e,"P",{"data-svelte-h":!0}),f(B)!=="svelte-28n0vb"&&(B.innerHTML=Ts),it=a(e),m(H.$$.fragment,e),pt=a(e),S=p(e,"P",{"data-svelte-h":!0}),f(S)!=="svelte-1puhto3"&&(S.innerHTML=vs),ft=a(e),m(V.$$.fragment,e),ot=a(e),D=p(e,"P",{"data-svelte-h":!0}),f(D)!=="svelte-167uutc"&&(D.textContent=_s),mt=a(e),m(P.$$.fragment,e),ut=a(e),X=p(e,"P",{"data-svelte-h":!0}),f(X)!=="svelte-16e2uh9"&&(X.innerHTML=Cs),ct=a(e),m(N.$$.fragment,e),rt=a(e),b=p(e,"DIV",{class:!0,"data-svelte-h":!0}),f(b)!=="svelte-6cjtp1"&&(b.innerHTML=Js),dt=a(e),Q=p(e,"P",{"data-svelte-h":!0}),f(Q)!=="svelte-igu1m"&&(Q.innerHTML=xs),gt=a(e),m(R.$$.fragment,e),ht=a(e),m(z.$$.fragment,e),Mt=a(e),E=p(e,"P",{"data-svelte-h":!0}),f(E)!=="svelte-7ma6tc"&&(E.textContent=ks),bt=a(e),m(Y.$$.fragment,e),yt=a(e),A=p(e,"P",{"data-svelte-h":!0}),f(A)!=="svelte-vb7nw9"&&(A.textContent=Zs),jt=a(e),m(F.$$.fragment,e),$t=a(e),K=p(e,"P",{"data-svelte-h":!0}),f(K)!=="svelte-1hsys9q"&&(K.textContent=Gs),wt=a(e),m(O.$$.fragment,e),Ut=a(e),ee=p(e,"P",{"data-svelte-h":!0}),f(ee)!=="svelte-lrbk5l"&&(ee.innerHTML=qs),Tt=a(e),m(te.$$.fragment,e),vt=a(e),se=p(e,"P",{"data-svelte-h":!0}),f(se)!=="svelte-6o48o0"&&(se.textContent=Ws),_t=a(e),le=p(e,"P",{"data-svelte-h":!0}),f(le)!=="svelte-bvjymx"&&(le.innerHTML=Is),Ct=a(e),m(ne.$$.fragment,e),Jt=a(e),ae=p(e,"P",{"data-svelte-h":!0}),f(ae)!=="svelte-6xp0qa"&&(ae.innerHTML=Ls),xt=a(e),ie=p(e,"P",{"data-svelte-h":!0}),f(ie)!=="svelte-yb1tdz"&&(ie.innerHTML=Bs),kt=a(e),m(pe.$$.fragment,e),Zt=a(e),fe=p(e,"P",{"data-svelte-h":!0}),f(fe)!=="svelte-wgpd7u"&&(fe.innerHTML=Hs),Gt=a(e),m(oe.$$.fragment,e),qt=a(e),me=p(e,"P",{"data-svelte-h":!0}),f(me)!=="svelte-1al6c1n"&&(me.textContent=Ss),Wt=a(e),ue=p(e,"P",{"data-svelte-h":!0}),f(ue)!=="svelte-pvrthk"&&(ue.textContent=Vs),It=a(e),ce=p(e,"UL",{"data-svelte-h":!0}),f(ce)!=="svelte-36fna6"&&(ce.innerHTML=Ds),Lt=a(e),re=p(e,"P",{"data-svelte-h":!0}),f(re)!=="svelte-qeu9h5"&&(re.textContent=Ps),Bt=a(e),m(de.$$.fragment,e),Ht=a(e),ge=p(e,"P",{"data-svelte-h":!0}),f(ge)!=="svelte-d3vota"&&(ge.innerHTML=Xs),St=a(e),m(he.$$.fragment,e),Vt=a(e),Me=p(e,"P",{"data-svelte-h":!0}),f(Me)!=="svelte-so2glq"&&(Me.textContent=Ns),Dt=a(e),m(be.$$.fragment,e),Pt=a(e),ye=p(e,"P",{"data-svelte-h":!0}),f(ye)!=="svelte-tx8cwd"&&(ye.textContent=Qs),Xt=a(e),y=p(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),f(y)!=="svelte-sqwal1"&&(y.innerHTML=Rs),Nt=a(e),je=p(e,"P",{"data-svelte-h":!0}),f(je)!=="svelte-1127l8u"&&(je.innerHTML=zs),Qt=a(e),m($e.$$.fragment,e),Rt=a(e),j=p(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),f(j)!=="svelte-1s6sj7o"&&(j.innerHTML=Es),zt=a(e),we=p(e,"P",{"data-svelte-h":!0}),f(we)!=="svelte-14g28lg"&&(we.textContent=Ys),Et=a(e),Ue=p(e,"UL",{"data-svelte-h":!0}),f(Ue)!=="svelte-j8ll1k"&&(Ue.innerHTML=As),Yt=a(e),Te=p(e,"P",{"data-svelte-h":!0}),f(Te)!=="svelte-1q2pjlh"&&(Te.innerHTML=Fs),At=a(e),m(ve.$$.fragment,e),Ft=a(e),_e=p(e,"P",{"data-svelte-h":!0}),f(_e)!=="svelte-yfz7no"&&(_e.innerHTML=Ks),Kt=a(e),Ce=p(e,"P",{"data-svelte-h":!0}),f(Ce)!=="svelte-gihb52"&&(Ce.innerHTML=Os),Ot=a(e),m(Je.$$.fragment,e),es=a(e),xe=p(e,"P",{"data-svelte-h":!0}),f(xe)!=="svelte-m7443v"&&(xe.textContent=el),ts=a(e),m(ke.$$.fragment,e),ss=a(e),Ze=p(e,"P",{"data-svelte-h":!0}),f(Ze)!=="svelte-s236ae"&&(Ze.textContent=tl),ls=a(e),m(Ge.$$.fragment,e),ns=a(e),qe=p(e,"P",{"data-svelte-h":!0}),f(qe)!=="svelte-1h1yyvi"&&(qe.textContent=sl),as=a(e),$=p(e,"DIV",{class:!0,"data-svelte-h":!0}),f($)!=="svelte-1yzsrw6"&&($.innerHTML=ll),is=a(e),m(We.$$.fragment,e),ps=a(e),Ie=p(e,"P",{"data-svelte-h":!0}),f(Ie)!=="svelte-u5qyb5"&&(Ie.textContent=nl),fs=a(e),Le=p(e,"UL",{"data-svelte-h":!0}),f(Le)!=="svelte-1j7psol"&&(Le.innerHTML=al),os=a(e),m(Be.$$.fragment,e),ms=a(e),De=p(e,"P",{}),il(De).forEach(s),this.h()},h(){He(h,"name","hf:doc:metadata"),He(h,"content",bl),He(M,"class","tip"),He(b,"class","flex justify-center"),He(y,"class","tip"),He(j,"class","tip"),He($,"class","flex justify-center")},m(e,t){rl(document.head,h),l(e,Pe,t),l(e,Ve,t),l(e,Xe,t),u(w,e,t),l(e,Ne,t),u(U,e,t),l(e,Qe,t),u(T,e,t),l(e,Re,t),l(e,v,t),l(e,ze,t),l(e,_,t),l(e,Ee,t),l(e,C,t),l(e,Ye,t),l(e,J,t),l(e,Ae,t),l(e,M,t),l(e,Fe,t),l(e,x,t),l(e,Ke,t),u(k,e,t),l(e,Oe,t),l(e,Z,t),l(e,et,t),u(G,e,t),l(e,tt,t),l(e,q,t),l(e,st,t),l(e,W,t),l(e,lt,t),l(e,I,t),l(e,nt,t),l(e,L,t),l(e,at,t),l(e,B,t),l(e,it,t),u(H,e,t),l(e,pt,t),l(e,S,t),l(e,ft,t),u(V,e,t),l(e,ot,t),l(e,D,t),l(e,mt,t),u(P,e,t),l(e,ut,t),l(e,X,t),l(e,ct,t),u(N,e,t),l(e,rt,t),l(e,b,t),l(e,dt,t),l(e,Q,t),l(e,gt,t),u(R,e,t),l(e,ht,t),u(z,e,t),l(e,Mt,t),l(e,E,t),l(e,bt,t),u(Y,e,t),l(e,yt,t),l(e,A,t),l(e,jt,t),u(F,e,t),l(e,$t,t),l(e,K,t),l(e,wt,t),u(O,e,t),l(e,Ut,t),l(e,ee,t),l(e,Tt,t),u(te,e,t),l(e,vt,t),l(e,se,t),l(e,_t,t),l(e,le,t),l(e,Ct,t),u(ne,e,t),l(e,Jt,t),l(e,ae,t),l(e,xt,t),l(e,ie,t),l(e,kt,t),u(pe,e,t),l(e,Zt,t),l(e,fe,t),l(e,Gt,t),u(oe,e,t),l(e,qt,t),l(e,me,t),l(e,Wt,t),l(e,ue,t),l(e,It,t),l(e,ce,t),l(e,Lt,t),l(e,re,t),l(e,Bt,t),u(de,e,t),l(e,Ht,t),l(e,ge,t),l(e,St,t),u(he,e,t),l(e,Vt,t),l(e,Me,t),l(e,Dt,t),u(be,e,t),l(e,Pt,t),l(e,ye,t),l(e,Xt,t),l(e,y,t),l(e,Nt,t),l(e,je,t),l(e,Qt,t),u($e,e,t),l(e,Rt,t),l(e,j,t),l(e,zt,t),l(e,we,t),l(e,Et,t),l(e,Ue,t),l(e,Yt,t),l(e,Te,t),l(e,At,t),u(ve,e,t),l(e,Ft,t),l(e,_e,t),l(e,Kt,t),l(e,Ce,t),l(e,Ot,t),u(Je,e,t),l(e,es,t),l(e,xe,t),l(e,ts,t),u(ke,e,t),l(e,ss,t),l(e,Ze,t),l(e,ls,t),u(Ge,e,t),l(e,ns,t),l(e,qe,t),l(e,as,t),l(e,$,t),l(e,is,t),u(We,e,t),l(e,ps,t),l(e,Ie,t),l(e,fs,t),l(e,Le,t),l(e,os,t),u(Be,e,t),l(e,ms,t),l(e,De,t),us=!0},p:fl,i(e){us||(c(w.$$.fragment,e),c(U.$$.fragment,e),c(T.$$.fragment,e),c(k.$$.fragment,e),c(G.$$.fragment,e),c(H.$$.fragment,e),c(V.$$.fragment,e),c(P.$$.fragment,e),c(N.$$.fragment,e),c(R.$$.fragment,e),c(z.$$.fragment,e),c(Y.$$.fragment,e),c(F.$$.fragment,e),c(O.$$.fragment,e),c(te.$$.fragment,e),c(ne.$$.fragment,e),c(pe.$$.fragment,e),c(oe.$$.fragment,e),c(de.$$.fragment,e),c(he.$$.fragment,e),c(be.$$.fragment,e),c($e.$$.fragment,e),c(ve.$$.fragment,e),c(Je.$$.fragment,e),c(ke.$$.fragment,e),c(Ge.$$.fragment,e),c(We.$$.fragment,e),c(Be.$$.fragment,e),us=!0)},o(e){r(w.$$.fragment,e),r(U.$$.fragment,e),r(T.$$.fragment,e),r(k.$$.fragment,e),r(G.$$.fragment,e),r(H.$$.fragment,e),r(V.$$.fragment,e),r(P.$$.fragment,e),r(N.$$.fragment,e),r(R.$$.fragment,e),r(z.$$.fragment,e),r(Y.$$.fragment,e),r(F.$$.fragment,e),r(O.$$.fragment,e),r(te.$$.fragment,e),r(ne.$$.fragment,e),r(pe.$$.fragment,e),r(oe.$$.fragment,e),r(de.$$.fragment,e),r(he.$$.fragment,e),r(be.$$.fragment,e),r($e.$$.fragment,e),r(ve.$$.fragment,e),r(Je.$$.fragment,e),r(ke.$$.fragment,e),r(Ge.$$.fragment,e),r(We.$$.fragment,e),r(Be.$$.fragment,e),us=!1},d(e){e&&(s(Pe),s(Ve),s(Xe),s(Ne),s(Qe),s(Re),s(v),s(ze),s(_),s(Ee),s(C),s(Ye),s(J),s(Ae),s(M),s(Fe),s(x),s(Ke),s(Oe),s(Z),s(et),s(tt),s(q),s(st),s(W),s(lt),s(I),s(nt),s(L),s(at),s(B),s(it),s(pt),s(S),s(ft),s(ot),s(D),s(mt),s(ut),s(X),s(ct),s(rt),s(b),s(dt),s(Q),s(gt),s(ht),s(Mt),s(E),s(bt),s(yt),s(A),s(jt),s($t),s(K),s(wt),s(Ut),s(ee),s(Tt),s(vt),s(se),s(_t),s(le),s(Ct),s(Jt),s(ae),s(xt),s(ie),s(kt),s(Zt),s(fe),s(Gt),s(qt),s(me),s(Wt),s(ue),s(It),s(ce),s(Lt),s(re),s(Bt),s(Ht),s(ge),s(St),s(Vt),s(Me),s(Dt),s(Pt),s(ye),s(Xt),s(y),s(Nt),s(je),s(Qt),s(Rt),s(j),s(zt),s(we),s(Et),s(Ue),s(Yt),s(Te),s(At),s(Ft),s(_e),s(Kt),s(Ce),s(Ot),s(es),s(xe),s(ts),s(ss),s(Ze),s(ls),s(ns),s(qe),s(as),s($),s(is),s(ps),s(Ie),s(fs),s(Le),s(os),s(ms),s(De)),s(h),d(w,e),d(U,e),d(T,e),d(k,e),d(G,e),d(H,e),d(V,e),d(P,e),d(N,e),d(R,e),d(z,e),d(Y,e),d(F,e),d(O,e),d(te,e),d(ne,e),d(pe,e),d(oe,e),d(de,e),d(he,e),d(be,e),d($e,e),d(ve,e),d(Je,e),d(ke,e),d(Ge,e),d(We,e),d(Be,e)}}}const bl='{"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 yl(cs){return ol(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class vl extends ml{constructor(h){super(),ul(this,h,yl,Ml,pl,{})}}export{vl as component};

Xet Storage Details

Size:
42.6 kB
·
Xet hash:
83f8ccc31a29dc948be2574ba64e11b9f10066671225afc5bee30d655445fb65

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