import{s as ha,o as Ia,n as ra}from"../chunks/scheduler.94020406.js";import{S as Qa,i as ga,g as n,s as M,r as J,E as ua,h as U,f as a,c as t,j as Ca,u as j,x as p,k as oa,y as Va,a as e,v as y,d as T,t as c,w as i}from"../chunks/index.a08c8d92.js";import{T as ba}from"../chunks/Tip.3b0aeee8.js";import{C as m}from"../chunks/CodeBlock.f1fae7de.js";import{D as da}from"../chunks/DocNotebookDropdown.a1753374.js";import{H as bl,E as Aa}from"../chunks/getInferenceSnippets.25ca5d9f.js";function fa(fl){let w,h='๐Ÿ’ก ์ด ํ•™์Šต ํŠœํ† ๋ฆฌ์–ผ์€ Training with ๐Ÿงจ Diffusers ๋…ธํŠธ๋ถ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Diffusion ๋ชจ๋ธ์˜ ์ž‘๋™ ๋ฐฉ์‹ ๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋…ธํŠธ๋ถ์„ ํ™•์ธํ•˜์„ธ์š”!';return{c(){w=n("p"),w.innerHTML=h},l(C){w=U(C,"P",{"data-svelte-h":!0}),p(w)!=="svelte-129ibgh"&&(w.innerHTML=h)},m(C,dl){e(C,w,dl)},p:ra,d(C){C&&a(w)}}}function Ra(fl){let w,h,C,dl,I,Rl,r,Bl,Q,Ns='Unconditional ์ด๋ฏธ์ง€ ์ƒ์„ฑ์€ ํ•™์Šต์— ์‚ฌ์šฉ๋œ ๋ฐ์ดํ„ฐ์…‹๊ณผ ์œ ์‚ฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” diffusion ๋ชจ๋ธ์—์„œ ์ธ๊ธฐ ์žˆ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ, ๊ฐ€์žฅ ์ข‹์€ ๊ฒฐ๊ณผ๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ์…‹์— ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ํŒŒ์ธํŠœ๋‹ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ—ˆ๋ธŒ์—์„œ ์ด๋Ÿฌํ•œ ๋งŽ์€ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งŒ์•ฝ ๋งˆ์Œ์— ๋“œ๋Š” ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด, ์–ธ์ œ๋“ ์ง€ ์Šค์Šค๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!',Zl,g,_s='์ด ํŠœํ† ๋ฆฌ์–ผ์€ ๋‚˜๋งŒ์˜ ๐Ÿฆ‹ ๋‚˜๋น„ ๐Ÿฆ‹๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Smithsonian Butterflies ๋ฐ์ดํ„ฐ์…‹์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์—์„œ UNet2DModel ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€๋ฅด์ณ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.',kl,o,Gl,u,Ws='์‹œ์ž‘ ์ „์—, ๐Ÿค— Datasets์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ „์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์…‹์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ๋‹ค์ˆ˜ GPU์—์„œ ํ•™์Šต์„ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๐Ÿค— Accelerate ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ทธ ํ›„ ํ•™์Šต ๋ฉ”ํŠธ๋ฆญ์„ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด TensorBoard๋ฅผ ๋˜ํ•œ ์„ค์น˜ํ•˜์„ธ์š”. (๋˜ํ•œ ํ•™์Šต ์ถ”์ ์„ ์œ„ํ•ด Weights & Biases๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)',El,V,Fl,b,Os='์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋ชจ๋ธ์„ ๊ณต์œ ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ Hugging Face ๊ณ„์ •์— ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ณ„์ •์ด ์—†๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ๋…ธํŠธ๋ถ์—์„œ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ํ† ํฐ์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',Xl,d,Nl,A,Ss="๋˜๋Š” ํ„ฐ๋ฏธ๋„๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:",_l,f,Wl,R,Ds='๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์ƒ๋‹นํžˆ ํฌ๊ธฐ ๋•Œ๋ฌธ์— Git-LFS์—์„œ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',Ol,B,Sl,Z,Dl,k,Ys="ํŽธ์˜๋ฅผ ์œ„ํ•ด ํ•™์Šต ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์„ ํฌํ•จํ•œ TrainingConfig ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (์ž์œ ๋กญ๊ฒŒ ์กฐ์ • ๊ฐ€๋Šฅ):",Yl,G,zl,E,$l,F,zs='๐Ÿค— Datasets ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Smithsonian Butterflies ๋ฐ์ดํ„ฐ์…‹์„ ์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',vl,X,xl,N,$s='๐Ÿ’กHugGan Community Event ์—์„œ ์ถ”๊ฐ€์˜ ๋ฐ์ดํ„ฐ์…‹์„ ์ฐพ๊ฑฐ๋‚˜ ๋กœ์ปฌ์˜ ImageFolder๋ฅผ ๋งŒ๋“ฆ์œผ๋กœ์จ ๋‚˜๋งŒ์˜ ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HugGan Community Event ์— ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ์…‹์˜ ๊ฒฝ์šฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ id๋กœ config.dataset_name ์„ ์„ค์ •ํ•˜๊ณ , ๋‚˜๋งŒ์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ imagefolder ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.',Hl,_,vs='๐Ÿค— Datasets์€ Image ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ์ž๋™์œผ๋กœ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์ฝ”๋”ฉํ•˜๊ณ  PIL.Image๋กœ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‹œ๊ฐํ™” ํ•ด๋ณด๋ฉด:',Ll,W,ql,O,xs='',Kl,S,Hs="์ด๋ฏธ์ง€๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์‚ฌ์ด์ฆˆ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ์„  ์ „์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:",Pl,D,Ls="
  • Resize ๋Š” config.image_size ์— ์ •์˜๋œ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • RandomHorizontalFlip ์€ ๋žœ๋ค์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ฏธ๋Ÿฌ๋งํ•˜์—ฌ ๋ฐ์ดํ„ฐ์…‹์„ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.
  • Normalize ๋Š” ๋ชจ๋ธ์ด ์˜ˆ์ƒํ•˜๋Š” [-1, 1] ๋ฒ”์œ„๋กœ ํ”ฝ์…€ ๊ฐ’์„ ์žฌ์กฐ์ • ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ",ls,Y,ss,z,qs="ํ•™์Šต ๋„์ค‘์— preprocess ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด ๐Ÿค— Datasets์˜ set_transform ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.",as,$,es,v,Ks='์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ์‹œ๊ฐํ™”ํ•ด๋ณด์„ธ์š”. ์ด์ œ DataLoader์— ๋ฐ์ดํ„ฐ์…‹์„ ํฌํ•จํ•ด ํ•™์Šตํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!',Ms,x,ts,H,ns,L,Ps="๐Ÿงจ Diffusers์— ์‚ฌ์ „ํ•™์Šต๋œ ๋ชจ๋ธ๋“ค์€ ๋ชจ๋ธ ํด๋ž˜์Šค์—์„œ ์›ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, UNet2DModel๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด:",Us,q,ps,K,la="์ƒ˜ํ”Œ์˜ ์ด๋ฏธ์ง€ ํฌ๊ธฐ์™€ ๋ชจ๋ธ ์ถœ๋ ฅ ํฌ๊ธฐ๊ฐ€ ๋งž๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:",Js,P,js,ll,sa="ํ›Œ๋ฅญํ•ด์š”! ๋‹ค์Œ, ์ด๋ฏธ์ง€์— ์•ฝ๊ฐ„์˜ ๋…ธ์ด์ฆˆ๋ฅผ ๋”ํ•˜๊ธฐ ์œ„ํ•ด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.",ys,sl,Ts,al,aa="์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋ชจ๋ธ์„ ํ•™์Šต ๋˜๋Š” ์ถ”๋ก ์— ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๋ก ์‹œ์—, ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋…ธ์ด์ฆˆ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต์‹œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” diffusion ๊ณผ์ •์—์„œ์˜ ํŠน์ • ํฌ์ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ชจ๋ธ์˜ ์ถœ๋ ฅ ๋˜๋Š” ์ƒ˜ํ”Œ์„ ๊ฐ€์ ธ์™€ ๋…ธ์ด์ฆˆ ์Šค์ผ€์ค„ ๊ณผ ์—…๋ฐ์ดํŠธ ๊ทœ์น™์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€์— ๋…ธ์ด์ฆˆ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.",cs,el,ea="DDPMScheduler๋ฅผ ๋ณด๋ฉด ์ด์ „์œผ๋กœ๋ถ€ํ„ฐ sample_image์— ๋žœ๋คํ•œ ๋…ธ์ด์ฆˆ๋ฅผ ๋”ํ•˜๋Š” add_noise ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:",is,Ml,ms,tl,Ma='',ws,nl,ta="๋ชจ๋ธ์˜ ํ•™์Šต ๋ชฉ์ ์€ ์ด๋ฏธ์ง€์— ๋”ํ•ด์ง„ ๋…ธ์ด์ฆˆ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ์†์‹ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:",Cs,Ul,os,pl,hs,Jl,na="์ง€๊ธˆ๊นŒ์ง€, ๋ชจ๋ธ ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋ถ€๋ถ„์„ ๊ฐ–์ถ”์—ˆ์œผ๋ฉฐ ์ด์ œ ๋‚จ์€ ๊ฒƒ์€ ๋ชจ๋“  ๊ฒƒ์„ ์กฐํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.",Is,jl,Ua="์šฐ์„  ์˜ตํ‹ฐ๋งˆ์ด์ €(optimizer)์™€ ํ•™์Šต๋ฅ  ์Šค์ผ€์ค„๋Ÿฌ(learning rate scheduler)๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค:",rs,yl,Qs,Tl,pa="๊ทธ ํ›„, ๋ชจ๋ธ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ‰๊ฐ€๋ฅผ ์œ„ํ•ด, DDPMPipeline์„ ์‚ฌ์šฉํ•ด ๋ฐฐ์น˜์˜ ์ด๋ฏธ์ง€ ์ƒ˜ํ”Œ๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:",gs,cl,us,il,Ja="TensorBoard์— ๋กœ๊น…, ๊ทธ๋ž˜๋””์–ธํŠธ ๋ˆ„์  ๋ฐ ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ํ•™์Šต์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๐Ÿค— Accelerate๋ฅผ ํ•™์Šต ๋ฃจํ”„์— ํ•จ๊ป˜ ์•ž์„œ ๋งํ•œ ๋ชจ๋“  ๊ตฌ์„ฑ ์ •๋ณด๋“ค์„ ๋ฌถ์–ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ˆ๋ธŒ์— ๋ชจ๋ธ์„ ์—…๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„ ๋ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ—ˆ๋ธŒ์— ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.",Vs,ml,ja="๐Ÿ’ก์•„๋ž˜์˜ ํ•™์Šต ๋ฃจํ”„๋Š” ์–ด๋ ต๊ณ  ๊ธธ์–ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‚˜์ค‘์— ํ•œ ์ค„์˜ ์ฝ”๋“œ๋กœ ํ•™์Šต์„ ํ•œ๋‹ค๋ฉด ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๋งŒ์•ฝ ๊ธฐ๋‹ค๋ฆฌ์ง€ ๋ชปํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ถ™์—ฌ๋„ฃ๊ณ  ์ž‘๋™์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๐Ÿค—",bs,wl,ds,Cl,ya="ํœด, ์ฝ”๋“œ๊ฐ€ ๊ฝค ๋งŽ์•˜๋„ค์š”! ํ•˜์ง€๋งŒ ๐Ÿค— Accelerate์˜ notebook_launcher ํ•จ์ˆ˜์™€ ํ•™์Šต์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— ํ•™์Šต ๋ฃจํ”„, ๋ชจ๋“  ํ•™์Šต ์ธ์ˆ˜, ํ•™์Šต์— ์‚ฌ์šฉํ•  ํ”„๋กœ์„ธ์Šค ์ˆ˜(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ GPU์˜ ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ)๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค:",As,ol,fs,hl,Ta="ํ•œ๋ฒˆ ํ•™์Šต์ด ์™„๋ฃŒ๋˜๋ฉด, diffusion ๋ชจ๋ธ๋กœ ์ƒ์„ฑ๋œ ์ตœ์ข… ๐Ÿฆ‹์ด๋ฏธ์ง€๐Ÿฆ‹๋ฅผ ํ™•์ธํ•ด๋ณด๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!",Rs,Il,Bs,rl,ca='',Zs,Ql,ks,gl,ia='Unconditional ์ด๋ฏธ์ง€ ์ƒ์„ฑ์€ ํ•™์Šต๋  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ์ค‘ ํ•˜๋‚˜์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ํ•™์Šต ๋ฐฉ๋ฒ•์€ ๐Ÿงจ Diffusers ํ•™์Šต ์˜ˆ์‹œ ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:',Gs,ul,ma='
  • Textual Inversion, ํŠน์ • ์‹œ๊ฐ์  ๊ฐœ๋…์„ ํ•™์Šต์‹œ์ผœ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์— ํ†ตํ•ฉ์‹œํ‚ค๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.
  • DreamBooth, ์ฃผ์ œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ž…๋ ฅ ์ด๋ฏธ์ง€๋“ค์ด ์ฃผ์–ด์ง€๋ฉด ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ฐœ์ธํ™”๋œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.
  • Guide ๋ฐ์ดํ„ฐ์…‹์— Stable Diffusion ๋ชจ๋ธ์„ ํŒŒ์ธํŠœ๋‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • Guide LoRA๋ฅผ ์‚ฌ์šฉํ•ด ๋งค์šฐ ํฐ ๋ชจ๋ธ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์ธํŠœ๋‹ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.
  • ',Es,Vl,Fs,Al,Xs;return I=new da({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/basic_training.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/basic_training.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/basic_training.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/basic_training.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/basic_training.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/basic_training.ipynb"}]}}),r=new bl({props:{title:"Diffusion ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ธฐ",local:"diffusion-๋ชจ๋ธ์„-ํ•™์Šตํ•˜๊ธฐ",headingTag:"h1"}}),o=new ba({props:{$$slots:{default:[fa]},$$scope:{ctx:fl}}}),V=new m({props:{code:"IXBpcCUyMGluc3RhbGwlMjBkaWZmdXNlcnMlNUJ0cmFpbmluZyU1RA==",highlighted:"!pip install diffusers[training]",wrap:!1}}),d=new m({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`>>> from huggingface_hub import notebook_login >>> notebook_login()`,wrap:!1}}),f=new m({props:{code:"aGYlMjBhdXRoJTIwbG9naW4=",highlighted:"hf auth login",wrap:!1}}),B=new m({props:{code:"IXN1ZG8lMjBhcHQlMjAtcXElMjBpbnN0YWxsJTIwZ2l0LWxmcyUwQSFnaXQlMjBjb25maWclMjAtLWdsb2JhbCUyMGNyZWRlbnRpYWwuaGVscGVyJTIwc3RvcmU=",highlighted:`!sudo apt -qq install git-lfs !git config --global credential.helper store`,wrap:!1}}),Z=new bl({props:{title:"ํ•™์Šต ๊ตฌ์„ฑ",local:"ํ•™์Šต-๊ตฌ์„ฑ",headingTag:"h2"}}),G=new m({props:{code:"ZnJvbSUyMGRhdGFjbGFzc2VzJTIwaW1wb3J0JTIwZGF0YWNsYXNzJTBBJTBBJTBBJTQwZGF0YWNsYXNzJTBBY2xhc3MlMjBUcmFpbmluZ0NvbmZpZyUzQSUwQSUyMCUyMCUyMCUyMGltYWdlX3NpemUlMjAlM0QlMjAxMjglMjAlMjAlMjMlMjAlRUMlODMlOUQlRUMlODQlQjElRUIlOTAlOTglRUIlOEElOTQlMjAlRUMlOUQlQjQlRUIlQUYlQjglRUMlQTclODAlMjAlRUQlOTUlQjQlRUMlODMlODElRUIlOEYlODQlMEElMjAlMjAlMjAlMjB0cmFpbl9iYXRjaF9zaXplJTIwJTNEJTIwMTYlMEElMjAlMjAlMjAlMjBldmFsX2JhdGNoX3NpemUlMjAlM0QlMjAxNiUyMCUyMCUyMyUyMCVFRCU4RiU4OSVFQSVCMCU4MCUyMCVFQiU4RiU5OSVFQyU5NSU4OCVFQyU5NyU5MCUyMCVFQyU4MyU5OCVFRCU5NCU4QyVFQiVBNyU4MSVFRCU5NSVBMCUyMCVFQyU5RCVCNCVFQiVBRiVCOCVFQyVBNyU4MCUyMCVFQyU4OCU5OCUwQSUyMCUyMCUyMCUyMG51bV9lcG9jaHMlMjAlM0QlMjA1MCUwQSUyMCUyMCUyMCUyMGdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwcyUyMCUzRCUyMDElMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTIwJTNEJTIwMWUtNCUwQSUyMCUyMCUyMCUyMGxyX3dhcm11cF9zdGVwcyUyMCUzRCUyMDUwMCUwQSUyMCUyMCUyMCUyMHNhdmVfaW1hZ2VfZXBvY2hzJTIwJTNEJTIwMTAlMEElMjAlMjAlMjAlMjBzYXZlX21vZGVsX2Vwb2NocyUyMCUzRCUyMDMwJTBBJTIwJTIwJTIwJTIwbWl4ZWRfcHJlY2lzaW9uJTIwJTNEJTIwJTIyZnAxNiUyMiUyMCUyMCUyMyUyMCU2MG5vJTYwJUVCJThBJTk0JTIwZmxvYXQzMiUyQyUyMCVFQyU5RSU5MCVFQiU4RiU5OSUyMCVFRCU5OCVCQyVFRCU5NSVBOSUyMCVFQyVBMCU5NSVFQiVCMCU4MCVFQiU4RiU4NCVFQiVBNSVCQyUyMCVFQyU5QyU4NCVFRCU5NSU5QyUyMCU2MGZwMTYlNjAlMEElMjAlMjAlMjAlMjBvdXRwdXRfZGlyJTIwJTNEJTIwJTIyZGRwbS1idXR0ZXJmbGllcy0xMjglMjIlMjAlMjAlMjMlMjAlRUIlQTElOUMlRUMlQkIlQUMlMjAlRUIlQjAlOEYlMjBIRiUyMEh1YiVFQyU5NyU5MCUyMCVFQyVBMCU4MCVFQyU5RSVBNSVFQiU5MCU5OCVFQiU4QSU5NCUyMCVFQiVBQSVBOCVFQiU4RCVCOCVFQiVBQSU4NSUwQSUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTIwJTNEJTIwVHJ1ZSUyMCUyMCUyMyUyMCVFQyVBMCU4MCVFQyU5RSVBNSVFQiU5MCU5QyUyMCVFQiVBQSVBOCVFQiU4RCVCOCVFQyU5RCU4NCUyMEhGJTIwSHViJUVDJTk3JTkwJTIwJUVDJTk3JTg1JUVCJUExJTlDJUVCJTkzJTlDJUVEJTk1JUEwJUVDJUE3JTgwJTIwJUVDJTk3JUFDJUVCJUI2JTgwJTBBJTIwJTIwJTIwJTIwaHViX3ByaXZhdGVfcmVwbyUyMCUzRCUyME5vbmUlMEElMjAlMjAlMjAlMjBvdmVyd3JpdGVfb3V0cHV0X2RpciUyMCUzRCUyMFRydWUlMjAlMjAlMjMlMjAlRUIlODUlQjglRUQlOEElQjglRUIlQjYlODElRUMlOUQlODQlMjAlRUIlOEIlQTQlRUMlOEIlOUMlMjAlRUMlOEIlQTQlRUQlOTYlODklRUQlOTUlQTAlMjAlRUIlOTUlOEMlMjAlRUMlOUQlQjQlRUMlQTAlODQlMjAlRUIlQUElQTglRUIlOEQlQjglRUMlOTclOTAlMjAlRUIlOEQlQUUlRUMlOTYlQjQlRUMlOTQlOEMlRUMlOUElQjglRUMlQTclODAlMEElMjAlMjAlMjAlMjBzZWVkJTIwJTNEJTIwMCUwQSUwQSUwQWNvbmZpZyUyMCUzRCUyMFRyYWluaW5nQ29uZmlnKCk=",highlighted:`>>> from dataclasses import dataclass >>> @dataclass ... class TrainingConfig: ... image_size = 128 # ์ƒ์„ฑ๋˜๋Š” ์ด๋ฏธ์ง€ ํ•ด์ƒ๋„ ... train_batch_size = 16 ... eval_batch_size = 16 # ํ‰๊ฐ€ ๋™์•ˆ์— ์ƒ˜ํ”Œ๋งํ•  ์ด๋ฏธ์ง€ ์ˆ˜ ... num_epochs = 50 ... gradient_accumulation_steps = 1 ... learning_rate = 1e-4 ... lr_warmup_steps = 500 ... save_image_epochs = 10 ... save_model_epochs = 30 ... mixed_precision = "fp16" # \`no\`๋Š” float32, ์ž๋™ ํ˜ผํ•ฉ ์ •๋ฐ€๋„๋ฅผ ์œ„ํ•œ \`fp16\` ... output_dir = "ddpm-butterflies-128" # ๋กœ์ปฌ ๋ฐ HF Hub์— ์ €์žฅ๋˜๋Š” ๋ชจ๋ธ๋ช… ... push_to_hub = True # ์ €์žฅ๋œ ๋ชจ๋ธ์„ HF Hub์— ์—…๋กœ๋“œํ• ์ง€ ์—ฌ๋ถ€ ... hub_private_repo = None ... overwrite_output_dir = True # ๋…ธํŠธ๋ถ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๋•Œ ์ด์ „ ๋ชจ๋ธ์— ๋ฎ์–ด์”Œ์šธ์ง€ ... seed = 0 >>> config = TrainingConfig()`,wrap:!1}}),E=new bl({props:{title:"๋ฐ์ดํ„ฐ์…‹ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ",local:"๋ฐ์ดํ„ฐ์…‹-๋ถˆ๋Ÿฌ์˜ค๊ธฐ",headingTag:"h2"}}),X=new m({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBY29uZmlnLmRhdGFzZXRfbmFtZSUyMCUzRCUyMCUyMmh1Z2dhbiUyRnNtaXRoc29uaWFuX2J1dHRlcmZsaWVzX3N1YnNldCUyMiUwQWRhdGFzZXQlMjAlM0QlMjBsb2FkX2RhdGFzZXQoY29uZmlnLmRhdGFzZXRfbmFtZSUyQyUyMHNwbGl0JTNEJTIydHJhaW4lMjIp",highlighted:`>>> from datasets import load_dataset >>> config.dataset_name = "huggan/smithsonian_butterflies_subset" >>> dataset = load_dataset(config.dataset_name, split="train")`,wrap:!1}}),W=new m({props:{code:"aW1wb3J0JTIwbWF0cGxvdGxpYi5weXBsb3QlMjBhcyUyMHBsdCUwQSUwQWZpZyUyQyUyMGF4cyUyMCUzRCUyMHBsdC5zdWJwbG90cygxJTJDJTIwNCUyQyUyMGZpZ3NpemUlM0QoMTYlMkMlMjA0KSklMEFmb3IlMjBpJTJDJTIwaW1hZ2UlMjBpbiUyMGVudW1lcmF0ZShkYXRhc2V0JTVCJTNBNCU1RCU1QiUyMmltYWdlJTIyJTVEKSUzQSUwQSUyMCUyMCUyMCUyMGF4cyU1QmklNUQuaW1zaG93KGltYWdlKSUwQSUyMCUyMCUyMCUyMGF4cyU1QmklNUQuc2V0X2F4aXNfb2ZmKCklMEFmaWcuc2hvdygp",highlighted:`>>> import matplotlib.pyplot as plt >>> fig, axs = plt.subplots(1, 4, figsize=(16, 4)) >>> for i, image in enumerate(dataset[:4]["image"]): ... axs[i].imshow(image) ... axs[i].set_axis_off() >>> fig.show()`,wrap:!1}}),Y=new m({props:{code:"ZnJvbSUyMHRvcmNodmlzaW9uJTIwaW1wb3J0JTIwdHJhbnNmb3JtcyUwQSUwQXByZXByb2Nlc3MlMjAlM0QlMjB0cmFuc2Zvcm1zLkNvbXBvc2UoJTBBJTIwJTIwJTIwJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdHJhbnNmb3Jtcy5SZXNpemUoKGNvbmZpZy5pbWFnZV9zaXplJTJDJTIwY29uZmlnLmltYWdlX3NpemUpKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyYW5zZm9ybXMuUmFuZG9tSG9yaXpvbnRhbEZsaXAoKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyYW5zZm9ybXMuVG9UZW5zb3IoKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyYW5zZm9ybXMuTm9ybWFsaXplKCU1QjAuNSU1RCUyQyUyMCU1QjAuNSU1RCklMkMlMEElMjAlMjAlMjAlMjAlNUQlMEEp",highlighted:`>>> from torchvision import transforms >>> preprocess = transforms.Compose( ... [ ... transforms.Resize((config.image_size, config.image_size)), ... transforms.RandomHorizontalFlip(), ... transforms.ToTensor(), ... transforms.Normalize([0.5], [0.5]), ... ] ... )`,wrap:!1}}),$=new m({props:{code:"ZGVmJTIwdHJhbnNmb3JtKGV4YW1wbGVzKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlcyUyMCUzRCUyMCU1QnByZXByb2Nlc3MoaW1hZ2UuY29udmVydCglMjJSR0IlMjIpKSUyMGZvciUyMGltYWdlJTIwaW4lMjBleGFtcGxlcyU1QiUyMmltYWdlJTIyJTVEJTVEJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIyaW1hZ2VzJTIyJTNBJTIwaW1hZ2VzJTdEJTBBJTBBJTBBZGF0YXNldC5zZXRfdHJhbnNmb3JtKHRyYW5zZm9ybSk=",highlighted:`>>> def transform(examples): ... images = [preprocess(image.convert("RGB")) for image in examples["image"]] ... return {"images": images} >>> dataset.set_transform(transform)`,wrap:!1}}),x=new m({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEF0cmFpbl9kYXRhbG9hZGVyJTIwJTNEJTIwdG9yY2gudXRpbHMuZGF0YS5EYXRhTG9hZGVyKGRhdGFzZXQlMkMlMjBiYXRjaF9zaXplJTNEY29uZmlnLnRyYWluX2JhdGNoX3NpemUlMkMlMjBzaHVmZmxlJTNEVHJ1ZSk=",highlighted:`>>> import torch >>> train_dataloader = torch.utils.data.DataLoader(dataset, batch_size=config.train_batch_size, shuffle=True)`,wrap:!1}}),H=new bl({props:{title:"UNet2DModel ์ƒ์„ฑํ•˜๊ธฐ",local:"unet2dmodel-์ƒ์„ฑํ•˜๊ธฐ",headingTag:"h2"}}),q=new m({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFVOZXQyRE1vZGVsJTBBJTBBbW9kZWwlMjAlM0QlMjBVTmV0MkRNb2RlbCglMEElMjAlMjAlMjAlMjBzYW1wbGVfc2l6ZSUzRGNvbmZpZy5pbWFnZV9zaXplJTJDJTIwJTIwJTIzJTIwJUVEJTgzJTgwJUVBJUIyJTlGJTIwJUVDJTlEJUI0JUVCJUFGJUI4JUVDJUE3JTgwJTIwJUVEJTk1JUI0JUVDJTgzJTgxJUVCJThGJTg0JTBBJTIwJTIwJTIwJTIwaW5fY2hhbm5lbHMlM0QzJTJDJTIwJTIwJTIzJTIwJUVDJTlFJTg1JUVCJUEwJUE1JTIwJUVDJUIxJTg0JUVCJTg0JTkwJTIwJUVDJTg4JTk4JTJDJTIwUkdCJTIwJUVDJTlEJUI0JUVCJUFGJUI4JUVDJUE3JTgwJUVDJTk3JTkwJUVDJTg0JTlDJTIwMyUwQSUyMCUyMCUyMCUyMG91dF9jaGFubmVscyUzRDMlMkMlMjAlMjAlMjMlMjAlRUMlQjYlOUMlRUIlQTAlQTUlMjAlRUMlQjElODQlRUIlODQlOTAlMjAlRUMlODglOTglMEElMjAlMjAlMjAlMjBsYXllcnNfcGVyX2Jsb2NrJTNEMiUyQyUyMCUyMCUyMyUyMFVOZXQlMjAlRUIlQjglOTQlRUIlOUYlQUQlRUIlOEIlQjklMjAlRUIlQUElODclMjAlRUElQjAlOUMlRUMlOUQlOTglMjBSZXNOZXQlMjAlRUIlQTAlODglRUMlOUQlQjQlRUMlOTYlQjQlRUElQjAlODAlMjAlRUMlODIlQUMlRUMlOUElQTklRUIlOTAlOTglRUIlOEElOTQlRUMlQTclODAlMEElMjAlMjAlMjAlMjBibG9ja19vdXRfY2hhbm5lbHMlM0QoMTI4JTJDJTIwMTI4JTJDJTIwMjU2JTJDJTIwMjU2JTJDJTIwNTEyJTJDJTIwNTEyKSUyQyUyMCUyMCUyMyUyMCVFQSVCMCU4MSUyMFVOZXQlMjAlRUIlQjglOTQlRUIlOUYlQUQlRUMlOUQlODQlMjAlRUMlOUMlODQlRUQlOTUlOUMlMjAlRUMlQjYlOUMlRUIlQTAlQTUlMjAlRUMlQjElODQlRUIlODQlOTAlMjAlRUMlODglOTglMEElMjAlMjAlMjAlMjBkb3duX2Jsb2NrX3R5cGVzJTNEKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkRvd25CbG9jazJEJTIyJTJDJTIwJTIwJTIzJTIwJUVDJTlEJUJDJUVCJUIwJTk4JUVDJUEwJTgxJUVDJTlEJUI4JTIwUmVzTmV0JTIwJUVCJThCJUE0JUVDJTlBJUI0JUVDJTgzJTk4JUVEJTk0JThDJUVCJUE3JTgxJTIwJUVCJUI4JTk0JUVCJTlGJUFEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyRG93bkJsb2NrMkQlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJEb3duQmxvY2syRCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkRvd25CbG9jazJEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyQXR0bkRvd25CbG9jazJEJTIyJTJDJTIwJTIwJTIzJTIwc3BhdGlhbCUyMHNlbGYtYXR0ZW50aW9uJUVDJTlEJUI0JTIwJUVEJThGJUFDJUVEJTk1JUE4JUVCJTkwJTlDJTIwJUVDJTlEJUJDJUVCJUIwJTk4JUVDJUEwJTgxJUVDJTlEJUI4JTIwUmVzTmV0JTIwJUVCJThCJUE0JUVDJTlBJUI0JUVDJTgzJTk4JUVEJTk0JThDJUVCJUE3JTgxJTIwJUVCJUI4JTk0JUVCJTlGJUFEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyRG93bkJsb2NrMkQlMjIlMkMlMEElMjAlMjAlMjAlMjApJTJDJTBBJTIwJTIwJTIwJTIwdXBfYmxvY2tfdHlwZXMlM0QoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyVXBCbG9jazJEJTIyJTJDJTIwJTIwJTIzJTIwJUVDJTlEJUJDJUVCJUIwJTk4JUVDJUEwJTgxJUVDJTlEJUI4JTIwUmVzTmV0JTIwJUVDJTk3JTg1JUVDJTgzJTk4JUVEJTk0JThDJUVCJUE3JTgxJTIwJUVCJUI4JTk0JUVCJTlGJUFEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyQXR0blVwQmxvY2syRCUyMiUyQyUyMCUyMCUyMyUyMHNwYXRpYWwlMjBzZWxmLWF0dGVudGlvbiVFQyU5RCVCNCUyMCVFRCU4RiVBQyVFRCU5NSVBOCVFQiU5MCU5QyUyMCVFQyU5RCVCQyVFQiVCMCU5OCVFQyVBMCU4MSVFQyU5RCVCOCUyMFJlc05ldCUyMCVFQyU5NyU4NSVFQyU4MyU5OCVFRCU5NCU4QyVFQiVBNyU4MSUyMCVFQiVCOCU5NCVFQiU5RiVBRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlVwQmxvY2syRCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlVwQmxvY2syRCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlVwQmxvY2syRCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlVwQmxvY2syRCUyMiUyQyUwQSUyMCUyMCUyMCUyMCklMkMlMEEp",highlighted:`>>> from diffusers import UNet2DModel >>> model = UNet2DModel( ... sample_size=config.image_size, # ํƒ€๊ฒŸ ์ด๋ฏธ์ง€ ํ•ด์ƒ๋„ ... in_channels=3, # ์ž…๋ ฅ ์ฑ„๋„ ์ˆ˜, RGB ์ด๋ฏธ์ง€์—์„œ 3 ... out_channels=3, # ์ถœ๋ ฅ ์ฑ„๋„ ์ˆ˜ ... layers_per_block=2, # UNet ๋ธ”๋Ÿญ๋‹น ๋ช‡ ๊ฐœ์˜ ResNet ๋ ˆ์ด์–ด๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€ ... block_out_channels=(128, 128, 256, 256, 512, 512), # ๊ฐ UNet ๋ธ”๋Ÿญ์„ ์œ„ํ•œ ์ถœ๋ ฅ ์ฑ„๋„ ์ˆ˜ ... down_block_types=( ... "DownBlock2D", # ์ผ๋ฐ˜์ ์ธ ResNet ๋‹ค์šด์ƒ˜ํ”Œ๋ง ๋ธ”๋Ÿญ ... "DownBlock2D", ... "DownBlock2D", ... "DownBlock2D", ... "AttnDownBlock2D", # spatial self-attention์ด ํฌํ•จ๋œ ์ผ๋ฐ˜์ ์ธ ResNet ๋‹ค์šด์ƒ˜ํ”Œ๋ง ๋ธ”๋Ÿญ ... "DownBlock2D", ... ), ... up_block_types=( ... "UpBlock2D", # ์ผ๋ฐ˜์ ์ธ ResNet ์—…์ƒ˜ํ”Œ๋ง ๋ธ”๋Ÿญ ... "AttnUpBlock2D", # spatial self-attention์ด ํฌํ•จ๋œ ์ผ๋ฐ˜์ ์ธ ResNet ์—…์ƒ˜ํ”Œ๋ง ๋ธ”๋Ÿญ ... "UpBlock2D", ... "UpBlock2D", ... "UpBlock2D", ... "UpBlock2D", ... ), ... )`,wrap:!1}}),P=new m({props:{code:"c2FtcGxlX2ltYWdlJTIwJTNEJTIwZGF0YXNldCU1QjAlNUQlNUIlMjJpbWFnZXMlMjIlNUQudW5zcXVlZXplKDApJTBBcHJpbnQoJTIySW5wdXQlMjBzaGFwZSUzQSUyMiUyQyUyMHNhbXBsZV9pbWFnZS5zaGFwZSklMEElMEFwcmludCglMjJPdXRwdXQlMjBzaGFwZSUzQSUyMiUyQyUyMG1vZGVsKHNhbXBsZV9pbWFnZSUyQyUyMHRpbWVzdGVwJTNEMCkuc2FtcGxlLnNoYXBlKQ==",highlighted:`>>> sample_image = dataset[0]["images"].unsqueeze(0) >>> print("Input shape:", sample_image.shape) Input shape: torch.Size([1, 3, 128, 128]) >>> print("Output shape:", model(sample_image, timestep=0).sample.shape) Output shape: torch.Size([1, 3, 128, 128])`,wrap:!1}}),sl=new bl({props:{title:"์Šค์ผ€์ค„๋Ÿฌ ์ƒ์„ฑํ•˜๊ธฐ",local:"์Šค์ผ€์ค„๋Ÿฌ-์ƒ์„ฑํ•˜๊ธฐ",headingTag:"h2"}}),Ml=new m({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRERQTVNjaGVkdWxlciUwQSUwQW5vaXNlX3NjaGVkdWxlciUyMCUzRCUyMEREUE1TY2hlZHVsZXIobnVtX3RyYWluX3RpbWVzdGVwcyUzRDEwMDApJTBBbm9pc2UlMjAlM0QlMjB0b3JjaC5yYW5kbihzYW1wbGVfaW1hZ2Uuc2hhcGUpJTBBdGltZXN0ZXBzJTIwJTNEJTIwdG9yY2guTG9uZ1RlbnNvciglNUI1MCU1RCklMEFub2lzeV9pbWFnZSUyMCUzRCUyMG5vaXNlX3NjaGVkdWxlci5hZGRfbm9pc2Uoc2FtcGxlX2ltYWdlJTJDJTIwbm9pc2UlMkMlMjB0aW1lc3RlcHMpJTBBJTBBSW1hZ2UuZnJvbWFycmF5KCgobm9pc3lfaW1hZ2UucGVybXV0ZSgwJTJDJTIwMiUyQyUyMDMlMkMlMjAxKSUyMCUyQiUyMDEuMCklMjAqJTIwMTI3LjUpLnR5cGUodG9yY2gudWludDgpLm51bXB5KCklNUIwJTVEKQ==",highlighted:`>>> import torch >>> from PIL import Image >>> from diffusers import DDPMScheduler >>> noise_scheduler = DDPMScheduler(num_train_timesteps=1000) >>> noise = torch.randn(sample_image.shape) >>> timesteps = torch.LongTensor([50]) >>> noisy_image = noise_scheduler.add_noise(sample_image, noise, timesteps) >>> Image.fromarray(((noisy_image.permute(0, 2, 3, 1) + 1.0) * 127.5).type(torch.uint8).numpy()[0])`,wrap:!1}}),Ul=new m({props:{code:"aW1wb3J0JTIwdG9yY2gubm4uZnVuY3Rpb25hbCUyMGFzJTIwRiUwQSUwQW5vaXNlX3ByZWQlMjAlM0QlMjBtb2RlbChub2lzeV9pbWFnZSUyQyUyMHRpbWVzdGVwcykuc2FtcGxlJTBBbG9zcyUyMCUzRCUyMEYubXNlX2xvc3Mobm9pc2VfcHJlZCUyQyUyMG5vaXNlKQ==",highlighted:`>>> import torch.nn.functional as F >>> noise_pred = model(noisy_image, timesteps).sample >>> loss = F.mse_loss(noise_pred, noise)`,wrap:!1}}),pl=new bl({props:{title:"๋ชจ๋ธ ํ•™์Šตํ•˜๊ธฐ",local:"๋ชจ๋ธ-ํ•™์Šตํ•˜๊ธฐ",headingTag:"h2"}}),yl=new m({props:{code:"ZnJvbSUyMGRpZmZ1c2Vycy5vcHRpbWl6YXRpb24lMjBpbXBvcnQlMjBnZXRfY29zaW5lX3NjaGVkdWxlX3dpdGhfd2FybXVwJTBBJTBBb3B0aW1pemVyJTIwJTNEJTIwdG9yY2gub3B0aW0uQWRhbVcobW9kZWwucGFyYW1ldGVycygpJTJDJTIwbHIlM0Rjb25maWcubGVhcm5pbmdfcmF0ZSklMEFscl9zY2hlZHVsZXIlMjAlM0QlMjBnZXRfY29zaW5lX3NjaGVkdWxlX3dpdGhfd2FybXVwKCUwQSUyMCUyMCUyMCUyMG9wdGltaXplciUzRG9wdGltaXplciUyQyUwQSUyMCUyMCUyMCUyMG51bV93YXJtdXBfc3RlcHMlM0Rjb25maWcubHJfd2FybXVwX3N0ZXBzJTJDJTBBJTIwJTIwJTIwJTIwbnVtX3RyYWluaW5nX3N0ZXBzJTNEKGxlbih0cmFpbl9kYXRhbG9hZGVyKSUyMColMjBjb25maWcubnVtX2Vwb2NocyklMkMlMEEp",highlighted:`>>> from diffusers.optimization import get_cosine_schedule_with_warmup >>> optimizer = torch.optim.AdamW(model.parameters(), lr=config.learning_rate) >>> lr_scheduler = get_cosine_schedule_with_warmup( ... optimizer=optimizer, ... num_warmup_steps=config.lr_warmup_steps, ... num_training_steps=(len(train_dataloader) * config.num_epochs), ... )`,wrap:!1}}),cl=new m({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEREUE1QaXBlbGluZSUwQWltcG9ydCUyMG1hdGglMEFpbXBvcnQlMjBvcyUwQSUwQSUwQWRlZiUyMG1ha2VfZ3JpZChpbWFnZXMlMkMlMjByb3dzJTJDJTIwY29scyklM0ElMEElMjAlMjAlMjAlMjB3JTJDJTIwaCUyMCUzRCUyMGltYWdlcyU1QjAlNUQuc2l6ZSUwQSUyMCUyMCUyMCUyMGdyaWQlMjAlM0QlMjBJbWFnZS5uZXcoJTIyUkdCJTIyJTJDJTIwc2l6ZSUzRChjb2xzJTIwKiUyMHclMkMlMjByb3dzJTIwKiUyMGgpKSUwQSUyMCUyMCUyMCUyMGZvciUyMGklMkMlMjBpbWFnZSUyMGluJTIwZW51bWVyYXRlKGltYWdlcyklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBncmlkLnBhc3RlKGltYWdlJTJDJTIwYm94JTNEKGklMjAlMjUlMjBjb2xzJTIwKiUyMHclMkMlMjBpJTIwJTJGJTJGJTIwY29scyUyMColMjBoKSklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBncmlkJTBBJTBBJTBBZGVmJTIwZXZhbHVhdGUoY29uZmlnJTJDJTIwZXBvY2glMkMlMjBwaXBlbGluZSklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjAlRUIlOUUlOUMlRUIlOEQlQTQlRUQlOTUlOUMlMjAlRUIlODUlQjglRUMlOUQlQjQlRUMlQTYlODglRUIlQTElOUMlMjAlRUIlQjYlODAlRUQlODQlQjAlMjAlRUMlOUQlQjQlRUIlQUYlQjglRUMlQTclODAlRUIlQTUlQkMlMjAlRUMlQjYlOTQlRUMlQjYlOUMlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuKCVFQyU5RCVCNCVFQiU4QSU5NCUyMCVFQyU5NyVBRCVFQyVBMCU4NCVFRCU4QyU4QyUyMGRpZmZ1c2lvbiUyMCVFQSVCMyVCQyVFQyVBMCU5NSVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNC4pJTBBJTIwJTIwJTIwJTIwJTIzJTIwJUVBJUI4JUIwJUVCJUIzJUI4JTIwJUVEJThDJThDJUVDJTlEJUI0JUVEJTk0JTg0JUVCJTlEJUJDJUVDJTlEJUI4JTIwJUVDJUI2JTlDJUVCJUEwJUE1JTIwJUVEJTk4JTk1JUVEJTgzJTlDJUVCJThBJTk0JTIwJTYwTGlzdCU1QlBJTC5JbWFnZSU1RCU2MCUyMCVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNC4lMEElMjAlMjAlMjAlMjBpbWFnZXMlMjAlM0QlMjBwaXBlbGluZSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEY29uZmlnLmV2YWxfYmF0Y2hfc2l6ZSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGdlbmVyYXRvciUzRHRvcmNoLm1hbnVhbF9zZWVkKGNvbmZpZy5zZWVkKSUyQyUwQSUyMCUyMCUyMCUyMCkuaW1hZ2VzJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwJUVDJTlEJUI0JUVCJUFGJUI4JUVDJUE3JTgwJUVCJTkzJUE0JUVDJTlEJTg0JTIwJUVBJUI3JUI4JUVCJUE2JUFDJUVCJTkzJTlDJUVCJUExJTlDJTIwJUVCJUE3JThDJUVCJTkzJUE0JUVDJTk2JUI0JUVDJUE0JThEJUVCJThCJTg4JUVCJThCJUE0LiUwQSUyMCUyMCUyMCUyMGltYWdlX2dyaWQlMjAlM0QlMjBtYWtlX2dyaWQoaW1hZ2VzJTJDJTIwcm93cyUzRDQlMkMlMjBjb2xzJTNENCklMEElMEElMjAlMjAlMjAlMjAlMjMlMjAlRUMlOUQlQjQlRUIlQUYlQjglRUMlQTclODAlRUIlOTMlQTQlRUMlOUQlODQlMjAlRUMlQTAlODAlRUMlOUUlQTUlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTBBJTIwJTIwJTIwJTIwdGVzdF9kaXIlMjAlM0QlMjBvcy5wYXRoLmpvaW4oY29uZmlnLm91dHB1dF9kaXIlMkMlMjAlMjJzYW1wbGVzJTIyKSUwQSUyMCUyMCUyMCUyMG9zLm1ha2VkaXJzKHRlc3RfZGlyJTJDJTIwZXhpc3Rfb2slM0RUcnVlKSUwQSUyMCUyMCUyMCUyMGltYWdlX2dyaWQuc2F2ZShmJTIyJTdCdGVzdF9kaXIlN0QlMkYlN0JlcG9jaCUzQTA0ZCU3RC5wbmclMjIp",highlighted:`>>> from diffusers import DDPMPipeline >>> import math >>> import os >>> def make_grid(images, rows, cols): ... w, h = images[0].size ... grid = Image.new("RGB", size=(cols * w, rows * h)) ... for i, image in enumerate(images): ... grid.paste(image, box=(i % cols * w, i // cols * h)) ... return grid >>> def evaluate(config, epoch, pipeline): ... # ๋žœ๋คํ•œ ๋…ธ์ด์ฆˆ๋กœ ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.(์ด๋Š” ์—ญ์ „ํŒŒ diffusion ๊ณผ์ •์ž…๋‹ˆ๋‹ค.) ... # ๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ ์ถœ๋ ฅ ํ˜•ํƒœ๋Š” \`List[PIL.Image]\` ์ž…๋‹ˆ๋‹ค. ... images = pipeline( ... batch_size=config.eval_batch_size, ... generator=torch.manual_seed(config.seed), ... ).images ... # ์ด๋ฏธ์ง€๋“ค์„ ๊ทธ๋ฆฌ๋“œ๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ... image_grid = make_grid(images, rows=4, cols=4) ... # ์ด๋ฏธ์ง€๋“ค์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ... test_dir = os.path.join(config.output_dir, "samples") ... os.makedirs(test_dir, exist_ok=True) ... image_grid.save(f"{test_dir}/{epoch:04d}.png")`,wrap:!1}}),wl=new m({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUwQWZyb20lMjBodWdnaW5nZmFjZV9odWIlMjBpbXBvcnQlMjBjcmVhdGVfcmVwbyUyQyUyMHVwbG9hZF9mb2xkZXIlMEFmcm9tJTIwdHFkbS5hdXRvJTIwaW1wb3J0JTIwdHFkbSUwQWZyb20lMjBwYXRobGliJTIwaW1wb3J0JTIwUGF0aCUwQWltcG9ydCUyMG9zJTBBJTBBJTBBZGVmJTIwdHJhaW5fbG9vcChjb25maWclMkMlMjBtb2RlbCUyQyUyMG5vaXNlX3NjaGVkdWxlciUyQyUyMG9wdGltaXplciUyQyUyMHRyYWluX2RhdGFsb2FkZXIlMkMlMjBscl9zY2hlZHVsZXIpJTNBJTBBJTIwJTIwJTIwJTIwJTIzJTIwSW5pdGlhbGl6ZSUyMGFjY2VsZXJhdG9yJTIwYW5kJTIwdGVuc29yYm9hcmQlMjBsb2dnaW5nJTBBJTIwJTIwJTIwJTIwYWNjZWxlcmF0b3IlMjAlM0QlMjBBY2NlbGVyYXRvciglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtaXhlZF9wcmVjaXNpb24lM0Rjb25maWcubWl4ZWRfcHJlY2lzaW9uJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNEY29uZmlnLmdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwcyUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvZ193aXRoJTNEJTIydGVuc29yYm9hcmQlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9qZWN0X2RpciUzRG9zLnBhdGguam9pbihjb25maWcub3V0cHV0X2RpciUyQyUyMCUyMmxvZ3MlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMGlmJTIwYWNjZWxlcmF0b3IuaXNfbWFpbl9wcm9jZXNzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBjb25maWcub3V0cHV0X2RpciUyMGlzJTIwbm90JTIwTm9uZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9zLm1ha2VkaXJzKGNvbmZpZy5vdXRwdXRfZGlyJTJDJTIwZXhpc3Rfb2slM0RUcnVlKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwY29uZmlnLnB1c2hfdG9faHViJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVwb19pZCUyMCUzRCUyMGNyZWF0ZV9yZXBvKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlcG9faWQlM0Rjb25maWcuaHViX21vZGVsX2lkJTIwb3IlMjBQYXRoKGNvbmZpZy5vdXRwdXRfZGlyKS5uYW1lJTJDJTIwZXhpc3Rfb2slM0RUcnVlJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKS5yZXBvX2lkJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWNjZWxlcmF0b3IuaW5pdF90cmFja2VycyglMjJ0cmFpbl9leGFtcGxlJTIyKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMCVFQiVBQSVBOCVFQiU5MyVBMCUyMCVFQSVCMiU4MyVFQyU5RCVCNCUyMCVFQyVBNCU4MCVFQiVCOSU4NCVFQiU5MCU5OCVFQyU5NyU4OCVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMEElMjAlMjAlMjAlMjAlMjMlMjAlRUElQjglQjAlRUMlOTYlQjUlRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUQlOTUlQTAlMjAlRUQlOEElQjklRUMlQTAlOTUlRUQlOTUlOUMlMjAlRUMlODglOUMlRUMlODQlOUMlRUIlOEElOTQlMjAlRUMlOTclODYlRUMlOUMlQkMlRUIlQTklQjAlMjAlRUMlQTQlODAlRUIlQjklODQlRUQlOTUlOUMlMjAlRUIlQjAlQTklRUIlQjIlOTUlRUMlOTclOTAlMjAlRUMlQTAlOUMlRUElQjMlQjUlRUQlOTUlOUMlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUIlOEYlOTklRUMlOUQlQkMlRUQlOTUlOUMlMjAlRUMlODglOUMlRUMlODQlOUMlRUIlQTElOUMlMjAlRUElQjAlOUQlRUMlQjIlQjQlRUMlOUQlOTglMjAlRUMlOTUlOTUlRUMlQjYlOTUlRUMlOUQlODQlMjAlRUQlOTIlODAlRUIlQTklQjQlMjAlRUIlOTAlQTklRUIlOEIlODglRUIlOEIlQTQuJTBBJTIwJTIwJTIwJTIwbW9kZWwlMkMlMjBvcHRpbWl6ZXIlMkMlMjB0cmFpbl9kYXRhbG9hZGVyJTJDJTIwbHJfc2NoZWR1bGVyJTIwJTNEJTIwYWNjZWxlcmF0b3IucHJlcGFyZSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtb2RlbCUyQyUyMG9wdGltaXplciUyQyUyMHRyYWluX2RhdGFsb2FkZXIlMkMlMjBscl9zY2hlZHVsZXIlMEElMjAlMjAlMjAlMjApJTBBJTBBJTIwJTIwJTIwJTIwZ2xvYmFsX3N0ZXAlMjAlM0QlMjAwJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwJUVDJTlEJUI0JUVDJUEwJTlDJTIwJUVCJUFBJUE4JUVCJThEJUI4JUVDJTlEJTg0JTIwJUVEJTk1JTk5JUVDJThBJUI1JUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUwQSUyMCUyMCUyMCUyMGZvciUyMGVwb2NoJTIwaW4lMjByYW5nZShjb25maWcubnVtX2Vwb2NocyklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIlMjAlM0QlMjB0cWRtKHRvdGFsJTNEbGVuKHRyYWluX2RhdGFsb2FkZXIpJTJDJTIwZGlzYWJsZSUzRG5vdCUyMGFjY2VsZXJhdG9yLmlzX2xvY2FsX21haW5fcHJvY2VzcyklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIuc2V0X2Rlc2NyaXB0aW9uKGYlMjJFcG9jaCUyMCU3QmVwb2NoJTdEJTIyKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZvciUyMHN0ZXAlMkMlMjBiYXRjaCUyMGluJTIwZW51bWVyYXRlKHRyYWluX2RhdGFsb2FkZXIpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY2xlYW5faW1hZ2VzJTIwJTNEJTIwYmF0Y2glNUIlMjJpbWFnZXMlMjIlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAlRUMlOUQlQjQlRUIlQUYlQjglRUMlQTclODAlRUMlOTclOTAlMjAlRUIlOEQlOTQlRUQlOTUlQTAlMjAlRUIlODUlQjglRUMlOUQlQjQlRUMlQTYlODglRUIlQTUlQkMlMjAlRUMlODMlOTglRUQlOTQlOEMlRUIlQTclODElRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbm9pc2UlMjAlM0QlMjB0b3JjaC5yYW5kbihjbGVhbl9pbWFnZXMuc2hhcGUlMkMlMjBkZXZpY2UlM0RjbGVhbl9pbWFnZXMuZGV2aWNlKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJzJTIwJTNEJTIwY2xlYW5faW1hZ2VzLnNoYXBlJTVCMCU1RCUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFQSVCMCU4MSUyMCVFQyU5RCVCNCVFQiVBRiVCOCVFQyVBNyU4MCVFQiVBNSVCQyUyMCVFQyU5QyU4NCVFRCU5NSU5QyUyMCVFQiU5RSU5QyVFQiU4RCVBNCVFRCU5NSU5QyUyMCVFRCU4MyU4MCVFQyU5RSU4NCVFQyU4QSVBNCVFRCU4NSU5RCh0aW1lc3RlcCklRUMlOUQlODQlMjAlRUMlODMlOTglRUQlOTQlOEMlRUIlQTclODElRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGltZXN0ZXBzJTIwJTNEJTIwdG9yY2gucmFuZGludCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAwJTJDJTIwbm9pc2Vfc2NoZWR1bGVyLmNvbmZpZy5udW1fdHJhaW5fdGltZXN0ZXBzJTJDJTIwKGJzJTJDKSUyQyUyMGRldmljZSUzRGNsZWFuX2ltYWdlcy5kZXZpY2UlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkdHlwZSUzRHRvcmNoLmludDY0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFQSVCMCU4MSUyMCVFRCU4MyU4MCVFQyU5RSU4NCVFQyU4QSVBNCVFRCU4NSU5RCVFQyU5RCU5OCUyMCVFQiU4NSVCOCVFQyU5RCVCNCVFQyVBNiU4OCUyMCVFRCU4MSVBQyVFQSVCOCVCMCVFQyU5NyU5MCUyMCVFQiU5NCVCMCVFQiU5RCVCQyUyMCVFQSVCOSVBOCVFQiU4MSU5NyVFRCU5NSU5QyUyMCVFQyU5RCVCNCVFQiVBRiVCOCVFQyVBNyU4MCVFQyU5NyU5MCUyMCVFQiU4NSVCOCVFQyU5RCVCNCVFQyVBNiU4OCVFQiVBNSVCQyUyMCVFQyVCNiU5NCVFQSVCMCU4MCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAoJUVDJTlEJUI0JUVCJThBJTk0JTIwZm93YXJkJTIwZGlmZnVzaW9uJTIwJUVBJUIzJUJDJUVDJUEwJTk1JUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBub2lzeV9pbWFnZXMlMjAlM0QlMjBub2lzZV9zY2hlZHVsZXIuYWRkX25vaXNlKGNsZWFuX2ltYWdlcyUyQyUyMG5vaXNlJTJDJTIwdGltZXN0ZXBzKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdpdGglMjBhY2NlbGVyYXRvci5hY2N1bXVsYXRlKG1vZGVsKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFQiU4NSVCOCVFQyU5RCVCNCVFQyVBNiU4OCVFQiVBNSVCQyUyMCVFQiVCMCU5OCVFQiVCMyVCNSVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQyU5OCU4OCVFQyVCOCVBMSVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBub2lzZV9wcmVkJTIwJTNEJTIwbW9kZWwobm9pc3lfaW1hZ2VzJTJDJTIwdGltZXN0ZXBzJTJDJTIwcmV0dXJuX2RpY3QlM0RGYWxzZSklNUIwJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9zcyUyMCUzRCUyMEYubXNlX2xvc3Mobm9pc2VfcHJlZCUyQyUyMG5vaXNlKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFjY2VsZXJhdG9yLmJhY2t3YXJkKGxvc3MpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWNjZWxlcmF0b3IuY2xpcF9ncmFkX25vcm1fKG1vZGVsLnBhcmFtZXRlcnMoKSUyQyUyMDEuMCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuc3RlcCgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbHJfc2NoZWR1bGVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplci56ZXJvX2dyYWQoKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByb2dyZXNzX2Jhci51cGRhdGUoMSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb2dzJTIwJTNEJTIwJTdCJTIybG9zcyUyMiUzQSUyMGxvc3MuZGV0YWNoKCkuaXRlbSgpJTJDJTIwJTIybHIlMjIlM0ElMjBscl9zY2hlZHVsZXIuZ2V0X2xhc3RfbHIoKSU1QjAlNUQlMkMlMjAlMjJzdGVwJTIyJTNBJTIwZ2xvYmFsX3N0ZXAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIuc2V0X3Bvc3RmaXgoKipsb2dzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFjY2VsZXJhdG9yLmxvZyhsb2dzJTJDJTIwc3RlcCUzRGdsb2JhbF9zdGVwKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGdsb2JhbF9zdGVwJTIwJTJCJTNEJTIwMSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCVFQSVCMCU4MSUyMCVFQyU5NyU5MCVFRCU4RiVBQyVFRCU4MSVBQyVFQSVCMCU4MCUyMCVFQiU4MSU5RCVFQiU4MiU5QyUyMCVFRCU5QiU4NCUyMGV2YWx1YXRlKCklRUMlOTklODAlMjAlRUIlQUElODclMjAlRUElQjAlODAlRUMlQTclODAlMjAlRUIlOEQlQjAlRUIlQUElQTglMjAlRUMlOUQlQjQlRUIlQUYlQjglRUMlQTclODAlRUIlQTUlQkMlMjAlRUMlODQlQTAlRUQlODMlOUQlRUMlQTAlODElRUMlOUMlQkMlRUIlQTElOUMlMjAlRUMlODMlOTglRUQlOTQlOEMlRUIlQTclODElRUQlOTUlOTglRUElQjMlQTAlMjAlRUIlQUElQTglRUIlOEQlQjglRUMlOUQlODQlMjAlRUMlQTAlODAlRUMlOUUlQTUlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBhY2NlbGVyYXRvci5pc19tYWluX3Byb2Nlc3MlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwaXBlbGluZSUyMCUzRCUyMEREUE1QaXBlbGluZSh1bmV0JTNEYWNjZWxlcmF0b3IudW53cmFwX21vZGVsKG1vZGVsKSUyQyUyMHNjaGVkdWxlciUzRG5vaXNlX3NjaGVkdWxlciklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMChlcG9jaCUyMCUyQiUyMDEpJTIwJTI1JTIwY29uZmlnLnNhdmVfaW1hZ2VfZXBvY2hzJTIwJTNEJTNEJTIwMCUyMG9yJTIwZXBvY2glMjAlM0QlM0QlMjBjb25maWcubnVtX2Vwb2NocyUyMC0lMjAxJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXZhbHVhdGUoY29uZmlnJTJDJTIwZXBvY2glMkMlMjBwaXBlbGluZSklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMChlcG9jaCUyMCUyQiUyMDEpJTIwJTI1JTIwY29uZmlnLnNhdmVfbW9kZWxfZXBvY2hzJTIwJTNEJTNEJTIwMCUyMG9yJTIwZXBvY2glMjAlM0QlM0QlMjBjb25maWcubnVtX2Vwb2NocyUyMC0lMjAxJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBjb25maWcucHVzaF90b19odWIlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB1cGxvYWRfZm9sZGVyKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlcG9faWQlM0RyZXBvX2lkJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZm9sZGVyX3BhdGglM0Rjb25maWcub3V0cHV0X2RpciUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbW1pdF9tZXNzYWdlJTNEZiUyMkVwb2NoJTIwJTdCZXBvY2glN0QlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZ25vcmVfcGF0dGVybnMlM0QlNUIlMjJzdGVwXyolMjIlMkMlMjAlMjJlcG9jaF8qJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVsc2UlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwaXBlbGluZS5zYXZlX3ByZXRyYWluZWQoY29uZmlnLm91dHB1dF9kaXIp",highlighted:`>>> from accelerate import Accelerator >>> from huggingface_hub import create_repo, upload_folder >>> from tqdm.auto import tqdm >>> from pathlib import Path >>> import os >>> def train_loop(config, model, noise_scheduler, optimizer, train_dataloader, lr_scheduler): ... # Initialize accelerator and tensorboard logging ... accelerator = Accelerator( ... mixed_precision=config.mixed_precision, ... gradient_accumulation_steps=config.gradient_accumulation_steps, ... log_with="tensorboard", ... project_dir=os.path.join(config.output_dir, "logs"), ... ) ... if accelerator.is_main_process: ... if config.output_dir is not None: ... os.makedirs(config.output_dir, exist_ok=True) ... if config.push_to_hub: ... repo_id = create_repo( ... repo_id=config.hub_model_id or Path(config.output_dir).name, exist_ok=True ... ).repo_id ... accelerator.init_trackers("train_example") ... # ๋ชจ๋“  ๊ฒƒ์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ... # ๊ธฐ์–ตํ•ด์•ผ ํ•  ํŠน์ •ํ•œ ์ˆœ์„œ๋Š” ์—†์œผ๋ฉฐ ์ค€๋น„ํ•œ ๋ฐฉ๋ฒ•์— ์ œ๊ณตํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๊ฐ์ฒด์˜ ์••์ถ•์„ ํ’€๋ฉด ๋ฉ๋‹ˆ๋‹ค. ... model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare( ... model, optimizer, train_dataloader, lr_scheduler ... ) ... global_step = 0 ... # ์ด์ œ ๋ชจ๋ธ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ... for epoch in range(config.num_epochs): ... progress_bar = tqdm(total=len(train_dataloader), disable=not accelerator.is_local_main_process) ... progress_bar.set_description(f"Epoch {epoch}") ... for step, batch in enumerate(train_dataloader): ... clean_images = batch["images"] ... # ์ด๋ฏธ์ง€์— ๋”ํ•  ๋…ธ์ด์ฆˆ๋ฅผ ์ƒ˜ํ”Œ๋งํ•ฉ๋‹ˆ๋‹ค. ... noise = torch.randn(clean_images.shape, device=clean_images.device) ... bs = clean_images.shape[0] ... # ๊ฐ ์ด๋ฏธ์ง€๋ฅผ ์œ„ํ•œ ๋žœ๋คํ•œ ํƒ€์ž„์Šคํ…(timestep)์„ ์ƒ˜ํ”Œ๋งํ•ฉ๋‹ˆ๋‹ค. ... timesteps = torch.randint( ... 0, noise_scheduler.config.num_train_timesteps, (bs,), device=clean_images.device, ... dtype=torch.int64 ... ) ... # ๊ฐ ํƒ€์ž„์Šคํ…์˜ ๋…ธ์ด์ฆˆ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊นจ๋—ํ•œ ์ด๋ฏธ์ง€์— ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ... # (์ด๋Š” foward diffusion ๊ณผ์ •์ž…๋‹ˆ๋‹ค.) ... noisy_images = noise_scheduler.add_noise(clean_images, noise, timesteps) ... with accelerator.accumulate(model): ... # ๋…ธ์ด์ฆˆ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค. ... noise_pred = model(noisy_images, timesteps, return_dict=False)[0] ... loss = F.mse_loss(noise_pred, noise) ... accelerator.backward(loss) ... accelerator.clip_grad_norm_(model.parameters(), 1.0) ... optimizer.step() ... lr_scheduler.step() ... optimizer.zero_grad() ... progress_bar.update(1) ... logs = {"loss": loss.detach().item(), "lr": lr_scheduler.get_last_lr()[0], "step": global_step} ... progress_bar.set_postfix(**logs) ... accelerator.log(logs, step=global_step) ... global_step += 1 ... # ๊ฐ ์—ํฌํฌ๊ฐ€ ๋๋‚œ ํ›„ evaluate()์™€ ๋ช‡ ๊ฐ€์ง€ ๋ฐ๋ชจ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ƒ˜ํ”Œ๋งํ•˜๊ณ  ๋ชจ๋ธ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ... if accelerator.is_main_process: ... pipeline = DDPMPipeline(unet=accelerator.unwrap_model(model), scheduler=noise_scheduler) ... if (epoch + 1) % config.save_image_epochs == 0 or epoch == config.num_epochs - 1: ... evaluate(config, epoch, pipeline) ... if (epoch + 1) % config.save_model_epochs == 0 or epoch == config.num_epochs - 1: ... if config.push_to_hub: ... upload_folder( ... repo_id=repo_id, ... folder_path=config.output_dir, ... commit_message=f"Epoch {epoch}", ... ignore_patterns=["step_*", "epoch_*"], ... ) ... else: ... pipeline.save_pretrained(config.output_dir)`,wrap:!1}}),ol=new m({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBub3RlYm9va19sYXVuY2hlciUwQSUwQWFyZ3MlMjAlM0QlMjAoY29uZmlnJTJDJTIwbW9kZWwlMkMlMjBub2lzZV9zY2hlZHVsZXIlMkMlMjBvcHRpbWl6ZXIlMkMlMjB0cmFpbl9kYXRhbG9hZGVyJTJDJTIwbHJfc2NoZWR1bGVyKSUwQSUwQW5vdGVib29rX2xhdW5jaGVyKHRyYWluX2xvb3AlMkMlMjBhcmdzJTJDJTIwbnVtX3Byb2Nlc3NlcyUzRDEp",highlighted:`>>> from accelerate import notebook_launcher >>> args = (config, model, noise_scheduler, optimizer, train_dataloader, lr_scheduler) >>> notebook_launcher(train_loop, args, num_processes=1)`,wrap:!1}}),Il=new m({props:{code:"aW1wb3J0JTIwZ2xvYiUwQSUwQXNhbXBsZV9pbWFnZXMlMjAlM0QlMjBzb3J0ZWQoZ2xvYi5nbG9iKGYlMjIlN0Jjb25maWcub3V0cHV0X2RpciU3RCUyRnNhbXBsZXMlMkYqLnBuZyUyMikpJTBBSW1hZ2Uub3BlbihzYW1wbGVfaW1hZ2VzJTVCLTElNUQp",highlighted:`>>> import glob >>> sample_images = sorted(glob.glob(f"{config.output_dir}/samples/*.png")) >>> Image.open(sample_images[-1])`,wrap:!1}}),Ql=new bl({props:{title:"๋‹ค์Œ ๋‹จ๊ณ„",local:"๋‹ค์Œ-๋‹จ๊ณ„",headingTag:"h2"}}),Vl=new Aa({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/tutorials/basic_training.md"}}),{c(){w=n("meta"),h=M(),C=n("p"),dl=M(),J(I.$$.fragment),Rl=M(),J(r.$$.fragment),Bl=M(),Q=n("p"),Q.innerHTML=Ns,Zl=M(),g=n("p"),g.innerHTML=_s,kl=M(),J(o.$$.fragment),Gl=M(),u=n("p"),u.innerHTML=Ws,El=M(),J(V.$$.fragment),Fl=M(),b=n("p"),b.innerHTML=Os,Xl=M(),J(d.$$.fragment),Nl=M(),A=n("p"),A.textContent=Ss,_l=M(),J(f.$$.fragment),Wl=M(),R=n("p"),R.innerHTML=Ds,Ol=M(),J(B.$$.fragment),Sl=M(),J(Z.$$.fragment),Dl=M(),k=n("p"),k.innerHTML=Ys,Yl=M(),J(G.$$.fragment),zl=M(),J(E.$$.fragment),$l=M(),F=n("p"),F.innerHTML=zs,vl=M(),J(X.$$.fragment),xl=M(),N=n("p"),N.innerHTML=$s,Hl=M(),_=n("p"),_.innerHTML=vs,Ll=M(),J(W.$$.fragment),ql=M(),O=n("p"),O.innerHTML=xs,Kl=M(),S=n("p"),S.textContent=Hs,Pl=M(),D=n("ul"),D.innerHTML=Ls,ls=M(),J(Y.$$.fragment),ss=M(),z=n("p"),z.innerHTML=qs,as=M(),J($.$$.fragment),es=M(),v=n("p"),v.innerHTML=Ks,Ms=M(),J(x.$$.fragment),ts=M(),J(H.$$.fragment),ns=M(),L=n("p"),L.innerHTML=Ps,Us=M(),J(q.$$.fragment),ps=M(),K=n("p"),K.textContent=la,Js=M(),J(P.$$.fragment),js=M(),ll=n("p"),ll.textContent=sa,ys=M(),J(sl.$$.fragment),Ts=M(),al=n("p"),al.innerHTML=aa,cs=M(),el=n("p"),el.innerHTML=ea,is=M(),J(Ml.$$.fragment),ms=M(),tl=n("p"),tl.innerHTML=Ma,ws=M(),nl=n("p"),nl.textContent=ta,Cs=M(),J(Ul.$$.fragment),os=M(),J(pl.$$.fragment),hs=M(),Jl=n("p"),Jl.textContent=na,Is=M(),jl=n("p"),jl.textContent=Ua,rs=M(),J(yl.$$.fragment),Qs=M(),Tl=n("p"),Tl.innerHTML=pa,gs=M(),J(cl.$$.fragment),us=M(),il=n("p"),il.textContent=Ja,Vs=M(),ml=n("p"),ml.textContent=ja,bs=M(),J(wl.$$.fragment),ds=M(),Cl=n("p"),Cl.innerHTML=ya,As=M(),J(ol.$$.fragment),fs=M(),hl=n("p"),hl.textContent=Ta,Rs=M(),J(Il.$$.fragment),Bs=M(),rl=n("p"),rl.innerHTML=ca,Zs=M(),J(Ql.$$.fragment),ks=M(),gl=n("p"),gl.innerHTML=ia,Gs=M(),ul=n("ul"),ul.innerHTML=ma,Es=M(),J(Vl.$$.fragment),Fs=M(),Al=n("p"),this.h()},l(l){const s=ua("svelte-u9bgzb",document.head);w=U(s,"META",{name:!0,content:!0}),s.forEach(a),h=t(l),C=U(l,"P",{}),Ca(C).forEach(a),dl=t(l),j(I.$$.fragment,l),Rl=t(l),j(r.$$.fragment,l),Bl=t(l),Q=U(l,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-1aqgth7"&&(Q.innerHTML=Ns),Zl=t(l),g=U(l,"P",{"data-svelte-h":!0}),p(g)!=="svelte-32ojwt"&&(g.innerHTML=_s),kl=t(l),j(o.$$.fragment,l),Gl=t(l),u=U(l,"P",{"data-svelte-h":!0}),p(u)!=="svelte-1o0c2y8"&&(u.innerHTML=Ws),El=t(l),j(V.$$.fragment,l),Fl=t(l),b=U(l,"P",{"data-svelte-h":!0}),p(b)!=="svelte-1owzlqj"&&(b.innerHTML=Os),Xl=t(l),j(d.$$.fragment,l),Nl=t(l),A=U(l,"P",{"data-svelte-h":!0}),p(A)!=="svelte-10ayust"&&(A.textContent=Ss),_l=t(l),j(f.$$.fragment,l),Wl=t(l),R=U(l,"P",{"data-svelte-h":!0}),p(R)!=="svelte-1w5k095"&&(R.innerHTML=Ds),Ol=t(l),j(B.$$.fragment,l),Sl=t(l),j(Z.$$.fragment,l),Dl=t(l),k=U(l,"P",{"data-svelte-h":!0}),p(k)!=="svelte-1rpvlkg"&&(k.innerHTML=Ys),Yl=t(l),j(G.$$.fragment,l),zl=t(l),j(E.$$.fragment,l),$l=t(l),F=U(l,"P",{"data-svelte-h":!0}),p(F)!=="svelte-1our457"&&(F.innerHTML=zs),vl=t(l),j(X.$$.fragment,l),xl=t(l),N=U(l,"P",{"data-svelte-h":!0}),p(N)!=="svelte-1hi7huh"&&(N.innerHTML=$s),Hl=t(l),_=U(l,"P",{"data-svelte-h":!0}),p(_)!=="svelte-g2btn3"&&(_.innerHTML=vs),Ll=t(l),j(W.$$.fragment,l),ql=t(l),O=U(l,"P",{"data-svelte-h":!0}),p(O)!=="svelte-12z3lda"&&(O.innerHTML=xs),Kl=t(l),S=U(l,"P",{"data-svelte-h":!0}),p(S)!=="svelte-2vcep9"&&(S.textContent=Hs),Pl=t(l),D=U(l,"UL",{"data-svelte-h":!0}),p(D)!=="svelte-lrd3tn"&&(D.innerHTML=Ls),ls=t(l),j(Y.$$.fragment,l),ss=t(l),z=U(l,"P",{"data-svelte-h":!0}),p(z)!=="svelte-mhh25q"&&(z.innerHTML=qs),as=t(l),j($.$$.fragment,l),es=t(l),v=U(l,"P",{"data-svelte-h":!0}),p(v)!=="svelte-jbxdac"&&(v.innerHTML=Ks),Ms=t(l),j(x.$$.fragment,l),ts=t(l),j(H.$$.fragment,l),ns=t(l),L=U(l,"P",{"data-svelte-h":!0}),p(L)!=="svelte-ywj4cf"&&(L.innerHTML=Ps),Us=t(l),j(q.$$.fragment,l),ps=t(l),K=U(l,"P",{"data-svelte-h":!0}),p(K)!=="svelte-1x8klru"&&(K.textContent=la),Js=t(l),j(P.$$.fragment,l),js=t(l),ll=U(l,"P",{"data-svelte-h":!0}),p(ll)!=="svelte-hu0j5c"&&(ll.textContent=sa),ys=t(l),j(sl.$$.fragment,l),Ts=t(l),al=U(l,"P",{"data-svelte-h":!0}),p(al)!=="svelte-1ickp2n"&&(al.innerHTML=aa),cs=t(l),el=U(l,"P",{"data-svelte-h":!0}),p(el)!=="svelte-boidtv"&&(el.innerHTML=ea),is=t(l),j(Ml.$$.fragment,l),ms=t(l),tl=U(l,"P",{"data-svelte-h":!0}),p(tl)!=="svelte-3yki19"&&(tl.innerHTML=Ma),ws=t(l),nl=U(l,"P",{"data-svelte-h":!0}),p(nl)!=="svelte-1oo0f0r"&&(nl.textContent=ta),Cs=t(l),j(Ul.$$.fragment,l),os=t(l),j(pl.$$.fragment,l),hs=t(l),Jl=U(l,"P",{"data-svelte-h":!0}),p(Jl)!=="svelte-1syjdvo"&&(Jl.textContent=na),Is=t(l),jl=U(l,"P",{"data-svelte-h":!0}),p(jl)!=="svelte-1x5az67"&&(jl.textContent=Ua),rs=t(l),j(yl.$$.fragment,l),Qs=t(l),Tl=U(l,"P",{"data-svelte-h":!0}),p(Tl)!=="svelte-baczkn"&&(Tl.innerHTML=pa),gs=t(l),j(cl.$$.fragment,l),us=t(l),il=U(l,"P",{"data-svelte-h":!0}),p(il)!=="svelte-14zfk37"&&(il.textContent=Ja),Vs=t(l),ml=U(l,"P",{"data-svelte-h":!0}),p(ml)!=="svelte-u719rq"&&(ml.textContent=ja),bs=t(l),j(wl.$$.fragment,l),ds=t(l),Cl=U(l,"P",{"data-svelte-h":!0}),p(Cl)!=="svelte-zyu14c"&&(Cl.innerHTML=ya),As=t(l),j(ol.$$.fragment,l),fs=t(l),hl=U(l,"P",{"data-svelte-h":!0}),p(hl)!=="svelte-1dbylv7"&&(hl.textContent=Ta),Rs=t(l),j(Il.$$.fragment,l),Bs=t(l),rl=U(l,"P",{"data-svelte-h":!0}),p(rl)!=="svelte-1bzvmcv"&&(rl.innerHTML=ca),Zs=t(l),j(Ql.$$.fragment,l),ks=t(l),gl=U(l,"P",{"data-svelte-h":!0}),p(gl)!=="svelte-1mf9wqw"&&(gl.innerHTML=ia),Gs=t(l),ul=U(l,"UL",{"data-svelte-h":!0}),p(ul)!=="svelte-y5d1yz"&&(ul.innerHTML=ma),Es=t(l),j(Vl.$$.fragment,l),Fs=t(l),Al=U(l,"P",{}),Ca(Al).forEach(a),this.h()},h(){oa(w,"name","hf:doc:metadata"),oa(w,"content",Ba)},m(l,s){Va(document.head,w),e(l,h,s),e(l,C,s),e(l,dl,s),y(I,l,s),e(l,Rl,s),y(r,l,s),e(l,Bl,s),e(l,Q,s),e(l,Zl,s),e(l,g,s),e(l,kl,s),y(o,l,s),e(l,Gl,s),e(l,u,s),e(l,El,s),y(V,l,s),e(l,Fl,s),e(l,b,s),e(l,Xl,s),y(d,l,s),e(l,Nl,s),e(l,A,s),e(l,_l,s),y(f,l,s),e(l,Wl,s),e(l,R,s),e(l,Ol,s),y(B,l,s),e(l,Sl,s),y(Z,l,s),e(l,Dl,s),e(l,k,s),e(l,Yl,s),y(G,l,s),e(l,zl,s),y(E,l,s),e(l,$l,s),e(l,F,s),e(l,vl,s),y(X,l,s),e(l,xl,s),e(l,N,s),e(l,Hl,s),e(l,_,s),e(l,Ll,s),y(W,l,s),e(l,ql,s),e(l,O,s),e(l,Kl,s),e(l,S,s),e(l,Pl,s),e(l,D,s),e(l,ls,s),y(Y,l,s),e(l,ss,s),e(l,z,s),e(l,as,s),y($,l,s),e(l,es,s),e(l,v,s),e(l,Ms,s),y(x,l,s),e(l,ts,s),y(H,l,s),e(l,ns,s),e(l,L,s),e(l,Us,s),y(q,l,s),e(l,ps,s),e(l,K,s),e(l,Js,s),y(P,l,s),e(l,js,s),e(l,ll,s),e(l,ys,s),y(sl,l,s),e(l,Ts,s),e(l,al,s),e(l,cs,s),e(l,el,s),e(l,is,s),y(Ml,l,s),e(l,ms,s),e(l,tl,s),e(l,ws,s),e(l,nl,s),e(l,Cs,s),y(Ul,l,s),e(l,os,s),y(pl,l,s),e(l,hs,s),e(l,Jl,s),e(l,Is,s),e(l,jl,s),e(l,rs,s),y(yl,l,s),e(l,Qs,s),e(l,Tl,s),e(l,gs,s),y(cl,l,s),e(l,us,s),e(l,il,s),e(l,Vs,s),e(l,ml,s),e(l,bs,s),y(wl,l,s),e(l,ds,s),e(l,Cl,s),e(l,As,s),y(ol,l,s),e(l,fs,s),e(l,hl,s),e(l,Rs,s),y(Il,l,s),e(l,Bs,s),e(l,rl,s),e(l,Zs,s),y(Ql,l,s),e(l,ks,s),e(l,gl,s),e(l,Gs,s),e(l,ul,s),e(l,Es,s),y(Vl,l,s),e(l,Fs,s),e(l,Al,s),Xs=!0},p(l,[s]){const wa={};s&2&&(wa.$$scope={dirty:s,ctx:l}),o.$set(wa)},i(l){Xs||(T(I.$$.fragment,l),T(r.$$.fragment,l),T(o.$$.fragment,l),T(V.$$.fragment,l),T(d.$$.fragment,l),T(f.$$.fragment,l),T(B.$$.fragment,l),T(Z.$$.fragment,l),T(G.$$.fragment,l),T(E.$$.fragment,l),T(X.$$.fragment,l),T(W.$$.fragment,l),T(Y.$$.fragment,l),T($.$$.fragment,l),T(x.$$.fragment,l),T(H.$$.fragment,l),T(q.$$.fragment,l),T(P.$$.fragment,l),T(sl.$$.fragment,l),T(Ml.$$.fragment,l),T(Ul.$$.fragment,l),T(pl.$$.fragment,l),T(yl.$$.fragment,l),T(cl.$$.fragment,l),T(wl.$$.fragment,l),T(ol.$$.fragment,l),T(Il.$$.fragment,l),T(Ql.$$.fragment,l),T(Vl.$$.fragment,l),Xs=!0)},o(l){c(I.$$.fragment,l),c(r.$$.fragment,l),c(o.$$.fragment,l),c(V.$$.fragment,l),c(d.$$.fragment,l),c(f.$$.fragment,l),c(B.$$.fragment,l),c(Z.$$.fragment,l),c(G.$$.fragment,l),c(E.$$.fragment,l),c(X.$$.fragment,l),c(W.$$.fragment,l),c(Y.$$.fragment,l),c($.$$.fragment,l),c(x.$$.fragment,l),c(H.$$.fragment,l),c(q.$$.fragment,l),c(P.$$.fragment,l),c(sl.$$.fragment,l),c(Ml.$$.fragment,l),c(Ul.$$.fragment,l),c(pl.$$.fragment,l),c(yl.$$.fragment,l),c(cl.$$.fragment,l),c(wl.$$.fragment,l),c(ol.$$.fragment,l),c(Il.$$.fragment,l),c(Ql.$$.fragment,l),c(Vl.$$.fragment,l),Xs=!1},d(l){l&&(a(h),a(C),a(dl),a(Rl),a(Bl),a(Q),a(Zl),a(g),a(kl),a(Gl),a(u),a(El),a(Fl),a(b),a(Xl),a(Nl),a(A),a(_l),a(Wl),a(R),a(Ol),a(Sl),a(Dl),a(k),a(Yl),a(zl),a($l),a(F),a(vl),a(xl),a(N),a(Hl),a(_),a(Ll),a(ql),a(O),a(Kl),a(S),a(Pl),a(D),a(ls),a(ss),a(z),a(as),a(es),a(v),a(Ms),a(ts),a(ns),a(L),a(Us),a(ps),a(K),a(Js),a(js),a(ll),a(ys),a(Ts),a(al),a(cs),a(el),a(is),a(ms),a(tl),a(ws),a(nl),a(Cs),a(os),a(hs),a(Jl),a(Is),a(jl),a(rs),a(Qs),a(Tl),a(gs),a(us),a(il),a(Vs),a(ml),a(bs),a(ds),a(Cl),a(As),a(fs),a(hl),a(Rs),a(Bs),a(rl),a(Zs),a(ks),a(gl),a(Gs),a(ul),a(Es),a(Fs),a(Al)),a(w),i(I,l),i(r,l),i(o,l),i(V,l),i(d,l),i(f,l),i(B,l),i(Z,l),i(G,l),i(E,l),i(X,l),i(W,l),i(Y,l),i($,l),i(x,l),i(H,l),i(q,l),i(P,l),i(sl,l),i(Ml,l),i(Ul,l),i(pl,l),i(yl,l),i(cl,l),i(wl,l),i(ol,l),i(Il,l),i(Ql,l),i(Vl,l)}}}const Ba='{"title":"Diffusion ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ธฐ","local":"diffusion-๋ชจ๋ธ์„-ํ•™์Šตํ•˜๊ธฐ","sections":[{"title":"ํ•™์Šต ๊ตฌ์„ฑ","local":"ํ•™์Šต-๊ตฌ์„ฑ","sections":[],"depth":2},{"title":"๋ฐ์ดํ„ฐ์…‹ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ","local":"๋ฐ์ดํ„ฐ์…‹-๋ถˆ๋Ÿฌ์˜ค๊ธฐ","sections":[],"depth":2},{"title":"UNet2DModel ์ƒ์„ฑํ•˜๊ธฐ","local":"unet2dmodel-์ƒ์„ฑํ•˜๊ธฐ","sections":[],"depth":2},{"title":"์Šค์ผ€์ค„๋Ÿฌ ์ƒ์„ฑํ•˜๊ธฐ","local":"์Šค์ผ€์ค„๋Ÿฌ-์ƒ์„ฑํ•˜๊ธฐ","sections":[],"depth":2},{"title":"๋ชจ๋ธ ํ•™์Šตํ•˜๊ธฐ","local":"๋ชจ๋ธ-ํ•™์Šตํ•˜๊ธฐ","sections":[],"depth":2},{"title":"๋‹ค์Œ ๋‹จ๊ณ„","local":"๋‹ค์Œ-๋‹จ๊ณ„","sections":[],"depth":2}],"depth":1}';function Za(fl){return Ia(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class _a extends Qa{constructor(w){super(),ga(this,w,Za,Ra,ha,{})}}export{_a as component};