파이프라인 사용(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 등)만 지키면 허브에 올려 공유할 수 있어요.

더 알아보기