# 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](https://github.com/crowsonkb/) tarafından geliştirilen [k-diffusion](https://github.com/crowsonkb/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](/docs/diffusers/main/tr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler)     |                                                                                                               |
| DPM++ 2M Karras     | [DPMSolverMultistepScheduler](/docs/diffusers/main/tr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler)     | `use_karras_sigmas=True` ile başlatın                                                                            |
| DPM++ 2M SDE        | [DPMSolverMultistepScheduler](/docs/diffusers/main/tr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler)     | `algorithm_type="sde-dpmsolver++"` ile başlatın                                                                  |
| DPM++ 2M SDE Karras | [DPMSolverMultistepScheduler](/docs/diffusers/main/tr/api/schedulers/multistep_dpm_solver#diffusers.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](/docs/diffusers/main/tr/api/schedulers/singlestep_dpm_solver#diffusers.DPMSolverSinglestepScheduler)    |                                                                                                               |
| DPM++ SDE Karras    | [DPMSolverSinglestepScheduler](/docs/diffusers/main/tr/api/schedulers/singlestep_dpm_solver#diffusers.DPMSolverSinglestepScheduler)    | `use_karras_sigmas=True` ile başlatın                                                                            |
| DPM2                | [KDPM2DiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/dpm_discrete#diffusers.KDPM2DiscreteScheduler)          |                                                                                                               |
| DPM2 Karras         | [KDPM2DiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/dpm_discrete#diffusers.KDPM2DiscreteScheduler)          | `use_karras_sigmas=True` ile başlatın                                                                            |
| DPM2 a              | [KDPM2AncestralDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/dpm_discrete_ancestral#diffusers.KDPM2AncestralDiscreteScheduler) |                                                                                                               |
| DPM2 a Karras       | [KDPM2AncestralDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/dpm_discrete_ancestral#diffusers.KDPM2AncestralDiscreteScheduler) | `use_karras_sigmas=True` ile başlatın                                                                            |
| DPM uyumlu        | N/A                                 |                                                                                                               |
| DPM hızlı            | N/A                                 |                                                                                                               |
| Euler               | [EulerDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/euler#diffusers.EulerDiscreteScheduler)          |                                                                                                               |
| Euler a             | [EulerAncestralDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/euler_ancestral#diffusers.EulerAncestralDiscreteScheduler) |                                                                                                               |
| Heun                | [HeunDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/heun#diffusers.HeunDiscreteScheduler)           |                                                                                                               |
| LMS                 | [LMSDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler)            |                                                                                                               |
| LMS Karras          | [LMSDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler)            | `use_karras_sigmas=True` ile başlatın                                                                            |
| N/A                 | [DEISMultistepScheduler](/docs/diffusers/main/tr/api/schedulers/deis#diffusers.DEISMultistepScheduler)          |                                                                                                               |
| N/A                 | [UniPCMultistepScheduler](/docs/diffusers/main/tr/api/schedulers/unipc#diffusers.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](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin) sınıfından oluşturulur.

## SchedulerMixin[[diffusers.SchedulerMixin]]

#### diffusers.SchedulerMixin[[diffusers.SchedulerMixin]]

```python
diffusers.SchedulerMixin()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_utils.py#L79)

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

[SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin), genel yükleme ve kaydetme işlevleri gibi tüm zamanlayıcılar tarafından paylaşılan ortak işlevleri içerir.

[ConfigMixin](/docs/diffusers/main/tr/api/configuration#diffusers.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` yoluyla 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()](/docs/diffusers/main/tr/api/configuration#diffusers.ConfigMixin.from_config) kullanın (üst sınıf tarafından geçersiz kılınmalıdır).

#### from_pretrained[[diffusers.SchedulerMixin.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None = None, subfolder: str | None = None, return_unused_kwargs: bool = False, **kwargs: Any)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_utils.py#L99)

**Parametreler:**

pretrained_model_name_or_path (`str` veya `os.PathLike`, *isteğe bağlı*) : Şunlardan biri olabilir:  - Hub'da barındırılan önceden eğitilmiş bir modelin *model kimliği* (örneğin `google/ddpm-celebahq-256`) olan bir dize. - [save_pretrained()](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained) ile kaydedilen zamanlayıcı yapılandırmasını içeren bir *dizin* yolu (örneğin `./my_model_directory`).

subfolder (`str`, *isteğe bağlı*) : Hub'daki veya yerel bir model deposundaki 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ğini belirtir.

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ı*) : Protokol veya uç nokta bazında 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`) : Sadece yerel model ağırlıklarının 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ı*) : Uzaktaki 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üş:** [SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.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.

> [!TIP] > Özel veya [korumalı modelleri](https://huggingface.co/docs/hub/models-gated#gated-models) kullanmak için oturum açın
`hf > auth login` ile. Bu yöntemi bir > ["offline-mode"](https://huggingface.co/diffusers/installation.html#offline-mode) ile etkinleştirerek > güvenlik duvarlı bir ortamda da kullanabilirsiniz.

#### save_pretrained[[diffusers.SchedulerMixin.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, push_to_hub: bool = False, **kwargs: Any)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_utils.py#L164)

**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 belirleyebilirsiniz (varsayılan olarak ad alanınızdaki `save_directory` adı kullanılır).

kwargs (`dict[str, Any]`, *isteğe bağlı*) : [push_to_hub()](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) yöntemine iletilen ek anahtar kelime argümanları.

Bir zamanlayıcı yapılandırma nesnesini, [from_pretrained()](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained) sınıf yöntemi kullanılarak yeniden yüklenebilmesi için bir dizine kaydedin.

## SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

#### diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

```python
diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_utils.py#L66)

**Parametreler:**

prev_sample (`torch.Tensor`, görüntüler için `(batch_size, num_channels, height, width)` boyutunda) : Önceki zaman adımının hesaplanan `(x_{t-1})` örneği. `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](https://github.com/huggingface/diffusers/blob/a69754bb879ed55b9b6dc9dd0b3cf4fa4124c765/src/diffusers/schedulers/scheduling_utils.py#L32) verilmiştir.

## PushToHubMixin[[diffusers.utils.PushToHubMixin]]

#### diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]

```python
diffusers.utils.PushToHubMixin()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/utils/hub_utils.py#L491)

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

#### push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/utils/hub_utils.py#L526)

**Parametreler:**

repo_id (`str`) : Model, zamanlayıcı veya pipeline dosyalarınızı itmek istediğiniz depoyun adı. Bir organizasyona itme işlemi sırasında 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 commit edilecek mesaj. Varsayılan olarak `"Upload {object}"`.

private (`bool`, *isteğe bağlı*) : Depoyu özel yapılıp yapılmayacağını belirtir. `None` (varsayılan) ise, organizasyonun varsayılanı özel değilse depo herkese açık olur. Depo zaten mevcutsa bu değer yok sayılır.

token (`str`, *isteğe bağlı*) : Uzaktaki 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:

```python
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")
```

