스케줄러(Schedulers)

스케줄러(Schedulers)

스케줄러는 디노이징 과정에 지침을 주는 알고리즘이에요. 특정 단계에서 노이즈를 얼마나 제거할지 결정해요. 모델 예측(스텝 t)을 받아 다음 샘플(스텝 t-1)을 어떻게 계산할지 갱신 적용이에요. 스케줄러마다 결과가 조금씩 다른데, 어떤 건 빠르고 어떤 건 더 정확해요. Diffusers는 많은 스케줄러를 지원하고, 타임스텝 스케줄·간격을 조절해 적은 단계로 고품질 이미지를 만들 수 있게 해줘요.

스케줄러 로딩

스케줄러는 파라미터가 없고 설정 파일에 정의돼 있어요. 파이프라인의 .scheduler 속성으로 현재 설정을 확인할 수 있어요.

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    device_map="cuda",
)
pipeline.scheduler

출처: https://huggingface.co/docs/diffusers/using-diffusers/schedulers

다른 스케줄러로 바꾸려면 from_pretrained()subfolder="scheduler"를 지정해 설정 파일을 올바른 하위 폴더에서 로드하고, 새 스케줄러를 기존 파이프라인에 넘겨요.

from diffusers import DPMSolverMultistepScheduler

dpm = DPMSolverMultistepScheduler.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    subfolder="scheduler",
)
pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    scheduler=dpm,
    torch_dtype=torch.float16,
    device_map="cuda",
)

타임스텝 스케줄

타임스텝(또는 노이즈) 스케줄은 디노이징 과정에서 노이즈가 어떻게 분포되는지 결정해요. 스케줄은 선형이거나 시작·끝에 더 집중될 수 있어요. 스케줄러 기본 설정에서 생성된 사전 계산된 노이즈 수준 시퀀스인데, 필요하면 조정할 수 있어요.

스케줄러 선택 요령

  • 속도 우선: 적은 단계로 빠르게 결과가 필요하다면 DPMSolverMultistepScheduler 같은 빠른 스케줄러가 좋아요.
  • 정확도 우선: 다른 품질 특성이 필요하면 원하는 특성에 맞는 스케줄러를 선택해요.
  • 스케줄러는 교체해도 나머지 파이프라인 구성 요소는 그대로라, 실험하기 쉽다는 장점이 있어요.

더 알아보기