Buckets:

rtrm's picture
download
raw
26.2 kB
import{s as et,n as tt,o as it}from"../chunks/scheduler.23542ac5.js";import{S as lt,i as st,e as n,s,c as a,h as ft,a as o,d as i,b as f,f as Xe,g as u,j as r,k as Ze,l as nt,m as l,n as p,t as d,o as c,p as m}from"../chunks/index.9b1f405b.js";import{C as ot,H as g,E as rt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a6a9b8fe.js";function at(De){let h,V,K,W,$,X,b,Z,_,Ee=`๐Ÿงจ Diffusers๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ์—์„œ <strong>์ตœ์‹ ์˜</strong> ์‚ฌ์ „ ํ›ˆ๋ จ๋œ diffusion ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ทธ ๋ชฉ์ ์€ ์ถ”๋ก ๊ณผ ํ›ˆ๋ จ์„ ์œ„ํ•œ <strong>๋ชจ๋“ˆ์‹ ํˆด๋ฐ•์Šค</strong>๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.`,ee,v,Ae="์ €ํฌ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๋ณ€์น˜ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ์— API ์„ค๊ณ„๋ฅผ ๋งค์šฐ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.",te,w,ke='๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Diffusers๋Š” PyTorch๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์„ค๊ณ„ ์„ ํƒ์€ <a href="https://pytorch.org/docs/stable/community/design.html#pytorch-design-philosophy" rel="nofollow">PyTorch์˜ ์„ค๊ณ„ ์›์น™</a>์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:',ie,y,le,T,Be='<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>',se,x,fe,C,ze="PyTorch์—์„œ๋Š” <strong>๋ช…์‹œ์ ์ธ ๊ฒƒ์ด ์•”์‹œ์ ์ธ ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค</strong>์™€ <strong>๋‹จ์ˆœํ•œ ๊ฒƒ์ด ๋ณต์žกํ•œ ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค</strong>๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค๊ณ„ ์ฒ ํ•™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋ฐ˜์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:",ne,M,Ue='<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>',oe,L,re,P,Ie=`๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋Œ€๋ถ€๋ถ„์— ๋Œ€ํ•ด 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๋Š” ๋งค์šฐ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”์™€ ๋งค์šฐ ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜, ๊ธด ์ฝ”๋“œ ๋ธ”๋ก, ์‹ฌ์ง€์–ด ํด๋ž˜์Šค๋„ ์—ฌ๋Ÿฌ ํŒŒ์ผ์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ฒ˜์Œ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๋‚˜์œ, ์„œํˆฌ๋ฅธ ์„ค๊ณ„ ์„ ํƒ์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋Š” ๋งค์šฐ ์„ฑ๊ณต์ ์ด๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๊ณ„ ํ•™์Šต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:`,ae,H,je="<li>๊ธฐ๊ณ„ ํ•™์Šต์€ ํŒจ๋Ÿฌ๋‹ค์ž„, ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๋ถ„์•ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋žœ ๊ธฐ๊ฐ„ ์ง€์†๋˜๋Š” ์ฝ”๋“œ ์ถ”์ƒํ™”๋ฅผ ์ •์˜ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.</li> <li>๊ธฐ๊ณ„ ํ•™์Šต ์ „๋ฌธ๊ฐ€๋“ค์€ ์•„์ด๋””์–ด์™€ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•ด ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๋งŽ์€ ์ถ”์ƒํ™”๋ณด๋‹ค๋Š” ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.</li> <li>์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ์— ์˜์กดํ•˜๋ฏ€๋กœ, ๊ธฐ์—ฌํ•˜๊ธฐ ์‰ฌ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ถ”์ƒํ™”๋˜๋ฉด ์˜์กด์„ฑ์ด ๋งŽ์•„์ง€๊ณ  ์ฝ๊ธฐ ์–ด๋ ต๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์ž๋“ค์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋ง๊ฐ€๋œจ๋ฆด๊นŒ ๋‘๋ ค์›Œํ•˜์—ฌ ๋งค์šฐ ์ถ”์ƒํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ธฐ์—ฌํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆด ์ˆ˜ ์—†๋‹ค๋ฉด, ์ž ์žฌ์ ์ธ ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž์—๊ฒŒ ๋”์šฑ ํ™˜์˜๋ฐ›์„ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ฒ€ํ† ํ•˜๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.</li>",ue,D,Se='Hugging Face์—์„œ๋Š” ์ด ์„ค๊ณ„๋ฅผ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ํŠน์ • ํด๋ž˜์Šค์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ํŒŒ์ผ์— ์ž‘์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ฒ ํ•™์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด <a href="https://huggingface.co/blog/transformers-design-philosophy" rel="nofollow">์ด ๋ธ”๋กœ๊ทธ ๊ธ€</a>์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',pe,E,qe='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>์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.',de,A,Ne=`์ข‹์•„์š”, ์ด์ œ ๐Ÿงจ Diffusers๊ฐ€ ์„ค๊ณ„๋œ ๋ฐฉ์‹์„ ๋Œ€๋žต์ ์œผ๋กœ ์ดํ•ดํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿค—.
์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์„ค๊ณ„ ์›์น™์„ ์ผ๊ด€๋˜๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด์— ์ ์šฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฒ ํ•™์— ๋Œ€ํ•œ ์ผ๋ถ€ ์˜ˆ์™ธ ์‚ฌํ•ญ์ด๋‚˜ ๋ถˆํ–‰ํ•œ ์„ค๊ณ„ ์„ ํƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์ž์ธ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๋‹ค๋ฉด <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&amp;labels=&amp;template=feedback.md&amp;title=" rel="nofollow">GitHub์—์„œ ์ง์ ‘</a> ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.`,ce,k,me,B,Fe='์ด์ œ ๋””์ž์ธ ์ฒ ํ•™์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 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>. ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์„ค๊ณ„ ๊ฒฐ์ • ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.',he,z,ge,U,Ge='ํŒŒ์ดํ”„๋ผ์ธ์€ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ (๋”ฐ๋ผ์„œ <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>๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์‹œ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.',$e,I,Re="๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:",be,j,Oe='<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/stable-diffusion-v1-5/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,S,ve,q,Ye='๋ชจ๋ธ์€ <a href="https://pytorch.org/docs/stable/generated/torch.nn.Module.html" rel="nofollow">PyTorch์˜ Module ํด๋ž˜์Šค</a>์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ™•์žฅ์ด ๋˜๋„๋ก, ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํˆด๋ฐ•์Šค๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋ธ์€ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์„ ์ผ๋ถ€๋งŒ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.',we,N,Je="๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:",ye,F,Ke='<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>',Te,G,xe,R,Qe="์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ถ”๋ก ์„ ์œ„ํ•œ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ๊ณผ์ •์„ ์•ˆ๋‚ดํ•˜๊ณ  ํ›ˆ๋ จ์„ ์œ„ํ•œ ๋…ธ์ด์ฆˆ ์Šค์ผ€์ค„์„ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ๊ณผ <strong>๋‹จ์ผ ํŒŒ์ผ ์ •์ฑ…</strong>์„ ์—„๊ฒฉํžˆ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.",Ce,O,Ve="๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„ ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:",Me,Y,We='<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">์—ฌ๊ธฐ</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>',Le,J,Pe,Q,He;return $=new ot({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),b=new g({props:{title:"์ฒ ํ•™",local:"philosophy",headingTag:"h1"}}),y=new g({props:{title:"์„ฑ๋Šฅ๋ณด๋‹ค๋Š” ์‚ฌ์šฉ์„ฑ์„",local:"usability-over-performance",headingTag:"h2"}}),x=new g({props:{title:"์‰ฌ์›€๋ณด๋‹ค๋Š” ๊ฐ„๋‹จํ•จ์„",local:"simple-over-easy",headingTag:"h2"}}),L=new g({props:{title:"์ถ”์ƒํ™”๋ณด๋‹ค๋Š” ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ ์‰ฌ์›€์„",local:"tweakable-contributor-friendly-over-abstraction",headingTag:"h2"}}),k=new g({props:{title:"๋””์ž์ธ ์ฒ ํ•™ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ",local:"design-philosophy-in-details",headingTag:"h2"}}),z=new g({props:{title:"ํŒŒ์ดํ”„๋ผ์ธ",local:"pipelines",headingTag:"h3"}}),S=new g({props:{title:"๋ชจ๋ธ",local:"models",headingTag:"h3"}}),G=new g({props:{title:"์Šค์ผ€์ค„๋Ÿฌ",local:"schedulers",headingTag:"h3"}}),J=new rt({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/conceptual/philosophy.md"}}),{c(){h=n("meta"),V=s(),K=n("p"),W=s(),a($.$$.fragment),X=s(),a(b.$$.fragment),Z=s(),_=n("p"),_.innerHTML=Ee,ee=s(),v=n("p"),v.textContent=Ae,te=s(),w=n("p"),w.innerHTML=ke,ie=s(),a(y.$$.fragment),le=s(),T=n("ul"),T.innerHTML=Be,se=s(),a(x.$$.fragment),fe=s(),C=n("p"),C.innerHTML=ze,ne=s(),M=n("ul"),M.innerHTML=Ue,oe=s(),a(L.$$.fragment),re=s(),P=n("p"),P.innerHTML=Ie,ae=s(),H=n("ul"),H.innerHTML=je,ue=s(),D=n("p"),D.innerHTML=Se,pe=s(),E=n("p"),E.innerHTML=qe,de=s(),A=n("p"),A.innerHTML=Ne,ce=s(),a(k.$$.fragment),me=s(),B=n("p"),B.innerHTML=Fe,he=s(),a(z.$$.fragment),ge=s(),U=n("p"),U.innerHTML=Ge,$e=s(),I=n("p"),I.textContent=Re,be=s(),j=n("ul"),j.innerHTML=Oe,_e=s(),a(S.$$.fragment),ve=s(),q=n("p"),q.innerHTML=Ye,we=s(),N=n("p"),N.textContent=Je,ye=s(),F=n("ul"),F.innerHTML=Ke,Te=s(),a(G.$$.fragment),xe=s(),R=n("p"),R.innerHTML=Qe,Ce=s(),O=n("p"),O.textContent=Ve,Me=s(),Y=n("ul"),Y.innerHTML=We,Le=s(),a(J.$$.fragment),Pe=s(),Q=n("p"),this.h()},l(e){const t=ft("svelte-u9bgzb",document.head);h=o(t,"META",{name:!0,content:!0}),t.forEach(i),V=f(e),K=o(e,"P",{}),Xe(K).forEach(i),W=f(e),u($.$$.fragment,e),X=f(e),u(b.$$.fragment,e),Z=f(e),_=o(e,"P",{"data-svelte-h":!0}),r(_)!=="svelte-1ji6eqy"&&(_.innerHTML=Ee),ee=f(e),v=o(e,"P",{"data-svelte-h":!0}),r(v)!=="svelte-1fdsr1f"&&(v.textContent=Ae),te=f(e),w=o(e,"P",{"data-svelte-h":!0}),r(w)!=="svelte-1atndgl"&&(w.innerHTML=ke),ie=f(e),u(y.$$.fragment,e),le=f(e),T=o(e,"UL",{"data-svelte-h":!0}),r(T)!=="svelte-1trq0k2"&&(T.innerHTML=Be),se=f(e),u(x.$$.fragment,e),fe=f(e),C=o(e,"P",{"data-svelte-h":!0}),r(C)!=="svelte-xzscz6"&&(C.innerHTML=ze),ne=f(e),M=o(e,"UL",{"data-svelte-h":!0}),r(M)!=="svelte-12pmbv3"&&(M.innerHTML=Ue),oe=f(e),u(L.$$.fragment,e),re=f(e),P=o(e,"P",{"data-svelte-h":!0}),r(P)!=="svelte-1fr3szq"&&(P.innerHTML=Ie),ae=f(e),H=o(e,"UL",{"data-svelte-h":!0}),r(H)!=="svelte-1148av6"&&(H.innerHTML=je),ue=f(e),D=o(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-1tq7m8c"&&(D.innerHTML=Se),pe=f(e),E=o(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-18b2gzj"&&(E.innerHTML=qe),de=f(e),A=o(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-1ldknf5"&&(A.innerHTML=Ne),ce=f(e),u(k.$$.fragment,e),me=f(e),B=o(e,"P",{"data-svelte-h":!0}),r(B)!=="svelte-1jdl5qr"&&(B.innerHTML=Fe),he=f(e),u(z.$$.fragment,e),ge=f(e),U=o(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-mw6hy4"&&(U.innerHTML=Ge),$e=f(e),I=o(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-wb2a6h"&&(I.textContent=Re),be=f(e),j=o(e,"UL",{"data-svelte-h":!0}),r(j)!=="svelte-1yvsjty"&&(j.innerHTML=Oe),_e=f(e),u(S.$$.fragment,e),ve=f(e),q=o(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-xwsbk9"&&(q.innerHTML=Ye),we=f(e),N=o(e,"P",{"data-svelte-h":!0}),r(N)!=="svelte-wb2a6h"&&(N.textContent=Je),ye=f(e),F=o(e,"UL",{"data-svelte-h":!0}),r(F)!=="svelte-iz4amy"&&(F.innerHTML=Ke),Te=f(e),u(G.$$.fragment,e),xe=f(e),R=o(e,"P",{"data-svelte-h":!0}),r(R)!=="svelte-1fhrzvh"&&(R.innerHTML=Qe),Ce=f(e),O=o(e,"P",{"data-svelte-h":!0}),r(O)!=="svelte-wb2a6h"&&(O.textContent=Ve),Me=f(e),Y=o(e,"UL",{"data-svelte-h":!0}),r(Y)!=="svelte-6rwzg9"&&(Y.innerHTML=We),Le=f(e),u(J.$$.fragment,e),Pe=f(e),Q=o(e,"P",{}),Xe(Q).forEach(i),this.h()},h(){Ze(h,"name","hf:doc:metadata"),Ze(h,"content",ut)},m(e,t){nt(document.head,h),l(e,V,t),l(e,K,t),l(e,W,t),p($,e,t),l(e,X,t),p(b,e,t),l(e,Z,t),l(e,_,t),l(e,ee,t),l(e,v,t),l(e,te,t),l(e,w,t),l(e,ie,t),p(y,e,t),l(e,le,t),l(e,T,t),l(e,se,t),p(x,e,t),l(e,fe,t),l(e,C,t),l(e,ne,t),l(e,M,t),l(e,oe,t),p(L,e,t),l(e,re,t),l(e,P,t),l(e,ae,t),l(e,H,t),l(e,ue,t),l(e,D,t),l(e,pe,t),l(e,E,t),l(e,de,t),l(e,A,t),l(e,ce,t),p(k,e,t),l(e,me,t),l(e,B,t),l(e,he,t),p(z,e,t),l(e,ge,t),l(e,U,t),l(e,$e,t),l(e,I,t),l(e,be,t),l(e,j,t),l(e,_e,t),p(S,e,t),l(e,ve,t),l(e,q,t),l(e,we,t),l(e,N,t),l(e,ye,t),l(e,F,t),l(e,Te,t),p(G,e,t),l(e,xe,t),l(e,R,t),l(e,Ce,t),l(e,O,t),l(e,Me,t),l(e,Y,t),l(e,Le,t),p(J,e,t),l(e,Pe,t),l(e,Q,t),He=!0},p:tt,i(e){He||(d($.$$.fragment,e),d(b.$$.fragment,e),d(y.$$.fragment,e),d(x.$$.fragment,e),d(L.$$.fragment,e),d(k.$$.fragment,e),d(z.$$.fragment,e),d(S.$$.fragment,e),d(G.$$.fragment,e),d(J.$$.fragment,e),He=!0)},o(e){c($.$$.fragment,e),c(b.$$.fragment,e),c(y.$$.fragment,e),c(x.$$.fragment,e),c(L.$$.fragment,e),c(k.$$.fragment,e),c(z.$$.fragment,e),c(S.$$.fragment,e),c(G.$$.fragment,e),c(J.$$.fragment,e),He=!1},d(e){e&&(i(V),i(K),i(W),i(X),i(Z),i(_),i(ee),i(v),i(te),i(w),i(ie),i(le),i(T),i(se),i(fe),i(C),i(ne),i(M),i(oe),i(re),i(P),i(ae),i(H),i(ue),i(D),i(pe),i(E),i(de),i(A),i(ce),i(me),i(B),i(he),i(ge),i(U),i($e),i(I),i(be),i(j),i(_e),i(ve),i(q),i(we),i(N),i(ye),i(F),i(Te),i(xe),i(R),i(Ce),i(O),i(Me),i(Y),i(Le),i(Pe),i(Q)),i(h),m($,e),m(b,e),m(y,e),m(x,e),m(L,e),m(k,e),m(z,e),m(S,e),m(G,e),m(J,e)}}}const ut='{"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 pt(De){return it(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ht extends lt{constructor(h){super(),st(this,h,pt,at,et,{})}}export{ht as component};

Xet Storage Details

Size:
26.2 kB
ยท
Xet hash:
dd815202e9b286622a17f18ee2b6c849ba7bef01b8a2aa4ba7a44881828ebbe4

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