Buckets:

rtrm's picture
download
raw
25.8 kB
import{s as Xe,n as Ze,o as et}from"../chunks/scheduler.94020406.js";import{S as tt,i as it,g as n,s,r as u,E as lt,h as o,f as i,c as f,j as Ve,u as p,x as r,k as We,y as st,a as l,v as d,d as c,t as m,w as h}from"../chunks/index.a08c8d92.js";import{H as g,E as ft}from"../chunks/EditOnGithub.b1bceb47.js";function nt(Pe){let a,Q,J,V,_,W,b,He=`๐Ÿงจ Diffusers๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ์—์„œ <strong>์ตœ์‹ ์˜</strong> ์‚ฌ์ „ ํ›ˆ๋ จ๋œ diffusion ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ทธ ๋ชฉ์ ์€ ์ถ”๋ก ๊ณผ ํ›ˆ๋ จ์„ ์œ„ํ•œ <strong>๋ชจ๋“ˆ์‹ ํˆด๋ฐ•์Šค</strong>๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.`,X,$,De="์ €ํฌ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๋ณ€์น˜ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ์— API ์„ค๊ณ„๋ฅผ ๋งค์šฐ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.",Z,v,Ee='๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Diffusers๋Š” PyTorch๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์„ค๊ณ„ ์„ ํƒ์€ <a href="https://pytorch.org/docs/stable/community/design.html#pytorch-design-philosophy" rel="nofollow">PyTorch์˜ ์„ค๊ณ„ ์›์น™</a>์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:',ee,w,te,T,Ae='<li>Diffusers๋Š” ๋‹ค์–‘ํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€๋งŒ (์ž์„ธํ•œ ๋‚ด์šฉ์€ <a href="https://huggingface.co/docs/diffusers/optimization/fp16" rel="nofollow">๋ฉ”๋ชจ๋ฆฌ์™€ ์†๋„</a> ์ฐธ์กฐ), ๋ชจ๋ธ์€ ํ•ญ์ƒ ๊ฐ€์žฅ ๋†’์€ ์ •๋ฐ€๋„์™€ ์ตœ์†Œํ•œ์˜ ์ตœ์ ํ™”๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„๋กœ ์ •์˜ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ diffusion ํŒŒ์ดํ”„๋ผ์ธ์€ ํ•ญ์ƒ float32 ์ •๋ฐ€๋„๋กœ CPU์— ์ธ์Šคํ„ด์Šคํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ๊ฐ€์†๊ธฐ์—์„œ์˜ ์‚ฌ์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ณต์žกํ•œ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.</li> <li>Diffusers๋Š” <strong>๊ฐ€๋ฒผ์šด</strong> ํŒจํ‚ค์ง€๋ฅผ ์ง€ํ–ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜ ์ข…์†์„ฑ์€ ๊ฑฐ์˜ ์—†์ง€๋งŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์„ ํƒ์  ์ข…์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค (<code>accelerate</code>, <code>safetensors</code>, <code>onnx</code> ๋“ฑ). ์ €ํฌ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€๋ณ๊ฒŒ ์œ ์ง€ํ•˜์—ฌ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ ๊ฑฑ์ •์ด ์—†๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>Diffusers๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋žŒ๋‹ค ํ•จ์ˆ˜๋‚˜ ๊ณ ๊ธ‰ PyTorch ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์€ ์••์ถ•๋œ ์ฝ”๋“œ ๊ตฌ๋ฌธ์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.</li>',ie,y,le,x,ke="PyTorch์—์„œ๋Š” <strong>๋ช…์‹œ์ ์ธ ๊ฒƒ์ด ์•”์‹œ์ ์ธ ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค</strong>์™€ <strong>๋‹จ์ˆœํ•œ ๊ฒƒ์ด ๋ณต์žกํ•œ ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค</strong>๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค๊ณ„ ์ฒ ํ•™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋ฐ˜์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:",se,C,Be='<li><a href="https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.to" rel="nofollow"><code>DiffusionPipeline.to</code></a>์™€ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์žฅ์น˜ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก PyTorch์˜ API๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.</li> <li>์ž˜๋ชป๋œ ์ž…๋ ฅ์„ ์กฐ์šฉํžˆ ์ˆ˜์ •ํ•˜๋Š” ๋Œ€์‹  ๊ฐ„๊ฒฐํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์šฐ์„ ์ž…๋‹ˆ๋‹ค. Diffusers๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ณต์žกํ•œ ๋ชจ๋ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ ๋กœ์ง์ด ๋‚ด๋ถ€์—์„œ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ/์ƒ˜ํ”Œ๋Ÿฌ๋Š” ์„œ๋กœ์—๊ฒŒ ์ตœ์†Œํ•œ์˜ ์ข…์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ์–ธ๋กค๋œ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ถ„๋ฆฌ๋Š” ๋””๋ฒ„๊น…์„ ๋” ์‰ฝ๊ฒŒํ•˜๊ณ  ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๊ณผ์ •์„ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜ diffusers ๋ชจ๋ธ์ด๋‚˜ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋งŽ์€ ์ œ์–ด๊ถŒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.</li> <li>diffusers ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋”ฐ๋กœ ํ›ˆ๋ จ๋œ ๊ตฌ์„ฑ ์š”์†Œ์ธ text encoder, unet ๋ฐ variational autoencoder๋Š” ๊ฐ๊ฐ ์ž์ฒด ๋ชจ๋ธ ํด๋ž˜์Šค๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์ด๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ, ์ง๋ ฌํ™” ํ˜•์‹์€ ๋ชจ๋ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋””๋ฒ„๊น…๊ณผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ๋” ์‰ฝ๊ฒŒํ•ฉ๋‹ˆ๋‹ค. DreamBooth๋‚˜ Textual Inversion ํ›ˆ๋ จ์€ Diffusers์˜ โ€˜diffusion ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋‹จ์ผ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅโ€™ ๋•๋ถ„์— ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.</li>',fe,M,ne,L,Ue=`๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋Œ€๋ถ€๋ถ„์— ๋Œ€ํ•ด Diffusers๋Š” <a href="https://github.com/huggingface/transformers" rel="nofollow">Transformers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ</a>์˜ ์ค‘์š”ํ•œ ์„ค๊ณ„ ์›์น™์„ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค, ๋ฐ”๋กœ ์„ฑ๊ธ‰ํ•œ ์ถ”์ƒํ™”๋ณด๋‹ค๋Š” copy-pasted ์ฝ”๋“œ๋ฅผ ์„ ํ˜ธํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„ค๊ณ„ ์›์น™์€ <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="nofollow">Donโ€™t repeat yourself (DRY)</a>์™€ ๊ฐ™์€ ์ธ๊ธฐ ์žˆ๋Š” ์„ค๊ณ„ ์›์น™๊ณผ๋Š” ๋Œ€์กฐ์ ์œผ๋กœ ๋งค์šฐ ์˜๊ฒฌ์ด ๋ถ„๋ถ„ํ•œ๋ฐ์š”.
๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Transformers๊ฐ€ ๋ชจ๋ธ๋ง ํŒŒ์ผ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, Diffusers๋Š” ๋งค์šฐ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”์™€ ๋งค์šฐ ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜, ๊ธด ์ฝ”๋“œ ๋ธ”๋ก, ์‹ฌ์ง€์–ด ํด๋ž˜์Šค๋„ ์—ฌ๋Ÿฌ ํŒŒ์ผ์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ฒ˜์Œ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๋‚˜์œ, ์„œํˆฌ๋ฅธ ์„ค๊ณ„ ์„ ํƒ์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋Š” ๋งค์šฐ ์„ฑ๊ณต์ ์ด๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๊ณ„ ํ•™์Šต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:`,oe,P,ze="<li>๊ธฐ๊ณ„ ํ•™์Šต์€ ํŒจ๋Ÿฌ๋‹ค์ž„, ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๋ถ„์•ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋žœ ๊ธฐ๊ฐ„ ์ง€์†๋˜๋Š” ์ฝ”๋“œ ์ถ”์ƒํ™”๋ฅผ ์ •์˜ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.</li> <li>๊ธฐ๊ณ„ ํ•™์Šต ์ „๋ฌธ๊ฐ€๋“ค์€ ์•„์ด๋””์–ด์™€ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•ด ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๋งŽ์€ ์ถ”์ƒํ™”๋ณด๋‹ค๋Š” ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.</li> <li>์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ์— ์˜์กดํ•˜๋ฏ€๋กœ, ๊ธฐ์—ฌํ•˜๊ธฐ ์‰ฌ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ถ”์ƒํ™”๋˜๋ฉด ์˜์กด์„ฑ์ด ๋งŽ์•„์ง€๊ณ  ์ฝ๊ธฐ ์–ด๋ ต๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์ž๋“ค์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋ง๊ฐ€๋œจ๋ฆด๊นŒ ๋‘๋ ค์›Œํ•˜์—ฌ ๋งค์šฐ ์ถ”์ƒํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ธฐ์—ฌํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆด ์ˆ˜ ์—†๋‹ค๋ฉด, ์ž ์žฌ์ ์ธ ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž์—๊ฒŒ ๋”์šฑ ํ™˜์˜๋ฐ›์„ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ฒ€ํ† ํ•˜๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.</li>",re,H,Ie='Hugging Face์—์„œ๋Š” ์ด ์„ค๊ณ„๋ฅผ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ํŠน์ • ํด๋ž˜์Šค์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ํŒŒ์ผ์— ์ž‘์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ฒ ํ•™์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด <a href="https://huggingface.co/blog/transformers-design-philosophy" rel="nofollow">์ด ๋ธ”๋กœ๊ทธ ๊ธ€</a>์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',ae,D,je='Diffusers์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ฒ ํ•™์„ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์Šค์ผ€์ค„๋Ÿฌ์— ๋ชจ๋‘ ๋”ฐ๋ฅด์ง€๋งŒ, diffusion ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ๋Š” ์ผ๋ถ€๋งŒ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ผ๋ถ€๋งŒ ๋”ฐ๋ฅด๋Š” ์ด์œ ๋Š” Diffusion ํŒŒ์ดํ”„๋ผ์ธ์ธ <a href="https://huggingface.co/docs/diffusers/api/pipelines/ddpm" rel="nofollow">DDPM</a>, <a href="https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/overview#stable-diffusion-pipelines" rel="nofollow">Stable Diffusion</a>, <a href="https://huggingface.co/docs/diffusers/api/pipelines/unclip" rel="nofollow">unCLIP (DALLยทE 2)</a> ๋ฐ <a href="https://imagen.research.google/" rel="nofollow">Imagen</a> ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ diffusion ํŒŒ์ดํ”„๋ผ์ธ์€ ๋™์ผํ•œ diffusion ๋ชจ๋ธ์ธ <a href="https://huggingface.co/docs/diffusers/api/models/unet2d-cond" rel="nofollow">UNet</a>์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.',ue,E,qe=`์ข‹์•„์š”, ์ด์ œ ๐Ÿงจ Diffusers๊ฐ€ ์„ค๊ณ„๋œ ๋ฐฉ์‹์„ ๋Œ€๋žต์ ์œผ๋กœ ์ดํ•ดํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿค—.
์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์„ค๊ณ„ ์›์น™์„ ์ผ๊ด€๋˜๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด์— ์ ์šฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฒ ํ•™์— ๋Œ€ํ•œ ์ผ๋ถ€ ์˜ˆ์™ธ ์‚ฌํ•ญ์ด๋‚˜ ๋ถˆํ–‰ํ•œ ์„ค๊ณ„ ์„ ํƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์ž์ธ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๋‹ค๋ฉด <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&amp;labels=&amp;template=feedback.md&amp;title=" rel="nofollow">GitHub์—์„œ ์ง์ ‘</a> ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.`,pe,A,de,k,Se='์ด์ œ ๋””์ž์ธ ์ฒ ํ•™์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Diffusers๋Š” ์ฃผ๋กœ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค: <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines" rel="nofollow">ํŒŒ์ดํ”„๋ผ์ธ</a>, <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models" rel="nofollow">๋ชจ๋ธ</a>, ๊ทธ๋ฆฌ๊ณ  <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/schedulers" rel="nofollow">์Šค์ผ€์ค„๋Ÿฌ</a>. ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์„ค๊ณ„ ๊ฒฐ์ • ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.',ce,B,me,U,Ne='ํŒŒ์ดํ”„๋ผ์ธ์€ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ (๋”ฐ๋ผ์„œ <a href="#%EC%89%AC%EC%9B%80%EB%B3%B4%EB%8B%A4%EB%8A%94-%EA%B0%84%EB%8B%A8%ED%95%A8%EC%9D%84"><em>์‰ฌ์›€๋ณด๋‹ค๋Š” ๊ฐ„๋‹จํ•จ์„</em></a>์„ 100% ๋”ฐ๋ฅด์ง€๋Š” ์•Š์Œ), feature-completeํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ถ”๋ก ์„ ์œ„ํ•œ <a href="#%EB%AA%A8%EB%8D%B8">๋ชจ๋ธ</a>๊ณผ <a href="#%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC">์Šค์ผ€์ค„๋Ÿฌ</a>๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์‹œ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',he,z,Fe="๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:",ge,I,Ge='<li>ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ์€ src/diffusers/pipelines์˜ ๊ฐœ๋ณ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํŒŒ์ดํ”„๋ผ์ธ ํด๋”๋Š” ํ•˜๋‚˜์˜ diffusion ๋…ผ๋ฌธ/ํ”„๋กœ์ ํŠธ/๋ฆด๋ฆฌ์Šค์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒŒ์ดํ”„๋ผ์ธ ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ํŒŒ์ดํ”„๋ผ์ธ ํด๋”์— ๋ชจ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines/stable_diffusion" rel="nofollow"><code>src/diffusers/pipelines/stable-diffusion</code></a>์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์ด ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ, <a href="https://github.com/huggingface/diffusers/blob/125d783076e5bd9785beb05367a2d2566843a271/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py#L251" rel="nofollow"># Copied from mechanism</a>์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>ํŒŒ์ดํ”„๋ผ์ธ์€ ๋ชจ๋‘ <code>DiffusionPipeline</code>์„ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๊ฐ ํŒŒ์ดํ”„๋ผ์ธ์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋ธ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” <a href="https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/model_index.json" rel="nofollow"><code>model_index.json</code> ํŒŒ์ผ</a>์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ํŒŒ์ดํ”„๋ผ์ธ์˜ ์†์„ฑ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, <a href="https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.components" rel="nofollow"><code>DiffusionPipeline.components</code></a> ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ„์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>๊ฐ ํŒŒ์ดํ”„๋ผ์ธ์€ <a href="https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.from_pretrained" rel="nofollow"><code>DiffusionPipeline.from_pretrained</code></a> ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>ํŒŒ์ดํ”„๋ผ์ธ์€ ์ถ”๋ก ์—<strong>๋งŒ</strong> ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>ํŒŒ์ดํ”„๋ผ์ธ์€ ๋งค์šฐ ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ , ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ์‰ฝ๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>ํŒŒ์ดํ”„๋ผ์ธ์€ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ , ์ƒ์œ„ ์ˆ˜์ค€ API์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>ํŒŒ์ดํ”„๋ผ์ธ์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ feature-completeํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. future-completeํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์›ํ•œ๋‹ค๋ฉด <a href="https://github.com/invoke-ai/InvokeAI" rel="nofollow">InvokeAI</a>, <a href="https://github.com/abhishekkrthakur/diffuzers" rel="nofollow">Diffuzers</a>, <a href="https://github.com/Sanster/lama-cleaner" rel="nofollow">lama-cleaner</a>๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ์€ ์˜ค๋กœ์ง€ <code>__call__</code> ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. <code>__call__</code> ์ธ์ž์˜ ์ด๋ฆ„์€ ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๊ณต์œ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>ํŒŒ์ดํ”„๋ผ์ธ์€ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ž‘์—…์˜ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ์ƒˆ๋กœ์šด diffusion ํŒŒ์ดํ”„๋ผ์ธ์€ ์ƒˆ๋กœ์šด ํŒŒ์ดํ”„๋ผ์ธ ํด๋”/ํŒŒ์ผ์— ๊ตฌํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li>',_e,j,be,q,Re='๋ชจ๋ธ์€ <a href="https://pytorch.org/docs/stable/generated/torch.nn.Module.html" rel="nofollow">PyTorch์˜ Module ํด๋ž˜์Šค</a>์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ™•์žฅ์ด ๋˜๋„๋ก, ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํˆด๋ฐ•์Šค๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋ธ์€ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์„ ์ผ๋ถ€๋งŒ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.',$e,S,Oe="๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:",ve,N,Ye='<li>๋ชจ๋ธ์€ <strong>๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ์œ ํ˜•</strong>์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด <code>UNet2DConditionModel</code> ํด๋ž˜์Šค๋Š” 2D ์ด๋ฏธ์ง€ ์ž…๋ ฅ์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์ผ๋ถ€ context์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  UNet ๋ณ€ํ˜•๋“ค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋“  ๋ชจ๋ธ์€ <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models" rel="nofollow"><code>src/diffusers/models</code></a>์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜๋Š” ํ•ด๋‹น ํŒŒ์ผ์— ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unet_2d_condition.py" rel="nofollow"><code>unet_2d_condition.py</code></a>, <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformer_2d.py" rel="nofollow"><code>transformer_2d.py</code></a> ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>๋ชจ๋ธ์€ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์„ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉฐ, <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention.py" rel="nofollow"><code>attention.py</code></a>, <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/resnet.py" rel="nofollow"><code>resnet.py</code></a>, <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/embeddings.py" rel="nofollow"><code>embeddings.py</code></a> ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์€ ๋ชจ๋ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. <strong>์ฐธ๊ณ </strong>: ์ด๋Š” Transformers์˜ ๋ชจ๋ธ๋ง ํŒŒ์ผ๊ณผ๋Š” ๋Œ€์กฐ์ ์œผ๋กœ ๋ชจ๋ธ์ด ์‹ค์ œ๋กœ ๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…์„ ๋”ฐ๋ฅด์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.</li> <li>๋ชจ๋ธ์€ PyTorch์˜ <code>Module</code> ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณต์žก์„ฑ์„ ๋…ธ์ถœํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋“  ๋ชจ๋ธ์€ <code>ModelMixin</code>๊ณผ <code>ConfigMixin</code>์„ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋ธ์€ ์ฃผ์š” ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ์—ญํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ์ปดํ“จํŒ…๊ณผ ๊ด€๋ จํ•œ ์ค‘์š”ํ•œ ์ด๋“์„ ์ œ๊ณตํ•  ๋•Œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>๋ชจ๋ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ๋†’์€ ์ •๋ฐ€๋„์™€ ๊ฐ€์žฅ ๋‚ฎ์€ ์„ฑ๋Šฅ ์„ค์ •์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>Diffusers์— ์ด๋ฏธ ์žˆ๋Š” ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ํ†ตํ•ฉํ•  ๋•Œ๋Š” ๊ธฐ์กด ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ƒˆ๋กœ์šด ์ฒดํฌํฌ์ธํŠธ์™€ ํ˜ธํ™˜๋˜๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋ธ์€ ๋ฏธ๋ž˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ฐœ ํ•จ์ˆ˜ ์ธ์ˆ˜๋“ค๊ณผ ๊ตฌ์„ฑ ์ธ์ˆ˜๋“ค์„ ์ œํ•œํ•˜๊ณ ,๋ฏธ๋ž˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ โ€œ์˜ˆ์ƒโ€ํ•˜๋Š” ๊ฒƒ์„ ํ†ตํ•ด ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถˆ๋ฆฌ์–ธ <code>is_..._type</code> ์ธ์ˆ˜๋ณด๋‹ค๋Š” ์ƒˆ๋กœ์šด ๋ฏธ๋ž˜ ์œ ํ˜•์— ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด โ€œโ€ฆtypeโ€ ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜์— ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ๋งŒ์„ ๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋ธ ๋””์ž์ธ์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ„๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งŽ์€ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์˜ ์–ด๋ ค์šด ๊ท ํ˜• ์กฐ์ ˆ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ๋ง ์ฝ”๋“œ์˜ ๋Œ€๋ถ€๋ถ„์€ ์ƒˆ๋กœ์šด ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์œ„ํ•ด ํด๋ž˜์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ, <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unet_2d_blocks.py" rel="nofollow">UNet ๋ธ”๋ก</a> ๋ฐ <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py" rel="nofollow">Attention ํ”„๋กœ์„ธ์„œ</a>์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์žฅ๊ธฐ์ ์œผ๋กœ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์˜ˆ์™ธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.</li>',we,F,Te,G,Je="์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ถ”๋ก ์„ ์œ„ํ•œ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๊ณผ์ •์„ ์•ˆ๋‚ดํ•˜๊ณ  ํ›ˆ๋ จ์„ ์œ„ํ•œ ๋…ธ์ด์ฆˆ ์Šค์ผ€์ค„์„ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ๊ณผ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์„ ์—„๊ฒฉํžˆ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.",ye,R,Ke="๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:",xe,O,Qe='<li>๋ชจ๋“  ์Šค์ผ€์ค„๋Ÿฌ๋Š” <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/schedulers" rel="nofollow"><code>src/diffusers/schedulers</code></a>์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>์Šค์ผ€์ค„๋Ÿฌ๋Š” ํฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํŒŒ์ผ์—์„œ ๊ฐ€์ ธ์˜ค์ง€ <strong>์•Š์•„์•ผ</strong> ํ•˜๋ฉฐ, ์ž์ฒด ํฌํ•จ์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>ํ•˜๋‚˜์˜ ์Šค์ผ€์ค„๋Ÿฌ Python ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ์Šค์ผ€์ค„๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋…ผ๋ฌธ์—์„œ ์ •์˜๋œ ๊ฒƒ๊ณผ ๊ฐ™์€)์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.</li> <li>์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ, <code># Copied from</code> ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>๋ชจ๋“  ์Šค์ผ€์ค„๋Ÿฌ๋Š” <code>SchedulerMixin</code>๊ณผ <code>ConfigMixin</code>์„ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค.</li> <li><a href="https://huggingface.co/docs/diffusers/main/en/api/configuration#diffusers.ConfigMixin.from_config" rel="nofollow"><code>ConfigMixin.from_config</code></a> ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ <a href="../using-diffusers/schedulers.md">์—ฌ๊ธฐ</a>์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋ชจ๋“  ์Šค์ผ€์ค„๋Ÿฌ๋Š” <code>set_num_inference_steps</code>์™€ <code>step</code> ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. <code>set_num_inference_steps(...)</code>๋Š” ๊ฐ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๊ณผ์ •(์ฆ‰, <code>step(...)</code>์ด ํ˜ธ์ถœ๋˜๊ธฐ ์ „) ์ด์ „์— ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๊ฐ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋ชจ๋ธ์ด ํ˜ธ์ถœ๋  ํƒ€์ž„์Šคํ…์˜ ๋ฐฐ์—ด์ธ <code>timesteps</code> ์†์„ฑ์„ ํ†ตํ•ด ๋ฃจํ”„๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž„์Šคํ…์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.</li> <li><code>step(...)</code> ํ•จ์ˆ˜๋Š” ์˜ˆ์ธก๋œ ๋ชจ๋ธ ์ถœ๋ ฅ๊ณผ โ€œํ˜„์žฌโ€ ์ƒ˜ํ”Œ(x_t)์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๊ณ , โ€œ์ด์ „โ€ ์•ฝ๊ฐ„ ๋” ๋…ธ์ด์ฆˆ๊ฐ€ ์ œ๊ฑฐ๋œ ์ƒ˜ํ”Œ(x_t-1)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.</li> <li>๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ์Šค์ผ€์ค„๋Ÿฌ์˜ ๋ณต์žก์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ, <code>step</code> ํ•จ์ˆ˜๋Š” ๋ชจ๋“  ๋ณต์žก์„ฑ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉฐ, โ€œ๋ธ”๋ž™ ๋ฐ•์Šคโ€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</li> <li>๊ฑฐ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ƒˆ๋กœ์šด ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ƒˆ๋กœ์šด ์Šค์ผ€์ค„๋ง ํŒŒ์ผ์— ๊ตฌํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</li>',Ce,Y,Me,K,Le;return _=new g({props:{title:"์ฒ ํ•™",local:"philosophy",headingTag:"h1"}}),w=new g({props:{title:"์„ฑ๋Šฅ๋ณด๋‹ค๋Š” ์‚ฌ์šฉ์„ฑ์„",local:"usability-over-performance",headingTag:"h2"}}),y=new g({props:{title:"์‰ฌ์›€๋ณด๋‹ค๋Š” ๊ฐ„๋‹จํ•จ์„",local:"simple-over-easy",headingTag:"h2"}}),M=new g({props:{title:"์ถ”์ƒํ™”๋ณด๋‹ค๋Š” ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ ์‰ฌ์›€์„",local:"tweakable-contributor-friendly-over-abstraction",headingTag:"h2"}}),A=new g({props:{title:"๋””์ž์ธ ์ฒ ํ•™ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ",local:"design-philosophy-in-details",headingTag:"h2"}}),B=new g({props:{title:"ํŒŒ์ดํ”„๋ผ์ธ",local:"pipelines",headingTag:"h3"}}),j=new g({props:{title:"๋ชจ๋ธ",local:"models",headingTag:"h3"}}),F=new g({props:{title:"์Šค์ผ€์ค„๋Ÿฌ",local:"schedulers",headingTag:"h3"}}),Y=new ft({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/conceptual/philosophy.md"}}),{c(){a=n("meta"),Q=s(),J=n("p"),V=s(),u(_.$$.fragment),W=s(),b=n("p"),b.innerHTML=He,X=s(),$=n("p"),$.textContent=De,Z=s(),v=n("p"),v.innerHTML=Ee,ee=s(),u(w.$$.fragment),te=s(),T=n("ul"),T.innerHTML=Ae,ie=s(),u(y.$$.fragment),le=s(),x=n("p"),x.innerHTML=ke,se=s(),C=n("ul"),C.innerHTML=Be,fe=s(),u(M.$$.fragment),ne=s(),L=n("p"),L.innerHTML=Ue,oe=s(),P=n("ul"),P.innerHTML=ze,re=s(),H=n("p"),H.innerHTML=Ie,ae=s(),D=n("p"),D.innerHTML=je,ue=s(),E=n("p"),E.innerHTML=qe,pe=s(),u(A.$$.fragment),de=s(),k=n("p"),k.innerHTML=Se,ce=s(),u(B.$$.fragment),me=s(),U=n("p"),U.innerHTML=Ne,he=s(),z=n("p"),z.textContent=Fe,ge=s(),I=n("ul"),I.innerHTML=Ge,_e=s(),u(j.$$.fragment),be=s(),q=n("p"),q.innerHTML=Re,$e=s(),S=n("p"),S.textContent=Oe,ve=s(),N=n("ul"),N.innerHTML=Ye,we=s(),u(F.$$.fragment),Te=s(),G=n("p"),G.innerHTML=Je,ye=s(),R=n("p"),R.textContent=Ke,xe=s(),O=n("ul"),O.innerHTML=Qe,Ce=s(),u(Y.$$.fragment),Me=s(),K=n("p"),this.h()},l(e){const t=lt("svelte-u9bgzb",document.head);a=o(t,"META",{name:!0,content:!0}),t.forEach(i),Q=f(e),J=o(e,"P",{}),Ve(J).forEach(i),V=f(e),p(_.$$.fragment,e),W=f(e),b=o(e,"P",{"data-svelte-h":!0}),r(b)!=="svelte-1ji6eqy"&&(b.innerHTML=He),X=f(e),$=o(e,"P",{"data-svelte-h":!0}),r($)!=="svelte-1fdsr1f"&&($.textContent=De),Z=f(e),v=o(e,"P",{"data-svelte-h":!0}),r(v)!=="svelte-1atndgl"&&(v.innerHTML=Ee),ee=f(e),p(w.$$.fragment,e),te=f(e),T=o(e,"UL",{"data-svelte-h":!0}),r(T)!=="svelte-1trq0k2"&&(T.innerHTML=Ae),ie=f(e),p(y.$$.fragment,e),le=f(e),x=o(e,"P",{"data-svelte-h":!0}),r(x)!=="svelte-xzscz6"&&(x.innerHTML=ke),se=f(e),C=o(e,"UL",{"data-svelte-h":!0}),r(C)!=="svelte-12pmbv3"&&(C.innerHTML=Be),fe=f(e),p(M.$$.fragment,e),ne=f(e),L=o(e,"P",{"data-svelte-h":!0}),r(L)!=="svelte-1fr3szq"&&(L.innerHTML=Ue),oe=f(e),P=o(e,"UL",{"data-svelte-h":!0}),r(P)!=="svelte-1148av6"&&(P.innerHTML=ze),re=f(e),H=o(e,"P",{"data-svelte-h":!0}),r(H)!=="svelte-1tq7m8c"&&(H.innerHTML=Ie),ae=f(e),D=o(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-18b2gzj"&&(D.innerHTML=je),ue=f(e),E=o(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-1ldknf5"&&(E.innerHTML=qe),pe=f(e),p(A.$$.fragment,e),de=f(e),k=o(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-1jdl5qr"&&(k.innerHTML=Se),ce=f(e),p(B.$$.fragment,e),me=f(e),U=o(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-mw6hy4"&&(U.innerHTML=Ne),he=f(e),z=o(e,"P",{"data-svelte-h":!0}),r(z)!=="svelte-wb2a6h"&&(z.textContent=Fe),ge=f(e),I=o(e,"UL",{"data-svelte-h":!0}),r(I)!=="svelte-10e1ypc"&&(I.innerHTML=Ge),_e=f(e),p(j.$$.fragment,e),be=f(e),q=o(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-xwsbk9"&&(q.innerHTML=Re),$e=f(e),S=o(e,"P",{"data-svelte-h":!0}),r(S)!=="svelte-wb2a6h"&&(S.textContent=Oe),ve=f(e),N=o(e,"UL",{"data-svelte-h":!0}),r(N)!=="svelte-iz4amy"&&(N.innerHTML=Ye),we=f(e),p(F.$$.fragment,e),Te=f(e),G=o(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-1fhrzvh"&&(G.innerHTML=Je),ye=f(e),R=o(e,"P",{"data-svelte-h":!0}),r(R)!=="svelte-wb2a6h"&&(R.textContent=Ke),xe=f(e),O=o(e,"UL",{"data-svelte-h":!0}),r(O)!=="svelte-nfgciy"&&(O.innerHTML=Qe),Ce=f(e),p(Y.$$.fragment,e),Me=f(e),K=o(e,"P",{}),Ve(K).forEach(i),this.h()},h(){We(a,"name","hf:doc:metadata"),We(a,"content",ot)},m(e,t){st(document.head,a),l(e,Q,t),l(e,J,t),l(e,V,t),d(_,e,t),l(e,W,t),l(e,b,t),l(e,X,t),l(e,$,t),l(e,Z,t),l(e,v,t),l(e,ee,t),d(w,e,t),l(e,te,t),l(e,T,t),l(e,ie,t),d(y,e,t),l(e,le,t),l(e,x,t),l(e,se,t),l(e,C,t),l(e,fe,t),d(M,e,t),l(e,ne,t),l(e,L,t),l(e,oe,t),l(e,P,t),l(e,re,t),l(e,H,t),l(e,ae,t),l(e,D,t),l(e,ue,t),l(e,E,t),l(e,pe,t),d(A,e,t),l(e,de,t),l(e,k,t),l(e,ce,t),d(B,e,t),l(e,me,t),l(e,U,t),l(e,he,t),l(e,z,t),l(e,ge,t),l(e,I,t),l(e,_e,t),d(j,e,t),l(e,be,t),l(e,q,t),l(e,$e,t),l(e,S,t),l(e,ve,t),l(e,N,t),l(e,we,t),d(F,e,t),l(e,Te,t),l(e,G,t),l(e,ye,t),l(e,R,t),l(e,xe,t),l(e,O,t),l(e,Ce,t),d(Y,e,t),l(e,Me,t),l(e,K,t),Le=!0},p:Ze,i(e){Le||(c(_.$$.fragment,e),c(w.$$.fragment,e),c(y.$$.fragment,e),c(M.$$.fragment,e),c(A.$$.fragment,e),c(B.$$.fragment,e),c(j.$$.fragment,e),c(F.$$.fragment,e),c(Y.$$.fragment,e),Le=!0)},o(e){m(_.$$.fragment,e),m(w.$$.fragment,e),m(y.$$.fragment,e),m(M.$$.fragment,e),m(A.$$.fragment,e),m(B.$$.fragment,e),m(j.$$.fragment,e),m(F.$$.fragment,e),m(Y.$$.fragment,e),Le=!1},d(e){e&&(i(Q),i(J),i(V),i(W),i(b),i(X),i($),i(Z),i(v),i(ee),i(te),i(T),i(ie),i(le),i(x),i(se),i(C),i(fe),i(ne),i(L),i(oe),i(P),i(re),i(H),i(ae),i(D),i(ue),i(E),i(pe),i(de),i(k),i(ce),i(me),i(U),i(he),i(z),i(ge),i(I),i(_e),i(be),i(q),i($e),i(S),i(ve),i(N),i(we),i(Te),i(G),i(ye),i(R),i(xe),i(O),i(Ce),i(Me),i(K)),i(a),h(_,e),h(w,e),h(y,e),h(M,e),h(A,e),h(B,e),h(j,e),h(F,e),h(Y,e)}}}const ot='{"title":"์ฒ ํ•™","local":"philosophy","sections":[{"title":"์„ฑ๋Šฅ๋ณด๋‹ค๋Š” ์‚ฌ์šฉ์„ฑ์„","local":"usability-over-performance","sections":[],"depth":2},{"title":"์‰ฌ์›€๋ณด๋‹ค๋Š” ๊ฐ„๋‹จํ•จ์„","local":"simple-over-easy","sections":[],"depth":2},{"title":"์ถ”์ƒํ™”๋ณด๋‹ค๋Š” ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ ์‰ฌ์›€์„","local":"tweakable-contributor-friendly-over-abstraction","sections":[],"depth":2},{"title":"๋””์ž์ธ ์ฒ ํ•™ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ","local":"design-philosophy-in-details","sections":[{"title":"ํŒŒ์ดํ”„๋ผ์ธ","local":"pipelines","sections":[],"depth":3},{"title":"๋ชจ๋ธ","local":"models","sections":[],"depth":3},{"title":"์Šค์ผ€์ค„๋Ÿฌ","local":"schedulers","sections":[],"depth":3}],"depth":2}],"depth":1}';function rt(Pe){return et(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class dt extends tt{constructor(a){super(),it(this,a,rt,nt,Xe,{})}}export{dt as component};

Xet Storage Details

Size:
25.8 kB
ยท
Xet hash:
0d06ad92bffbc7e673f0a80b02001feba6e6bc865431e8c633d54c51c004018e

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