Diffusers 퀵스타트

퀵스타트(Quickstart)

Diffusers는 사전 훈련된 디퓨전(diffusion) 모델을 영상·이미지·오디오 생성에 바로 쓸 수 있게 해주는 라이브러리예요. 핵심 API는 DiffusionPipeline로, 몇 줄의 코드로 추론을 실행하고, 모델·스케줄러를 자유롭게 바꿔 끼울 수 있게 설계됐어요. LoRA 같은 어댑터 로딩도 지원해요.

가장 단순한 사용은 이렇게 DiffusionPipeline.from_pretrained()에 모델 id를 넘기는 거예요.

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    device_map="cuda",
)
image = pipeline("a photo of an astronaut riding a horse").images[0]
image.save("astronaut.png")

출처: https://huggingface.co/docs/diffusers/index

Diffusers가 하는 일

디퓨전 모델은 UNet·디퓨전 트랜스포머(DiT), 텍스트 인코더, VAE, 스케줄러 같은 여러 구성 요소의 조합이에요. DiffusionPipeline은 이들을 하나의 쉬운 API로 감싸면서도, 각 구성 요소를 따로 교체할 수 있는 유연성을 함께 제공해요. 구성 요소별 파이프라인 하위 클래스가 있고, 모델이 로드될 때 자동으로 적절한 하위 클래스를 선택해요.

핵심 API

  • DiffusionPipeline / 파이프라인 하위 클래스: 파이프라인 로드·실행.
  • 각 구성 요소 클래스: UNet2DConditionModel, AutoencoderKL, 텍스트 인코더 등.
  • 스케줄러: 디노이징 단계의 노이즈 제거 방식을 결정.
  • from_pretrained() / push_to_hub(): 허브에서 모델을 불러오고 공유.

지원 구성 요소

  • 학습·추론 파이프라인: DiffusionPipeline 및 작업별 하위 클래스(텍스트-이미지, 이미지-이미지, 인페인팅 등).
  • 모델 클래스: UNet·DiT·VAE·텍스트 인코더.
  • 스케줄러: DDIMScheduler, DPMSolverMultistepScheduler 등 다양한 노이즈 스케줄러.
  • 어댑터: LoRA 로딩 및 구성 요소 결합.

최적화

메모리가 넉넉하지 않은 기기에서 쓸 수 있도록 오프로딩(offloading)과 양자화(quantization) 같은 최적화를 제공해요. 메모리가 문제가 아니라면 torch.compile로 추론 속도를 높일 수 있어요.

더 알아보기