Diffusers documentation
Modèle Transformer SD3
Modèle Transformer SD3
Le modèle Transformer introduit dans Stable Diffusion 3. Sa nouveauté réside dans le bloc 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 )
Paramètres
- sample_size (
int, par défaut128) — La largeur/hauteur des latents. Cette valeur est fixe pendant l’entraînement, car elle est utilisée pour apprendre un certain nombre d’embeddings de position. - patch_size (
int, par défaut2) — Taille des patches pour découper les données d'entrée en petits patches. - in_channels (
int, par défaut16) — Le nombre de canaux latents dans l'entrée. - num_layers (
int, par défaut18) — Le nombre de blocs de transformeurs à utiliser. - attention_head_dim (
int, par défaut64) — Le nombre de canaux dans chaque tête. - num_attention_heads (
int, par défaut18) — Le nombre de têtes à utiliser pour l'attention multi-têtes. - joint_attention_dim (
int, par défaut4096) — La dimension d'embedding à utiliser pour l'attention conjointe texte-image. - caption_projection_dim (
int, par défaut1152) — La dimension d'incorporation des incorporations de légende. - pooled_projection_dim (
int, par défaut2048) — La dimension d'incorporation des projections de texte agrégées. - out_channels (
int, par défaut16) — Le nombre de canaux latents dans la sortie. - pos_embed_max_size (
int, par défaut96) — La hauteur/largeur latente maximale des embeddings positionnels. - dual_attention_layers (
tuple[int, ...], par défaut()) — Le nombre de blocs de transformateurs à double flux à utiliser. - qk_norm (
str, facultatif, par défautNone) — La normalisation à utiliser pour les requêtes et les clés dans la couche d'attention. SiNone, aucune normalisation n'est utilisée.
Le modèle Transformer introduit dans Stable Diffusion 3.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
Paramètres
- chunk_size (
int, facultatif) — La taille des blocs des couches feed-forward. Si non spécifiée, la couche feed-forward est exécutée individuellement sur chaque tenseur de dim=dim. - dim (
int, facultatif, par défaut0) — La dimension sur laquelle le calcul feed-forward doit être découpé. Choisissez entre dim=0 (batch) ou dim=1 (longueur de la séquence).
Définit le processeur d'attention à utiliser feed forward chunking.
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 )
Paramètres
- hidden_states (
torch.Tensorde forme(batch size, channel, height, width)) —hidden_statesd'entrée. - encoder_hidden_states (
torch.Tensorde forme(batch size, sequence_len, embed_dims)) — Embeddings conditionnels (embeddings calculés à partir des conditions d’entrée telles que les prompts) à utiliser. - pooled_projections (
torch.Tensorde forme(batch_size, projection_dim)) — Embeddings projetés à partir des embeddings des conditions d'entrée. - timestep (
torch.LongTensor) — Utilisé pour indiquer l'étape de débruitage. - block_controlnet_hidden_states (
listdetorch.Tensor) — Une liste de tenseurs qui, si elle est spécifiée, est ajoutée aux résidus des blocs du transformeur. - joint_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~models.transformer_2d.Transformer2DModelOutputplutôt qu'un simple tuple. - skip_layers (
listdeint, facultatif) — Une liste d'indices de couches à ignorer lors du passage avant.
La méthode forward du SD3Transformer2DModel.
Active les projections QKV fusionnées. Pour les modules d'auto-attention, toutes les matrices de projection (c'est-à-dire requête, clé, valeur) sont fusionnées. Pour les modules d'attention croisée, les matrices de projection des clés et des valeurs sont fusionnées.
> Cette API est 🧪 expérimentale.
Désactive la projection QKV fusionnée si elle est activée.
> Cette API est 🧪 expérimentale.