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

Transformer luồng đơn được sử dụng bởi Qwen-Image 2.1. Latent của văn bản và hình ảnh chia sẻ một chuỗi duy nhất, và một phép chiếu modulation dùng chung duy nhất cung cấp cho mọi khối.

Hai hành vi phân biệt 2.1 với các transformer QwenImage trước đó:

  • Chú ý nhân quả theo khối — chú ý tuân theo (q_idx >= kv_idx) or same_image_block, do đó chuỗi kết hợp là nhân quả trong khi mỗi khối ảnh vẫn giữ tính hai chiều bên trong. QwenImage21AttnProcessor triển khai điều này dưới dạng một lần gọi chú ý cho mỗi đoạn tiền tố và là mặc định. QwenImage21FlexAttnProcessor triển khai dưới dạng một lần gọi flex_attention duy nhất được điều khiển bởi BlockMask, nhanh hơn khi mô hình đã được biên dịch. Cả hai đều cho ra kết quả giống nhau.
  • causal_condition — các token văn bản và ảnh điều kiện được điều biến từ t = 0 thay vì từ bước thời gian được lấy mẫu. Hoạt động của chúng độc lập với bước khử nhiễu, do đó các key và value của phần tiền tố đó có thể được lưu cache qua các bước thông qua đối số kv_cache.

Tải nó bằng cách:

import torch
from diffusers import QwenImage21Transformer2DModel

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

QwenImage21Transformer2DModel

lớp 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 )

Tham số

  • patch_size (int, mặc định là 1) — Độ dài cạnh của latent patch được gập vào chiều kênh. Phiên bản 2.1 sử dụng latent không gập patch.
  • in_channels (int, mặc định là 64) — Số kênh tiềm ẩn của đầu vào.
  • out_channels (int, tùy chọn, mặc định là 64) — Số kênh latent của đầu ra. Nếu không được chỉ định, sẽ dùng in_channels.
  • num_layers (int, mặc định là 32) — Số lượng khối single-stream.
  • attention_head_dim (int, mặc định là 128) — Số kênh cho mỗi đầu chú ý.
  • num_attention_heads (int, mặc định là 32) — Số lượng đầu chú ý (attention heads).
  • context_in_dim (int, mặc định là 4096) — Kích thước kênh của encoder_hidden_states.
  • mlp_ratio (int, mặc định là 3) — Hệ số mở rộng feed-forward.
  • axes_dims_rope (tuple[int], mặc định là (16, 56, 56)) — Các chiều Rotary cho các trục frame, height và width.
  • eps (float, mặc định là 1e-6) — Epsilon cho các lớp chuẩn hóa.
  • causal_condition (bool, mặc định là True) — Điều biến các token văn bản và ảnh điều kiện từ t = 0. Bắt buộc cho việc đệm KV.

Transformer luồng đơn được sử dụng bởi Qwen-Image 2.1.

Latent của văn bản và hình ảnh chia sẻ một chuỗi duy nhất: các token của ảnh điều kiện được thay thế vào luồng văn bản tại các vị trí mà bộ mã hóa ngôn ngữ-thị giác đã dành sẵn cho chúng, và các token của ảnh đích được nối thêm vào. Một phép chiếu modulation dùng chung duy nhất cung cấp cho mọi khối, do đó các khối không giữ các tham số modulation của riêng chúng.

Hai hành vi đặc trưng cho phiên bản 2.1:

  • Chú ý nhân quả theo khối — chú ý tuân theo (q_idx >= kv_idx) or same_image_block, do đó chuỗi là nhân quả trong khi mỗi khối ảnh vẫn giữ tính hai chiều bên trong. Backend chú ý flex cho phép chú ý một lượt hiệu quả; nếu không có nó, mô hình sẽ dùng prefill SDPA đa lượt chính xác, xử lý từng khối riêng biệt.
  • causal_condition — các token văn bản và ảnh điều kiện được điều biến từ t = 0 thay vì bước thời gian được lấy mẫu, điều này cũng khiến kích hoạt của chúng không phụ thuộc vào bước thời gian và do đó có thể được đệm (cache) qua các bước khử nhiễu.

