Diffusers documentation
MiniMaxH3Scheduler
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
< source >( 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
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
timestep 값을 스케줄 내의 인덱스로 매핑합니다.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: 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
< source >( begin_index: int = 0 )
스케줄러의 시작 인덱스를 설정합니다.
구성된 sigma shift를 재정의합니다. set_timesteps() 호출 전에 실행하세요.
MiniMax-H3는 이를 요청별로 flow_shift(비디오) / audio_flow_shift(오디오)로 노출합니다.
set_timesteps
< source >( 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]로 노출됩니다.
단계
< source >( 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
< source >( prev_sample: FloatTensor )
스케줄러의 step 함수 출력을 위한 출력 클래스입니다.