Diffusers documentation

Zamanlayıcılar

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

Zamanlayıcılar

🤗 Diffusers, difüzyon süreci için birçok zamanlayıcı işlevi sunar. Bir zamanlayıcı, modelin çıktısını (difüzyon sürecinin üzerinde iterasyon yaptığı örneklemi) ve bir zaman adımını alır ve gürültüsü azaltılmış bir örneklem döndürür. Zaman adımı önemlidir çünkü difüzyon sürecindeki adımın nerede olduğunu belirler; veri, ileriye doğru n zaman adımı iterasyonuyla üretilir ve çıkarım, zaman adımları boyunca geriye doğru yayılarak gerçekleşir. Zaman adımına bağlı olarak bir zamanlayıcı diskret olabilir, bu durumda zaman adımı bir int olur, ya da sürekli olabilir, bu durumda zaman adımı bir float olur.

Bağlama bağlı olarak, bir zamanlayıcı, bir görüntüye iteratif olarak gürültü eklemenin veya bir modelin çıktısına dayalı olarak bir örneğin nasıl güncelleneceğinin nasıl tanımlanacağını belirler:

  • eğitim sırasında, bir zamanlayıcı, difüzyon modelini eğitmek için bir örneğe gürültü ekler (gürültünün nasıl ekleneceğine dair farklı algoritmalar vardır)
  • inference sırasında, bir scheduler, önceden eğitilmiş bir modelin çıktısına dayanarak bir örneğin nasıl güncelleneceğini tanımlar

Birçok zamanlayıcı, Katherine Crowson tarafından geliştirilen k-diffusion kütüphanesinden alınmıştır ve A1111'de de yaygın olarak kullanılmaktadır. k-diffusion ve A1111'deki zamanlayıcıları 🤗 Diffusers'taki zamanlayıcılara eşleştirmenize yardımcı olmak için aşağıdaki tabloya göz atın:

A1111/k-diffusion🤗 DiffusersKullanım
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepScheduleruse_karras_sigmas=True ile başlatın
DPM++ 2M SDEDPMSolverMultistepScheduleralgorithm_type="sde-dpmsolver++" ile başlatın
DPM++ 2M SDE KarrasDPMSolverMultistepScheduleruse_karras_sigmas=True ve algorithm_type="sde-dpmsolver++" ile başlatın
DPM++ 2S aN/ADPMSolverSinglestepScheduler ile çok benzer
DPM++ 2S a KarrasN/ADPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) ile çok benzer
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepScheduleruse_karras_sigmas=True ile başlatın
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteScheduleruse_karras_sigmas=True ile başlatın
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteScheduleruse_karras_sigmas=True ile başlatın
DPM uyumluN/A
DPM hızlıN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteScheduleruse_karras_sigmas=True ile başlatın
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

Gürültü zaman çizelgeleri ve zaman çizelgesi türleri

A1111/k-diffusion🤗 Diffusers
Karrasuse_karras_sigmas=True ile başlatın
sgm_uniformtimestep_spacing="trailing" ile başlatın
basittimestep_spacing="trailing" ile başlatın
üsteltimestep_spacing="linspace", use_exponential_sigmas=True ile başlatın
betatimestep_spacing="linspace", use_beta_sigmas=True ile başlatın

Tüm zamanlayıcılar, tüm zamanlayıcılar tarafından paylaşılan düşük seviye yardımcılarını uygulayan temel SchedulerMixin sınıfından oluşturulur.

SchedulerMixin

sınıf diffusers.SchedulerMixin

< >

( )

Tüm zamanlayıcılar için temel sınıf.

SchedulerMixin, genel yükleme ve kaydetme işlevleri gibi tüm zamanlayıcılar tarafından paylaşılan ortak işlevleri içerir.

ConfigMixin, zamanlayıcının __init__ fonksiyonuna geçirilen yapılandırma özniteliklerini (örneğin num_train_timesteps) saklamaktan sorumludur ve bu özniteliklere scheduler.config.num_train_timesteps ile erişilebilir.

Sınıf özellikleri:

  • _compatibles (list[str]) — Üst düzey zamanlayıcı sınıfıyla uyumlu zamanlayıcı sınıflarının listesi. Farklı bir uyumlu zamanlayıcı sınıfı yüklemek için from_config() kullanın (üst sınıf tarafından geçersiz kılınmalıdır).

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]

