Diffusers documentation

MiniMaxH3Scheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3Scheduler

MiniMaxH3Scheduler는 MiniMax-H3에서 사용하는 지수 시그마 시프트가 적용된 rectified-flow Euler 스케줄러(eta = 0)이며, sigma' = s * sigma / (1 + (s - 1) * sigma)를 사용합니다.

MiniMax-H3 파이프라인은 두 개를 등록합니다. 이는 비디오와 오디오 잠재 변수가 각 스텝마다 단일 트랜스포머 호출 내에서 서로 다른 스케줄을 따라 내려가기 때문입니다. scheduler는 비디오 스케줄(발행된 체크포인트에서 shift=12.0)을, audio_scheduler는 오디오 스케줄(shift=3.0)을 담당합니다.

MiniMaxH3Scheduler

클래스 diffusers.MiniMaxH3Scheduler

< >

( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = Noneeuler_update_form: str = 'blend' )

매개변수

  • shift (float, 기본값 12.0) — sigma 그리드에 적용되는 지수적 시프트, sigma' = s*sigma / (1 + (s-1)*sigma). 공개된 체크포인트는 비디오 라텐트에 12.0, 오디오 라텐트에 3.0을 사용합니다.
  • stochastic_sampling (bool, 기본값 False) — Euler 블렌드를 재노이즈 업데이트로 대체합니다: 깨끗한 샘플을 예측한 후, 새로운 노이즈를 사용하여 다음 sigma로 재노이즈합니다. 몇 단계 Pika H3 Flex 어댑터는 이 업데이트를 위해 학습되었지만, 기본 체크포인트는 그렇지 않습니다.
  • shift_provided_sigmas (bool, 선택 사항) — set_timesteps()에 전달된 명시적인 sigmas가 스케줄러가 linspace 그리드처럼 이동시키는 기본 그리드인지, 아니면 그대로 사용하는 완성된 스케줄인지 여부를 지정합니다. 설정하지 않으면 비추천 경고와 함께 그대로 사용되며, 0.44.0부터 기본값은 True가 됩니다.
  • euler_update_form (str, 기본값 "blend") — Euler 업데이트가 평가되는 방식입니다. "blend"는 x_t / x0 블렌드인 x_next = r*x_t + (1 - r)*x0이며, "velocity"는 float32로 계산되는 x_next = x_t + (sigma - sigma_next) * v입니다. 두 방식은 동일한 업데이트이며 float32 반올림에서만 차이가 납니다. MiniMax-H3-Image는 velocity 형태로 증류되었습니다.

MiniMax-H3에서 사용하는 지수 시그마 시프트가 적용된 Rectified-flow Euler 스케줄러(eta = 0)

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor] ) → int

매개변수

  • timestep (float 또는 torch.Tensor) — self.timesteps에서 가져온 값입니다. 스케줄은 t에 대해 엄격히 증가하므로 매칭은 유일합니다.

반환값

int

timestep의 인덱스.

timestep 값을 스케줄 내의 인덱스로 매핑합니다.

scale_noise

< >

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

매개변수

  • sample (torch.FloatTensor) — 깨끗한 샘플 x_0.
  • timestep (float 또는 torch.FloatTensor) — [0, 1] 범위의 목표 시간입니다. 1을(를) 전달하면 sample이(가) 변경되지 않은 상태로 반환됩니다.
  • noise (torch.FloatTensor) — 혼합할 노이즈입니다.

반환값

torch.FloatTensor

노이즈가 추가된 샘플.

MiniMax-H3의 t 규약에 따른 Rectified-flow 순방향 과정: x_t = t*x_0 + (1 - t)*noise.

MiniMax-H3은 이를 사용하여 조건 앵커에 노이즈를 적용하며, 여기서 t는 스케줄 항목이 아니라 noise_aug 레벨입니다. 따라서 timestep은 그대로 사용되며 self.timesteps에서 조회되지 않습니다.

set_begin_index

< >

( begin_index: int = 0 )

매개변수

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

스케줄러의 시작 인덱스를 설정합니다.

set_shift

< >

