Diffusers documentation

QwenImage21Transformer2DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 bir BlockMask tarafından yönlendirilen tek bir flex_attention çağrısı olarak uygular; model derlendiğinde 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:

import torch
from diffusers import QwenImage21Transformer2DModel

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

QwenImage21Transformer2DModel

sınıf diffusers.QwenImage21Transformer2DModel

< >

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

Parametreler

  • patch_size (int, varsayılan 1) — Kanal boyutuna katlanan latent yamanın kenar uzunluğu. 2.1, latentleri yamalanmamış olarak kullanır.
  • in_channels (int, varsayılan 64) — Girdinin gizli kanalları.
  • out_channels (int, isteğe bağlı, varsayılan 64) — Çıktının latent kanalları. in_channels değerine geri düşer.
  • num_layers (int, varsayılan 32) — Tek akışlı blok 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şlıklarının sayısı.
  • context_in_dim (int, varsayılan 4096) — encoder_hidden_states'in kanal boyutu.
  • mlp_ratio (int, varsayılan 3) — İleri besleme genişleme çarpanı.
  • axes_dims_rope (tuple[int], varsayılan (16, 56, 56)) — Çerçeve, 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örseli 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

< >

( image_pad_mask: Tensorimg_shapes: list ) → tuple[torch.Tensor, torch.Tensor]

Parametreler

  • image_pad_mask (torch.Tensor) — (seq_len,) bool, görüntü tokeni konumlarında True.
  • img_shapes (list[tuple[int, int, int]]) — Her görüntü için latent token cinsinden (frame, height, width); koşul görüntüleri önce, hedef görüntü en sonda.

Dönüş değeri

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

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensorimg_shapes: listimg_mask: Tensorencoder_hidden_states_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonekv_cache: diffusers.models.transformers.transformer_qwenimage21.QwenImage21KVCache | None = Nonekv_cache_mode: str | None = Nonereturn_dict: bool = True ) → Transformer2DModelOutput or tuple

Parametreler

  • hidden_states (torch.Tensor, şekli (batch_size, image_sequence_length, in_channels)) — Paketlenmiş latentler; koşul görüntüleri önce, hedef görüntü en sonda.
  • encoder_hidden_states (torch.Tensor, şekli (batch_size, text_sequence_length, context_in_dim)) — Görüntü-dil kodlayıcısından gelen metin gömme değerleri.
  • timestep (torch.Tensor) — Güncel gürültü azaltma adımı, [0, 1] aralığına ölçeklenmiş.
  • img_shapes (list[list[tuple[int, int, int]]]) — Her örnek için, latent token cinsinden (frame, height, width) değerlerinin listesi; koşullu görüntüler önce, hedef görüntü en sonda yer alır. 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 boyutunda bir gizli 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) hesabından 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 döndürülüp döndürülmemesi.

Dönüş değeri

Transformer2DModelOutput veya tuple

return_dict True ise Transformer2DModelOutput, aksi halde ilk öğesi gürültüsü giderilmiş latentler olan düz bir tuple.

Transformer2DModelOutput

sınıf diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Parametreler

  • sample (torch.Tensor, şekli (batch_size, num_channels, height, width) veya 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ü kaldırılmış (unnoised) gizli (latent) pikseller için olasılık dağıtımlarını döndürür.

Transformer2DModel'nin çıktısı.

Update on GitHub