Diffusers documentation

FlowMapEulerDiscreteScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

FlowMapEulerDiscreteScheduler

FlowMapEulerDiscreteScheduler flow-map-distille edilmiş difüzyon modelleri için tasarlanmış Euler tarzı bir örnekleyicidir. Flow-map modelleri, tutarlılık modellerindeki sabit zt→zr\mathbf{z}_t \to \mathbf{z}_r eğrisinin aksine, keyfi aralıklı geçişleri öğrenir zt→z0\mathbf{z}_t \to \mathbf{z}_0 . Adımın her iki ucu da çağıran tarafından sağlanır; bu da herhangi bir adımlı örneklemeyi mümkün kılar: tek bir distille edilmiş checkpoint, yeniden eğitim gerektirmeden 1, 2, 4, 8, 16… NFE'de değerlendirilebilir.

Zamanlayıcı, AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation makalesinde tanıtılmış olup AnyFlowPipeline ve AnyFlowFARPipeline entegrasyonlarıyla birlikte gelir; ancak yalnızca AnyFlow'a özgü değildir — herhangi bir akış haritası damıtılmış kontrol noktası bunu kullanabilir.

FlowMapEulerDiscreteScheduler

sınıf diffusers.FlowMapEulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000shift: float = 1.0 )

Parametreler

  • num_train_timesteps (int, varsayılan 1000) — Altta yatan akış haritası modelinin eğitilmesinde kullanılan difüzyon adım sayısı.
  • shift (float, varsayılan 1.0) — Çıkarım zaman çizelgesine uygulanan çarpımsal zaman adımı kaydırması. shift=1.0 kimlik dönüşümüdür; 1.0'dan büyük değerler, zaman çizelgesini sonraki adımlarda daha fazla gürültü azaltmaya doğru iter (ör. shift=5, Wan2.1 varsayılanıyla eşleşir).

Akış haritası damıtılmış difüzyon modelleri için Euler tarzı örnekleyici.

Flow-map modelleri keyfi aralıklı geçişleri öğrenirzt→zrz_t \to z_r tutarlılık modellerinin sabitzt→z0z_t \to z_0 eşlemesinin aksine, tek bir damıtılmış checkpoint, yeniden eğitim gerektirmeden 1, 2, 4, 8, … NFE'de değerlendirilebilir. adım metodu, örneği zaman adımından şuna ilerletir r_zaman_adımı tahmin edilen hız boyunca.

Yuchao Gu, Guian Fang ve diğerleri tarafından AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation makalesinde tanıtıldı.

Bu zamanlayıcı, [SchedulerMixin] ve [ConfigMixin] sınıflarından devralır. Tüm zamanlayıcılar için uygulanan genel yöntemlerin (yükleme, kaydetme vb.) belgelerini üst sınıf dokümantasyonunda bulabilirsiniz.

apply_shift

< >

( sigmas: Tensor )

Yapılandırılmış kaydırma dönüşümünü bir sigma gerginliğine uygulayın.

index_for_timestep

< >

( timestep: typing.Union[float, torch.FloatTensor] )

timestep'in mevcut zaman çizelgesindeki indeksini döndürür; zaman çizelgesi dışında ise None döndürür.

Arama, küçük bir fp toleransı ile self.timesteps üzerinden yapılır. Doğrusal timesteps = sigmas * num_train_timesteps ilişkisini varsaymadan, karşılık gelen sigma değerini geri getirmek için kullanılır; böylece özel bir zaman çizelgesi (ör. doğrusal olmayan kaydırma, elle ayarlanmış timesteps) de doğru şekilde çözümlenir.

scale_model_input

< >

( sample: Tensor*args**kwargs )

No-op kimlik ölçekleme. Diğer Diffusers zamanlayıcılarıyla API uyumluluğu için sağlanır.

scale_noise

< >

( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None )

timestep'in normalize edilmiş değerine göre sample'ı noise'a doğru doğrusal olarak interpolasyon yapın.

set_begin_index

< >

( begin_index: int = 0 )

Zamanlayıcı için başlangıç indeksini ayarlar. Programın ortasından başlayan (ör. görüntüden görüntüye) iş akışları, dağıtımı sabitlemek için set_timesteps ile ilk step arasında bunu çağırır.

set_timesteps

< >

( num_inference_steps: typing.Optional[int] = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = None )