( shift: float )

매개변수

  • shift (float) — 다음 스케줄에 사용할 지수적 시프트 값입니다.

구성된 sigma shift를 재정의합니다. set_timesteps() 호출 전에 실행하세요.

MiniMax-H3는 이를 요청별로 flow_shift(비디오) / audio_flow_shift(오디오)로 노출합니다.

set_timesteps

< >

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

매개변수

  • num_inference_steps (int, 선택 사항) — 시그마 그리드 포인트의 개수입니다. 끝점 0을 포함합니다. sigmas가 지정된 경우 무시됩니다.
  • device (str 또는 torch.device, 선택 사항) — 스케줄 텐서가 이동될 장치입니다. 그리드 자체는 항상 CPU에서 float32로 생성되므로 스케줄은 가속기에 의존하지 않습니다.
  • sigmas (list[float] 또는 torch.Tensor, 선택 사항) — 0.0에서 끝나는 엄격히 감소하는 명시적 그리드입니다. shift_provided_sigmas=True인 경우 linspace 그리드와 마찬가지로 shift를 거치는 [0, 1] 범위의 기본 그리드이며, 그렇지 않은 경우 그대로 사용됩니다(비권장 기본값).

sigma / timestep 스케줄을 구성합니다.

그리드는 linspace(1, 0, num_inference_steps)를 지수 시프트를 통과시켜 생성하며, 연속된 중복 값은 병합됩니다. 또는 shift_provided_sigmas가 설정된 경우에도 동일한 방식으로 시프트되는 명시적인 sigmas를 사용할 수 있습니다. 종단 0은 이미 그리드의 일부입니다 — 시프트는 0을 정확히 0으로 매핑하므로 — 스케줄은 num_inference_steps개의 시그마를 포함하고 num_inference_steps - 1번의 모델 평가를 수행하며, 이는 self.timesteps = 1 - sigmas[:-1]로 노출됩니다.

단계

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple

매개변수

  • model_output (torch.FloatTensor) — timestep에서의 transformer 속도 예측값.
  • timestep (float 또는 torch.FloatTensor) — 현재 timestep으로, self.timesteps 중 하나입니다(즉, timestep == 1 - sigma).
  • sample (torch.FloatTensor) — 현재 샘플 x_t.
  • generator (torch.Generator, 선택 사항) — stochastic_sampling을 통해 새로운 노이즈를 추출할 때 사용하는 생성기입니다. 다른 경우에는 사용되지 않습니다.
  • return_dict (bool, 기본값 True) — 일반 튜플 대신 MiniMaxH3SchedulerOutput을 반환할지 여부.

반환값

MiniMaxH3SchedulerOutput 또는 tuple

다음 단계의 샘플입니다.

Euler(eta = 0) 단계 하나, 또는 stochastic_sampling을 사용한 재노이즈(re-noising) 단계 하나를 수행합니다.

모델 출력은 데이터 방향의 속도이므로, 노이즈 제거 추정치는 x0 = x_t + (1 - t) * v입니다 — 일반적인 flow-match 규약과 반대되는 +에 유의하세요. 업데이트는 r = sigma_next / sigma를 사용하여 x_next = r*x_t + (1 - r)*x0의 혼합으로 수행되며, 반정밀도 샘플의 경우 float32로 평가됩니다. stochastic_sampling이 사용되면 업데이트는 generator에서 생성된 새로운 노이즈를 사용하여 x_next = (1 - sigma_next) * x0 + sigma_next * noise가 되며, 모든 연산은 float32로 수행되어 마지막 단계(sigma_next = 0)에서 x0를 반환합니다. euler_update_form="velocity"인 경우 동일한 Euler 업데이트가 float32로 x_next = x_t + (sigma - sigma_next) * v로 평가됩니다.

MiniMaxH3SchedulerOutput

class diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

매개변수

  • prev_sample (torch.FloatTensor) — 디노이징 루프의 다음 단계에 사용할 계산된 샘플 x_{t+1}.

스케줄러의 step 함수 출력을 위한 출력 클래스입니다.

Update on GitHub