build_token_metadata

< >

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

Tham số

  • image_pad_mask (torch.Tensor) — (seq_len,) bool, True tại các vị trí token ảnh.
  • img_shapes (list[tuple[int, int, int]]) — (frame, height, width) theo từng ảnh, tính bằng số token tiềm ẩn, với các ảnh điều kiện đứng trước và ảnh đích đứng cuối.

Trả về

tuple[torch.Tensor, torch.Tensor]

image_ids (seq_len,) với -1 tại các vị trí văn bản và một id duy nhất cho mỗi khối hình ảnh, cùng target_token_mask (seq_len,) đánh dấu các token của hình ảnh đích.

Gán nhãn cho từng token của chuỗi kết hợp với khối hình ảnh mà nó thuộc về.

Các ranh giới khối được xác định từ số lượng token trong img_shapes, chứ không phải từ các chuỗi True liên tiếp trong image_pad_mask: hai ảnh điều kiện nằm cạnh nhau mà không có văn bản ở giữa sẽ tạo thành một chuỗi duy nhất nhưng vẫn phải được giữ làm các khối riêng biệt, nếu không chúng sẽ chú ý lẫn nhau theo hai chiều.

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

Tham số

  • hidden_states (torch.Tensor có hình dạng (batch_size, image_sequence_length, in_channels)) — Các latent đã đóng gói, với các ảnh điều kiện ở trước và ảnh đích ở cuối.
  • encoder_hidden_states (torch.Tensor có hình dạng (batch_size, text_sequence_length, context_in_dim)) — Các vector nhúng văn bản từ bộ mã hóa thị giác-ngôn ngữ.
  • timestep (torch.Tensor) — Bước khử nhiễu hiện tại, được quy đổi về [0, 1].
  • img_shapes (list[list[tuple[int, int, int]]]) — Danh sách theo từng mẫu gồm các (frame, height, width) trong latent tokens, với ảnh điều kiện đứng trước và ảnh đích đứng sau. Tất cả các mẫu phải cùng một bố cục.
  • img_mask (torch.Tensor có hình dạng (batch_size, vlm_sequence_length)) — True tại các vị trí ảnh của bộ mã hóa thị giác-ngôn ngữ, mỗi vị trí đại diện cho một nhóm 2x2 các token tiềm ẩn.
  • encoder_hidden_states_mask (torch.Tensor, tùy chọn) — (batch_size, text_sequence_length) bool đánh dấu các token văn bản hợp lệ. Các vị trí được đệm (padding) sẽ bị loại khỏi attention.
  • kv_cache (QwenImage21KVCache, tuỳ chọn) — Bộ chứa cache. Truyền cùng với kv_cache_mode để bật tính năng cache KV tiền tố.
  • kv_cache_mode (str, tùy chọn) — "extract" để prefill bộ nhớ đệm (bước khử nhiễu đầu tiên), "cached" để giải mã từ bộ nhớ đệm (các bước sau). Yêu cầu causal_condition=True.
  • attention_kwargs (dict, tùy chọn) — Được chuyển tiếp đến các bộ xử lý attention và mang scale cho các lớp LoRA.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một Transformer2DModelOutput thay vì một tuple thông thường hay không.

Trả về

Transformer2DModelOutput hoặc tuple

Transformer2DModelOutput nếu return_dict là True, ngược lại là một tuple thông thường mà phần tử đầu tiên là các latents đã khử nhiễu.

Transformer2DModelOutput

lớp diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Tham số

  • sample (torch.Tensor có hình dạng (batch_size, num_channels, height, width) hoặc (batch size, num_vector_embeds - 1, num_latent_pixels) nếu Transformer2DModel là rời rạc) — Trạng thái ẩn đầu ra được điều kiện bởi đầu vào encoder_hidden_states. Nếu là rời rạc, trả về các phân phối xác suất cho các pixel tiềm ẩn không nhiễu.

Đầu ra của Transformer2DModel.

Update on GitHub