Diffusers documentation
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler는 Stable Diffusion 3에서 소개된 flow-matching 샘플링을 기반으로 합니다.
FlowMatchEulerDiscreteScheduler
클래스 diffusers.FlowMatchEulerDiscreteScheduler
< source >( 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
< source >( timestep: typing.Union[float, torch.FloatTensor]schedule_timesteps: typing.Optional[torch.FloatTensor] = None ) → int
…
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None ) → torch.FloatTensor
Flow-matching의 forward process
set_begin_index
< source >( begin_index: int = 0 )
… 스케줄러의 시작 인덱스를 설정합니다. 이 함수는 추론 전에 파이프라인에서 실행해야 합니다.
Scheduler의 shift 값을 설정합니다.
set_timesteps
< source >( 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를 설정합니다.
단계
< source >( 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
< source >( t: Tensor ) → torch.Tensor
shift_terminal 구성 값에서 종료되도록 보장하기 위해 timestep 스케줄을 늘리고 이동합니다.
time_shift
< source >( mu: floatsigma: floatt: Tensor ) → torch.Tensor
sigmas에 시간 시프트를 적용합니다.