Buckets:
FlowMapEulerDiscreteScheduler
FlowMapEulerDiscreteScheduler, akış haritasıyla damıtılmış difüzyon modelleri için tasarlanmış Euler tarzı bir örnekleyicidir. Akış haritası modelleri, tutarlılık modellerindeki sabit $\mathbf{z}_t \to \mathbf{z}_0$ eşlemesinin aksine, keyfi aralıklı geçişleri $\mathbf{z}_t \to \mathbf{z}_r$ öğrenir. Adımın her iki ucu da çağrıcı tarafından sağlanır; bu da herhangi bir adımla örneklemeyi mümkün kılar: tek bir damıtılmış kontrol noktası, yeniden eğitim gerektirmeden 1, 2, 4, 8, 16... NFE değerlerinde 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 AnyFlow'a özgü değildir — herhangi bir flow-map-distilled checkpoint bunu kullanabilir.
FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: 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ü azaltma yönüne 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, tutarlılık modellerindeki sabit eşlemesinin aksine, keyfi aralıklı geçişleri öğrenir; bu sayede tek bir damıtılmış checkpoint, yeniden eğitim gerektirmeden 1, 2, 4, 8, ... NFE değerlerinde değerlendirilebilir. step metodu, örneği tahmin edilen hız boyunca timestep değerinden r_timestep değerine ilerletir.
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[[diffusers.FlowMapEulerDiscreteScheduler.apply_shift]]
apply_shift(sigmas: Tensor)
Yapılandırılmış kaydırma dönüşümünü bir sigma gerginliğine uygulayın.
index_for_timestep[[diffusers.FlowMapEulerDiscreteScheduler.index_for_timestep]]
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) bile doğru şekilde çözümlenir.
scale_model_input[[diffusers.FlowMapEulerDiscreteScheduler.scale_model_input]]
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[[diffusers.FlowMapEulerDiscreteScheduler.scale_noise]]
scale_noise(sample: FloatTensor, timestep: 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[[diffusers.FlowMapEulerDiscreteScheduler.set_begin_index]]
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[[diffusers.FlowMapEulerDiscreteScheduler.set_timesteps]]
set_timesteps(num_inference_steps: typing.Optional[int] = None, device: typing.Union[str, torch.device] = None, sigmas: typing.Optional[typing.List[float]] = None, timesteps: typing.Optional[typing.List[float]] = None)
Parametreler:
num_inference_steps (int, opsiyonel) : Çıkarım adım sayısı. None ise, sigmas veya timesteps parametresinin geçirilmesi gerekir.
device (str veya torch.device, opsiyonel) : self.sigmas / self.timesteps için hedef cihaz.
sigmas (List[float], isteğe bağlı) : Uzunluğu num_inference_steps olan ö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 zaman adımı 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 uygulanan yapılandırılmış kaydırma ile bir linspace); 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[[diffusers.FlowMapEulerDiscreteScheduler.step]]
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, r_timestep: typing.Union[float, torch.FloatTensor, NoneType] = None, return_dict: bool = True)
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 zaman adımı t.
sample (torch.Tensor) : Mevcut örnek .
r_timestep (float veya torch.Tensor, opsiyonel) : Hedef zaman adımı r. None olduğunda, zaman çizelgesindeki bir sonraki zaman adımına varsayılan olarak ayarlanır; herhangi bir adımlı örneklemeler için açık bir değer geçin. r_timestep == timestep bir işlemdir (no-op).
return_dict (bool, varsayılan True) : Varsayılan olarak [FlowMapEulerDiscreteSchedulerOutput] döndürülüp döndürülmediğini veya düz bir tuple döndürülüp döndürülmediğini belirtir.
Dönüş: [FlowMapEulerDiscreteSchedulerOutput] veya tuple
return_dict=True olduğunda, prev_sample değeri 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 atlandığında, zaman çizelgesindeki bir sonraki zaman adımına 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 indekslenerek 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 etmesi amacıyla r_timestep / num_train_timesteps ifadesine geri döner.
Xet Storage Details
- Size:
- 9.73 kB
- Xet hash:
- 010aff119b34a5021107badac9d7f9edb18e96cc89a2092d1749b082aaf36b5c
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.