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