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")
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로 추론 속도를 높일 수 있어요.
더 알아보기
- 파이프라인 로딩: Loading Pipelines
- 스케줄러: Schedulers
- 파이프라인 사용: Pipelines