Diffusers documentation
Mô hình Transformer SD3
Mô hình Transformer SD3
Mô hình Transformer được giới thiệu trong Stable Diffusion 3. Điểm mới của nó nằm ở khối transformer MMDiT.
SD3Transformer2DModel
lớp diffusers.SD3Transformer2DModel
< source >( sample_size: int = 128patch_size: int = 2in_channels: int = 16num_layers: int = 18attention_head_dim: int = 64num_attention_heads: int = 18joint_attention_dim: int = 4096caption_projection_dim: int = 1152pooled_projection_dim: int = 2048out_channels: int = 16pos_embed_max_size: int = 96dual_attention_layers: tuple = ()qk_norm: str | None = None )
Tham số
- sample_size (
int, mặc định là128) — Chiều rộng/chiều cao của các latents. Giá trị này được cố định trong quá trình huấn luyện vì nó được dùng để học một số lượng các position embeddings. - patch_size (
int, mặc định là2) — Kích thước patch để chuyển dữ liệu đầu vào thành các patch nhỏ. - in_channels (
int, mặc định là16) — Số lượng kênh tiềm ẩn trong đầu vào. - num_layers (
int, mặc định là18) — Số lượng lớp của các khối transformer cần sử dụng. - attention_head_dim (
int, mặc định là64) — Số lượng kênh trong mỗi head. - num_attention_heads (
int, mặc định là18) — Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention). - joint_attention_dim (
int, mặc định là4096) — Kích thước embedding để sử dụng cho chú ý kết hợp văn bản-hình ảnh. - caption_projection_dim (
int, mặc định là1152) — Kích thước embedding của các embedding caption. - pooled_projection_dim (
int, mặc định là2048) — Kích thước embedding của các phép chiếu văn bản đã gộp (pooled). - out_channels (
int, mặc định là16) — Số lượng kênh tiềm ẩn trong đầu ra. - pos_embed_max_size (
int, mặc định là96) — Chiều cao/chiều rộng tiềm ẩn tối đa của nhúng vị trí. - dual_attention_layers (
tuple[int, ...], mặc định là()) — Số lượng khối transformer luồng kép (dual-stream) cần sử dụng. - qk_norm (
str, tùy chọn, mặc định làNone) — Phương pháp chuẩn hóa được sử dụng cho query và key trong lớp attention. Nếu làNone, sẽ không sử dụng chuẩn hóa.
Mô hình Transformer được giới thiệu trong Stable Diffusion 3.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
Tham số
- chunk_size (
int, tùy chọn) — Kích thước chunk của các lớp feed-forward. Nếu không được chỉ định, lớp feed-forward sẽ được chạy riêng lẻ trên mỗi tensor có dim=dim. - dim (
int, tùy chọn, mặc định là0) — Chiều mà phép tính feed-forward nên được chia nhỏ. Chọn giữa dim=0 (batch) hoặc dim=1 (chiều dài chuỗi).
Đặt bộ xử lý chú ý để sử dụng chia nhỏ feed forward.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensor = Nonepooled_projections: Tensor = Nonetimestep: LongTensor = Noneblock_controlnet_hidden_states: list = Nonejoint_attention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = Trueskip_layers: list[int] | None = None )
Tham số
- hidden_states (
torch.Tensorcó hình dạng(batch size, channel, height, width)) —hidden_statesđầu vào. - encoder_hidden_states (
torch.Tensorcó hình dạng(batch size, sequence_len, embed_dims)) — Các embedding điều kiện (các embedding được tính toán từ các điều kiện đầu vào như prompts) cần sử dụng. - pooled_projections (
torch.Tensorcó hình dạng(batch_size, projection_dim)) — Các embedding được chiếu từ các embedding của điều kiện đầu vào. - timestep (
torch.LongTensor) — Dùng để chỉ bước khử nhiễu. - block_controlnet_hidden_states (
listoftorch.Tensor) — Một danh sách các tensor, nếu được chỉ định, sẽ được cộng vào phần dư (residuals) của các khối transformer. - joint_attention_kwargs (
dict, tùy chọn) — Một từ điển kwargs, nếu được chỉ định, sẽ được truyền đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong diffusers.models.attention_processor. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một~models.transformer_2d.Transformer2DModelOutputthay vì một tuple thông thường hay không. - skip_layers (
listcủaint, tùy chọn) — Danh sách các chỉ số lớp cần bỏ qua trong quá trình truyền thẳng.
Phương thức forward của SD3Transformer2DModel.
Bật các phép chiếu QKV đã hợp nhất. Đối với các module tự chú ý, tất cả các ma trận chiếu (tức là truy vấn, khóa, giá trị) đều được hợp nhất. Đối với các module chú ý chéo, các ma trận chiếu khóa và giá trị được hợp nhất.
> API này 🧪 mang tính thử nghiệm.
Tắt dự phóng QKV hợp nhất nếu đã được bật.
> API này 🧪 mang tính thử nghiệm.