Parametreler

  • num_inference_steps (int, isteğe bağlı) — Çıkarım adım sayısı. None ise, sigmas veya timesteps parametresinin geçirilmesi gerekir.
  • device (str veya torch.device, isteğe bağlı) — self.sigmas / self.timesteps için hedef cihaz.
  • sigmas (List[float], isteğe bağlı) — num_inference_steps uzunluğunda özel sigma zamanlaması. Son 0 sigma değeri otomatik olarak eklenir. Yapılandırılan shift değeri bunun üzerine uygulanır.
  • timesteps (List[float], isteğe bağlı) — num_inference_steps uzunluğunda, self.timesteps ile aynı birimlerde (yani num_train_timesteps ile ölçeklenmiş) özel bir timestep zamanlaması. İçeride sigmalara dönüştürülür. Hem sigmas hem de timesteps geçirilirse, uzunluklarının eşleşmesi gerekir.

Çıkarım zaman adımı zamanlamasını oluşturun.

İçsel olarak, num_inference_steps + 1 uzunluğundaki self.sigmas değerlerini takip eder (varsayılan olarak 1.0'dan 0.0'a kadar olan bir linspace'e uygulanan yapılandırılmış kaydırma); self.timesteps, num_train_timesteps ile ölçeklendirilmiş ilk num_inference_steps sigma değerlerini açığa çıkarır — yani her çıkarım adımı için bir zaman adımı, bu da FlowMatchEulerDiscreteScheduler ile eşleşir. Son sigma (0), son adımın örtük r-ucudur ve sigmas / timesteps kullanıcı tarafından sağlandığında otomatik olarak eklenir.

adım

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorr_timestep: typing.Union[float, torch.FloatTensor, NoneType] = Nonereturn_dict: bool = True ) → [FlowMapEulerDiscreteSchedulerOutput] or tuple

Parametreler

  • model_output (torch.Tensor) — Akış haritası modelinden doğrudan çıktı (tahmini ortalama hız).
  • timestep (float veya torch.Tensor) — self.timesteps ile aynı birimlerde kaynak timestep t.
  • sample (torch.Tensor) — Current sample{@html "ztz_tzt​"}.
  • r_timestep (float veya torch.Tensor, isteğe bağlı) — Hedef timestep r. None olduğunda, zaman çizelgesindeki bir sonraki timestep varsayılan olarak kullanılır; any-step örneklemesi için açık bir değer geçin. r_timestep == timestep bir no-op'tur.
  • return_dict (bool, varsayılan True) — Bir [FlowMapEulerDiscreteSchedulerOutput] (varsayılan) veya düz bir tuple döndürülüp döndürülmediğini belirtir.

Dönüş değeri

[FlowMapEulerDiscreteSchedulerOutput] veya tuple

return_dict=True olduğunda, prev_sample değeri {@html "zrz_rzr​"} olan bir [FlowMapEulerDiscreteSchedulerOutput] döndürür. Aksi halde 1-tuple (prev_sample,) döndürür.

Modelin tahmin ettiği hıza göre timestep'ten r_timestep'e sample ilerletin.

Standart bir Euler zamanlayıcısından farklı olarak, aralığın her iki ucu da çağrıcı tarafından sağlanabilir; böylece herhangi bir adımlı örneklemeye olanak tanınır: tek bir model çağrısı, t değerinden herhangi bir seçilen hedef r değerine (tek seferlik üretim için r=0 dahil) adım atabilir. r_timestep parametresi atlandığında, zaman çizelgesindeki bir sonraki adıma varsayılan olarak ayarlanır (FlowMatchEulerDiscreteScheduler semantiğiyle uyumlu).

Dahili olarak kaynak ve hedef sigmalar, girdi adımlarını num_train_timesteps değerine bölmek yerine index_for_timestep üzerinden self.sigmas dizisine indeksleme yapılarak geri kazanılır; bu sayede adım / sigma ilişkisi doğrusal olmayan herhangi bir zaman çizelgesi (örneğin özel bir kaydırma) doğru kalır. Zaman çizelgesi dışındaki bir r_timestep için zamanlayıcı, zaman çizelgesi dışında herhangi bir adımda örneklemenin desteklenmeye devam etmesini sağlamak üzere r_timestep / num_train_timesteps ifadesine geri döner.

Update on GitHub