Diffusers documentation

PNDMScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PNDMScheduler

PNDMScheduler, 즉 확산 모델용 의사 수치 기법(pseudo numerical methods for diffusion models)은 Runge-Kutta 및 선형 다단계 방법과 같은 더 고급 ODE 적분 기법을 사용합니다. 원래 구현은 crowsonkb/k-diffusion에서 찾을 수 있습니다.

PNDMScheduler

클래스 diffusers.PNDMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )

매개변수

  • num_train_timesteps (int, 기본값 1000) — 모델을 학습할 때 사용할 diffusion 단계 수입니다.
  • beta_start (float, 기본값 0.0001) — 추론의 시작 beta 값입니다.
  • beta_end (float, 기본값 0.02) — 최종 beta 값입니다.
  • beta_schedule ("linear", "scaled_linear", 또는 "squaredcos_cap_v2", 기본값은 "linear") — 모델의 스테핑을 위한 베타 시퀀스로 베타 범위를 매핑하는 베타 스케줄입니다.
  • trained_betas (np.ndarray, 선택 사항) — beta_start와 beta_end를 우회하여 베타 배열을 생성자에 직접 전달합니다.
  • skip_prk_steps (bool, 기본값 False) — PLMS 단계 전에 원본 논문에서 필수로 지정된 Runge-Kutta 단계를 스케줄러가 건너뛰도록 허용합니다.
  • set_alpha_to_one (bool, 기본값 False) — 각 diffusion 단계는 해당 단계와 이전 단계의 alphas 곱 값을 사용합니다. 마지막 단계에는 이전 alpha가 없습니다. 이 옵션이 True이면 이전 alpha 곱 값이 1로 고정되고, 그렇지 않으면 0단계의 alpha 값을 사용합니다.
  • prediction_type ("epsilon" 또는 "v_prediction", 기본값은 "epsilon") — 스케줄러 함수의 예측 유형입니다. epsilon(확산 과정의 노이즈를 예측) 또는 v_prediction(Imagen Video 논문 2.4절 참조)를 사용할 수 있습니다.
  • timestep_spacing ("linspace", "leading" 또는 "trailing", 기본값은 "leading") — timestep을 스케일링하는 방식입니다. 자세한 내용은 일반적인 확산 노이즈 스케줄 및 샘플 단계는 결함이 있다의 표 2를 참고하세요.
  • steps_offset (int, 기본값 0) — 일부 모델 계열에서 요구하는 대로 추론 단계에 추가되는 오프셋입니다.

PNDMScheduler는 Runge-Kutta 및 선형 다단계 방법과 같은 확산 모델용 의사 수치 방법을 사용합니다.

이 모델은 SchedulerMixin과 ConfigMixin을 상속합니다. 로딩 및 저장과 같은 모든 스케줄러에 대해 라이브러리가 구현하는 일반적 메서드에 대해서는 상위 클래스 문서를 확인하세요.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

매개변수

  • original_samples (torch.Tensor) — 노이즈가 추가될 원래 샘플입니다.
  • noise (torch.Tensor) — 샘플에 추가할 노이즈입니다.
  • timesteps (torch.IntTensor) — 각 샘플의 노이즈 수준을 나타내는 timesteps.

반환값

torch.Tensor

노이즈가 포함된 샘플.

각 timestep의 노이즈 크기에 따라 원래 샘플에 노이즈를 추가합니다(이것은 forward diffusion process입니다).

scale_model_input

< >

( sample: Tensor*args**kwargs ) → torch.Tensor

매개변수

  • sample (torch.Tensor) — 입력 샘플입니다.

반환값

torch.Tensor

스케일된 입력 샘플.

현재 timestep에 따라 denoising 모델 입력을 scale해야 하는 scheduler와의 호환성을 보장합니다.

set_timesteps

< >

( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )

매개변수

  • num_inference_steps (int) — 학습된 모델로 샘플을 생성할 때 사용되는 diffusion 단계 수입니다.
  • device (str 또는 torch.device, 선택 사항) — timesteps를 이동할 대상 device입니다. None인 경우 timesteps는 이동되지 않습니다.

추론 실행 전에 실행할 diffusion chain에 사용할 이산 timesteps를 설정합니다.

단계

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple

매개변수

  • model_output (torch.Tensor) — 학습된 diffusion 모델의 직접적인 출력입니다.
  • timestep (int) — 확산 체인(diffusion chain)의 현재 이산 시간 단계(discrete timestep)입니다.
  • sample (torch.Tensor) — 확산 과정에 의해 생성된 샘플의 현재 인스턴스입니다.
  • return_dict (bool, 기본값 True) — tuple 대신 SchedulerOutput를 반환할지 여부.

반환값

SchedulerOutput 또는 tuple

return_dict가 True인 경우 SchedulerOutput이 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 튜플이 반환됩니다.

이전 시간 단계의 샘플을 SDE를 역방향으로 적용하여 예측합니다. 이 함수는 학습된 모델의 출력(대부분 예측된 노이즈)으로부터 확산 과정을 전파하며, 내부 변수 counter에 따라 step_prk() 또는 step_plms()를 호출합니다.

step_plms

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple

매개변수

  • model_output (torch.Tensor) — 학습된 diffusion 모델의 직접적인 출력입니다.
  • timestep (int) — 확산 체인(diffusion chain)의 현재 이산 시간 단계(discrete timestep)입니다.
  • sample (torch.Tensor) — 확산 과정에 의해 생성된 샘플의 현재 인스턴스입니다.
  • return_dict (bool, 기본값 True) — SchedulerOutput 또는 tuple을 반환할지 여부.

반환값

SchedulerOutput 또는 tuple

return_dict가 True인 경우 SchedulerOutput이 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 튜플이 반환됩니다.

이전 시간 단계의 샘플을 SDE를 역방향으로 적용하여 예측합니다. 이 함수는 선형 다단계 방법을 사용하여 샘플을 전파합니다. 해를 근사하기 위해 포워드 패스를 여러 번 수행합니다.

step_prk

< >

( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple

매개변수

  • model_output (torch.Tensor) — 학습된 diffusion 모델의 직접적인 출력입니다.
  • timestep (int) — 확산 체인(diffusion chain)의 현재 이산 시간 단계(discrete timestep)입니다.
  • sample (torch.Tensor) — 확산 과정에 의해 생성된 샘플의 현재 인스턴스입니다.
  • return_dict (bool, 기본값 True) — SchedulerOutput 또는 tuple을 반환할지 여부.

반환값

SchedulerOutput 또는 tuple

return_dict가 True인 경우 SchedulerOutput이 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 튜플이 반환됩니다.

이전 시간 단계의 샘플을 SDE를 역방향으로 적용하여 예측합니다. 이 함수는 Runge-Kutta 방법을 사용하여 샘플을 전파합니다. 미분 방정식의 해를 근사하기 위해 4회의 순전파를 수행합니다.

SchedulerOutput

class diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

매개변수

  • prev_sample (이미지의 경우 torch.Tensor, shape (batch_size, num_channels, height, width)) — 이전 timestep의 계산된 샘플 (x_{t-1}). prev_sample은 denoising 루프에서 다음 모델 입력으로 사용해야 합니다.

스케줄러의 step 함수 출력을 위한 베이스 클래스.

Update on GitHub