Diffusers documentation

FlowMatchEulerDiscreteScheduler

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

FlowMatchEulerDiscreteScheduler

FlowMatchEulerDiscreteScheduler는 Stable Diffusion 3에서 소개된 flow-matching 샘플링을 기반으로 합니다.

FlowMatchEulerDiscreteScheduler

클래스 diffusers.FlowMatchEulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000shift: float = 1.0use_dynamic_shifting: bool = Falsebase_shift: float | None = 0.5max_shift: float | None = 1.15base_image_seq_len: int = 256max_image_seq_len: int = 4096invert_sigmas: bool = Falseshift_terminal: float = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falsetime_shift_type: typing.Literal['exponential', 'linear'] = 'exponential'stochastic_sampling: bool = False )

매개변수

  • num_train_timesteps (int, 기본값 1000) — 모델을 학습할 때 사용할 diffusion 단계 수입니다.
  • shift (float, 기본값 1.0) — 타임스텝 스케줄에 사용할 shift 값입니다.
  • use_dynamic_shifting (bool, 기본값 False) — 이미지 해상도에 따라 timestep shifting을 실시간으로 적용할지 여부.
  • base_shift (float, 기본값 0.5) — 이미지 생성을 안정화하는 값입니다. base_shift 값을 증가시키면 변이가 줄어들고 이미지가 원하는 출력과 더 일관되게 생성됩니다.
  • max_shift (float, 기본값 1.15) — 잠재 벡터에 허용되는 값의 변화량입니다. max_shift 값을 증가시키면 더 많은 변이가 촉진되며 이미지가 더 과장되거나 스타일화될 수 있습니다.
  • base_image_seq_len (int, 기본값 256) — 기본 이미지 시퀀스 길이입니다.
  • max_image_seq_len (int, 기본값 4096) — 최대 이미지 시퀀스 길이입니다.
  • invert_sigmas (bool, 기본값 False) — sigmas를 반전할지 여부입니다.
  • shift_terminal (float, 기본값 None) — 시프트된 타임스텝 스케줄의 끝값입니다.
  • use_karras_sigmas (bool, 기본값 False) — 샘플링 중 노이즈 스케줄의 단계 크기에 Karras sigmas를 사용할지 여부입니다.
  • use_exponential_sigmas (bool, 기본값 False) — 샘플링 중 노이즈 스케줄의 스텝 크기에 지수 시그마를 사용할지 여부입니다.
  • use_beta_sigmas (bool, 기본값 False) — 샘플링 중 노이즈 스케줄의 스텝 크기에 베타 시그마를 사용할지 여부.
  • time_shift_type (str, 기본값 “exponential”) — 적용할 동적 해상도 의존 타임스텝 시프트의 유형입니다. “exponential” 또는 “linear” 중 하나여야 합니다.
  • stochastic_sampling (bool, 기본값 False) — 확률적 샘플링을 사용할지 여부입니다.

Euler 스케줄러.

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

index_for_timestep

< >

( timestep: typing.Union[float, torch.FloatTensor]schedule_timesteps: typing.Optional[torch.FloatTensor] = None ) → int

매개변수

  • timestep (float 또는 torch.FloatTensor) — 인덱스를 찾기 위한 timestep입니다.
  • schedule_timesteps (torch.FloatTensor, 선택 사항) — 검증에 사용할 스케줄 타임스텝입니다. None인 경우 스케줄러의 타임스텝이 사용됩니다.

반환값

int

timestep의 인덱스.

…

scale_noise

< >

( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None ) → torch.FloatTensor

매개변수

  • sample (torch.FloatTensor) — 입력 샘플입니다.
  • timestep (torch.FloatTensor) — 확산 체인에서의 현재 timestep입니다.
  • noise (torch.FloatTensor) — 노이즈 텐서입니다.

반환값

torch.FloatTensor

스케일된 입력 샘플.

Flow-matching의 forward process

set_begin_index

< >

( begin_index: int = 0 )

매개변수

  • begin_index (int, 기본값 0) — 스케줄러의 시작 인덱스입니다.

… 스케줄러의 시작 인덱스를 설정합니다. 이 함수는 추론 전에 파이프라인에서 실행해야 합니다.

set_shift

< >

( shift: float )

매개변수

  • shift (float) — 설정할 shift 값입니다.

Scheduler의 shift 값을 설정합니다.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: list[float] | None = Nonemu: float | None = Nonetimesteps: list[float] | None = None )

매개변수

  • num_inference_steps (int, 선택 사항) — 학습된 모델로 샘플을 생성할 때 사용되는 diffusion 단계 수입니다.
  • device (str 또는 torch.device, 선택 사항) — timesteps를 이동할 대상 device입니다. None인 경우 timesteps는 이동되지 않습니다.
  • sigmas (list[float], 선택 사항) — 각 diffusion step에 사용할 sigmas의 사용자 지정 값입니다. None인 경우 sigmas는 자동으로 계산됩니다.
  • mu (float, 선택 사항) — 해상도 의존적 timestep shifting을 수행할 때 sigmas에 적용되는 shifting의 양을 결정합니다.
  • timesteps (list[float], 선택 사항) — 각 diffusion step에 사용할 timesteps의 사용자 지정 값입니다. None인 경우 timesteps는 자동으로 계산됩니다.

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

단계

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Noneper_token_timesteps: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → FlowMatchEulerDiscreteSchedulerOutput or tuple

매개변수

  • model_output (torch.FloatTensor) — 학습된 diffusion 모델의 직접적인 출력입니다.
  • timestep (float) — 확산 체인(diffusion chain)의 현재 이산 시간 단계(discrete timestep)입니다.
  • sample (torch.FloatTensor) — 확산 과정에 의해 생성된 샘플의 현재 인스턴스입니다.
  • s_churn (float) —
  • s_tmin (float) —
  • s_tmax (float) —
  • s_noise (float, 기본값 1.0) — 샘플에 추가되는 노이즈의 스케일링 계수.
  • generator (torch.Generator, 선택 사항) — 난수 생성기입니다.
  • per_token_timesteps (torch.Tensor, 선택 사항) — 샘플의 각 토큰에 대한 timesteps입니다.
  • return_dict (bool, 기본값 True) — FlowMatchEulerDiscreteSchedulerOutput 또는 tuple을 반환할지 여부.

반환값

FlowMatchEulerDiscreteSchedulerOutput 또는 tuple

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

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

stretch_shift_to_terminal

< >

( t: Tensor ) → torch.Tensor

매개변수

  • t (torch.Tensor) — 늘리고 시프트할 타임스텝의 텐서.

반환값

torch.Tensor

최종 값이 self.config.shift_terminal과 같도록 조정된 timesteps의 텐서입니다.

shift_terminal 구성 값에서 종료되도록 보장하기 위해 timestep 스케줄을 늘리고 이동합니다.

참고: https://github.com/Lightricks/LTX-Video/blob/a01a171f8fe3d99dce2728d60a73fecf4d4238ae/ltx_video/schedulers/rf.py#L51

time_shift

< >

( mu: floatsigma: floatt: Tensor ) → torch.Tensor

매개변수

  • mu (float) — 시간 시프트에 사용되는 mu 매개변수입니다.
  • sigma (float) — 시간 시프트에 사용되는 sigma 매개변수입니다.
  • t (torch.Tensor) — 입력 타임스텝입니다.

반환값

torch.Tensor

시간이 이동된 타임스텝

sigmas에 시간 시프트를 적용합니다.

Update on GitHub