파이프라인 사용(Pipelines)
파이프라인 사용(Pipelines)
Diffusers의 DiffusionPipeline은 디퓨전 시스템 전체를 래핑해서, 복잡한 멀티모달 생성 파이프라인을 손쉽게 실행하게 해줘요. 텍스트-이미지, 이미지-이미지, 인페인팅 같은 작업을 몇 줄로 수행할 수 있어요. 파이프라인은 내부적으로 텍스트 인코더, UNet/DiT, VAE, 스케줄러를 순서대로 호출해요.
기본 실행
from_pretrained()로 불러온 파이프라인을 문자열 프롬프트로 호출하면 생성돼요. 결과의 .images[0]에서 이미지를 꺼내 씁니다.
import torch
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
use_safetensors=True,
variant="fp16",
)
image = pipe(
prompt="a wizard casting a spell",
negative_prompt="blurry, low quality",
num_inference_steps=50,
).images[0]
image.save("wizard.png")
출처: https://huggingface.co/docs/diffusers/using-diffusers/pipelines
작업별 파이프라인
DiffusionPipeline은 모델 저장소의 model_index.json을 읽어 자동으로 맞는 하위 클래스를 고르지만, 작업이 명확하다면 하위 클래스를 직접 쓸 수도 있어요. 예를 들어 인페인팅(특정 영역만 다시 그리는 것)은 전용 파이프라인을 쓰는 게 편리해요.
- 텍스트-이미지:
StableDiffusionPipeline,StableDiffusionXLPipeline - 이미지-이미지:
StableDiffusionImg2ImgPipeline - 인페인팅:
StableDiffusionInpaintPipeline
각각 from_pretrained()으로 로드해 동일한 흐름으로 사용해요.
파이프라인 파라미터
호출 시 자주 쓰는 파라미터를 정리하면:
prompt/negative_prompt: 생성할 내용과 피하고 싶은 내용.num_inference_steps: 디노이징 단계 수. 높을수록 품질은 좋아지지만 느려져요.guidance_scale: 프롬프트를 얼마나 강하게 따를지.width/height: 출력 크기.seed/generator: 재현 가능한 생성을 위한 난수 시드.
허브의 파이프라인
허브에는 수만 개의 Diffusers 호환 파이프라인이 있어요. DiffusionPipeline.from_pretrained()이 모델 저장소를 읽고 자동으로 구조를 파악하므로, 어떤 모델이든 비슷한 방식으로 시작할 수 있어요. 커스텀 모델도 표준 폴더 구조(VAE, 텍스트 인코더, UNet 등)만 지키면 허브에 올려 공유할 수 있어요.
더 알아보기
- 파이프라인 로딩: Loading Pipelines
- 스케줄러: Schedulers
- 퀵스타트: Quickstart