Buckets:

hf-doc-build/doc / diffusers /main /vi /api /models /sana_transformer2d.md
mishig's picture
|
download
raw
9.26 kB

SanaTransformer2DModel

Một mô hình Diffusion Transformer cho dữ liệu 2D từ SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers đã được giới thiệu bởi NVIDIA và MIT HAN Lab, do Enze Xie, Junsong Chen, Junyu Chen, Han Cai, Haotian Tang, Yujun Lin, Zhekai Zhang, Muyang Li, Ligeng Zhu, Yao Lu, Song Han thực hiện.

Tóm tắt từ bài báo là:

Chúng tôi giới thiệu Sana, một framework tạo ảnh từ văn bản có khả năng tạo ảnh hiệu quả với độ phân giải lên đến 4096×4096. Sana có thể tổng hợp các hình ảnh độ phân giải cao, chất lượng cao với sự tương ứng mạnh mẽ giữa văn bản và hình ảnh ở tốc độ cực kỳ nhanh, có thể triển khai trên GPU của laptop. Các thiết kế cốt lõi bao gồm: (1) Autoencoder nén sâu: khác với các AE truyền thống chỉ nén ảnh 8×, chúng tôi đã huấn luyện một AE có thể nén ảnh 32×, giảm hiệu quả số lượng token tiềm ẩn. (2) Linear DiT: chúng tôi thay thế tất cả các vanilla attention trong DiT bằng linear attention, hiệu quả hơn ở độ phân giải cao mà không làm giảm chất lượng. (3) Text encoder chỉ có decoder: chúng tôi thay thế T5 bằng các LLM nhỏ hiện đại chỉ có decoder làm text encoder và thiết kế các chỉ dẫn phức tạp từ con người với in-context learning để tăng cường sự tương ứng giữa hình ảnh và văn bản. (4) Huấn luyện và lấy mẫu hiệu quả: chúng tôi đề xuất Flow-DPM-Solver để giảm số bước lấy mẫu, kết hợp với việc gắn nhãn và chọn lọc caption hiệu quả để tăng tốc hội tụ. Kết quả là, Sana-0.6B rất cạnh tranh với các mô hình khuếch tán khổng lồ hiện đại (ví dụ: Flux-12B), nhỏ hơn 20 lần và nhanh hơn 100+ lần về thông lượng đo được. Hơn nữa, Sana-0.6B có thể được triển khai trên GPU laptop 16GB, mất ít hơn 1 giây để tạo một hình ảnh độ phân giải 1024×1024. Sana cho phép tạo nội dung với chi phí thấp. Mã và mô hình sẽ được công bố công khai.

Mô hình có thể được tải bằng đoạn mã sau.

from diffusers import SanaTransformer2DModel

transformer = SanaTransformer2DModel.from_pretrained("Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", subfolder="transformer", dtype=torch.bfloat16)

SanaTransformer2DModel[[diffusers.SanaTransformer2DModel]]

diffusers.SanaTransformer2DModel[[diffusers.SanaTransformer2DModel]]

diffusers.SanaTransformer2DModel(in_channels: int = 32, out_channels: int | None = 32, num_attention_heads: int = 70, attention_head_dim: int = 32, num_layers: int = 20, num_cross_attention_heads: int | None = 20, cross_attention_head_dim: int | None = 112, cross_attention_dim: int | None = 2240, caption_channels: int = 2304, mlp_ratio: float = 2.5, dropout: float = 0.0, attention_bias: bool = False, sample_size: int = 32, patch_size: int = 1, norm_elementwise_affine: bool = False, norm_eps: float = 1e-06, interpolation_scale: int | None = None, guidance_embeds: bool = False, guidance_embeds_scale: float = 0.1, qk_norm: str | None = None, timestep_scale: float = 1.0)

Nguồn

Tham số:

in_channels (int, mặc định là 32) : Số lượng kênh trong đầu vào.

out_channels (int, tuỳ chọn, mặc định là 32) : Số lượng kênh trong đầu ra.

num_attention_heads (int, mặc định là 70) : Số lượng đầu được sử dụng cho chú ý đa đầu (multi-head attention).

attention_head_dim (int, mặc định là 32) : Số lượng kênh trong mỗi head.

