# QwenImage21Transformer2DModel

Qwen-Image 2.1 tarafından kullanılan tek akışlı transformer. Metin ve görüntü latentleri tek bir diziyi paylaşır ve tek bir ortak `modulation` projeksiyonu tüm bloklara besleme sağlar.

2.1, önceki QwenImage dönüştürücülerinden iki davranışla ayrılır:

- **Blok-nedensel dikkat** — dikkat, `(q_idx >= kv_idx) or same_image_block` koşulunu takip eder; böylece birleşik dizi nedensel olurken her görüntü bloğu içsel olarak çift yönlü kalır. `QwenImage21AttnProcessor`, bunu her önek segmenti için tek bir dikkat çağrısı olarak uygular ve varsayılandır. `QwenImage21FlexAttnProcessor`, bunu `BlockMask` tarafından yönlendirilen tek bir `flex_attention` çağrısı olarak uygular ve model derlendikten sonra daha hızlıdır. İkisi de aynı sonuçları üretir.
- `causal_condition` — metin ve koşul-görüntü jetonları, örneklenen zaman adımından değil, `t = 0` değerinden modüle edilir. Aktivasyonları gürültü azaltma adımından bağımsız olduğundan, bu önekin anahtar ve değerleri `kv_cache` argümanı aracılığıyla adımlar arasında önbelleğe alınabilir.

Bunu şu şekilde yükleyin:

```python
import torch
from diffusers import QwenImage21Transformer2DModel

transformer = QwenImage21Transformer2DModel.from_pretrained(
    "Qwen/Qwen-Image-2.1", subfolder="transformer", dtype=torch.bfloat16
)
```

## QwenImage21Transformer2DModel[[diffusers.QwenImage21Transformer2DModel]]

#### diffusers.QwenImage21Transformer2DModel[[diffusers.QwenImage21Transformer2DModel]]

```python
diffusers.QwenImage21Transformer2DModel(patch_size: int = 1, in_channels: int = 64, out_channels: int | None = 64, num_layers: int = 32, attention_head_dim: int = 128, num_attention_heads: int = 32, context_in_dim: int = 4096, mlp_ratio: int = 3, axes_dims_rope: tuple = (16, 56, 56), eps: float = 1e-06, causal_condition: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_qwenimage21.py#L716)

**Parametreler:**

patch_size (`int`, varsayılan `1`) : Kanal boyutuna katlanan latent yamanın kenar uzunluğu. 2.1, yamalanmamış latentleri kullanır.

in_channels (`int`, varsayılan `64`) : Girdinin gizli kanalları.

out_channels (`int`, *isteğe bağlı*, varsayılan `64`) : Çıktının gizli kanalları. `in_channels` değerine geri düşer.

num_layers (`int`, varsayılan `32`) : Tek akış bloğu sayısı.

attention_head_dim (`int`, varsayılan `128`) : Dikkat başı başına kanal sayısı.

num_attention_heads (`int`, varsayılan `32`) : Dikkat başlarının sayısı.

context_in_dim (`int`, varsayılan `4096`) : `encoder_hidden_states`'nin kanal boyutu.

mlp_ratio (`int`, varsayılan `3`) : Feed-forward genişletme faktörü.

axes_dims_rope (`tuple[int]`, varsayılan `(16, 56, 56)`) : Kare, yükseklik ve genişlik eksenleri için döner boyutlar.

eps (`float`, varsayılan `1e-6`) : Norm katmanları için epsilon.

causal_condition (`bool`, varsayılan `True`) : `t = 0`'dan itibaren metin ve koşul-görsel jetonlarını modüle eder. KV önbellekleme için gereklidir.

Qwen-Image 2.1 tarafından kullanılan tek akışlı Transformer.

Metin ve görüntü latentleri tek bir diziyi paylaşır: koşul-görüntü jetonları, görme-dil kodlayıcısının onlar için ayırdığı konumlarda metin akışına yerleştirilir ve hedef görüntünün jetonları eklenir. Tek bir ortak `modulation` projeksiyonu tüm bloklara besleme sağlar, bu nedenle blokların kendi modülasyon parametreleri yoktur.

2.1'i ayırt eden iki davranış vardır:

- **Blok-nedensel dikkat** — dikkat, `(q_idx >= kv_idx) or same_image_block` koşulunu takip eder; böylece dizi nedensel olurken her görüntü bloğu içsel olarak çift yönlü kalır. `flex` dikkat arka ucu, verimli tek geçişli dikkat sağlar; bu arka uç yoksa model, her bloğu ayrı ayrı işleyen kesin çok geçişli SDPA ön doldurma kullanır.
- `causal_condition` — metin ve koşul-görüntü jetonları, örneklenen zaman adımından değil `t = 0` değerinden modüle edilir; bu da aktivasyonlarını zaman adımından bağımsız hale getirir ve böylece gürültü azaltma adımları arasında önbelleğe alınabilir.

#### build_token_metadata[[diffusers.QwenImage21Transformer2DModel.build_token_metadata]]

```python
build_token_metadata(image_pad_mask: Tensor, img_shapes: list)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_qwenimage21.py#L822)

