Buckets:

hf-doc-build/doc / diffusers /main /tr /api /models /qwenimage21_transformer2d.md
mishig's picture
|
download
raw
9.49 kB
# 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ı.

Xet Storage Details

Size:
9.49 kB
·
Xet hash:
2952d537b71d170c0f5adfb1893698ce2a31935d63cf77e55ad242cc4472bf5b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.