Buckets:

hf-doc-build/doc / diffusers /main /tr /api /schedulers /flow_map_euler_discrete.md
mishig's picture
|
download
raw
9.73 kB

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)

Kaynak

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 zt→z0z_t \to z_0 eşlemesinin aksine, keyfi aralıklı geçişleri zt→zrz_t \to z_r öğ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)

Kaynak

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])

Kaynak

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)

Kaynak

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)

Kaynak

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)

Kaynak

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)

Kaynak

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)

Kaynak

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 ztz_t.

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 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 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.