Buckets:

rtrm's picture
download
raw
47.4 kB
import{s as sl,o as el,n as gt}from"../chunks/scheduler.6e0d5ff7.js";import{S as tl,i as ll,g as p,s as n,r as o,E as nl,h as i,f as t,c as a,j as V,u as r,x as m,k as tt,y as g,a as l,v as M,d as u,t as d,w as h}from"../chunks/index.d7c1b260.js";import{T as ht}from"../chunks/Tip.c000e27b.js";import{C as J}from"../chunks/CodeBlock.09a08494.js";import{D as al}from"../chunks/DocNotebookDropdown.0647ce65.js";import{H as G}from"../chunks/Heading.30a009b0.js";function pl(Z){let c,T='๐Ÿ’ก VAE, UNet ๋ฐ ํ…์ŠคํŠธ ์ธ์ฝ”๋” ๋ชจ๋ธ์˜ ์ž‘๋™๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ <a href="https://huggingface.co/blog/stable_diffusion#how-does-stable-diffusion-work" rel="nofollow">How does Stable Diffusion work?</a> ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.';return{c(){c=p("p"),c.innerHTML=T},l(f){c=i(f,"P",{"data-svelte-h":!0}),m(c)!=="svelte-ra0af6"&&(c.innerHTML=T)},m(f,U){l(f,c,U)},p:gt,d(f){f&&t(c)}}}function il(Z){let c,T="๐Ÿ’ก <code>guidance_scale</code> ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กฌํ”„ํŠธ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.";return{c(){c=p("p"),c.innerHTML=T},l(f){c=i(f,"P",{"data-svelte-h":!0}),m(c)!=="svelte-g2ye81"&&(c.innerHTML=T)},m(f,U){l(f,c,U)},p:gt,d(f){f&&t(c)}}}function ml(Z){let c,T="๐Ÿ’ก <code>vae</code> ๋ชจ๋ธ์—๋Š” 3๊ฐœ์˜ ๋‹ค์šด ์ƒ˜ํ”Œ๋ง ๋ ˆ์ด์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋†’์ด์™€ ๋„ˆ๋น„๊ฐ€ 8๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:",f,U,w;return U=new J({props:{code:"MiUyMCoqJTIwKGxlbih2YWUuY29uZmlnLmJsb2NrX291dF9jaGFubmVscyklMjAtJTIwMSklMjAlM0QlM0QlMjA4",highlighted:'<span class="hljs-number">2</span> ** (<span class="hljs-built_in">len</span>(vae.config.block_out_channels) - <span class="hljs-number">1</span>) == <span class="hljs-number">8</span>',wrap:!1}}),{c(){c=p("p"),c.innerHTML=T,f=n(),o(U.$$.fragment)},l(j){c=i(j,"P",{"data-svelte-h":!0}),m(c)!=="svelte-132csr5"&&(c.innerHTML=T),f=a(j),r(U.$$.fragment,j)},m(j,C){l(j,c,C),l(j,f,C),M(U,j,C),w=!0},p:gt,i(j){w||(u(U.$$.fragment,j),w=!0)},o(j){d(U.$$.fragment,j),w=!1},d(j){j&&(t(c),t(f)),h(U,j)}}}function cl(Z){let c,T,f,U,w,j,C,qs,Q,ft="๐Ÿงจ Diffusers๋Š” ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๋ฉฐ ์œ ์—ฐํ•œ ๋„๊ตฌ ์ƒ์ž๋กœ, ์‚ฌ์šฉ์‚ฌ๋ก€์— ๋งž๊ฒŒ diffusion ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ• ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ ์ƒ์ž์˜ ํ•ต์‹ฌ์€ ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ์ž…๋‹ˆ๋‹ค. <code>DiffusionPipeline</code>์€ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•˜์ง€๋งŒ, ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด diffusion ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.",Ks,W,Jt="์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด Stable Diffusion ํŒŒ์ดํ”„๋ผ์ธ๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”๋ก ์„ ์œ„ํ•œ diffusion ์‹œ์Šคํ…œ์„ ์กฐ๋ฆฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.",Os,N,se,x,jt="ํŒŒ์ดํ”„๋ผ์ธ์€ ์ถ”๋ก ์„ ์œ„ํ•ด ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๋Š” ๋น ๋ฅด๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ, ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์ฝ”๋“œ๊ฐ€ 4์ค„ ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค:",ee,E,te,_,Ut='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/ddpm-cat.png" alt="Image of cat created from DDPMPipeline"/>',le,X,bt="์ •๋ง ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์€ ์–ด๋–ป๊ฒŒ ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์—ˆ์„๊นŒ์š”? ํŒŒ์ดํ”„๋ผ์ธ์„ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.",ne,B,yt="์œ„ ์˜ˆ์‹œ์—์„œ ํŒŒ์ดํ”„๋ผ์ธ์—๋Š” <code>UNet2DModel</code> ๋ชจ๋ธ๊ณผ <code>DDPMScheduler</code>๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ์›ํ•˜๋Š” ์ถœ๋ ฅ ํฌ๊ธฐ์˜ ๋žœ๋ค ๋…ธ์ด์ฆˆ๋ฅผ ๋ฐ›์•„ ๋ชจ๋ธ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ†ต๊ณผ์‹œ์ผœ ์ด๋ฏธ์ง€์˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ timestep์—์„œ ๋ชจ๋ธ์€ <em>noise residual</em>์„ ์˜ˆ์ธกํ•˜๊ณ  ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ์ด์ฆˆ๊ฐ€ ์ ์€ ์ด๋ฏธ์ง€๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ์ง€์ •๋œ ์ถ”๋ก  ์Šคํ…์ˆ˜์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.",ae,F,Tt="๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋ณ„๋„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด์ ์ธ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.",pe,b,S,Fs,wt="๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค:",lt,D,nt,H,Ss,Ct="๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  timestep ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:",at,L,pt,z,Ds,$t="์Šค์ผ€์ค„๋Ÿฌ์˜ timestep์„ ์„ค์ •ํ•˜๋ฉด ๊ท ๋“ฑํ•œ ๊ฐ„๊ฒฉ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ํ…์„œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.(์ด ์˜ˆ์‹œ์—์„œ๋Š” 50๊ฐœ) ๊ฐ ์š”์†Œ๋Š” ๋ชจ๋ธ์ด ์ด๋ฏธ์ง€์˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„๋ฅผ ๋งŒ๋“ค ๋•Œ ์ด ํ…์„œ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค:",it,Y,mt,A,Hs,Vt="์›ํ•˜๋Š” ์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๋ชจ์–‘์„ ๊ฐ€์ง„ ๋žœ๋ค ๋…ธ์ด์ฆˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:",ct,P,ot,$,Ls,Zt="์ด์ œ timestep์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ timestep์—์„œ ๋ชจ๋ธ์€ <code>UNet2DModel.forward()</code>๋ฅผ ํ†ตํ•ด noisy residual์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ์˜ <code>step()</code> ๋ฉ”์„œ๋“œ๋Š” noisy residual, timestep, ๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ด์ „ timestep์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค. ์ด ์ถœ๋ ฅ์€ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„์˜ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋‹ค์Œ ์ž…๋ ฅ์ด ๋˜๋ฉฐ, <code>timesteps</code> ๋ฐฐ์—ด์˜ ๋์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.",rt,q,Mt,zs,_t="์ด๊ฒƒ์ด ์ „์ฒด ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ, ๋™์ผํ•œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด ๋ชจ๋“  diffusion ์‹œ์Šคํ…œ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.",ut,K,Ys,It="๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ๋…ธ์ด์ฆˆ๊ฐ€ ์ œ๊ฑฐ๋œ ์ถœ๋ ฅ์„ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค:",dt,O,ie,ss,vt="๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์ˆ ์„ ์‹œํ—˜ํ•ด๋ณด๊ณ  ์ข€ ๋” ๋ณต์žกํ•œ Stable Diffusion ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ถ„์„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  timestep์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ <code>timestep</code> ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„์—์„œ <code>timestep</code> ๋ฐฐ์—ด์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ๋ชจ๋ธ์€ ๋…ธ์ด์ฆˆ๊ฐ€ ์ ์€ ์ด๋ฏธ์ง€๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค. ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„๋Š” <code>timestep</code>์„ ๋ฐ˜๋ณตํ•˜๊ณ  ๊ฐ timestep์—์„œ noise residual์„ ์ถœ๋ ฅํ•˜๊ณ  ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ timestep์—์„œ ๋…ธ์ด์ฆˆ๊ฐ€ ๋œํ•œ ์ด๋ฏธ์ง€๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” <code>timestep</code> ๋ฐฐ์—ด์˜ ๋์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.",me,es,kt="ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด ๋ด…์‹œ๋‹ค!",ce,ts,oe,ls,Rt="Stable Diffusion ์€ text-to-image <em>latent diffusion</em> ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. latent diffusion ๋ชจ๋ธ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ด์œ ๋Š” ์‹ค์ œ ํ”ฝ์…€ ๊ณต๊ฐ„ ๋Œ€์‹  ์ด๋ฏธ์ง€์˜ ์ €์ฐจ์›์˜ ํ‘œํ˜„์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค. ์ธ์ฝ”๋”๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋” ์ž‘์€ ํ‘œํ˜„์œผ๋กœ ์••์ถ•ํ•˜๊ณ , ๋””์ฝ”๋”๋Š” ์••์ถ•๋œ ํ‘œํ˜„์„ ๋‹ค์‹œ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. text-to-image ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด tokenizer์™€ ์ธ์ฝ”๋”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ์˜ˆ์ œ์—์„œ ์ด๋ฏธ UNet ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ๊ณ„์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.",re,ns,Gt="๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ด๊ฒƒ์€ UNet ๋ชจ๋ธ๋งŒ ํฌํ•จ๋œ DDPM ํŒŒ์ดํ”„๋ผ์ธ๋ณด๋‹ค ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. Stable Diffusion ๋ชจ๋ธ์—๋Š” ์„ธ ๊ฐœ์˜ ๊ฐœ๋ณ„ ์‚ฌ์ „ํ•™์Šต๋œ ๋ชจ๋ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.",Me,I,ue,as,Qt='์ด์ œ Stable Diffusion ํŒŒ์ดํ”„๋ผ์ธ์— ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋“ค์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•˜์œผ๋‹ˆ, <code>from_pretrained()</code> ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ์‚ฌ์ „ํ•™์Šต๋œ ์ฒดํฌํฌ์ธํŠธ <a href="https://huggingface.co/runwayml/stable-diffusion-v1-5" rel="nofollow"><code>runwayml/stable-diffusion-v1-5</code></a>์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋“ค์€ ๋ณ„๋„์˜ ํ•˜์œ„ ํด๋”์— ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:',de,ps,he,is,Wt="๊ธฐ๋ณธ <code>PNDMScheduler</code> ๋Œ€์‹ , <code>UniPCMultistepScheduler</code>๋กœ ๊ต์ฒดํ•˜์—ฌ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:",ge,ms,fe,cs,Nt="์ถ”๋ก  ์†๋„๋ฅผ ๋†’์ด๋ ค๋ฉด ์Šค์ผ€์ค„๋Ÿฌ์™€ ๋‹ฌ๋ฆฌ ํ•™์Šต ๊ฐ€๋Šฅํ•œ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋ธ์„ GPU๋กœ ์˜ฎ๊ธฐ์„ธ์š”:",Je,os,je,rs,Ue,Ms,xt="๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ๋ฅผ ํ† ํฐํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ…์ŠคํŠธ๋Š” UNet ๋ชจ๋ธ์—์„œ condition์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ์™€ ์œ ์‚ฌํ•œ ๋ฐฉํ–ฅ์œผ๋กœ diffusion ํ”„๋กœ์„ธ์Šค๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.",be,v,ye,us,Et="๋‹ค๋ฅธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์›ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•˜์„ธ์š”!",Te,ds,we,hs,Xt="ํ…์ŠคํŠธ๋ฅผ ํ† ํฐํ™”ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์—์„œ ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:",Ce,gs,$e,fs,Bt="๋˜ํ•œ ํŒจ๋”ฉ ํ† ํฐ์˜ ์ž„๋ฒ ๋”ฉ์ธ <em>unconditional ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ</em>์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž„๋ฒ ๋”ฉ์€ ์กฐ๊ฑด๋ถ€ <code>text_embeddings</code>๊ณผ ๋™์ผํ•œ shape(<code>batch_size</code> ๊ทธ๋ฆฌ๊ณ  <code>seq_length</code>)์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค:",Ve,Js,Ze,js,Ft="๋‘๋ฒˆ์˜ forward pass๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด conditional ์ž„๋ฒ ๋”ฉ๊ณผ unconditional ์ž„๋ฒ ๋”ฉ์„ ๋ฐฐ์น˜(batch)๋กœ ์—ฐ๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:",_e,Us,Ie,bs,ve,ys,St="๊ทธ๋‹ค์Œ diffusion ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘์ ์œผ๋กœ ์ดˆ๊ธฐ ๋žœ๋ค ๋…ธ์ด์ฆˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด๋ฏธ์ง€์˜ ์ž ์žฌ์  ํ‘œํ˜„์ด๋ฉฐ ์ ์ฐจ์ ์œผ๋กœ ๋…ธ์ด์ฆˆ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ <code>latent</code> ์ด๋ฏธ์ง€๋Š” ์ตœ์ข… ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์ง€๋งŒ ๋‚˜์ค‘์— ๋ชจ๋ธ์ด ์ด๋ฅผ 512x512 ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋กœ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.",ke,k,Re,Ts,Ge,ws,Qe,Cs,Dt="๋จผ์ € <code>UniPCMultistepScheduler</code>์™€ ๊ฐ™์€ ํ–ฅ์ƒ๋œ ์Šค์ผ€์ค„๋Ÿฌ์— ํ•„์š”ํ•œ ๋…ธ์ด์ฆˆ ์Šค์ผ€์ผ ๊ฐ’์ธ ์ดˆ๊ธฐ ๋…ธ์ด์ฆˆ ๋ถ„ํฌ <em>sigma</em> ๋กœ ์ž…๋ ฅ์„ ์Šค์ผ€์ผ๋ง ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:",We,$s,Ne,Vs,Ht="๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” <code>latent</code>์˜ ์ˆœ์ˆ˜ํ•œ ๋…ธ์ด์ฆˆ๋ฅผ ์ ์ง„์ ์œผ๋กœ ํ”„๋กฌํ”„ํŠธ์— ์„ค๋ช…๋œ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„๋Š” ์„ธ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”:",xe,Zs,Lt="<li>๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ์ค‘์— ์‚ฌ์šฉํ•  ์Šค์ผ€์ค„๋Ÿฌ์˜ timesteps๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.</li> <li>timestep์„ ๋”ฐ๋ผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.</li> <li>๊ฐ timestep์—์„œ UNet ๋ชจ๋ธ์„ ํ˜ธ์ถœํ•˜์—ฌ noise residual์„ ์˜ˆ์ธกํ•˜๊ณ  ์Šค์ผ€์ค„๋Ÿฌ์— ์ „๋‹ฌํ•˜์—ฌ ์ด์ „ ๋…ธ์ด์ฆˆ ์ƒ˜ํ”Œ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.</li>",Ee,_s,Xe,Is,Be,vs,zt="๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” <code>vae</code>๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž ์žฌ ํ‘œํ˜„์„ ์ด๋ฏธ์ง€๋กœ ๋””์ฝ”๋”ฉํ•˜๊ณ  <code>sample</code>๊ณผ ํ•จ๊ป˜ ๋””์ฝ”๋”ฉ๋œ ์ถœ๋ ฅ์„ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค:",Fe,ks,Se,Rs,Yt="๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ <code>PIL.Image</code>๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!",De,Gs,He,R,At='<img src="https://huggingface.co/blog/assets/98_stable_diffusion/stable_diffusion_k_lms.png"/>',Le,Qs,ze,Ws,Pt="๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ๋ถ€ํ„ฐ ๋ณต์žกํ•œ ํŒŒ์ดํ”„๋ผ์ธ๊นŒ์ง€, ์ž์‹ ๋งŒ์˜ diffusion ์‹œ์Šคํ…œ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„๋ฟ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฃจํ”„๋Š” ์Šค์ผ€์ค„๋Ÿฌ์˜ timesteps๋ฅผ ์„ค์ •ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ, UNet ๋ชจ๋ธ์„ ํ˜ธ์ถœํ•˜์—ฌ noise residual์„ ์˜ˆ์ธกํ•˜๊ณ  ์Šค์ผ€์ค„๋Ÿฌ์— ์ „๋‹ฌํ•˜์—ฌ ์ด์ „ ๋…ธ์ด์ฆˆ ์ƒ˜ํ”Œ์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์„ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.",Ye,Ns,qt="์ด๊ฒƒ์ด ๋ฐ”๋กœ ๐Ÿงจ Diffusers๊ฐ€ ์„ค๊ณ„๋œ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค: ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ž์‹ ๋งŒ์˜ diffusion ์‹œ์Šคํ…œ์„ ์ง๊ด€์ ์ด๊ณ  ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.",Ae,xs,Kt="๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ง„ํ–‰ํ•˜์„ธ์š”:",Pe,Es,Ot='<li>๐Ÿงจ Diffusers์— <a href="using-diffusers/#contribute_pipeline">ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๋ฐ ๊ธฐ์—ฌ</a>ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด ์–ด๋–ค ์•„์ด๋””์–ด๋ฅผ ๋‚ด๋†“์„์ง€ ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค!</li> <li>๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ <a href="./api/pipelines/overview">๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ</a>์„ ์‚ดํŽด๋ณด๊ณ , ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋ณ„๋„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•ด์ฒดํ•˜๊ณ  ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”.</li>',qe,Ps,Ke;return w=new G({props:{title:"ํŒŒ์ดํ”„๋ผ์ธ, ๋ชจ๋ธ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ ์ดํ•ดํ•˜๊ธฐ",local:"ํŒŒ์ดํ”„๋ผ์ธ-๋ชจ๋ธ-๋ฐ-์Šค์ผ€์ค„๋Ÿฌ-์ดํ•ดํ•˜๊ธฐ",headingTag:"h1"}}),C=new al({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/write_own_pipeline.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/write_own_pipeline.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/write_own_pipeline.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/write_own_pipeline.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/write_own_pipeline.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/write_own_pipeline.ipynb"}]}}),N=new G({props:{title:"๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ ํ•ด์ฒดํ•˜๊ธฐ",local:"๊ธฐ๋ณธ-ํŒŒ์ดํ”„๋ผ์ธ-ํ•ด์ฒดํ•˜๊ธฐ",headingTag:"h2"}}),E=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEREUE1QaXBlbGluZSUwQSUwQWRkcG0lMjAlM0QlMjBERFBNUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMmdvb2dsZSUyRmRkcG0tY2F0LTI1NiUyMikudG8oJTIyY3VkYSUyMiklMEFpbWFnZSUyMCUzRCUyMGRkcG0obnVtX2luZmVyZW5jZV9zdGVwcyUzRDI1KS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DDPMPipeline
<span class="hljs-meta">&gt;&gt;&gt; </span>ddpm = DDPMPipeline.from_pretrained(<span class="hljs-string">&quot;google/ddpm-cat-256&quot;</span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>image = ddpm(num_inference_steps=<span class="hljs-number">25</span>).images[<span class="hljs-number">0</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>image`,wrap:!1}}),D=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEREUE1TY2hlZHVsZXIlMkMlMjBVTmV0MkRNb2RlbCUwQSUwQXNjaGVkdWxlciUyMCUzRCUyMEREUE1TY2hlZHVsZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmdvb2dsZSUyRmRkcG0tY2F0LTI1NiUyMiklMEFtb2RlbCUyMCUzRCUyMFVOZXQyRE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJnb29nbGUlMkZkZHBtLWNhdC0yNTYlMjIpLnRvKCUyMmN1ZGElMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DDPMScheduler, UNet2DModel
<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler = DDPMScheduler.from_pretrained(<span class="hljs-string">&quot;google/ddpm-cat-256&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model = UNet2DModel.from_pretrained(<span class="hljs-string">&quot;google/ddpm-cat-256&quot;</span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),L=new J({props:{code:"c2NoZWR1bGVyLnNldF90aW1lc3RlcHMoNTAp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler.set_timesteps(<span class="hljs-number">50</span>)',wrap:!1}}),Y=new J({props:{code:"c2NoZWR1bGVyLnRpbWVzdGVwcw==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler.timesteps
tensor([<span class="hljs-number">980</span>, <span class="hljs-number">960</span>, <span class="hljs-number">940</span>, <span class="hljs-number">920</span>, <span class="hljs-number">900</span>, <span class="hljs-number">880</span>, <span class="hljs-number">860</span>, <span class="hljs-number">840</span>, <span class="hljs-number">820</span>, <span class="hljs-number">800</span>, <span class="hljs-number">780</span>, <span class="hljs-number">760</span>, <span class="hljs-number">740</span>, <span class="hljs-number">720</span>,
<span class="hljs-number">700</span>, <span class="hljs-number">680</span>, <span class="hljs-number">660</span>, <span class="hljs-number">640</span>, <span class="hljs-number">620</span>, <span class="hljs-number">600</span>, <span class="hljs-number">580</span>, <span class="hljs-number">560</span>, <span class="hljs-number">540</span>, <span class="hljs-number">520</span>, <span class="hljs-number">500</span>, <span class="hljs-number">480</span>, <span class="hljs-number">460</span>, <span class="hljs-number">440</span>,
<span class="hljs-number">420</span>, <span class="hljs-number">400</span>, <span class="hljs-number">380</span>, <span class="hljs-number">360</span>, <span class="hljs-number">340</span>, <span class="hljs-number">320</span>, <span class="hljs-number">300</span>, <span class="hljs-number">280</span>, <span class="hljs-number">260</span>, <span class="hljs-number">240</span>, <span class="hljs-number">220</span>, <span class="hljs-number">200</span>, <span class="hljs-number">180</span>, <span class="hljs-number">160</span>,
<span class="hljs-number">140</span>, <span class="hljs-number">120</span>, <span class="hljs-number">100</span>, <span class="hljs-number">80</span>, <span class="hljs-number">60</span>, <span class="hljs-number">40</span>, <span class="hljs-number">20</span>, <span class="hljs-number">0</span>])`,wrap:!1}}),P=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFzYW1wbGVfc2l6ZSUyMCUzRCUyMG1vZGVsLmNvbmZpZy5zYW1wbGVfc2l6ZSUwQW5vaXNlJTIwJTNEJTIwdG9yY2gucmFuZG4oKDElMkMlMjAzJTJDJTIwc2FtcGxlX3NpemUlMkMlMjBzYW1wbGVfc2l6ZSklMkMlMjBkZXZpY2UlM0QlMjJjdWRhJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch
<span class="hljs-meta">&gt;&gt;&gt; </span>sample_size = model.config.sample_size
<span class="hljs-meta">&gt;&gt;&gt; </span>noise = torch.randn((<span class="hljs-number">1</span>, <span class="hljs-number">3</span>, sample_size, sample_size), device=<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),q=new J({props:{code:"aW5wdXQlMjAlM0QlMjBub2lzZSUwQSUwQWZvciUyMHQlMjBpbiUyMHNjaGVkdWxlci50aW1lc3RlcHMlM0ElMEElMjAlMjAlMjAlMjB3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbm9pc3lfcmVzaWR1YWwlMjAlM0QlMjBtb2RlbChpbnB1dCUyQyUyMHQpLnNhbXBsZSUwQSUyMCUyMCUyMCUyMHByZXZpb3VzX25vaXN5X3NhbXBsZSUyMCUzRCUyMHNjaGVkdWxlci5zdGVwKG5vaXN5X3Jlc2lkdWFsJTJDJTIwdCUyQyUyMGlucHV0KS5wcmV2X3NhbXBsZSUwQSUyMCUyMCUyMCUyMGlucHV0JTIwJTNEJTIwcHJldmlvdXNfbm9pc3lfc2FtcGxl",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">input</span> = noise
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> t <span class="hljs-keyword">in</span> scheduler.timesteps:
<span class="hljs-meta">... </span> <span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span> noisy_residual = model(<span class="hljs-built_in">input</span>, t).sample
<span class="hljs-meta">... </span> previous_noisy_sample = scheduler.step(noisy_residual, t, <span class="hljs-built_in">input</span>).prev_sample
<span class="hljs-meta">... </span> <span class="hljs-built_in">input</span> = previous_noisy_sample`,wrap:!1}}),O=new J({props:{code:"ZnJvbSUyMFBJTCUyMGltcG9ydCUyMEltYWdlJTBBaW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBaW1hZ2UlMjAlM0QlMjAoaW5wdXQlMjAlMkYlMjAyJTIwJTJCJTIwMC41KS5jbGFtcCgwJTJDJTIwMSklMEFpbWFnZSUyMCUzRCUyMGltYWdlLmNwdSgpLnBlcm11dGUoMCUyQyUyMDIlMkMlMjAzJTJDJTIwMSkubnVtcHkoKSU1QjAlNUQlMEFpbWFnZSUyMCUzRCUyMEltYWdlLmZyb21hcnJheSgoaW1hZ2UlMjAqJTIwMjU1KS5yb3VuZCgpLmFzdHlwZSglMjJ1aW50OCUyMikpJTBBaW1hZ2U=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> 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>image = (<span class="hljs-built_in">input</span> / <span class="hljs-number">2</span> + <span class="hljs-number">0.5</span>).clamp(<span class="hljs-number">0</span>, <span class="hljs-number">1</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>image = image.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>).numpy()[<span class="hljs-number">0</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>image = Image.fromarray((image * <span class="hljs-number">255</span>).<span class="hljs-built_in">round</span>().astype(<span class="hljs-string">&quot;uint8&quot;</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>image`,wrap:!1}}),ts=new G({props:{title:"Stable Diffusion ํŒŒ์ดํ”„๋ผ์ธ ํ•ด์ฒดํ•˜๊ธฐ",local:"stable-diffusion-ํŒŒ์ดํ”„๋ผ์ธ-ํ•ด์ฒดํ•˜๊ธฐ",headingTag:"h2"}}),I=new ht({props:{$$slots:{default:[pl]},$$scope:{ctx:Z}}}),ps=new J({props:{code:"ZnJvbSUyMFBJTCUyMGltcG9ydCUyMEltYWdlJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQ0xJUFRleHRNb2RlbCUyQyUyMENMSVBUb2tlbml6ZXIlMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQXV0b2VuY29kZXJLTCUyQyUyMFVOZXQyRENvbmRpdGlvbk1vZGVsJTJDJTIwUE5ETVNjaGVkdWxlciUwQSUwQXZhZSUyMCUzRCUyMEF1dG9lbmNvZGVyS0wuZnJvbV9wcmV0cmFpbmVkKCUyMkNvbXBWaXMlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTQlMjIlMkMlMjBzdWJmb2xkZXIlM0QlMjJ2YWUlMjIpJTBBdG9rZW5pemVyJTIwJTNEJTIwQ0xJUFRva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNCUyMiUyQyUyMHN1YmZvbGRlciUzRCUyMnRva2VuaXplciUyMiklMEF0ZXh0X2VuY29kZXIlMjAlM0QlMjBDTElQVGV4dE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJDb21wVmlzJTJGc3RhYmxlLWRpZmZ1c2lvbi12MS00JTIyJTJDJTIwc3ViZm9sZGVyJTNEJTIydGV4dF9lbmNvZGVyJTIyKSUwQXVuZXQlMjAlM0QlMjBVTmV0MkRDb25kaXRpb25Nb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNCUyMiUyQyUyMHN1YmZvbGRlciUzRCUyMnVuZXQlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CLIPTextModel, CLIPTokenizer
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoencoderKL, UNet2DConditionModel, PNDMScheduler
<span class="hljs-meta">&gt;&gt;&gt; </span>vae = AutoencoderKL.from_pretrained(<span class="hljs-string">&quot;CompVis/stable-diffusion-v1-4&quot;</span>, subfolder=<span class="hljs-string">&quot;vae&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = CLIPTokenizer.from_pretrained(<span class="hljs-string">&quot;CompVis/stable-diffusion-v1-4&quot;</span>, subfolder=<span class="hljs-string">&quot;tokenizer&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>text_encoder = CLIPTextModel.from_pretrained(<span class="hljs-string">&quot;CompVis/stable-diffusion-v1-4&quot;</span>, subfolder=<span class="hljs-string">&quot;text_encoder&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>unet = UNet2DConditionModel.from_pretrained(<span class="hljs-string">&quot;CompVis/stable-diffusion-v1-4&quot;</span>, subfolder=<span class="hljs-string">&quot;unet&quot;</span>)`,wrap:!1}}),ms=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFVuaVBDTXVsdGlzdGVwU2NoZWR1bGVyJTBBJTBBc2NoZWR1bGVyJTIwJTNEJTIwVW5pUENNdWx0aXN0ZXBTY2hlZHVsZXIuZnJvbV9wcmV0cmFpbmVkKCUyMkNvbXBWaXMlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTQlMjIlMkMlMjBzdWJmb2xkZXIlM0QlMjJzY2hlZHVsZXIlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> UniPCMultistepScheduler
<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler = UniPCMultistepScheduler.from_pretrained(<span class="hljs-string">&quot;CompVis/stable-diffusion-v1-4&quot;</span>, subfolder=<span class="hljs-string">&quot;scheduler&quot;</span>)`,wrap:!1}}),os=new J({props:{code:"dG9yY2hfZGV2aWNlJTIwJTNEJTIwJTIyY3VkYSUyMiUwQXZhZS50byh0b3JjaF9kZXZpY2UpJTBBdGV4dF9lbmNvZGVyLnRvKHRvcmNoX2RldmljZSklMEF1bmV0LnRvKHRvcmNoX2RldmljZSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>torch_device = <span class="hljs-string">&quot;cuda&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>vae.to(torch_device)
<span class="hljs-meta">&gt;&gt;&gt; </span>text_encoder.to(torch_device)
<span class="hljs-meta">&gt;&gt;&gt; </span>unet.to(torch_device)`,wrap:!1}}),rs=new G({props:{title:"ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑํ•˜๊ธฐ",local:"ํ…์ŠคํŠธ-์ž„๋ฒ ๋”ฉ-์ƒ์„ฑํ•˜๊ธฐ",headingTag:"h3"}}),v=new ht({props:{$$slots:{default:[il]},$$scope:{ctx:Z}}}),ds=new J({props:{code:"cHJvbXB0JTIwJTNEJTIwJTVCJTIyYSUyMHBob3RvZ3JhcGglMjBvZiUyMGFuJTIwYXN0cm9uYXV0JTIwcmlkaW5nJTIwYSUyMGhvcnNlJTIyJTVEJTBBaGVpZ2h0JTIwJTNEJTIwNTEyJTIwJTIwJTIzJTIwU3RhYmxlJTIwRGlmZnVzaW9uJUVDJTlEJTk4JTIwJUVBJUI4JUIwJUVCJUIzJUI4JTIwJUVCJTg2JTkyJUVDJTlEJUI0JTBBd2lkdGglMjAlM0QlMjA1MTIlMjAlMjAlMjMlMjBTdGFibGUlMjBEaWZmdXNpb24lRUMlOUQlOTglMjAlRUElQjglQjAlRUIlQjMlQjglMjAlRUIlODQlODglRUIlQjklODQlMEFudW1faW5mZXJlbmNlX3N0ZXBzJTIwJTNEJTIwMjUlMjAlMjAlMjMlMjAlRUIlODUlQjglRUMlOUQlQjQlRUMlQTYlODglMjAlRUMlQTAlOUMlRUElQjElQjAlMjAlRUMlOEElQTQlRUQlODUlOUQlMjAlRUMlODglOTglMEFndWlkYW5jZV9zY2FsZSUyMCUzRCUyMDcuNSUyMCUyMCUyMyUyMGNsYXNzaWZpZXItZnJlZSUyMGd1aWRhbmNlJUVCJUE1JUJDJTIwJUVDJTlDJTg0JUVEJTk1JTlDJTIwc2NhbGUlMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5tYW51YWxfc2VlZCgwKSUyMCUyMCUyMyUyMCVFQyVCNCU4OCVFQSVCOCVCMCUyMCVFQyU5RSVBMCVFQyU5RSVBQyUyMCVFQiU4NSVCOCVFQyU5RCVCNCVFQyVBNiU4OCVFQiVBNSVCQyUyMCVFQyU4MyU5RCVFQyU4NCVCMSVFRCU5NSU5OCVFQiU4QSU5NCUyMHNlZWQlMjBnZW5lcmF0b3IlMEFiYXRjaF9zaXplJTIwJTNEJTIwbGVuKHByb21wdCk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>prompt = [<span class="hljs-string">&quot;a photograph of an astronaut riding a horse&quot;</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>height = <span class="hljs-number">512</span> <span class="hljs-comment"># Stable Diffusion์˜ ๊ธฐ๋ณธ ๋†’์ด</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>width = <span class="hljs-number">512</span> <span class="hljs-comment"># Stable Diffusion์˜ ๊ธฐ๋ณธ ๋„ˆ๋น„</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>num_inference_steps = <span class="hljs-number">25</span> <span class="hljs-comment"># ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ์Šคํ… ์ˆ˜</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>guidance_scale = <span class="hljs-number">7.5</span> <span class="hljs-comment"># classifier-free guidance๋ฅผ ์œ„ํ•œ scale</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>generator = torch.manual_seed(<span class="hljs-number">0</span>) <span class="hljs-comment"># ์ดˆ๊ธฐ ์ž ์žฌ ๋…ธ์ด์ฆˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” seed generator</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>batch_size = <span class="hljs-built_in">len</span>(prompt)`,wrap:!1}}),gs=new J({props:{code:"dGV4dF9pbnB1dCUyMCUzRCUyMHRva2VuaXplciglMEElMjAlMjAlMjAlMjBwcm9tcHQlMkMlMjBwYWRkaW5nJTNEJTIybWF4X2xlbmd0aCUyMiUyQyUyMG1heF9sZW5ndGglM0R0b2tlbml6ZXIubW9kZWxfbWF4X2xlbmd0aCUyQyUyMHRydW5jYXRpb24lM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiUwQSklMEElMEF3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwdGV4dF9lbWJlZGRpbmdzJTIwJTNEJTIwdGV4dF9lbmNvZGVyKHRleHRfaW5wdXQuaW5wdXRfaWRzLnRvKHRvcmNoX2RldmljZSkpJTVCMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>text_input = tokenizer(
<span class="hljs-meta">... </span> prompt, padding=<span class="hljs-string">&quot;max_length&quot;</span>, max_length=tokenizer.model_max_length, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>
<span class="hljs-meta">... </span>)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span> text_embeddings = text_encoder(text_input.input_ids.to(torch_device))[<span class="hljs-number">0</span>]`,wrap:!1}}),Js=new J({props:{code:"bWF4X2xlbmd0aCUyMCUzRCUyMHRleHRfaW5wdXQuaW5wdXRfaWRzLnNoYXBlJTVCLTElNUQlMEF1bmNvbmRfaW5wdXQlMjAlM0QlMjB0b2tlbml6ZXIoJTVCJTIyJTIyJTVEJTIwKiUyMGJhdGNoX3NpemUlMkMlMjBwYWRkaW5nJTNEJTIybWF4X2xlbmd0aCUyMiUyQyUyMG1heF9sZW5ndGglM0RtYXhfbGVuZ3RoJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEF1bmNvbmRfZW1iZWRkaW5ncyUyMCUzRCUyMHRleHRfZW5jb2Rlcih1bmNvbmRfaW5wdXQuaW5wdXRfaWRzLnRvKHRvcmNoX2RldmljZSkpJTVCMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>max_length = text_input.input_ids.shape[-<span class="hljs-number">1</span>]
<span class="hljs-meta">&gt;&gt;&gt; </span>uncond_input = tokenizer([<span class="hljs-string">&quot;&quot;</span>] * batch_size, padding=<span class="hljs-string">&quot;max_length&quot;</span>, max_length=max_length, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>uncond_embeddings = text_encoder(uncond_input.input_ids.to(torch_device))[<span class="hljs-number">0</span>]`,wrap:!1}}),Us=new J({props:{code:"dGV4dF9lbWJlZGRpbmdzJTIwJTNEJTIwdG9yY2guY2F0KCU1QnVuY29uZF9lbWJlZGRpbmdzJTJDJTIwdGV4dF9lbWJlZGRpbmdzJTVEKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>text_embeddings = torch.cat([uncond_embeddings, text_embeddings])',wrap:!1}}),bs=new G({props:{title:"๋žœ๋ค ๋…ธ์ด์ฆˆ ์ƒ์„ฑ",local:"๋žœ๋ค-๋…ธ์ด์ฆˆ-์ƒ์„ฑ",headingTag:"h3"}}),k=new ht({props:{$$slots:{default:[ml]},$$scope:{ctx:Z}}}),Ts=new J({props:{code:"bGF0ZW50cyUyMCUzRCUyMHRvcmNoLnJhbmRuKCUwQSUyMCUyMCUyMCUyMChiYXRjaF9zaXplJTJDJTIwdW5ldC5pbl9jaGFubmVscyUyQyUyMGhlaWdodCUyMCUyRiUyRiUyMDglMkMlMjB3aWR0aCUyMCUyRiUyRiUyMDgpJTJDJTBBJTIwJTIwJTIwJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTBBJTIwJTIwJTIwJTIwZGV2aWNlJTNEdG9yY2hfZGV2aWNlJTJDJTBBKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>latents = torch.randn(
<span class="hljs-meta">... </span> (batch_size, unet.in_channels, height // <span class="hljs-number">8</span>, width // <span class="hljs-number">8</span>),
<span class="hljs-meta">... </span> generator=generator,
<span class="hljs-meta">... </span> device=torch_device,
<span class="hljs-meta">... </span>)`,wrap:!1}}),ws=new G({props:{title:"์ด๋ฏธ์ง€ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ",local:"์ด๋ฏธ์ง€-๋…ธ์ด์ฆˆ-์ œ๊ฑฐ",headingTag:"h3"}}),$s=new J({props:{code:"bGF0ZW50cyUyMCUzRCUyMGxhdGVudHMlMjAqJTIwc2NoZWR1bGVyLmluaXRfbm9pc2Vfc2lnbWE=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>latents = latents * scheduler.init_noise_sigma',wrap:!1}}),_s=new J({props:{code:"ZnJvbSUyMHRxZG0uYXV0byUyMGltcG9ydCUyMHRxZG0lMEElMEFzY2hlZHVsZXIuc2V0X3RpbWVzdGVwcyhudW1faW5mZXJlbmNlX3N0ZXBzKSUwQSUwQWZvciUyMHQlMjBpbiUyMHRxZG0oc2NoZWR1bGVyLnRpbWVzdGVwcyklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjBjbGFzc2lmaWVyLWZyZWUlMjBndWlkYW5jZSVFQiVBNSVCQyUyMCVFQyU4OCU5OCVFRCU5NiU4OSVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQSVCMiVCRCVFQyU5QSVCMCUyMCVFQiU5MSU5MCVFQiVCMiU4OCVFQyU5RCU5OCUyMGZvcndhcmQlMjBwYXNzJUVCJUE1JUJDJTIwJUVDJTg4JTk4JUVEJTk2JTg5JUVEJTk1JTk4JUVDJUE3JTgwJTIwJUVDJTk1JThBJUVCJThGJTg0JUVCJUExJTlEJTIwbGF0ZW50JUVCJUE1JUJDJTIwJUVEJTk5JTk1JUVDJTlFJUE1LiUwQSUyMCUyMCUyMCUyMGxhdGVudF9tb2RlbF9pbnB1dCUyMCUzRCUyMHRvcmNoLmNhdCglNUJsYXRlbnRzJTVEJTIwKiUyMDIpJTBBJTBBJTIwJTIwJTIwJTIwbGF0ZW50X21vZGVsX2lucHV0JTIwJTNEJTIwc2NoZWR1bGVyLnNjYWxlX21vZGVsX2lucHV0KGxhdGVudF9tb2RlbF9pbnB1dCUyQyUyMHRpbWVzdGVwJTNEdCklMEElMEElMjAlMjAlMjAlMjAlMjMlMjBub2lzZSUyMHJlc2lkdWFsJTIwJUVDJTk4JTg4JUVDJUI4JUExJTBBJTIwJTIwJTIwJTIwd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG5vaXNlX3ByZWQlMjAlM0QlMjB1bmV0KGxhdGVudF9tb2RlbF9pbnB1dCUyQyUyMHQlMkMlMjBlbmNvZGVyX2hpZGRlbl9zdGF0ZXMlM0R0ZXh0X2VtYmVkZGluZ3MpLnNhbXBsZSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMGd1aWRhbmNlJTIwJUVDJTg4JTk4JUVEJTk2JTg5JTBBJTIwJTIwJTIwJTIwbm9pc2VfcHJlZF91bmNvbmQlMkMlMjBub2lzZV9wcmVkX3RleHQlMjAlM0QlMjBub2lzZV9wcmVkLmNodW5rKDIpJTBBJTIwJTIwJTIwJTIwbm9pc2VfcHJlZCUyMCUzRCUyMG5vaXNlX3ByZWRfdW5jb25kJTIwJTJCJTIwZ3VpZGFuY2Vfc2NhbGUlMjAqJTIwKG5vaXNlX3ByZWRfdGV4dCUyMC0lMjBub2lzZV9wcmVkX3VuY29uZCklMEElMEElMjAlMjAlMjAlMjAlMjMlMjAlRUMlOUQlQjQlRUMlQTAlODQlMjAlRUIlODUlQjglRUMlOUQlQjQlRUMlQTYlODglMjAlRUMlODMlOTglRUQlOTQlOEMlRUMlOUQlODQlMjAlRUElQjMlODQlRUMlODIlQjAlMjB4X3QlMjAtJTNFJTIweF90LTElMEElMjAlMjAlMjAlMjBsYXRlbnRzJTIwJTNEJTIwc2NoZWR1bGVyLnN0ZXAobm9pc2VfcHJlZCUyQyUyMHQlMkMlMjBsYXRlbnRzKS5wcmV2X3NhbXBsZQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> tqdm.auto <span class="hljs-keyword">import</span> tqdm
<span class="hljs-meta">&gt;&gt;&gt; </span>scheduler.set_timesteps(num_inference_steps)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> t <span class="hljs-keyword">in</span> tqdm(scheduler.timesteps):
<span class="hljs-meta">... </span> <span class="hljs-comment"># classifier-free guidance๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋‘๋ฒˆ์˜ forward pass๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋„๋ก latent๋ฅผ ํ™•์žฅ.</span>
<span class="hljs-meta">... </span> latent_model_input = torch.cat([latents] * <span class="hljs-number">2</span>)
<span class="hljs-meta">... </span> latent_model_input = scheduler.scale_model_input(latent_model_input, timestep=t)
<span class="hljs-meta">... </span> <span class="hljs-comment"># noise residual ์˜ˆ์ธก</span>
<span class="hljs-meta">... </span> <span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span> noise_pred = unet(latent_model_input, t, encoder_hidden_states=text_embeddings).sample
<span class="hljs-meta">... </span> <span class="hljs-comment"># guidance ์ˆ˜ํ–‰</span>
<span class="hljs-meta">... </span> noise_pred_uncond, noise_pred_text = noise_pred.chunk(<span class="hljs-number">2</span>)
<span class="hljs-meta">... </span> noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)
<span class="hljs-meta">... </span> <span class="hljs-comment"># ์ด์ „ ๋…ธ์ด์ฆˆ ์ƒ˜ํ”Œ์„ ๊ณ„์‚ฐ x_t -&gt; x_t-1</span>
<span class="hljs-meta">... </span> latents = scheduler.step(noise_pred, t, latents).prev_sample`,wrap:!1}}),Is=new G({props:{title:"์ด๋ฏธ์ง€ ๋””์ฝ”๋”ฉ",local:"์ด๋ฏธ์ง€-๋””์ฝ”๋”ฉ",headingTag:"h3"}}),ks=new J({props:{code:"JTIzJTIwbGF0ZW50JUVCJUE1JUJDJTIwJUVDJThBJUE0JUVDJUJDJTgwJUVDJTlEJUJDJUVCJUE3JTgxJUVEJTk1JTk4JUVBJUIzJUEwJTIwdmFlJUVCJUExJTlDJTIwJUVDJTlEJUI0JUVCJUFGJUI4JUVDJUE3JTgwJTIwJUVCJTk0JTk0JUVDJUJEJTk0JUVCJTk0JUE5JTBBbGF0ZW50cyUyMCUzRCUyMDElMjAlMkYlMjAwLjE4MjE1JTIwKiUyMGxhdGVudHMlMEF3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwaW1hZ2UlMjAlM0QlMjB2YWUuZGVjb2RlKGxhdGVudHMpLnNhbXBsZQ==",highlighted:`<span class="hljs-comment"># latent๋ฅผ ์Šค์ผ€์ผ๋งํ•˜๊ณ  vae๋กœ ์ด๋ฏธ์ง€ ๋””์ฝ”๋”ฉ</span>
latents = <span class="hljs-number">1</span> / <span class="hljs-number">0.18215</span> * latents
<span class="hljs-keyword">with</span> torch.no_grad():
image = vae.decode(latents).sample`,wrap:!1}}),Gs=new J({props:{code:"aW1hZ2UlMjAlM0QlMjAoaW1hZ2UlMjAlMkYlMjAyJTIwJTJCJTIwMC41KS5jbGFtcCgwJTJDJTIwMSklMEFpbWFnZSUyMCUzRCUyMGltYWdlLmRldGFjaCgpLmNwdSgpLnBlcm11dGUoMCUyQyUyMDIlMkMlMjAzJTJDJTIwMSkubnVtcHkoKSUwQWltYWdlcyUyMCUzRCUyMChpbWFnZSUyMColMjAyNTUpLnJvdW5kKCkuYXN0eXBlKCUyMnVpbnQ4JTIyKSUwQXBpbF9pbWFnZXMlMjAlM0QlMjAlNUJJbWFnZS5mcm9tYXJyYXkoaW1hZ2UpJTIwZm9yJTIwaW1hZ2UlMjBpbiUyMGltYWdlcyU1RCUwQXBpbF9pbWFnZXMlNUIwJTVE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>image = (image / <span class="hljs-number">2</span> + <span class="hljs-number">0.5</span>).clamp(<span class="hljs-number">0</span>, <span class="hljs-number">1</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>image = image.detach().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>).numpy()
<span class="hljs-meta">&gt;&gt;&gt; </span>images = (image * <span class="hljs-number">255</span>).<span class="hljs-built_in">round</span>().astype(<span class="hljs-string">&quot;uint8&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>pil_images = [Image.fromarray(image) <span class="hljs-keyword">for</span> image <span class="hljs-keyword">in</span> images]
<span class="hljs-meta">&gt;&gt;&gt; </span>pil_images[<span class="hljs-number">0</span>]`,wrap:!1}}),Qs=new G({props:{title:"๋‹ค์Œ ๋‹จ๊ณ„",local:"๋‹ค์Œ-๋‹จ๊ณ„",headingTag:"h2"}}),{c(){c=p("meta"),T=n(),f=p("p"),U=n(),o(w.$$.fragment),j=n(),o(C.$$.fragment),qs=n(),Q=p("p"),Q.innerHTML=ft,Ks=n(),W=p("p"),W.textContent=Jt,Os=n(),o(N.$$.fragment),se=n(),x=p("p"),x.textContent=jt,ee=n(),o(E.$$.fragment),te=n(),_=p("div"),_.innerHTML=Ut,le=n(),X=p("p"),X.textContent=bt,ne=n(),B=p("p"),B.innerHTML=yt,ae=n(),F=p("p"),F.textContent=Tt,pe=n(),b=p("ol"),S=p("li"),Fs=p("p"),Fs.textContent=wt,lt=n(),o(D.$$.fragment),nt=n(),H=p("li"),Ss=p("p"),Ss.textContent=Ct,at=n(),o(L.$$.fragment),pt=n(),z=p("li"),Ds=p("p"),Ds.textContent=$t,it=n(),o(Y.$$.fragment),mt=n(),A=p("li"),Hs=p("p"),Hs.textContent=Vt,ct=n(),o(P.$$.fragment),ot=n(),$=p("li"),Ls=p("p"),Ls.innerHTML=Zt,rt=n(),o(q.$$.fragment),Mt=n(),zs=p("p"),zs.textContent=_t,ut=n(),K=p("li"),Ys=p("p"),Ys.textContent=It,dt=n(),o(O.$$.fragment),ie=n(),ss=p("p"),ss.innerHTML=vt,me=n(),es=p("p"),es.textContent=kt,ce=n(),o(ts.$$.fragment),oe=n(),ls=p("p"),ls.innerHTML=Rt,re=n(),ns=p("p"),ns.textContent=Gt,Me=n(),o(I.$$.fragment),ue=n(),as=p("p"),as.innerHTML=Qt,de=n(),o(ps.$$.fragment),he=n(),is=p("p"),is.innerHTML=Wt,ge=n(),o(ms.$$.fragment),fe=n(),cs=p("p"),cs.textContent=Nt,Je=n(),o(os.$$.fragment),je=n(),o(rs.$$.fragment),Ue=n(),Ms=p("p"),Ms.textContent=xt,be=n(),o(v.$$.fragment),ye=n(),us=p("p"),us.textContent=Et,Te=n(),o(ds.$$.fragment),we=n(),hs=p("p"),hs.textContent=Xt,Ce=n(),o(gs.$$.fragment),$e=n(),fs=p("p"),fs.innerHTML=Bt,Ve=n(),o(Js.$$.fragment),Ze=n(),js=p("p"),js.textContent=Ft,_e=n(),o(Us.$$.fragment),Ie=n(),o(bs.$$.fragment),ve=n(),ys=p("p"),ys.innerHTML=St,ke=n(),o(k.$$.fragment),Re=n(),o(Ts.$$.fragment),Ge=n(),o(ws.$$.fragment),Qe=n(),Cs=p("p"),Cs.innerHTML=Dt,We=n(),o($s.$$.fragment),Ne=n(),Vs=p("p"),Vs.innerHTML=Ht,xe=n(),Zs=p("ol"),Zs.innerHTML=Lt,Ee=n(),o(_s.$$.fragment),Xe=n(),o(Is.$$.fragment),Be=n(),vs=p("p"),vs.innerHTML=zt,Fe=n(),o(ks.$$.fragment),Se=n(),Rs=p("p"),Rs.innerHTML=Yt,De=n(),o(Gs.$$.fragment),He=n(),R=p("div"),R.innerHTML=At,Le=n(),o(Qs.$$.fragment),ze=n(),Ws=p("p"),Ws.textContent=Pt,Ye=n(),Ns=p("p"),Ns.textContent=qt,Ae=n(),xs=p("p"),xs.textContent=Kt,Pe=n(),Es=p("ul"),Es.innerHTML=Ot,qe=n(),Ps=p("p"),this.h()},l(s){const e=nl("svelte-u9bgzb",document.head);c=i(e,"META",{name:!0,content:!0}),e.forEach(t),T=a(s),f=i(s,"P",{}),V(f).forEach(t),U=a(s),r(w.$$.fragment,s),j=a(s),r(C.$$.fragment,s),qs=a(s),Q=i(s,"P",{"data-svelte-h":!0}),m(Q)!=="svelte-1fz6u4e"&&(Q.innerHTML=ft),Ks=a(s),W=i(s,"P",{"data-svelte-h":!0}),m(W)!=="svelte-1rh2wvk"&&(W.textContent=Jt),Os=a(s),r(N.$$.fragment,s),se=a(s),x=i(s,"P",{"data-svelte-h":!0}),m(x)!=="svelte-1ejhv0l"&&(x.textContent=jt),ee=a(s),r(E.$$.fragment,s),te=a(s),_=i(s,"DIV",{class:!0,"data-svelte-h":!0}),m(_)!=="svelte-ej6f4c"&&(_.innerHTML=Ut),le=a(s),X=i(s,"P",{"data-svelte-h":!0}),m(X)!=="svelte-1l346u9"&&(X.textContent=bt),ne=a(s),B=i(s,"P",{"data-svelte-h":!0}),m(B)!=="svelte-e768ok"&&(B.innerHTML=yt),ae=a(s),F=i(s,"P",{"data-svelte-h":!0}),m(F)!=="svelte-dgd067"&&(F.textContent=Tt),pe=a(s),b=i(s,"OL",{});var y=V(b);S=i(y,"LI",{});var Xs=V(S);Fs=i(Xs,"P",{"data-svelte-h":!0}),m(Fs)!=="svelte-j1r62h"&&(Fs.textContent=wt),lt=a(Xs),r(D.$$.fragment,Xs),Xs.forEach(t),nt=a(y),H=i(y,"LI",{});var Bs=V(H);Ss=i(Bs,"P",{"data-svelte-h":!0}),m(Ss)!=="svelte-khbsw8"&&(Ss.textContent=Ct),at=a(Bs),r(L.$$.fragment,Bs),Bs.forEach(t),pt=a(y),z=i(y,"LI",{});var Oe=V(z);Ds=i(Oe,"P",{"data-svelte-h":!0}),m(Ds)!=="svelte-yj8dtl"&&(Ds.textContent=$t),it=a(Oe),r(Y.$$.fragment,Oe),Oe.forEach(t),mt=a(y),A=i(y,"LI",{});var st=V(A);Hs=i(st,"P",{"data-svelte-h":!0}),m(Hs)!=="svelte-1mx5t16"&&(Hs.textContent=Vt),ct=a(st),r(P.$$.fragment,st),st.forEach(t),ot=a(y),$=i(y,"LI",{});var As=V($);Ls=i(As,"P",{"data-svelte-h":!0}),m(Ls)!=="svelte-1dcn1b9"&&(Ls.innerHTML=Zt),rt=a(As),r(q.$$.fragment,As),Mt=a(As),zs=i(As,"P",{"data-svelte-h":!0}),m(zs)!=="svelte-x05lv9"&&(zs.textContent=_t),As.forEach(t),ut=a(y),K=i(y,"LI",{});var et=V(K);Ys=i(et,"P",{"data-svelte-h":!0}),m(Ys)!=="svelte-1plitwm"&&(Ys.textContent=It),dt=a(et),r(O.$$.fragment,et),et.forEach(t),y.forEach(t),ie=a(s),ss=i(s,"P",{"data-svelte-h":!0}),m(ss)!=="svelte-1lzspna"&&(ss.innerHTML=vt),me=a(s),es=i(s,"P",{"data-svelte-h":!0}),m(es)!=="svelte-5z3iwd"&&(es.textContent=kt),ce=a(s),r(ts.$$.fragment,s),oe=a(s),ls=i(s,"P",{"data-svelte-h":!0}),m(ls)!=="svelte-cnatu9"&&(ls.innerHTML=Rt),re=a(s),ns=i(s,"P",{"data-svelte-h":!0}),m(ns)!=="svelte-1qnf9z2"&&(ns.textContent=Gt),Me=a(s),r(I.$$.fragment,s),ue=a(s),as=i(s,"P",{"data-svelte-h":!0}),m(as)!=="svelte-1v6hzf8"&&(as.innerHTML=Qt),de=a(s),r(ps.$$.fragment,s),he=a(s),is=i(s,"P",{"data-svelte-h":!0}),m(is)!=="svelte-angdpe"&&(is.innerHTML=Wt),ge=a(s),r(ms.$$.fragment,s),fe=a(s),cs=i(s,"P",{"data-svelte-h":!0}),m(cs)!=="svelte-xe2wp7"&&(cs.textContent=Nt),Je=a(s),r(os.$$.fragment,s),je=a(s),r(rs.$$.fragment,s),Ue=a(s),Ms=i(s,"P",{"data-svelte-h":!0}),m(Ms)!=="svelte-nswq27"&&(Ms.textContent=xt),be=a(s),r(v.$$.fragment,s),ye=a(s),us=i(s,"P",{"data-svelte-h":!0}),m(us)!=="svelte-193i9if"&&(us.textContent=Et),Te=a(s),r(ds.$$.fragment,s),we=a(s),hs=i(s,"P",{"data-svelte-h":!0}),m(hs)!=="svelte-v5k7o5"&&(hs.textContent=Xt),Ce=a(s),r(gs.$$.fragment,s),$e=a(s),fs=i(s,"P",{"data-svelte-h":!0}),m(fs)!=="svelte-1nerc8v"&&(fs.innerHTML=Bt),Ve=a(s),r(Js.$$.fragment,s),Ze=a(s),js=i(s,"P",{"data-svelte-h":!0}),m(js)!=="svelte-iqpjwl"&&(js.textContent=Ft),_e=a(s),r(Us.$$.fragment,s),Ie=a(s),r(bs.$$.fragment,s),ve=a(s),ys=i(s,"P",{"data-svelte-h":!0}),m(ys)!=="svelte-b5xa4e"&&(ys.innerHTML=St),ke=a(s),r(k.$$.fragment,s),Re=a(s),r(Ts.$$.fragment,s),Ge=a(s),r(ws.$$.fragment,s),Qe=a(s),Cs=i(s,"P",{"data-svelte-h":!0}),m(Cs)!=="svelte-1xr7g73"&&(Cs.innerHTML=Dt),We=a(s),r($s.$$.fragment,s),Ne=a(s),Vs=i(s,"P",{"data-svelte-h":!0}),m(Vs)!=="svelte-4n9fvy"&&(Vs.innerHTML=Ht),xe=a(s),Zs=i(s,"OL",{"data-svelte-h":!0}),m(Zs)!=="svelte-iivnel"&&(Zs.innerHTML=Lt),Ee=a(s),r(_s.$$.fragment,s),Xe=a(s),r(Is.$$.fragment,s),Be=a(s),vs=i(s,"P",{"data-svelte-h":!0}),m(vs)!=="svelte-12g4hh4"&&(vs.innerHTML=zt),Fe=a(s),r(ks.$$.fragment,s),Se=a(s),Rs=i(s,"P",{"data-svelte-h":!0}),m(Rs)!=="svelte-1bjoomr"&&(Rs.innerHTML=Yt),De=a(s),r(Gs.$$.fragment,s),He=a(s),R=i(s,"DIV",{class:!0,"data-svelte-h":!0}),m(R)!=="svelte-1b0w6va"&&(R.innerHTML=At),Le=a(s),r(Qs.$$.fragment,s),ze=a(s),Ws=i(s,"P",{"data-svelte-h":!0}),m(Ws)!=="svelte-nwx4ql"&&(Ws.textContent=Pt),Ye=a(s),Ns=i(s,"P",{"data-svelte-h":!0}),m(Ns)!=="svelte-g0p09q"&&(Ns.textContent=qt),Ae=a(s),xs=i(s,"P",{"data-svelte-h":!0}),m(xs)!=="svelte-qg73l2"&&(xs.textContent=Kt),Pe=a(s),Es=i(s,"UL",{"data-svelte-h":!0}),m(Es)!=="svelte-y3g0al"&&(Es.innerHTML=Ot),qe=a(s),Ps=i(s,"P",{}),V(Ps).forEach(t),this.h()},h(){tt(c,"name","hf:doc:metadata"),tt(c,"content",ol),tt(_,"class","flex justify-center"),tt(R,"class","flex justify-center")},m(s,e){g(document.head,c),l(s,T,e),l(s,f,e),l(s,U,e),M(w,s,e),l(s,j,e),M(C,s,e),l(s,qs,e),l(s,Q,e),l(s,Ks,e),l(s,W,e),l(s,Os,e),M(N,s,e),l(s,se,e),l(s,x,e),l(s,ee,e),M(E,s,e),l(s,te,e),l(s,_,e),l(s,le,e),l(s,X,e),l(s,ne,e),l(s,B,e),l(s,ae,e),l(s,F,e),l(s,pe,e),l(s,b,e),g(b,S),g(S,Fs),g(S,lt),M(D,S,null),g(b,nt),g(b,H),g(H,Ss),g(H,at),M(L,H,null),g(b,pt),g(b,z),g(z,Ds),g(z,it),M(Y,z,null),g(b,mt),g(b,A),g(A,Hs),g(A,ct),M(P,A,null),g(b,ot),g(b,$),g($,Ls),g($,rt),M(q,$,null),g($,Mt),g($,zs),g(b,ut),g(b,K),g(K,Ys),g(K,dt),M(O,K,null),l(s,ie,e),l(s,ss,e),l(s,me,e),l(s,es,e),l(s,ce,e),M(ts,s,e),l(s,oe,e),l(s,ls,e),l(s,re,e),l(s,ns,e),l(s,Me,e),M(I,s,e),l(s,ue,e),l(s,as,e),l(s,de,e),M(ps,s,e),l(s,he,e),l(s,is,e),l(s,ge,e),M(ms,s,e),l(s,fe,e),l(s,cs,e),l(s,Je,e),M(os,s,e),l(s,je,e),M(rs,s,e),l(s,Ue,e),l(s,Ms,e),l(s,be,e),M(v,s,e),l(s,ye,e),l(s,us,e),l(s,Te,e),M(ds,s,e),l(s,we,e),l(s,hs,e),l(s,Ce,e),M(gs,s,e),l(s,$e,e),l(s,fs,e),l(s,Ve,e),M(Js,s,e),l(s,Ze,e),l(s,js,e),l(s,_e,e),M(Us,s,e),l(s,Ie,e),M(bs,s,e),l(s,ve,e),l(s,ys,e),l(s,ke,e),M(k,s,e),l(s,Re,e),M(Ts,s,e),l(s,Ge,e),M(ws,s,e),l(s,Qe,e),l(s,Cs,e),l(s,We,e),M($s,s,e),l(s,Ne,e),l(s,Vs,e),l(s,xe,e),l(s,Zs,e),l(s,Ee,e),M(_s,s,e),l(s,Xe,e),M(Is,s,e),l(s,Be,e),l(s,vs,e),l(s,Fe,e),M(ks,s,e),l(s,Se,e),l(s,Rs,e),l(s,De,e),M(Gs,s,e),l(s,He,e),l(s,R,e),l(s,Le,e),M(Qs,s,e),l(s,ze,e),l(s,Ws,e),l(s,Ye,e),l(s,Ns,e),l(s,Ae,e),l(s,xs,e),l(s,Pe,e),l(s,Es,e),l(s,qe,e),l(s,Ps,e),Ke=!0},p(s,[e]){const y={};e&2&&(y.$$scope={dirty:e,ctx:s}),I.$set(y);const Xs={};e&2&&(Xs.$$scope={dirty:e,ctx:s}),v.$set(Xs);const Bs={};e&2&&(Bs.$$scope={dirty:e,ctx:s}),k.$set(Bs)},i(s){Ke||(u(w.$$.fragment,s),u(C.$$.fragment,s),u(N.$$.fragment,s),u(E.$$.fragment,s),u(D.$$.fragment,s),u(L.$$.fragment,s),u(Y.$$.fragment,s),u(P.$$.fragment,s),u(q.$$.fragment,s),u(O.$$.fragment,s),u(ts.$$.fragment,s),u(I.$$.fragment,s),u(ps.$$.fragment,s),u(ms.$$.fragment,s),u(os.$$.fragment,s),u(rs.$$.fragment,s),u(v.$$.fragment,s),u(ds.$$.fragment,s),u(gs.$$.fragment,s),u(Js.$$.fragment,s),u(Us.$$.fragment,s),u(bs.$$.fragment,s),u(k.$$.fragment,s),u(Ts.$$.fragment,s),u(ws.$$.fragment,s),u($s.$$.fragment,s),u(_s.$$.fragment,s),u(Is.$$.fragment,s),u(ks.$$.fragment,s),u(Gs.$$.fragment,s),u(Qs.$$.fragment,s),Ke=!0)},o(s){d(w.$$.fragment,s),d(C.$$.fragment,s),d(N.$$.fragment,s),d(E.$$.fragment,s),d(D.$$.fragment,s),d(L.$$.fragment,s),d(Y.$$.fragment,s),d(P.$$.fragment,s),d(q.$$.fragment,s),d(O.$$.fragment,s),d(ts.$$.fragment,s),d(I.$$.fragment,s),d(ps.$$.fragment,s),d(ms.$$.fragment,s),d(os.$$.fragment,s),d(rs.$$.fragment,s),d(v.$$.fragment,s),d(ds.$$.fragment,s),d(gs.$$.fragment,s),d(Js.$$.fragment,s),d(Us.$$.fragment,s),d(bs.$$.fragment,s),d(k.$$.fragment,s),d(Ts.$$.fragment,s),d(ws.$$.fragment,s),d($s.$$.fragment,s),d(_s.$$.fragment,s),d(Is.$$.fragment,s),d(ks.$$.fragment,s),d(Gs.$$.fragment,s),d(Qs.$$.fragment,s),Ke=!1},d(s){s&&(t(T),t(f),t(U),t(j),t(qs),t(Q),t(Ks),t(W),t(Os),t(se),t(x),t(ee),t(te),t(_),t(le),t(X),t(ne),t(B),t(ae),t(F),t(pe),t(b),t(ie),t(ss),t(me),t(es),t(ce),t(oe),t(ls),t(re),t(ns),t(Me),t(ue),t(as),t(de),t(he),t(is),t(ge),t(fe),t(cs),t(Je),t(je),t(Ue),t(Ms),t(be),t(ye),t(us),t(Te),t(we),t(hs),t(Ce),t($e),t(fs),t(Ve),t(Ze),t(js),t(_e),t(Ie),t(ve),t(ys),t(ke),t(Re),t(Ge),t(Qe),t(Cs),t(We),t(Ne),t(Vs),t(xe),t(Zs),t(Ee),t(Xe),t(Be),t(vs),t(Fe),t(Se),t(Rs),t(De),t(He),t(R),t(Le),t(ze),t(Ws),t(Ye),t(Ns),t(Ae),t(xs),t(Pe),t(Es),t(qe),t(Ps)),t(c),h(w,s),h(C,s),h(N,s),h(E,s),h(D),h(L),h(Y),h(P),h(q),h(O),h(ts,s),h(I,s),h(ps,s),h(ms,s),h(os,s),h(rs,s),h(v,s),h(ds,s),h(gs,s),h(Js,s),h(Us,s),h(bs,s),h(k,s),h(Ts,s),h(ws,s),h($s,s),h(_s,s),h(Is,s),h(ks,s),h(Gs,s),h(Qs,s)}}}const ol='{"title":"ํŒŒ์ดํ”„๋ผ์ธ, ๋ชจ๋ธ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ ์ดํ•ดํ•˜๊ธฐ","local":"ํŒŒ์ดํ”„๋ผ์ธ-๋ชจ๋ธ-๋ฐ-์Šค์ผ€์ค„๋Ÿฌ-์ดํ•ดํ•˜๊ธฐ","sections":[{"title":"๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ ํ•ด์ฒดํ•˜๊ธฐ","local":"๊ธฐ๋ณธ-ํŒŒ์ดํ”„๋ผ์ธ-ํ•ด์ฒดํ•˜๊ธฐ","sections":[],"depth":2},{"title":"Stable Diffusion ํŒŒ์ดํ”„๋ผ์ธ ํ•ด์ฒดํ•˜๊ธฐ","local":"stable-diffusion-ํŒŒ์ดํ”„๋ผ์ธ-ํ•ด์ฒดํ•˜๊ธฐ","sections":[{"title":"ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑํ•˜๊ธฐ","local":"ํ…์ŠคํŠธ-์ž„๋ฒ ๋”ฉ-์ƒ์„ฑํ•˜๊ธฐ","sections":[],"depth":3},{"title":"๋žœ๋ค ๋…ธ์ด์ฆˆ ์ƒ์„ฑ","local":"๋žœ๋ค-๋…ธ์ด์ฆˆ-์ƒ์„ฑ","sections":[],"depth":3},{"title":"์ด๋ฏธ์ง€ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ","local":"์ด๋ฏธ์ง€-๋…ธ์ด์ฆˆ-์ œ๊ฑฐ","sections":[],"depth":3},{"title":"์ด๋ฏธ์ง€ ๋””์ฝ”๋”ฉ","local":"์ด๋ฏธ์ง€-๋””์ฝ”๋”ฉ","sections":[],"depth":3}],"depth":2},{"title":"๋‹ค์Œ ๋‹จ๊ณ„","local":"๋‹ค์Œ-๋‹จ๊ณ„","sections":[],"depth":2}],"depth":1}';function rl(Z){return el(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Jl extends tl{constructor(c){super(),ll(this,c,rl,cl,sl,{})}}export{Jl as component};

Xet Storage Details

Size:
47.4 kB
ยท
Xet hash:
3203516cb363e08b10c119052c04f4a2a21e85b8e6d7e2509d3195cce5840b4e

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