Diffusers documentation

MiniMaxH3Scheduler

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

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 = None )

매개변수

  • 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가 됩니다.

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가 반환됩니다.

MiniMaxH3SchedulerOutput

class diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

매개변수

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

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

Update on GitHub