์ด๋ฏธ์ง€, ๋น„๋””์˜ค, ์˜ค๋””์˜ค ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” ์ตœ์ฒจ๋‹จ ํ™•์‚ฐ ๋ชจ๋ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Apache-2.0Pythondiffusershuggingface 30.2k Last Updated: August 07, 2025

๐Ÿค— Diffusers ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ์†Œ๊ฐœ

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐Ÿค— Diffusers๋Š” Hugging Face์—์„œ ๊ฐœ๋ฐœํ•œ ์ตœ์ฒจ๋‹จ ํ™•์‚ฐ ๋ชจ๋ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ์‹ฌ์ง€์–ด ๋ถ„์ž 3D ๊ตฌ์กฐ ์ƒ์„ฑ์— ํŠนํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์ถ”๋ก  ์†”๋ฃจ์…˜์„ ์ฐพ๋“ , ์ž์‹ ๋งŒ์˜ ํ™•์‚ฐ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๋“ , ๐Ÿค— Diffusers๋Š” ๋‘˜ ๋‹ค ์ง€์›ํ•˜๋Š” ๋ชจ๋“ˆ์‹ ๋„๊ตฌ ์ƒ์ž์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ฃผ์†Œ: https://github.com/huggingface/diffusers

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

์„ค๊ณ„ ์ฒ ํ•™

  • ์„ฑ๋Šฅ๋ณด๋‹ค ์‹ค์šฉ์„ฑ (usability over performance)
  • ์‰ฌ์›€๋ณด๋‹ค ๋‹จ์ˆœํ•จ (simple over easy)
  • ์ถ”์ƒํ™”๋ณด๋‹ค ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅ์„ฑ (customizability over abstractions)

์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

  1. ์ตœ์ฒจ๋‹จ ํ™•์‚ฐ ํŒŒ์ดํ”„๋ผ์ธ (Diffusion Pipelines)

    • ๋‹จ ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋กœ ์ถ”๋ก  ์‹คํ–‰ ๊ฐ€๋Šฅ
    • ๋‹ค์–‘ํ•œ ์ƒ์„ฑ ์ž‘์—… ์ง€์›
  2. ๊ต์ฒด ๊ฐ€๋Šฅํ•œ ๋…ธ์ด์ฆˆ ์Šค์ผ€์ค„๋Ÿฌ (Noise Schedulers)

    • ๋‹ค์–‘ํ•œ ํ™•์‚ฐ ์†๋„ ์ง€์›
    • ์ถœ๋ ฅ ํ’ˆ์งˆ ์กฐ์ ˆ ๊ฐ€๋Šฅ
  3. ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ (Pretrained Models)

    • ๋นŒ๋”ฉ ๋ธ”๋ก์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ์Šค์ผ€์ค„๋Ÿฌ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์—”๋“œ ํˆฌ ์—”๋“œ ํ™•์‚ฐ ์‹œ์Šคํ…œ ์ƒ์„ฑ

์„ค์น˜ ๋ฐฉ๋ฒ•

PyTorch ๋ฒ„์ „

# ๊ณต์‹ ํŒจํ‚ค์ง€
pip install --upgrade diffusers[torch]

# ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” conda ๋ฒ„์ „
conda install -c conda-forge diffusers

Flax ๋ฒ„์ „

pip install --upgrade diffusers[flax]

๋น ๋ฅธ ์‹œ์ž‘

ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ ์ƒ์„ฑ

from diffusers import DiffusionPipeline
import torch

pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")
pipeline("An image of a squirrel in Picasso style").images[0]

์‚ฌ์šฉ์ž ์ •์˜ ํ™•์‚ฐ ์‹œ์Šคํ…œ

from diffusers import DDPMScheduler, UNet2DModel
from PIL import Image
import torch

scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
scheduler.set_timesteps(50)

sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")
input = noise

for t in scheduler.timesteps:
    with torch.no_grad():
        noisy_residual = model(input, t).sample
    prev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
    input = prev_noisy_sample

image = (input / 2 + 0.5).clamp(0, 1)
image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
image = Image.fromarray((image * 255).round().astype("uint8"))
image

์ง€์›ํ•˜๋Š” ์ฃผ์š” ์ž‘์—… ๋ฐ ๋ชจ๋ธ

