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.43.0).
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