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 adalah penjadwal Euler rectified-flow (eta = 0) dengan pergeseran sigma eksponensial yang digunakan oleh MiniMax-H3, sigma' = s * sigma / (1 + (s - 1) * sigma).

Pipeline MiniMax-H3 mendaftarkan dua di antaranya, karena latens video dan audio mengikuti dua jadwal yang berbeda di dalam satu panggilan transformer per langkah: scheduler membawa jadwal video (shift=12.0 pada checkpoint yang dirilis) dan audio_scheduler membawa jadwal audio (shift=3.0).

MiniMaxH3Scheduler

kelas diffusers.MiniMaxH3Scheduler

< >

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

Parameter

  • shift (float, defaultnya 12.0) — Pergeseran eksponensial yang diterapkan pada grid sigma, sigma' = s*sigma / (1 + (s-1)*sigma). Checkpoint yang dirilis menggunakan 12.0 untuk latens video dan 3.0 untuk latens audio.
  • stochastic_sampling (bool, defaultnya False) — Ganti blend Euler dengan pembaruan re-noising: prediksi sampel bersih, lalu re-noise-kan ke sigma berikutnya dengan noise baru. Adapter Pika H3 Flex few-step dilatih untuk pembaruan ini; checkpoint dasar tidak.
  • shift_provided_sigmas (bool, opsional) — Apakah sigmas eksplisit yang diteruskan ke set_timesteps() adalah grid dasar yang digeser oleh scheduler, seperti grid linspace miliknya, atau jadwal yang sudah selesai dan diambil apa adanya. Jika tidak diset, artinya apa adanya dengan peringatan deprekasi; nilai default menjadi True di 0.44.0.
  • euler_update_form (str, default "blend") — Cara update Euler dievaluasi. "blend" adalah blend x_t / x0 x_next = r*x_t + (1 - r)*x0; "velocity" adalah x_next = x_t + (sigma - sigma_next) * v, dalam float32. Keduanya adalah update yang sama dan hanya berbeda pada pembulatan float32; MiniMax-H3-Image didistilasi dengan bentuk velocity.

Penjadwal Euler rectified-flow (eta = 0) dengan pergeseran sigma eksponensial, seperti yang digunakan oleh MiniMax-H3.

index_for_timestep

< >

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

Parameter

  • timestep (float atau torch.Tensor) — Nilai yang diambil dari self.timesteps. Jadwalnya meningkat secara ketat terhadap t, sehingga kecocokannya unik.

Mengembalikan

int

Indeks dari timestep.

Petakan nilai timestep ke indeksnya dalam jadwal.

scale_noise

< >

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

Parameter

  • sample (torch.FloatTensor) — Sampel bersih x_0.
  • timestep (float atau torch.FloatTensor) — Waktu target dalam [0, 1]; 1 mengembalikan sample tanpa perubahan.
  • noise (torch.FloatTensor) — Noise yang akan dicampurkan.

Mengembalikan

torch.FloatTensor

Sampel yang diberi noise.

Proses maju rectified-flow, dalam konvensi t MiniMax-H3: x_t = t*x_0 + (1 - t)*noise.

MiniMax-H3 menggunakan ini untuk menambahkan noise pada anchor kondisionalnya, di mana t adalah level noise_aug dan bukan entri jadwal, sehingga timestep diambil apa adanya dan tidak dicari di self.timesteps.

set_begin_index

< >

( begin_index: int = 0 )

Parameter

  • begin_index (int, defaultnya 0) — Indeks awal untuk scheduler.

Menetapkan indeks awal untuk penjadwal.

set_shift

< >

( shift: float )

Parameter

  • shift (float) — Pergeseran eksponensial yang digunakan untuk jadwal berikutnya.

Menimpa pergeseran sigma yang dikonfigurasi; panggil sebelum set_timesteps().

MiniMax-H3 mengekspos ini per permintaan sebagai flow_shift (video) / audio_flow_shift (audio).

set_timesteps

< >

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

Parameter

  • num_inference_steps (int, opsional) — Jumlah titik grid sigma, termasuk 0 terminal. Diabaikan ketika sigmas diberikan.
  • device (str atau torch.device, opsional) — Perangkat tempat tensor jadwal dipindahkan. Grid itu sendiri selalu dibangun di CPU dalam float32 sehingga jadwal tidak bergantung pada akselerator.
  • sigmas (list[float] atau torch.Tensor, opsional) — Grid eksplisit, menurun secara ketat dan berakhir di 0.0. Dengan shift_provided_sigmas=True, ini adalah grid dasar di [0, 1] yang melewati shift seperti grid linspace; selain itu, digunakan apa adanya (default yang tidak lagi didukung).

Bangun jadwal sigma / timestep.

Grid adalah linspace(1, 0, num_inference_steps) yang diproses melalui pergeseran eksponensial, dengan duplikat berurutan yang digabungkan, atau sigmas eksplisit, yang juga digeser ketika shift_provided_sigmas diset. Terminal 0 sudah menjadi bagian dari grid — pergeseran memetakan 0 tepat ke 0 — sehingga jadwal mempertahankan num_inference_steps sigmas dan menggerakkan num_inference_steps - 1 evaluasi model, yang diekspos sebagai self.timesteps = 1 - sigmas[:-1].

langkah

< >

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

Parameter

  • model_output (torch.FloatTensor) — Prediksi kecepatan transformer pada timestep.
  • timestep (float atau torch.FloatTensor) — Timestep saat ini, salah satu dari self.timesteps (sehingga timestep == 1 - sigma).
  • sample (torch.FloatTensor) — Sampel saat ini x_t.
  • generator (torch.Generator, opsional) — Generator tempat noise baru diambil dengan stochastic_sampling; tidak digunakan selain itu.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan MiniMaxH3SchedulerOutput alih-alih tuple biasa.

Mengembalikan

MiniMaxH3SchedulerOutput atau tuple

sampel untuk langkah berikutnya.

Ambil satu langkah Euler (eta = 0) atau satu langkah re-noising dengan stochastic_sampling.

Output model adalah kecepatan data-ward, sehingga estimasi denoised adalah x0 = x_t + (1 - t) * v — perhatikan +, kebalikan dari konvensi flow-match yang umum. Pembaruan kemudian adalah campuran x_next = r*x_t + (1 - r)*x0 dengan r = sigma_next / sigma, dievaluasi dalam float32 untuk sampel half-precision. Dengan stochastic_sampling, pembaruannya adalah x_next = (1 - sigma_next) * x0 + sigma_next * noise dengan noise baru dari generator, semuanya dalam float32, sehingga langkah terakhir (sigma_next = 0) mengembalikan x0. Dengan euler_update_form="velocity", pembaruan Euler yang sama dievaluasi sebagai x_next = x_t + (sigma - sigma_next) * v dalam float32.

MiniMaxH3SchedulerOutput

kelas diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

Parameter

  • prev_sample (torch.FloatTensor) — Contoh yang dihitung x_{t+1} untuk langkah berikutnya dari loop denoising.

Kelas output untuk output fungsi step penjadwal.

Update on GitHub