Diffusers documentation
MiniMaxH3Scheduler
MiniMaxH3Scheduler
MiniMaxH3Scheduler, MiniMax-H3 tarafından kullanılan, üstel sigma kaydırması (sigma' = s * sigma / (1 + (s - 1) * sigma)) içeren düzeltilmiş akış Euler zamanlayıcısıdır (eta = 0).
MiniMax-H3 pipeline'ları bunlardan ikisini kaydeder, çünkü video ve ses latentleri, adım başına tek bir transformer çağrısı içinde iki farklı zaman çizelgesi üzerinden ilerler: scheduler video zaman çizelgesini (shift=12.0 yayınlanan checkpoint'lerde) ve audio_scheduler ses zaman çizelgesini (shift=3.0) taşır.
MiniMaxH3Scheduler
sınıf diffusers.MiniMaxH3Scheduler
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )
Parametreler
- shift (
float, varsayılan12.0) — Sigma ızgarasına uygulanan üstel kaydırma,sigma' = s*sigma / (1 + (s-1)*sigma). Yayınlanan kontrol noktaları, video latentleri için12.0ve ses latentleri için3.0kullanır. - stochastic_sampling (
bool, varsayılanFalse) — Euler karışımını yeniden gürültüleme güncellemesiyle değiştirir: temiz örneği tahmin eder, ardından onu yeni gürültüyle bir sonraki sigma değerine yeniden gürültüler. Az adımlı Pika H3 Flex adaptörleri bu güncelleme için eğitildi; temel kontrol noktaları (checkpoints) eğitilmedi. - shift_provided_sigmas (
bool, isteğe bağlı) — set_timesteps() fonksiyonuna iletilen açıksigmasdeğerlerinin, zamanlayıcınınlinspaceızgarası gibi kaydırıldığı bir temel ızgara mı yoksa olduğu gibi alınan tamamlanmış bir zaman çizelgesi mi olduğunu belirtir. Ayarlanmamışsa, bir kullanım dışı bırakma uyarısıyla birlikte olduğu gibi alınır; 0.44.0 sürümünde varsayılan değerTrueolur.
MiniMax-H3 tarafından kullanılan, üstel sigma kaymasına sahip düzeltilmiş akış Euler zamanlayıcısı (eta = 0).
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
Bir zaman adımı değerini, zaman çizelgesindeki indeksine eşleyin.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
MiniMax-H3'ün t sözleşmesine göre düzeltilmiş akış ileri süreci: x_t = t*x_0 + (1 - t)*noise.
MiniMax-H3, koşullama çapalarını gürültülemek için bunu kullanır; burada t, bir zaman çizelgesi girdisi değil, noise_aug seviyesidir, bu nedenle timestep olduğu gibi alınır ve self.timesteps içinde araştırılmaz.
set_begin_index
< source >( begin_index: int = 0 )
Zamanlayıcının başlangıç indeksini ayarlar.
set_shift
< source >( shift: float )
Yapılandırılmış sigma kaydırmasını geçersiz kılar; set_timesteps() çağrısından önce çağrılmalıdır.
MiniMax-H3 bunu her istek için flow_shift (video) / audio_flow_shift (ses) olarak sunar.
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = None )
Parametreler
- num_inference_steps (
int, isteğe bağlı) — Sigma ızgara noktası sayısı, son0dahil.sigmasverildiğinde yok sayılır. - device (
strveyatorch.device, isteğe bağlı) — Zaman çizelgesi tensörlerinin taşındığı cihaz. Izgara her zaman CPU üzerinde float32 olarak oluşturulduğundan, zaman çizelgesi hızlandırıcıya bağlı değildir. - sigmas (
list[float]veyatorch.Tensor, isteğe bağlı) —0.0ile sonlanan, katı şekilde azalan açık bir ızgara.shift_provided_sigmas=Trueilelinspaceızgarası gibi kaydırma işleminden geçen[0, 1]aralığında bir temel ızgara olur; aksi halde olduğu gibi kullanılır (kullanımı önerilmeyen varsayılan).
Sigma / timestep zaman çizelgesini oluşturun.
Izgara, üst üste gelen ardışık kopyalar birleştirilerek üstel kaydırma (exponential shift) üzerinden geçirilen linspace(1, 0, num_inference_steps) veya shift_provided_sigmas ayarlandığında benzer şekilde kaydırılan açık sigmas değerleridir. Son 0 değeri zaten ızgaranın bir parçasıdır — kaydırma 0 değerini tam olarak 0 değerine eşler — bu nedenle zaman çizelgesi num_inference_steps sigma içerir ve num_inference_steps - 1 model değerlendirmesini yönlendirir; bu değerler self.timesteps = 1 - sigmas[:-1] olarak dışa açılır.
adım
< source >( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple
Parametreler
- model_output (
torch.FloatTensor) — Dönüştürücününtimestepanındaki hız tahmini. - timestep (
floatveyatorch.FloatTensor) — Mevcut zaman adımı,self.timestepsiçindeki bir değer (yanitimestep == 1 - sigma). - sample (
torch.FloatTensor) — Güncel örnekx_t. - generator (
torch.Generator, isteğe bağlı) —stochastic_samplingile yeni gürültünün çekildiği üreteç; diğer durumlarda kullanılmaz. - return_dict (
bool, varsayılanTrue) — Düz bir tuple yerineMiniMaxH3SchedulerOutputdöndürülüp döndürülmemesi.
Dönüş değeri
MiniMaxH3SchedulerOutput veya tuple
sonraki adım için örnek.
Bir Euler (eta = 0) adımı veya stochastic_sampling ile bir yeniden gürültüleme adımı alın.
Model çıktısı veri-yanı hızıdır, bu nedenle gürültüden arındırılmış tahmin x0 = x_t + (1 - t) * v şeklindedir — + işaretine dikkat edin, bu, yaygın akış-eşleşme (flow-match) sözleşmesinin tersidir. Güncelleme, r = sigma_next / sigma ile x_next = r*x_t + (1 - r)*x0 karışımıdır ve yarı hassasiyetli örnekler için float32'de değerlendirilir. stochastic_sampling kullanıldığında güncelleme, generator'dan gelen taze gürültü ile x_next = (1 - sigma_next) * x0 + sigma_next * noise şeklindedir; her şey float32'dedir, bu nedenle son adım (sigma_next = 0) x0'ı döndürür.
MiniMaxH3SchedulerOutput
sınıf diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput
< source >( prev_sample: FloatTensor )
Zamanlayıcının step işlevi çıktısı için çıktı sınıfı.