Diffusers documentation
MiniMaxH3Scheduler
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
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = Noneeuler_update_form: str = 'blend' )
Parameter
- shift (
float, defaultnya12.0) — Pergeseran eksponensial yang diterapkan pada grid sigma,sigma' = s*sigma / (1 + (s-1)*sigma). Checkpoint yang dirilis menggunakan12.0untuk latens video dan3.0untuk latens audio. - stochastic_sampling (
bool, defaultnyaFalse) — 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) — Apakahsigmaseksplisit yang diteruskan ke set_timesteps() adalah grid dasar yang digeser oleh scheduler, seperti gridlinspacemiliknya, atau jadwal yang sudah selesai dan diambil apa adanya. Jika tidak diset, artinya apa adanya dengan peringatan deprekasi; nilai default menjadiTruedi 0.44.0. - euler_update_form (
str, default"blend") — Cara update Euler dievaluasi."blend"adalah blendx_t/x0x_next = r*x_t + (1 - r)*x0;"velocity"adalahx_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
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
Petakan nilai timestep ke indeksnya dalam jadwal.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
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
< source >( begin_index: int = 0 )
Menetapkan indeks awal untuk penjadwal.
set_shift
< source >( shift: float )
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
< source >( 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, termasuk0terminal. Diabaikan ketikasigmasdiberikan. - device (
stratautorch.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]atautorch.Tensor, opsional) — Grid eksplisit, menurun secara ketat dan berakhir di0.0. Denganshift_provided_sigmas=True, ini adalah grid dasar di[0, 1]yang melewati shift seperti gridlinspace; 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
< source >( 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 padatimestep. - timestep (
floatatautorch.FloatTensor) — Timestep saat ini, salah satu dariself.timesteps(sehinggatimestep == 1 - sigma). - sample (
torch.FloatTensor) — Sampel saat inix_t. - generator (
torch.Generator, opsional) — Generator tempat noise baru diambil denganstochastic_sampling; tidak digunakan selain itu. - return_dict (
bool, defaultnyaTrue) — Apakah akan mengembalikanMiniMaxH3SchedulerOutputalih-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
< source >( prev_sample: FloatTensor )
Kelas output untuk output fungsi step penjadwal.