Diffusers documentation
스케줄러
스케줄러
🤗 Diffusers는 확산 과정에 사용할 수 있는 다양한 스케줄러 함수를 제공합니다. 스케줄러는 모델의 출력(확산 과정이 반복적으로 처리하는 샘플)과 타임스텝을 받아 노이즈가 제거된 샘플을 반환합니다. 타임스텝은 확산 과정에서 해당 단계가 어디에 위치하는지를 결정하므로 중요합니다. 데이터는 n개의 타임스텝을 순방향으로 반복하여 생성되고, 추론은 타임스텝을 역방향으로 전파하여 수행됩니다. 타임스텝에 따라 스케줄러는 discrete일 수 있으며, 이 경우 타임스텝은 int입니다. 또는 continuous일 수 있으며, 이 경우 타임스텝은 float입니다.
컨텍스트에 따라 스케줄러는 이미지에 노이즈를 반복적으로 추가하는 방법 또는 모델의 출력을 기반으로 샘플을 업데이트하는 방법을 정의합니다:
- training 동안 스케줄러는 샘플에 노이즈를 추가하여(노이즈를 추가하는 방식에 따라 다양한 알고리즘이 존재합니다) diffusion 모델을 학습시킵니다
- 추론 중에 스케줄러는 사전 학습된 모델의 출력을 기반으로 샘플을 업데이트하는 방식을 정의합니다
k-diffusion 라이브러리의 Katherine Crowson에 의해 구현된 여러 스케줄러가 있으며, A1111에서도 널리 사용됩니다. k-diffusion과 A1111의 스케줄러를 🤗 Diffusers의 스케줄러에 매핑하는 데 도움이 되도록 아래 표를 참고하세요:
| A1111/k-diffusion | 🤗 Diffusers | 사용 |
|---|---|---|
| DPM++ 2M | DPMSolverMultistepScheduler | |
| DPM++ 2M Karras | DPMSolverMultistepScheduler | use_karras_sigmas=True로 초기화 |
| DPM++ 2M SDE | DPMSolverMultistepScheduler | algorithm_type="sde-dpmsolver++"로 초기화 |
| DPM++ 2M SDE Karras | DPMSolverMultistepScheduler | use_karras_sigmas=True와 algorithm_type="sde-dpmsolver++"로 초기화 |
| DPM++ 2S a | N/A | DPMSolverSinglestepScheduler와 매우 유사합니다 |
| DPM++ 2S a Karras | N/A | DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)와 매우 유사합니다 |
| DPM++ SDE | DPMSolverSinglestepScheduler | |
| DPM++ SDE Karras | DPMSolverSinglestepScheduler | use_karras_sigmas=True로 초기화 |
| DPM2 | KDPM2DiscreteScheduler | |
| DPM2 Karras | KDPM2DiscreteScheduler | use_karras_sigmas=True로 초기화 |
| DPM2 a | KDPM2AncestralDiscreteScheduler | |
| DPM2 a Karras | KDPM2AncestralDiscreteScheduler | use_karras_sigmas=True로 초기화 |
| DPM 적응 | N/A | |
| DPM fast | N/A | |
| Euler | EulerDiscreteScheduler | |
| Euler a | EulerAncestralDiscreteScheduler | |
| Heun | HeunDiscreteScheduler | |
| LMS | LMSDiscreteScheduler | |
| LMS Karras | LMSDiscreteScheduler | use_karras_sigmas=True로 초기화 |
| N/A | DEISMultistepScheduler | |
| N/A | UniPCMultistepScheduler |
노이즈 스케줄 및 스케줄 유형
| A1111/k-diffusion | 🤗 Diffusers |
|---|---|
| Karras | use_karras_sigmas=True로 초기화 |
| sgm_uniform | timestep_spacing="trailing"로 초기화 |
| 단순 | timestep_spacing="trailing"로 초기화 |
| 지수 | timestep_spacing="linspace", use_exponential_sigmas=True로 초기화 |
| beta | timestep_spacing="linspace", use_beta_sigmas=True로 초기화 |
모든 스케줄러는 모든 스케줄러에서 공유되는 저수준 유틸리티를 구현하는 기본 SchedulerMixin 클래스를 기반으로 구축됩니다.
SchedulerMixin
모든 스케줄러의 베이스 클래스입니다.
SchedulerMixin에는 모든 스케줄러에서 공유하는 일반적인 로딩 및 저장 기능과 같은 공통 함수가 포함되어 있습니다.
ConfigMixin은 스케줄러의 __init__ 함수에 전달되는 구성 속성(예: num_train_timesteps)을 저장하는 역할을 하며, 해당 속성은 scheduler.config.num_train_timesteps을 통해 접근할 수 있습니다.
클래스 속성:
- _compatibles (
list[str]) — 부모 스케줄러 클래스와 호환되는 스케줄러 클래스 목록입니다. from_config()를 사용하여 다른 호환 가능한 스케줄러 클래스를 로드할 수 있습니다(부모 클래스에서 재정의해야 합니다).
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]
매개변수
- pretrained_model_name_or_path (
str또는os.PathLike, 선택 사항) — 다음 중 하나일 수 있습니다:- Hub에 호스팅된 사전 학습 모델의 model id 문자열(예:
google/ddpm-celebahq-256). - A path to a directory (for example
./my_model_directory) containing the scheduler configuration saved with save_pretrained().
- Hub에 호스팅된 사전 학습 모델의 model id 문자열(예:
- subfolder (
str, 선택 사항) — Hub 또는 로컬의 더 큰 모델 저장소 내에서 모델 파일의 서브폴더 위치입니다. - return_unused_kwargs (
bool, 선택 사항, 기본값False) — Python 클래스에서 소비되지 않는 kwargs를 반환할지 여부입니다. - cache_dir (
str또는os.PathLike, 선택 사항) — 표준 캐시를 사용하지 않을 경우 다운로드한 사전 학습 모델 구성이 캐시되는 디렉터리의 경로입니다. - force_download (
bool, 선택 사항, 기본값False) — 모델 가중치 및 구성 파일의 (재)다운로드를 강제할지 여부입니다. 캐시된 버전이 존재하는 경우 이를 무시합니다. - proxies (
dict[str, str], 선택) — 프로토콜 또는 엔드포인트별로 사용할 프록시 서버의 사전입니다. 예를 들어,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}와 같습니다. 각 요청에 프록시가 사용됩니다. - output_loading_info (
bool, 선택 사항, 기본값False) — 누락된 키, 예상치 못한 키 및 오류 메시지를 포함하는 사전도 함께 반환할지 여부. - local_files_only (
bool, 선택 사항, 기본값False) — 로컬 모델 가중치 및 구성 파일만 로드할지 여부를 지정합니다.True로 설정하면 Hub에서 모델을 다운로드하지 않습니다. - token (
str또는bool, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다.True인 경우,diffusers-cli login에서 생성된 토큰(~/.huggingface에 저장됨)이 사용됩니다. - revision (
str, 선택 사항, 기본값"main") — 사용할 특정 모델 버전입니다. Git에서 허용하는 브랜치 이름, 태그 이름, 커밋 ID 또는 기타 식별자일 수 있습니다.
반환값
SchedulerMixin 또는 tuple[SchedulerMixin, dict[str, Any]]
구성에서 인스턴스화된 스케줄러입니다. return_unused_kwargs가 True인 경우, 두 번째 요소가 사용되지 않은 키워드 인자의 사전인 튜플이 반환됩니다.
로컬 디렉터리 또는 Hub 저장소의 사전 정의된 JSON 구성 파일에서 스케줄러를 초기화합니다.
> 비공개 또는 게이트된 모델을 사용하려면
hf > auth login으로 로그인하세요. 또한 방화벽이 있는 환경에서 이 방법을 사용하려면 특수 > “오프라인 모드”를 활성화할 수도 있습니다.
save_pretrained
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )
매개변수
- save_directory (
str또는os.PathLike) — 설정 JSON 파일이 저장될 디렉터리(존재하지 않으면 생성됩니다). - push_to_hub (
bool, 선택 사항, 기본값False) — 모델을 저장한 후 Hugging Face Hub에 푸시할지 여부입니다.repo_id를 사용하여 푸시할 저장소를 지정할 수 있으며, 지정하지 않으면 네임스페이스 내save_directory의 이름이 기본값으로 사용됩니다. - kwargs (
dict[str, Any], 선택) — push_to_hub() 메서드에 함께 전달되는 추가 키워드 인자입니다.
Save a scheduler configuration object to a directory so that it can be reloaded using the from_pretrained() class method.
SchedulerOutput
class diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
스케줄러의 step 함수 출력을 위한 베이스 클래스.
KarrasDiffusionSchedulers
KarrasDiffusionSchedulers는 🤗 Diffusers의 스케줄러를 광범위하게 일반화한 것입니다. 이 클래스의 스케줄러는 노이즈 샘플링 전략, 네트워크 유형 및 스케일링, 학습 전략, 손실 가중 방식에서 고수준으로 구별됩니다.
이 클래스의 다양한 스케줄러는 상미분방정식(ODE) 솔버 유형에 따라 위의 분류 체계에 속하며, 🤗 Diffusers에 구현된 주요 스케줄러의 설계를 위한 좋은 추상화를 제공합니다. 이 클래스의 스케줄러는 여기에서 확인할 수 있습니다.
PushToHubMixin
Hugging Face Hub에 모델, 스케줄러 또는 파이프라인을 푸시하기 위한 Mixin입니다.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )
매개변수
- repo_id (
str) — 모델, 스케줄러 또는 파이프라인 파일을 푸시할 저장소의 이름입니다. 조직에 푸시할 경우 조직 이름을 포함해야 합니다.repo_id는 로컬 디렉토리의 경로일 수도 있습니다. - commit_message (
str, 선택 사항) — 푸시할 때 커밋할 메시지. 기본값은"Upload {object}"입니다. - private (
bool, 선택 사항) — 리포지토리를 비공개로 만들지 여부를 지정합니다.None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 리포지토리는 공개됩니다. 이미 리포지토리가 존재하면 이 값은 무시됩니다. - token (
str, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다.hf auth login실행 시 생성된 토큰(~/.huggingface에 저장됨)입니다. - create_pr (
bool, 선택 사항, 기본값False) — 업로드된 파일로 PR을 생성할지 아니면 직접 커밋할지 여부. - safe_serialization (
bool, 선택 사항, 기본값True) — 모델 가중치를safetensors형식으로 변환할지 여부입니다. - variant (
str, 선택 사항) — 지정된 경우, 가중치는pytorch_model.<variant>.bin형식으로 저장됩니다.
모델, 스케줄러 또는 파이프라인 파일을 🤗 Hugging Face Hub에 업로드합니다.
예:
from diffusers import UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")
# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")
# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")