Diffusers documentation

FlowMapEulerDiscreteScheduler

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 öğrenir zt→zrz_t \to z_r tutarlılık modellerinin sabit zt→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) — Mevcut örnek ztz_t.
  • 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 zrz_r 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