스케줄러(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같은 빠른 스케줄러가 좋아요. - 정확도 우선: 다른 품질 특성이 필요하면 원하는 특성에 맞는 스케줄러를 선택해요.
- 스케줄러는 교체해도 나머지 파이프라인 구성 요소는 그대로라, 실험하기 쉽다는 장점이 있어요.
더 알아보기
- 파이프라인 로딩: Loading Pipelines
- 파이프라인 사용: Pipelines
- 퀵스타트: Quickstart