Diffusers documentation
QwenImage21Transformer2DModel
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_blockkoş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 birBlockMasktarafından yönlendirilen tek birflex_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 = 0değerinden modüle edilir. Aktivasyonları gürültü azaltma adımından bağımsız olduğundan, bu önekin anahtar ve değerlerikv_cacheargü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
< source >( 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ılan1) — Kanal boyutuna katlanan latent yamanın kenar uzunluğu. 2.1, latentleri yamalanmamış olarak kullanır. - in_channels (
int, varsayılan64) — Girdinin gizli kanalları. - out_channels (
int, isteğe bağlı, varsayılan64) — Çıktının latent kanalları.in_channelsdeğerine geri düşer. - num_layers (
int, varsayılan32) — Tek akışlı blok sayısı. - attention_head_dim (
int, varsayılan128) — Dikkat başı başına kanal sayısı. - num_attention_heads (
int, varsayılan32) — Dikkat başlıklarının sayısı. - context_in_dim (
int, varsayılan4096) —encoder_hidden_states'in kanal boyutu. - mlp_ratio (
int, varsayılan3) — İ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ılan1e-6) — Norm katmanları için epsilon. - causal_condition (
bool, varsayılanTrue) —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_blockkoşulunu takip eder; böylece dizi nedensel olurken her görüntü bloğu içsel olarak çift yönlü kalır.flexdikkat 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ğilt = 0değ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
< source >( 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ındaTrue. - 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
< source >( 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ındaTrue, her biri2x2boyutunda 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çinkv_cache_modeile 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=Truegerektirir. - attention_kwargs (
dict, isteğe bağlı) — Dikkat işleyicilerine (attention processors) iletilir ve LoRA katmanları içinscaledeğerini taşır. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — 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
< source >( 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_statesgirdisine 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ı.