์ž‘์—… ํŒŒ์ดํ”„๋ผ์ธ ์ถ”์ฒœ ๋ชจ๋ธ
๋ฌด์กฐ๊ฑด์  ์ด๋ฏธ์ง€ ์ƒ์„ฑ DDPMPipeline google/ddpm-ema-church-256
ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ StableDiffusionPipeline stable-diffusion-v1-5/stable-diffusion-v1-5
ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ (unCLIP) UnCLIPPipeline kakaobrain/karlo-v1-alpha
ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ (DeepFloyd IF) IFPipeline DeepFloyd/IF-I-XL-v1.0
ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ (Kandinsky) KandinskyPipeline kandinsky-community/kandinsky-2-2-decoder
์ œ์–ด ๊ฐ€๋Šฅํ•œ ์ƒ์„ฑ StableDiffusionControlNetPipeline lllyasviel/sd-controlnet-canny
์ด๋ฏธ์ง€ ํŽธ์ง‘ StableDiffusionInstructPix2PixPipeline timbrooks/instruct-pix2pix
์ด๋ฏธ์ง€-์ด๋ฏธ์ง€ StableDiffusionImg2ImgPipeline stable-diffusion-v1-5/stable-diffusion-v1-5
์ด๋ฏธ์ง€ ๋ณต์› StableDiffusionInpaintPipeline runwayml/stable-diffusion-inpainting
์ด๋ฏธ์ง€ ๋ณ€ํ˜• StableDiffusionImageVariationPipeline lambdalabs/sd-image-variations-diffusers
์ด๋ฏธ์ง€ ์ดˆํ•ด์ƒ๋„ StableDiffusionUpscalePipeline stabilityai/stable-diffusion-x4-upscaler
์ž ์žฌ ๊ณต๊ฐ„ ์ดˆํ•ด์ƒ๋„ StableDiffusionLatentUpscalePipeline stabilityai/sd-x2-latent-upscaler

๋ฌธ์„œ ๊ตฌ์กฐ

๋ฌธ์„œ ์œ ํ˜• ํ•™์Šต ๋‚ด์šฉ
Tutorial ๋ชจ๋ธ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์‚ฐ ์‹œ์Šคํ…œ ๊ตฌ์ถ•, ์ž์‹ ๋งŒ์˜ ํ™•์‚ฐ ๋ชจ๋ธ ํ›ˆ๋ จ๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ธฐ์ˆ  ํ•™์Šต
Loading ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ(ํŒŒ์ดํ”„๋ผ์ธ, ๋ชจ๋ธ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ)๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋‹ค์–‘ํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
Pipelines for inference ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ถ”๋ก  ์ž‘์—… ์ˆ˜ํ–‰, ์ผ๊ด„ ์ƒ์„ฑ, ์ƒ์„ฑ ์ถœ๋ ฅ ๋ฐ ๋ฌด์ž‘์œ„์„ฑ ์ œ์–ด ๋ฐฉ๋ฒ•
Optimization ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ ์ธ ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์ถ”๋ก  ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํŒŒ์ดํ”„๋ผ์ธ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
Training ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์œ„ํ•ด ์ž์‹ ๋งŒ์˜ ํ™•์‚ฐ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๋Š” ๋ฐฉ๋ฒ•

์ปค๋ฎค๋‹ˆํ‹ฐ ์ƒํƒœ๊ณ„

ํ†ตํ•ฉ ํ”„๋กœ์ ํŠธ

  • Microsoft TaskMatrix
  • InvokeAI
  • InstantID
  • Apple ML Stable Diffusion
  • Lama Cleaner
  • Grounded Segment Anything
  • Stable DreamFusion
  • DeepFloyd IF
  • BentoML
  • Kohya_ss

์š”์•ฝ

๐Ÿค— Diffusers๋Š” ํ˜„์žฌ ๊ฐ€์žฅ ์™„์ „ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ํ™•์‚ฐ ๋ชจ๋ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ’๋ถ€ํ•œ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ๊ณผ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž ์ •์˜ ํ›ˆ๋ จ ๋ฐ ์ตœ์ ํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. AI ์—ฐ๊ตฌ์ž, ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์ฐฝ์ž‘์ž ๋ชจ๋‘ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹ค์–‘ํ•œ ์ƒ์„ฑ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Star History Chart