Diffusers documentation
Modelo Transformer SD3
Modelo Transformer SD3
O modelo Transformer introduzido no Stable Diffusion 3. Sua novidade reside no bloco de transformer MMDiT.
SD3Transformer2DModel
classe 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 )
Parâmetros
- sample_size (
int, padrão128) — A largura/altura dos latentes. Isso é fixo durante o treinamento, pois é usado para aprender um número de embeddings de posição. - patch_size (
int, padrão2) — Tamanho do patch para dividir os dados de entrada em pequenos patches. - in_channels (
int, padrão16) — O número de canais latentes na entrada. - num_layers (
int, padrão18) — O número de camadas de blocos de transformador a serem usadas. - attention_head_dim (
int, padrão64) — O número de canais em cada cabeça. - num_attention_heads (
int, padrão18) — O número de cabeças a serem usadas para a atenção multi-cabeça. - joint_attention_dim (
int, padrão4096) — A dimensão de incorporação a ser usada para a atenção conjunta de texto e imagem. - caption_projection_dim (
int, padrão1152) — A dimensão de incorporação dos embeddings de legenda. - pooled_projection_dim (
int, padrão2048) — A dimensão de incorporação das projeções de texto agrupadas. - out_channels (
int, padrão16) — O número de canais latentes na saída. - pos_embed_max_size (
int, padrão96) — A altura/largura máxima latente dos embeddings posicionais. - dual_attention_layers (
tuple[int, ...], padrão()) — O número de blocos de transformador de fluxo duplo a serem usados. - qk_norm (
str, opcional, padrãoNone) — A normalização a ser usada para a query e a key na camada de atenção. SeNone, nenhuma normalização é usada.
O modelo Transformer introduzido no Stable Diffusion 3.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
Parâmetros
- chunk_size (
int, opcional) — O tamanho do bloco das camadas feed-forward. Se não for especificado, a camada feed-forward será executada individualmente sobre cada tensor com dim=dim. - dim (
int, opcional, padrão0) — A dimensão sobre a qual o cálculo feed-forward deve ser dividido em blocos. Escolha entre dim=0 (lote) ou dim=1 (comprimento da sequência).
Define o processador de atenção para usar chunking de 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 )
Parâmetros
- hidden_states (
torch.Tensorde forma(batch size, channel, height, width)) —hidden_statesde entrada. - encoder_hidden_states (
torch.Tensorde forma(batch size, sequence_len, embed_dims)) — Incorporações condicionais (incorporações calculadas a partir das condições de entrada, como prompts) a serem usadas. - pooled_projections (
torch.Tensorde forma(batch_size, projection_dim)) — Projeções de embeddings a partir dos embeddings das condições de entrada. - timestep (
torch.LongTensor) — Usado para indicar o passo de desruido. - block_controlnet_hidden_states (
listdetorch.Tensor) — Uma lista de tensores que, se especificada, é adicionada aos resíduos dos blocos do transformer. - joint_attention_kwargs (
dict, opcional) — Um dicionário de kwargs que, se especificado, é passado aoAttentionProcessorconforme definido emself.processorem diffusers.models.attention_processor. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um~models.transformer_2d.Transformer2DModelOutputem vez de uma tupla simples. - skip_layers (
listdeint, opcional) — Uma lista de índices de camadas a serem ignoradas durante a passagem para frente.
O método forward do SD3Transformer2DModel.
Ativa as projeções QKV fundidas. Para os módulos de autoatenção, todas as matrizes de projeção (ou seja, query, key, value) são fundidas. Para os módulos de atenção cruzada, as matrizes de projeção de key e value são fundidas.
> Esta API é 🧪 experimental.
Desativa a projeção QKV fundida, se estiver habilitada.
> Esta API é 🧪 experimental.