# Stable Diffusion 3

  
  

Stable Diffusion 3 (SD3), Patrick Esser, Sumith Kulal, Andreas Blattmann, Rahim Entezari, Jonas Muller, Harry Saini, Yam Levi, Dominik Lorenz, Axel Sauer, Frederic Boesel, Dustin Podell, Tim Dockhorn, Zion English, Kyle Lacey, Alex Goodwin, Yannik Marek ve Robin Rombach tarafından [Scaling Rectified Flow Transformers for High-Resolution Image Synthesis](https://huggingface.co/papers/2403.03206) makalesinde önerilmiştir.

Makalenin özeti şudur:

*Diffüzyon modelleri, verinin gürültüye doğru ilerleyen ileri yollarını tersine çevirerek gürültüden veri üretir ve görüntüler ile videolar gibi yüksek boyutlu, algısal veriler için güçlü bir üretken modelleme tekniği olarak ortaya çıkmıştır. Düzeltici akış (rectified flow), veriyi ve gürültüyü düz bir çizgiyle bağlayan son zamanlarda ortaya çıkan bir üretken model formülasyonudur. Daha iyi teorik özelliklere ve kavramsal basitliğe sahip olmasına rağmen, henüz standart uygulama olarak kesin bir şekilde yerleşmemiştir. Bu çalışmada, düzeltici akış modellerinin eğitimi için mevcut gürültü örneklemesi tekniklerini, onları algısal olarak ilgili ölçeklere doğru yönlendirerek iyileştiriyoruz. Büyük ölçekli bir çalışma aracılığıyla, bu yaklaşımın yüksek çözünürlüklü metinden görüntüye sentezinde yerleşik diffüzyon formülasyonlarına göre üstün performans gösterdiğini kanıtlıyoruz. Ayrıca, metinden görüntüye üretim için iki modalite için ayrı ağırlıklar kullanan ve görüntü ile metin jetonları arasında çift yönlü bilgi akışını mümkün kılan, metin anlama, tipografi ve insan tercih puanlarını iyileştiren yeni bir transformer tabanlı mimari sunuyoruz. Bu mimarinin öngörülebilir ölçeklenme eğilimlerini izlediğini ve çeşitli metrikler ile insan değerlendirmeleriyle ölçüldüğü üzere daha düşük doğrulama kaybının metinden görüntüye sentezde iyileşmeyle korelasyon gösterdiğini kanıtlıyoruz.*

## Kullanım Örneği

_Model kapılı (gated) olduğu için, diffusers ile kullanmadan önce [Stable Diffusion 3 Medium Hugging Face sayfasına](https://huggingface.co/stabilityai/stable-diffusion-3-medium-diffusers) gidip formu doldurmanız ve kapıyı (gate) kabul etmeniz gerekir. Sayfaya erişebildikten sonra, sisteminizin kapıyı kabul ettiğinizi bilmesi için oturum açmanız gerekir._

Giriş yapmak için aşağıdaki komutu kullanın:

```bash
hf auth login
```

> [!TIP]
> SD3 hattı bir görüntü üretmek için üç metin kodlayıcı kullanır. Çoğu standart donanımda çalışabilmesi için model aktarımı (offloading) gereklidir. Ek bellek tasarrufu için `torch.float16` veri türünü kullanın.

```python
import torch
from diffusers import StableDiffusion3Pipeline

pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", dtype=torch.float16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a photo of a cat holding a sign that says hello world",
    negative_prompt="",
    num_inference_steps=28,
    height=1024,
    width=1024,
    guidance_scale=7.0,
).images[0]

image.save("sd3_hello_world.png")
```

**Not:** Stable Diffusion 3.5, SD3 hattı kullanılarak da çalıştırılabilir ve bahsedilen tüm optimizasyonlar ve teknikler buna da uygulanır. SD3 ailesinde toplamda üç resmi model bulunmaktadır:
- [`stabilityai/stable-diffusion-3-medium-diffusers`](https://huggingface.co/stabilityai/stable-diffusion-3-medium-diffusers)
- [`stabilityai/stable-diffusion-3.5-large`](https://huggingface.co/stabilityai/stable-diffusion-3-5-large)
- [`stabilityai/stable-diffusion-3.5-large-turbo`](https://huggingface.co/stabilityai/stable-diffusion-3-5-large-turbo)

## IP-Adapters ile Görsel İfadelendirme

IP-Adapter, metin isteminin yanı sıra SD3'e görsellerle de istem göndermenizi sağlar. Bu, yalnızca metinle ifade etmesi zor karmaşık kavramları açıklarken ve referans görselleriniz olduğunda özellikle faydalıdır. Bir IP-Adapter yüklemek ve kullanmak için şunlara ihtiyacınız var:

- `image_encoder`: Görüntü özelliklerini elde etmek için kullanılan, önceden eğitilmiş bir görme modeli, genellikle bir CLIP görüntü kodlayıcısıdır.
- `feature_extractor`: Seçilen `image_encoder` için girdi görüntüsünü hazırlayan görüntü işleyicisi.
- `ip_adapter_id`: Görsel çapraz dikkat katmanlarının ve görsel projeksiyonun parametrelerini içeren checkpoint.

IP-Adapters, belirli bir model mimarisi için eğitildiğinden, temel modelin ince ayarlı varyantlarında da çalışır. Çıktının görüntü komutuyla ne kadar güçlü bir şekilde hizalandığını ayarlamak için `~SD3IPAdapterMixin.set_ip_adapter_scale` işlevini kullanabilirsiniz. Değer ne kadar yüksekse, model görüntü komutuna o kadar yakından uyar. 0,5 varsayılan değeri genellikle iyi bir denge sağlar; bu, modelin hem metin hem de görüntü komutlarını eşit derecede dikkate almasını garanti eder.

```python
import torch
from PIL import Image

from diffusers import StableDiffusion3Pipeline
from transformers import SiglipVisionModel, SiglipImageProcessor

image_encoder_id = "google/siglip-so400m-patch14-384"
ip_adapter_id = "InstantX/SD3.5-Large-IP-Adapter"

feature_extractor = SiglipImageProcessor.from_pretrained(
    image_encoder_id,
    dtype=torch.float16
)
image_encoder = SiglipVisionModel.from_pretrained(
    image_encoder_id,
    dtype=torch.float16
).to( "cuda")  # or "mps", "xpu", "cpu"

pipe = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3.5-large",
    dtype=torch.float16,
    feature_extractor=feature_extractor,
    image_encoder=image_encoder,
).to("cuda")

pipe.load_ip_adapter(ip_adapter_id)
pipe.set_ip_adapter_scale(0.6)

ref_img = Image.open("image.jpg").convert('RGB')

image = pipe(
    width=1024,
    height=1024,
    prompt="a cat",
    negative_prompt="lowres, low quality, worst quality",
    num_inference_steps=24,
    guidance_scale=5.0,
    ip_adapter_image=ref_img
).images[0]

image.save("result.jpg")
```

    
    IP-Adapter örnekleri, "a cat" (bir kedi) istemiyle

> [!TIP]
> IP-Adapter'ların nasıl çalıştığını öğrenmek için [IP-Adapter](../../../using-diffusers/ip_adapter)'a göz atın.

## SD3 için Bellek Optimizasyonları

SD3, üç metin kodlayıcı kullanır ve bunlardan biri çok büyük olan T5-XXL modelidir. Bu durum, `fp16` hassasiyeti kullanılsa bile 24GB'tan az VRAM'e sahip GPU'larda modeli çalıştırmayı zorlaştırır. Aşağıdaki bölüm, SD3'ün düşük kaynaklı donanımlarda çalıştırılmasını kolaylaştıran Diffusers'taki birkaç bellek optimizasyonunu özetler.

### Model Offloading ile Çıkarım Çalıştırma

Diffusers'da kullanılabilen en temel bellek optimizasyonu, model bileşenlerini çıkarım sırasında belleği tasarruf etmek amacıyla CPU'ya aktarmanıza olanak tanır; bu işlem çıkarım gecikmesinde hafif bir artışa yol açar. Model aktarımı, bir model bileşeni yalnızca çalıştırılması gerektiğinde GPU'ya taşınırken, kalan bileşenlerin CPU'da kalmasını sağlar.

```python
import torch
from diffusers import StableDiffusion3Pipeline

pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", dtype=torch.float16)
pipe.enable_model_cpu_offload()

image = pipe(
    prompt="a photo of a cat holding a sign that says hello world",
    negative_prompt="",
    num_inference_steps=28,
    height=1024,
    width=1024,
    guidance_scale=7.0,
).images[0]

image.save("sd3_hello_world.png")
```

### Çıkarım Sırasında T5 Metin Kodlayıcısının Düşürülmesi

Çıkarım sırasında bellek yoğun 4,7B parametreli T5-XXL metin kodlayıcısının kaldırılması, performansta yalnızca hafif bir kayba yol açarak SD3 için bellek gereksinimlerini önemli ölçüde azaltabilir.

```python
import torch
from diffusers import StableDiffusion3Pipeline

pipe = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3-medium-diffusers",
    text_encoder_3=None,
    tokenizer_3=None,
    dtype=torch.float16
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a photo of a cat holding a sign that says hello world",
    negative_prompt="",
    num_inference_steps=28,
    height=1024,
    width=1024,
    guidance_scale=7.0,
).images[0]

image.save("sd3_hello_world-no-T5.png")
```

### T5 Metin Kodlayıcısının Kuantize Edilmiş Sürümünü Kullanma

T5-XXL metin kodlayıcısını 8-bit hassasiyete yüklemek ve kuantize etmek için `bitsandbytes` kütüphanesinden yararlanabiliriz. Bu sayede, performans üzerinde yalnızca hafif bir etki yaratırken üç metin kodlayıcısının tamamını kullanmaya devam edebilirsiniz.

Önce `bitsandbytes` kütüphanesini yükleyin.

```shell
pip install bitsandbytes
```

Ardından `BitsAndBytesConfig` kullanarak T5-XXL modelini yükleyin.

```python
import torch
from diffusers import StableDiffusion3Pipeline
from transformers import T5EncoderModel, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(load_in_8bit=True)

model_id = "stabilityai/stable-diffusion-3-medium-diffusers"
text_encoder = T5EncoderModel.from_pretrained(
    model_id,
    subfolder="text_encoder_3",
    quantization_config=quantization_config,
)
pipe = StableDiffusion3Pipeline.from_pretrained(
    model_id,
    text_encoder_3=text_encoder,
    device_map="balanced",
    dtype=torch.float16
)

image = pipe(
    prompt="a photo of a cat holding a sign that says hello world",
    negative_prompt="",
    num_inference_steps=28,
    height=1024,
    width=1024,
    guidance_scale=7.0,
).images[0]

image.save("sd3_hello_world-8bit-T5.png")
```

Uçtan uca betiği [burada](https://gist.github.com/sayakpaul/82acb5976509851f2db1a83456e504f1) bulabilirsiniz.

## SD3 için Performans Optimizasyonları

### Torch Compile Kullanarak Çıkarımı Hızlandırma

SD3 hattında derlenmiş bileşenlerin kullanılması, çıkarımı 4 katına kadar hızlandırabilir. Aşağıdaki kod parçası, SD3 hattındaki Transformer ve VAE bileşenlerinin nasıl derleneceğini göstermektedir.

```python
import torch
from diffusers import StableDiffusion3Pipeline

torch.set_float32_matmul_precision("high")

torch._inductor.config.conv_1x1_as_mm = True
torch._inductor.config.coordinate_descent_tuning = True
torch._inductor.config.epilogue_fusion = False
torch._inductor.config.coordinate_descent_check_all_directions = True

pipe = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3-medium-diffusers",
    dtype=torch.float16
).to("cuda")  # or "mps", "xpu", "cpu"
pipe.set_progress_bar_config(disable=True)

pipe.transformer.to(memory_format=torch.channels_last)
pipe.vae.to(memory_format=torch.channels_last)

pipe.transformer = torch.compile(pipe.transformer, mode="max-autotune", fullgraph=True)
pipe.vae.decode = torch.compile(pipe.vae.decode, mode="max-autotune", fullgraph=True)

# Warm Up
prompt = "a photo of a cat holding a sign that says hello world"
for _ in range(3):
    _ = pipe(prompt=prompt, generator=torch.manual_seed(1))

# Run Inference
image = pipe(prompt=prompt, generator=torch.manual_seed(1)).images[0]
image.save("sd3_hello_world.png")
```

Tam betiğe [buradan](https://gist.github.com/sayakpaul/508d89d7aad4f454900813da5d42ca97) göz atın.

## Kantizasyon

Kantizasyon, model ağırlıklarını daha düşük hassasiyetli bir veri türünde saklayarak çok büyük modellerin bellek gereksinimlerini azaltmaya yardımcı olur. Ancak kantizasyonun video kalitesi üzerindeki etkisi, video modeline göre değişebilir.

Desteklenen kuantizasyon arka uçları ve kullanım durumunu destekleyen bir kuantizasyon arka ucunu seçmek hakkında daha fazla bilgi edinmek için [Quantization](../../../quantization/overview) genel bakışına başvurun. Aşağıdaki örnek, bitsandbytes ile çıkarım için kuantize edilmiş bir [StableDiffusion3Pipeline](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/stable_diffusion_3#diffusers.StableDiffusion3Pipeline) yüklemenin nasıl yapılacağını göstermektedir.

```py
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, SD3Transformer2DModel, StableDiffusion3Pipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel

quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = T5EncoderModel.from_pretrained(
    "stabilityai/stable-diffusion-3.5-large",
    subfolder="text_encoder_3",
    quantization_config=quant_config,
    dtype=torch.float16,
)

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = SD3Transformer2DModel.from_pretrained(
    "stabilityai/stable-diffusion-3.5-large",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.float16,
)

pipeline = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3.5-large",
    text_encoder=text_encoder_8bit,
    transformer=transformer_8bit,
    dtype=torch.float16,
    device_map="balanced",
)

prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt, num_inference_steps=28, guidance_scale=7.0).images[0]
image.save("sd3.png")
```

## T5 Metin Kodlayıcı ile Uzun İfadelerin Kullanımı

Varsayılan olarak, T5 Text Encoder istemi `256` maksimum dizi uzunluğu kullanır. Bu, daha az veya daha fazla token kabul etmek için `max_sequence_length` değerini ayarlayarak değiştirilebilir. Daha uzun dizilerin ek kaynaklar gerektirdiğini ve toplu çıkarım sırasında daha uzun üretim sürelerine yol açtığını göz önünde bulundurun.

```python
prompt = "A whimsical and creative image depicting a hybrid creature that is a mix of a waffle and a hippopotamus, basking in a river of melted butter amidst a breakfast-themed landscape. It features the distinctive, bulky body shape of a hippo. However, instead of the usual grey skin, the creature’s body resembles a golden-brown, crispy waffle fresh off the griddle. The skin is textured with the familiar grid pattern of a waffle, each square filled with a glistening sheen of syrup. The environment combines the natural habitat of a hippo with elements of a breakfast table setting, a river of warm, melted butter, with oversized utensils or plates peeking out from the lush, pancake-like foliage in the background, a towering pepper mill standing in for a tree.  As the sun rises in this fantastical world, it casts a warm, buttery glow over the scene. The creature, content in its butter river, lets out a yawn. Nearby, a flock of birds take flight"

image = pipe(
    prompt=prompt,
    negative_prompt="",
    num_inference_steps=28,
    guidance_scale=4.5,
    max_sequence_length=512,
).images[0]
```

### T5 Metin Kodlayıcısına farklı bir istem gönderme

CLIP Metin Kodlayıcıları ve T5 Metin Kodlayıcısına farklı bir istem göndererek, istemin CLIP Metin Kodlayıcıları tarafından kırpılmasını önleyebilir ve üretimi iyileştirebilirsiniz.

> [!TIP]
> CLIP Metin Kodlayıcıları ile istem hâlâ 77 jeton sınırına kısaltılıyor.

```python
prompt = "A whimsical and creative image depicting a hybrid creature that is a mix of a waffle and a hippopotamus, basking in a river of melted butter amidst a breakfast-themed landscape. A river of warm, melted butter, pancake-like foliage in the background, a towering pepper mill standing in for a tree."

prompt_3 = "A whimsical and creative image depicting a hybrid creature that is a mix of a waffle and a hippopotamus, basking in a river of melted butter amidst a breakfast-themed landscape. It features the distinctive, bulky body shape of a hippo. However, instead of the usual grey skin, the creature’s body resembles a golden-brown, crispy waffle fresh off the griddle. The skin is textured with the familiar grid pattern of a waffle, each square filled with a glistening sheen of syrup. The environment combines the natural habitat of a hippo with elements of a breakfast table setting, a river of warm, melted butter, with oversized utensils or plates peeking out from the lush, pancake-like foliage in the background, a towering pepper mill standing in for a tree.  As the sun rises in this fantastical world, it casts a warm, buttery glow over the scene. The creature, content in its butter river, lets out a yawn. Nearby, a flock of birds take flight"

image = pipe(
    prompt=prompt,
    prompt_3=prompt_3,
    negative_prompt="",
    num_inference_steps=28,
    guidance_scale=4.5,
    max_sequence_length=512,
).images[0]
```

## Stable Diffusion 3 için Küçük AutoEncoder

Stable Diffusion için Küçük OtoKodlayıcı (TAESD3), [Ollin Boer Bohan](https://github.com/madebyollin/taesd) tarafından geliştirilen, Stable Diffusion 3'ün VAE'sinin küçültülmüş damıtılmış bir sürümüdür ve [StableDiffusion3Pipeline](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/stable_diffusion_3#diffusers.StableDiffusion3Pipeline) latentlerini neredeyse anında çözebilir.

Stable Diffusion 3 ile kullanmak için:

```python
import torch
from diffusers import StableDiffusion3Pipeline, AutoencoderTiny

pipe = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3-medium-diffusers", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesd3", dtype=torch.float16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
image.save("cheesecake.png")
```

## Orijinal denetim noktalarını `from_single_file` ile yükleme

`SD3Transformer2DModel` ve `StableDiffusion3Pipeline` sınıfları, `from_single_file` yöntemi aracılığıyla orijinal kontrol noktalarını (checkpoint) yüklemeyi destekler. Bu yöntem, modellerin eğitilmesinde kullanılan orijinal kontrol noktası dosyalarını yüklemenizi sağlar.

## `SD3Transformer2DModel` için orijinal denetim noktalarının yüklenmesi

```python
from diffusers import SD3Transformer2DModel

model = SD3Transformer2DModel.from_single_file("https://huggingface.co/stabilityai/stable-diffusion-3-medium/blob/main/sd3_medium.safetensors")
```

## `StableDiffusion3Pipeline` için tek kontrol noktasını yükleme

### T5 olmadan tek dosya kontrol noktasını yükleme

```python
import torch
from diffusers import StableDiffusion3Pipeline

pipe = StableDiffusion3Pipeline.from_single_file(
    "https://huggingface.co/stabilityai/stable-diffusion-3-medium/blob/main/sd3_medium_incl_clips.safetensors",
    dtype=torch.float16,
    text_encoder_3=None
)
pipe.enable_model_cpu_offload()

image = pipe("a picture of a cat holding a sign that says hello world").images[0]
image.save('sd3-single-file.png')
```

### T5 ile tek dosya kontrol noktasını yükleme

> [!TIP]
> Aşağıdaki örnek, PyTorch 2.3 veya daha yeni bir sürüm gerektiren 8-bit kayan nokta biçiminde saklanan bir kontrol noktasını yükler.

```python
import torch
from diffusers import StableDiffusion3Pipeline

pipe = StableDiffusion3Pipeline.from_single_file(
    "https://huggingface.co/stabilityai/stable-diffusion-3-medium/blob/main/sd3_medium_incl_clips_t5xxlfp8.safetensors",
    dtype=torch.float16,
)
pipe.enable_model_cpu_offload()

image = pipe("a picture of a cat holding a sign that says hello world").images[0]
image.save('sd3-single-file-t5-fp8.png')
```

### Stable Diffusion 3.5 Transformer Model için tek dosya kontrol noktasını yükleme

```python
import torch
from diffusers import SD3Transformer2DModel, StableDiffusion3Pipeline

transformer = SD3Transformer2DModel.from_single_file(
    "https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo/blob/main/sd3.5_large.safetensors",
    dtype=torch.bfloat16,
)
pipe = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3.5-large",
    transformer=transformer,
    dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
image = pipe("a cat holding a sign that says hello world").images[0]
image.save("sd35.png")
```

## StableDiffusion3Pipeline[[diffusers.StableDiffusion3Pipeline]]

#### diffusers.StableDiffusion3Pipeline[[diffusers.StableDiffusion3Pipeline]]

```python
diffusers.StableDiffusion3Pipeline(transformer: SD3Transformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, text_encoder_2: CLIPTextModelWithProjection, tokenizer_2: CLIPTokenizer, text_encoder_3: T5EncoderModel, tokenizer_3: T5Tokenizer, image_encoder: SiglipVisionModel = None, feature_extractor: SiglipImageProcessorPil = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py#L148)

**Parametreler:**

transformer ([SD3Transformer2DModel](/docs/diffusers/main/tr/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan Koşullu Transformer (MMDiT) mimarisi.

scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için `transformer` ile birlikte kullanılacak bir zamanlayıcı.

vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Görüntüleri gizil (latent) temsillere kodlamak ve bu temsillerden görüntülere çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.

text_encoder (`CLIPTextModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), özellikle [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14) varyantı, boyutu `hidden_size` olan bir köşegen matrisle başlatılan ek bir projeksiyon katmanı ile.

text_encoder_2 (`CLIPTextModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), özellikle [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k) varyantı.

text_encoder_3 (`T5EncoderModel`) : Donmuş metin kodlayıcı. Stable Diffusion 3, [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel)'i, özellikle de [t5-v1_1-xxl](https://huggingface.co/google/t5-v1_1-xxl) varyantını kullanır.

tokenizer (`CLIPTokenizer`) : [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer) sınıfının tokenizer'ı.

tokenizer_2 (`CLIPTokenizer`) : [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer) sınıfının ikinci Tokenizer'ı.

tokenizer_3 (`T5TokenizerFast`) : [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer) sınıfının tokenizer'ı.

image_encoder (`SiglipVisionModel`, *isteğe bağlı*) : IP Adapter için önceden eğitilmiş Görüntü Modeli.

feature_extractor (`SiglipImageProcessor`, *isteğe bağlı*) : IP Adapter için görüntü işleyici.

#### __call__[[diffusers.StableDiffusion3Pipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, prompt_3: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 256, skip_guidance_layers: list = None, skip_layer_guidance_scale: float = 2.8, skip_layer_guidance_stop: float = 0.2, skip_layer_guidance_start: float = 0.01, mu: float | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py#L772)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine `prompt_embeds` geçirilmelidir.

prompt_2 (`str` veya `list[str]`, *isteğe bağlı*) : `tokenizer_2` ve `text_encoder_2`'ye gönderilecek istem veya istemler. Tanımlanmamışsa bunun yerine `prompt` kullanılır

prompt_3 (`str` veya `list[str]`, *isteğe bağlı*) : `tokenizer_3` ve `text_encoder_3`'e gönderilecek istem veya istemler. Tanımlanmamışsa, bunun yerine `prompt` kullanılır

height (`int`, *isteğe bağlı*, varsayılan olarak self.unet.config.sample_size * self.vae_scale_factor) : Üretilen görüntünün piksel cinsinden yüksekliği. En iyi sonuçlar için varsayılan olarak 1024 olarak ayarlanır.

width (`int`, *isteğe bağlı*, varsayılan olarak self.unet.config.sample_size * self.vae_scale_factor) : Üretilen görüntünün piksel cinsinden genişliği. En iyi sonuçlar için varsayılan olarak 1024 olarak ayarlanır.

num_inference_steps (`int`, *isteğe bağlı*, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.

sigmas (`list[float]`, *isteğe bağlı*) : `set_timesteps` metodunda `sigmas` argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel sigmalar. Tanımlanmamışsa, `num_inference_steps` geçirildiğinde varsayılan davranış kullanılacaktır.

guidance_scale (`float`, *isteğe bağlı*, varsayılan 7.0) : [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598)'de tanımlandığı gibi yönlendirme ölçeği. `guidance_scale`, [Imagen Paper](https://huggingface.co/papers/2205.11487)'deki 2. denklemindeki `w` olarak tanımlanır. Yönlendirme ölçeği, `guidance_scale > 1` olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, `prompt` ile yakından ilişkili görüntülerin üretilmesini teşvik eder.

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine `negative_prompt_embeds` parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani `guidance_scale` değeri `1`'den küçükse) yok sayılır.

negative_prompt_2 (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için `tokenizer_2` ve `text_encoder_2`'ye gönderilecek olmayan istem veya istemler. Tanımlanmamışsa bunun yerine `negative_prompt` kullanılır

negative_prompt_3 (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için `tokenizer_3` ve `text_encoder_3`'e gönderilecek istem veya istemler. Tanımlanmamışsa bunun yerine `negative_prompt` kullanılır

num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek görsel sayısı.

generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir veya [torch üreteci(leri)](https://pytorch.org/docs/stable/generated/torch.Generator.html) listesi.

latents (`torch.FloatTensor`, *isteğe bağlı*) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenmiş önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele `generator` kullanılarak örneklemeye dayalı bir latens tensörü oluşturulur.

prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur.

pooled_prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Önceden oluşturulmuş havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, havuzlanmış metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_pooled_prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Ön oluşturulmuş negatif havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, havuzlanmış negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulacaktır.

ip_adapter_image (`PipelineImageInput`, *isteğe bağlı*) : IP Adapters ile çalışmak için isteğe bağlı görüntü girişi.

ip_adapter_image_embeds (`torch.Tensor`, *isteğe bağlı*) : IP-Adapter için önceden oluşturulmuş gömme vektörleri. Şekli `(batch_size, num_images, emb_dim)` olan bir tensör olmalıdır. `do_classifier_free_guidance` `True` olarak ayarlandıysa negatif gömme vektörünü içermelidir. Sağlanmazsa, gömme vektörleri `ip_adapter_image` girdi argümanından hesaplanır.

output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen görüntünün çıktı biçimi. [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` veya `np.array` arasında seçim yapın.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine `~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput` döndürülüp döndürülmediğini belirtir.

joint_attention_kwargs (`dict`, *isteğe bağlı*) : Belirtilirse, [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) içinde `self.processor` altında tanımlanan `AttentionProcessor`'a iletilen bir kwargs sözlüğü.

clip_skip (`int`, *isteğe bağlı*) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

callback_on_step_end (`Callable`, *isteğe bağlı*) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs`, `callback_on_step_end_tensor_inputs` tarafından belirtilen tüm tensörlerin listesini içerir.

callback_on_step_end_tensor_inputs (`list`, *isteğe bağlı*) : `callback_on_step_end` işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, `callback_kwargs` argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın `._callback_tensor_inputs` özniteliğinde listelenen değişkenleri dahil edebilirsiniz.

max_sequence_length (`int` varsayılan olarak 256'dir) : `prompt` ile kullanılacak maksimum dizi uzunluğu.

skip_guidance_layers (`list[int]`, *isteğe bağlı*) : Rehberlik sırasında atlanacak katmanları belirleyen tamsayı listesi. Sağlanmazsa, rehberlik için tüm katmanlar kullanılır. Sağlanırsa, rehberlik yalnızca listede belirtilen katmanlara uygulanır. StabiltyAI'nin Stable Diffusion 3.5 Medium için önerdiği değer [7, 8, 9]'dur.

skip_layer_guidance_scale (`int`, *isteğe bağlı*) : `skip_guidance_layers` içinde belirtilen katmanlar için yönlendirme ölçeği. Yönlendirme, `skip_guidance_layers` içinde belirtilen katmanlara `skip_layer_guidance_scale` ölçeğiyle uygulanır. Yönlendirme, diğer katmanlara `1` ölçeğiyle uygulanır.

skip_layer_guidance_stop (`int`, *isteğe bağlı*) : `skip_guidance_layers` içinde belirtilen katmanlar için rehberliğin duracağı adım. Rehberlik, `skip_layer_guidance_stop` içinde belirtilen oran kadar, `skip_guidance_layers` içinde belirtilen katmanlara uygulanır. StabiltyAI'nin Stable Diffusion 3.5 Medium için önerdiği değer 0.2'dir.

skip_layer_guidance_start (`int`, *isteğe bağlı*) : `skip_guidance_layers` içinde belirtilen katmanlar için rehberliğin başlayacağı adım. Rehberlik, `skip_layer_guidance_start` içinde belirtilen oranından itibaren `skip_guidance_layers` içinde belirtilen katmanlara uygulanır. StabiltyAI'nin Stable Diffusion 3.5 Medium için önerdiği değer 0.01'dir.

mu (`float`, *isteğe bağlı*) : `dynamic_shifting` için kullanılan `mu` değeri.

**Dönüş:** `~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput` veya `tuple`

`return_dict` True ise `~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput`, aksi halde `tuple`. Tuple döndürüldüğünde, ilk öğe üretilen görsellerin listesidir.

Üretim için pipeline çağrıldığında tetiklenen işlev.

Örnekler:
```py
>>> import torch
>>> from diffusers import StableDiffusion3Pipeline

>>> pipe = StableDiffusion3Pipeline.from_pretrained(
...     "stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16
... )
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> image = pipe(prompt).images[0]
>>> image.save("sd3.png")
```

#### encode_image[[diffusers.StableDiffusion3Pipeline.encode_image]]

```python
encode_image(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], device: device)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py#L696)

**Parametreler:**

image (`PipelineImageInput`) : Kodlanacak giriş görüntüsü.

device : (`torch.device`): Torch cihazı.

**Dönüş:** `torch.Tensor`

Kodlanmış görüntü özellik gösterimi.

Verilen görüntüyü, önceden eğitilmiş bir görüntü kodlayıcı kullanarak özellik temsiline dönüştürür.

#### encode_prompt[[diffusers.StableDiffusion3Pipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], prompt_2: str | list[str], prompt_3: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, clip_skip: int | None = None, max_sequence_length: int = 256, lora_scale: float | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py#L344)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : kodlanacak istem

prompt_2 (`str` veya `list[str]`, *isteğe bağlı*) : `tokenizer_2` ve `text_encoder_2`'ye gönderilecek istem veya istemler. Tanımlanmamışsa, tüm metin kodlayıcılarda `prompt` kullanılır

prompt_3 (`str` veya `list[str]`, *isteğe bağlı*) : `tokenizer_3` ve `text_encoder_3`'e gönderilecek istem veya istemler. Tanımlanmamışsa, tüm metin kodlayıcılarda `prompt` kullanılır

device : (`torch.device`): torch cihazı

num_images_per_prompt (`int`) : her istem için oluşturulacak görsel sayısı

do_classifier_free_guidance (`bool`) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine `negative_prompt_embeds` parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani `guidance_scale` değeri `1`'den küçükse) yok sayılır.

negative_prompt_2 (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için `tokenizer_2` ve `text_encoder_2`'ye gönderilmeyecek istem veya istemler. Tanımlanmamışsa, `negative_prompt` tüm metin kodlayıcılarda kullanılır.

negative_prompt_3 (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için `tokenizer_3` ve `text_encoder_3`'e gönderilecek olmayan istem veya istemler. Tanımlanmamışsa, `negative_prompt` tüm metin kodlayıcılarda kullanılır.

prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur.

pooled_prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Önceden oluşturulmuş havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, havuzlanmış metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_pooled_prompt_embeds (`torch.FloatTensor`, *isteğe bağlı*) : Ön oluşturulmuş negatif havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, havuzlanmış negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulacaktır.

clip_skip (`int`, *isteğe bağlı*) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

lora_scale (`float`, *isteğe bağlı*) : LoRA katmanları yüklendiyse, metin kodlayıcısının tüm LoRA katmanlarına uygulanacak bir lora ölçeği.

#### prepare_ip_adapter_image_embeds[[diffusers.StableDiffusion3Pipeline.prepare_ip_adapter_image_embeds]]

```python
prepare_ip_adapter_image_embeds(ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py#L716)

**Parametreler:**

ip_adapter_image (`PipelineImageInput`, *isteğe bağlı*) : IP-Adapter için özellik çıkarılacak girdi görüntüsü.

ip_adapter_image_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön hesaplanmış gömme görselleri.

device : (`torch.device`, *isteğe bağlı*): Torch cihazı.

num_images_per_prompt (`int`, varsayılan 1) : Her istem için oluşturulacak görsel sayısı.

do_classifier_free_guidance (`bool`, varsayılan True) : Sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı.

IP-Adapter'da kullanılmak üzere görsel gömme (embedding) verilerini hazırlar.

`ip_adapter_image` veya `ip_adapter_image_embeds` parametrelerinden biri iletilmelidir.

