Diffusers documentation
Zamanlayıcılar
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 | 🤗 Diffusers | Kullanım |
|---|---|---|
| DPM++ 2M | DPMSolverMultistepScheduler | |
| DPM++ 2M Karras | DPMSolverMultistepScheduler | use_karras_sigmas=True ile başlatın |
| DPM++ 2M SDE | DPMSolverMultistepScheduler | algorithm_type="sde-dpmsolver++" ile başlatın |
| DPM++ 2M SDE Karras | DPMSolverMultistepScheduler | use_karras_sigmas=True ve algorithm_type="sde-dpmsolver++" ile başlatın |
| DPM++ 2S a | N/A | DPMSolverSinglestepScheduler ile çok benzer |
| DPM++ 2S a Karras | N/A | DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) ile çok benzer |
| DPM++ SDE | DPMSolverSinglestepScheduler | |
| DPM++ SDE Karras | DPMSolverSinglestepScheduler | use_karras_sigmas=True ile başlatın |
| DPM2 | KDPM2DiscreteScheduler | |
| DPM2 Karras | KDPM2DiscreteScheduler | use_karras_sigmas=True ile başlatın |
| DPM2 a | KDPM2AncestralDiscreteScheduler | |
| DPM2 a Karras | KDPM2AncestralDiscreteScheduler | use_karras_sigmas=True ile başlatın |
| DPM uyumlu | N/A | |
| DPM hızlı | N/A | |
| Euler | EulerDiscreteScheduler | |
| Euler a | EulerAncestralDiscreteScheduler | |
| Heun | HeunDiscreteScheduler | |
| LMS | LMSDiscreteScheduler | |
| LMS Karras | LMSDiscreteScheduler | use_karras_sigmas=True ile başlatın |
| N/A | DEISMultistepScheduler | |
| N/A | UniPCMultistepScheduler |
Gürültü zaman çizelgeleri ve zaman çizelgesi türleri
| A1111/k-diffusion | 🤗 Diffusers |
|---|---|
| Karras | use_karras_sigmas=True ile başlatın |
| sgm_uniform | timestep_spacing="trailing" ile başlatın |
| basit | timestep_spacing="trailing" ile başlatın |
| üstel | timestep_spacing="linspace", use_exponential_sigmas=True ile başlatın |
| beta | timestep_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
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
< source >( 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 (
strveyaos.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.
- Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin
- 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ılanFalse) — Python sınıfı tarafından tüketilmeyen kwargs'nın geri döndürülüp döndürülmeyeceği. - cache_dir (
strveyaos.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ılanFalse) — 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ılanFalse) — 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ılanFalse) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir.Trueolarak ayarlanırsa, model Hub'dan indirilmez. - token (
strveyabool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise,diffusers-cli loginile oluşturulan jeton (~/.huggingfaceiç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 loginile oturum açın. Ayrıca, bu yöntemi duvarlı bir ortamda kullanmak için özel > “çevrimdışı mod”u etkinleştirebilirsiniz.
save_pretrained
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )
Parametreler
- save_directory (
strveyaos.PathLike) — Yapılandırma JSON dosyasının kaydedileceği dizin (varsa oluşturulur). - push_to_hub (
bool, isteğe bağlı, varsayılanFalse) — Modelinizi kaydettikten sonra Hugging Face Hub'a gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyurepo_idile belirtebilirsiniz (varsayılan olarak ad alanınızdakisave_directoryadı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
< source >( prev_sample: Tensor )
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
Bir model, zamanlayıcı veya hattı Hugging Face Hub'a göndermek için bir Mixin.
push_to_hub
< source >( 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_idayrı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 (~/.huggingfaceiçinde saklanır). - create_pr (
bool, isteğe bağlı, varsayılanFalse) — 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ılanTrue) — Model ağırlıklarınınsafetensorsbiçimine dönüştürülüp dönüştürülmeyeceği. - variant (
str, isteğe bağlı) — Belirtilirse, ağırlıklarpytorch_model.<variant>.binbiç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")