**Parametreler:**

image_pad_mask (`torch.Tensor`) : `(seq_len,)` bool, görüntü-token konumlarında `True`.

img_shapes (`list[tuple[int, int, int]]`) : Latent tokenlerde görüntü başına `(frame, height, width)`, koşul görüntüleri önce ve hedef görüntü en sonda.

**Dönüş:** `tuple[torch.Tensor, torch.Tensor]`

`image_ids` `(seq_len,)` metin konumlarında `-1` ve her görüntü bloğu için benzersiz bir kimlik içerir; `target_token_mask` `(seq_len,)` ise hedef görüntünün jetonlarını işaretler.

Birleşik dizideki her token'ı, ait olduğu görüntü bloğuyla etiketleyin.

Blok sınırları, `image_pad_mask` içindeki `True` dizilerinden değil, `img_shapes` içindeki token sayılarından gelir: aralarında metin olmadan yan yana gelen iki koşul görüntüsü tek bir dizi oluşturur ancak ayrı bloklar olarak kalmalıdır, aksi takdirde birbirlerine çift yönlü dikkat (attention) uygularlar.

#### forward[[diffusers.QwenImage21Transformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: Tensor, img_shapes: list, img_mask: Tensor, encoder_hidden_states_mask: typing.Optional[torch.Tensor] = None, attention_kwargs: dict[str, typing.Any] | None = None, kv_cache: diffusers.models.transformers.transformer_qwenimage21.QwenImage21KVCache | None = None, kv_cache_mode: str | None = None, return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_qwenimage21.py#L862)

**Parametreler:**

hidden_states (`torch.Tensor`, şekli `(batch_size, image_sequence_length, in_channels)`) : Paketlenmiş latentler, önce koşul görüntüleri ve en sonda hedef görüntü.

encoder_hidden_states (`torch.Tensor`, şekli `(batch_size, text_sequence_length, context_in_dim)`) : Görsel-dil kodlayıcısından gelen metin gömme değerleri.

timestep (`torch.Tensor`) : `[0, 1]` aralığına ölçeklenmiş mevcut gürültü azaltma adımı.

img_shapes (`list[list[tuple[int, int, int]]]`) : Her örnek için, latent token cinsinden `(frame, height, width)` değerlerinden oluşan liste; koşul görüntüleri önce, hedef görüntü en sonda gelir. Tüm örnekler aynı yerleşimi paylaşmalıdır.

img_mask (`torch.Tensor`, şekli `(batch_size, vlm_sequence_length)`) : Görüntü-dil kodlayıcısının görüntü yuvalarında `True`, her biri `2x2` latent token grubunu temsil eder.

encoder_hidden_states_mask (`torch.Tensor`, *isteğe bağlı*) : `(batch_size, text_sequence_length)` geçerli metin jetonlarını işaretleyen bool. Dolgu konumları dikkat (attention) işleminden hariç tutulur.

kv_cache (`QwenImage21KVCache`, *isteğe bağlı*) : Önbellek kapsayıcısı. Önek KV önbelleklemeyi etkinleştirmek için `kv_cache_mode` ile birlikte iletin.

kv_cache_mode (`str`, *isteğe bağlı*) : Önbelleği ön doldurmak için (ilk gürültü azaltma adımı) `"extract"`, ondan çözmek için (sonraki adımlar) `"cached"`. `causal_condition=True` gerektirir.

attention_kwargs (`dict`, *isteğe bağlı*) : Dikkat işleyicilerine (attention processors) iletilir ve LoRA katmanları için `scale` değerini taşır.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine [Transformer2DModelOutput](/docs/diffusers/main/tr/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) döndürülecek mi?

**Dönüş:** [Transformer2DModelOutput](/docs/diffusers/main/tr/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) veya `tuple`

`return_dict` True ise [Transformer2DModelOutput](/docs/diffusers/main/tr/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput), aksi halde ilk öğesi gürültüsü giderilmiş latentler olan düz bir `tuple`.

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L21)

**Parametreler:**

sample (`torch.Tensor`, şekli `(batch_size, num_channels, height, width)` veya [Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel) ayrık (discrete) ise `(batch size, num_vector_embeds - 1, num_latent_pixels)`) : `encoder_hidden_states` girdisine koşullu gizli durum (hidden states) çıktısı. Ayrık (discrete) ise, gürültüsü olmayan (unnoised) gizli (latent) pikseller için olasılık dağılımlarını döndürür.

[Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel)'nin çıktısı.