num_layers (int, mặc định là 20) : Số lượng lớp khối Transformer cần sử dụng.

num_cross_attention_heads (int, tuỳ chọn, mặc định là 20) : Số lượng đầu (heads) được sử dụng cho cross-attention.

cross_attention_head_dim (int, tuỳ chọn, mặc định là 112) : Số lượng kênh trong mỗi đầu cho cross-attention.

cross_attention_dim (int, tùy chọn, mặc định là 2240) : Số lượng kênh trong đầu ra của cross-attention.

caption_channels (int, mặc định là 2304) : Số lượng kênh trong các embedding mô tả.

mlp_ratio (float, mặc định là 2.5) : Tỷ lệ mở rộng được sử dụng trong lớp GLUMBConv.

dropout (float, mặc định là 0.0) : Xác suất dropout.

attention_bias (bool, mặc định là False) : Có sử dụng bias trong lớp attention hay không.

sample_size (int, mặc định là 32) : Kích thước cơ bản của latent đầu vào.

patch_size (int, mặc định là 1) : Kích thước của các patch được sử dụng trong lớp nhúng patch.

norm_elementwise_affine (bool, mặc định là False) : Có sử dụng độ tương thích từng phần tử trong lớp chuẩn hóa hay không.

norm_eps (float, mặc định là 1e-6) : Giá trị epsilon cho lớp chuẩn hóa.

qk_norm (str, tùy chọn, mặc định là None) : Phương pháp chuẩn hóa cần sử dụng cho query và key.

timestep_scale (float, mặc định là 1.0) : Thang đo cần sử dụng cho các bước thời gian (timesteps).

Mô hình Transformer 2D được giới thiệu trong dòng mô hình Sana.

forward[[diffusers.SanaTransformer2DModel.forward]]

forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: Tensor, guidance: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, attention_kwargs: dict[str, typing.Any] | None = None, controlnet_block_samples: tuple[torch.Tensor] | None = None, return_dict: bool = True)

Nguồn

Tham số:

hidden_states (torch.Tensor có hình dạng (batch_size, in_channels, height, width)) : hidden_states đầu vào.

encoder_hidden_states (torch.Tensor có shape (batch_size, sequence_len, embed_dims)) : Các embeddings điều kiện (embeddings được tính từ các điều kiện đầu vào như prompts) cần sử dụng.

timestep (torch.LongTensor) : Dùng để chỉ bước khử nhiễu.

guidance (torch.Tensor, tùy chọn) : Nhúng thang độ dẫn hướng.

encoder_attention_mask (torch.Tensor, tùy chọn) : Mặt nạ chú ý chéo (cross-attention mask) được áp dụng cho encoder_hidden_states.

attention_mask (torch.Tensor, tùy chọn) : Mặt nạ tự chú ý (self-attention mask) được áp dụng cho hidden_states.

attention_kwargs (dict, tùy chọn) : Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đến AttentionProcessor như đã định nghĩa dưới self.processor trong diffusers.models.attention_processor.

controlnet_block_samples (tuple của torch.Tensor, tùy chọn) : Một danh sách các tensor mà nếu được chỉ định sẽ được cộng vào phần dư (residuals) của các khối transformer.

return_dict (bool, tùy chọn, mặc định là True) : Có nên trả về một ~models.transformer_2d.Transformer2DModelOutput thay vì một tuple thông thường hay không.

Trả về:

Nếu return_dict là True, một ~models.transformer_2d.Transformer2DModelOutput sẽ được trả về, ngược lại một tuple trong đó phần tử đầu tiên là tensor mẫu.

Phương thức forward của SanaTransformer2DModel.

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

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

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

Nguồn

Tham số:

sample (torch.Tensor có shape (batch_size, num_channels, height, width) hoặc (batch size, num_vector_embeds - 1, num_latent_pixels) nếu Transformer2DModel là discrete) : Đầu ra của hidden states được điều kiện bởi đầu vào encoder_hidden_states. Nếu là discrete, trả về các phân phối xác suất cho các latent pixels chưa bị nhiễu.

Đầu ra của Transformer2DModel.

Xet Storage Details

Size:
9.26 kB
·
Xet hash:
4ade9614e6806f00901d62178d6e13145250409b817cef26a38ac67da9b54fe4

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