Parametreler

  • pretrained_model_name_or_path (str veya os.PathLike, isteğe bağlı) — Şu seçeneklerden biri olabilir:
    • Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin google/ddpm-celebahq-256).
    • save_pretrained() ile kaydedilen zamanlayıcı yapılandırmasını içeren bir dizin (örneğin ./my_model_directory) yoluna.
  • subfolder (str, isteğe bağlı) — Hub'da veya yerel olarak daha büyük bir model deposu içindeki bir model dosyasının alt klasör konumu.
  • return_unused_kwargs (bool, isteğe bağlı, varsayılan False) — Python sınıfı tarafından tüketilmeyen kwargs'nın geri döndürülüp döndürülmeyeceği.
  • cache_dir (str veya os.PathLike, isteğe bağlı) — Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu.
  • force_download (bool, isteğe bağlı, varsayılan False) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.
  • proxies (dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örneğin {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Vekiller her istekte kullanılır.
  • output_loading_info (bool, isteğe bağlı, varsayılan False) — Eksik anahtarlar, beklenmeyen anahtarlar ve hata mesajlarını içeren bir sözlüğün de döndürülüp döndürülmeyeceğini belirtir.
  • local_files_only (bool, isteğe bağlı, varsayılan False) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. True olarak ayarlanırsa, model Hub'dan indirilmez.
  • token (str veya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. True ise, diffusers-cli login ile oluşturulan jeton (~/.huggingface içinde saklanır) kullanılır.
  • revision (str, isteğe bağlı, varsayılan "main") — Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.

Dönüş değeri

SchedulerMixin veya tuple[SchedulerMixin, dict[str, Any]]

Yapılandırmadan örneklenen zamanlayıcı. return_unused_kwargs True ise, ikinci öğesi kullanılmayan anahtar-argümanların sözlüğü olan bir demet döndürülür.

Yerel bir dizindeki veya Hub deposundaki önceden tanımlı bir JSON yapılandırma dosyasından bir zamanlayıcı örnekleyin.

> Özel veya kısıtlı modelleri kullanmak için hf > auth login ile oturum açın. Ayrıca, bu yöntemi duvarlı bir ortamda kullanmak için özel > “çevrimdışı mod”u etkinleştirebilirsiniz.

save_pretrained

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )

Parametreler

  • save_directory (str veya os.PathLike) — Yapılandırma JSON dosyasının kaydedileceği dizin (varsa oluşturulur).
  • push_to_hub (bool, isteğe bağlı, varsayılan False) — Modelinizi kaydettikten sonra Hugging Face Hub'a gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyu repo_id ile belirtebilirsiniz (varsayılan olarak ad alanınızdaki save_directory adını kullanır).
  • kwargs (dict[str, Any], isteğe bağlı) — push_to_hub() yöntemine iletilen ek anahtar kelime argümanları.

Bir zamanlayıcı yapılandırma nesnesini, from_pretrained() sınıf yöntemi kullanılarak yeniden yüklenebilmesi için bir dizine kaydedin.

SchedulerOutput

sınıf diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

Parametreler

  • prev_sample (görseller için torch.Tensor, şekli (batch_size, num_channels, height, width)) — Önceki zaman adımının hesaplanan örneği (x_{t-1}). prev_sample, gürültü azaltma döngüsünde bir sonraki model girdisi olarak kullanılmalıdır.

Bir zamanlayıcının step işlevinin çıktısı için temel sınıf.

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers, 🤗 Diffusers içindeki zamanlayıcıların (scheduler) geniş bir genelleştirmesidir. Bu sınıftaki zamanlayıcılar, yüksek düzeyde; gürültü örneklemesi stratejileri, ağ türü ve ölçekleme, eğitim stratejisi ve kaybın ağırlıklandırılma biçimi ile ayrışır.

Bu sınıftaki farklı zamanlayıcılar, sıradan diferansiyel denklemler (ODE) çözücü türüne bağlı olarak yukarıdaki sınıflandırmaya girer ve 🤗 Diffusers'ta uygulanan ana zamanlayıcıların tasarımı için iyi bir soyutlama sağlar. Bu sınıftaki zamanlayıcılar burada verilmiştir.

PushToHubMixin

sınıf diffusers.utils.PushToHubMixin

< >

( )

Bir model, zamanlayıcı veya hattı Hugging Face Hub'a göndermek için bir Mixin.

push_to_hub

< >

( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )

Parametreler

  • repo_id (str) — Model, zamanlayıcı veya pipeline dosyalarınızı yüklemek istediğiniz depoyun adı. Bir organizasyona yüklerken organizasyon adınızı içermelidir. repo_id ayrıca yerel bir dizine giden bir yol da olabilir.
  • commit_message (str, isteğe bağlı) — İterken iletilecek mesaj. Varsayılan değer "Upload {object}".
  • private (bool, isteğe bağlı) — Deponun özel yapılıp yapılmayacağı. None (varsayılan) ise, organizasyonun varsayılanı özel değilse depo herkese açık olacaktır. Depo zaten mevcutsa bu değer yok sayılır.
  • token (str, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. hf auth login çalıştırıldığında oluşturulan jeton (~/.huggingface içinde saklanır).
  • create_pr (bool, isteğe bağlı, varsayılan False) — Yüklenen dosyalarla bir PR oluşturulup oluşturulmayacağı veya doğrudan commit atılıp atılmayacağı.
  • safe_serialization (bool, isteğe bağlı, varsayılan True) — Model ağırlıklarının safetensors biçimine dönüştürülüp dönüştürülmeyeceği.
  • variant (str, isteğe bağlı) — Belirtilirse, ağırlıklar pytorch_model.<variant>.bin biçiminde kaydedilir.

Model, zamanlayıcı veya boru hattı dosyalarını 🤗 Hugging Face Hub'a yükleyin.

Örnekler:

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
Update on GitHub