Diffusers documentation
PixArtTransformer2DModel
PixArtTransformer2DModel
Un modèle Transformer pour des données de type image issu de PixArt-Alpha et PixArt-Sigma.
PixArtTransformer2DModel
classe diffusers.PixArtTransformer2DModel
< source >( num_attention_heads: int = 16attention_head_dim: int = 72in_channels: int = 4out_channels: int | None = 8num_layers: int = 28dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = 1152attention_bias: bool = Truesample_size: int = 128patch_size: int = 2activation_fn: str = 'gelu-approximate'num_embeds_ada_norm: int | None = 1000upcast_attention: bool = Falsenorm_type: str = 'ada_norm_single'norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneuse_additional_conditions: bool | None = Nonecaption_channels: int | None = Noneattention_type: str | None = 'default' )
Paramètres
- num_attention_heads (int, facultatif, par défaut 16) — Le nombre de têtes à utiliser pour l'attention multi-têtes.
- attention_head_dim (int, facultatif, par défaut 72) — Le nombre de canaux dans chaque tête.
- in_channels (int, par défaut 4) — Le nombre de canaux de l'entrée.
- out_channels (int, optionnel) — Le nombre de canaux dans la sortie. Spécifiez ce paramètre si le nombre de canaux de sortie diffère de celui de l'entrée.
- num_layers (int, facultatif, par défaut 28) — Le nombre de blocs Transformer à utiliser.
- dropout (float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser dans les blocs Transformer.
- norm_num_groups (int, facultatif, valeur par défaut 32) — Nombre de groupes pour la normalisation par groupe au sein des blocs Transformer.
- cross_attention_dim (int, optionnel) — La dimensionnalité des couches d'attention croisée, correspondant généralement à la dimension cachée de l'encodeur.
- attention_bias (bool, facultatif, par défaut True) — Configure si l'attention des blocs Transformer doit contenir un paramètre de biais.
- sample_size (int, par défaut 128) — La largeur des images latentes. Ce paramètre est fixe pendant l'entraînement.
- patch_size (int, par défaut 2) — Taille des patches traités par le modèle, pertinente pour les architectures fonctionnant sur des données non séquentielles.
- activation_fn (str, facultatif, par défaut “gelu-approximate”) — Fonction d'activation à utiliser dans les réseaux feed-forward au sein des blocs Transformer.
- num_embeds_ada_norm (int, optionnel, par défaut 1000) — Nombre d'embeddings pour AdaLayerNorm, fixé pendant l'entraînement et qui affecte le nombre maximal d'étapes de débruitage pendant l'inférence.
- upcast_attention (bool, facultatif, par défaut False) — Si true, augmente la précision des dimensions du mécanisme d'attention pour une performance potentiellement améliorée.
- norm_type (str, optionnel, par défaut “ada_norm_zero”) — Spécifie le type de normalisation utilisé, peut être ‘ada_norm_zero’.
- norm_elementwise_affine (bool, facultatif, par défaut False) — Si true, active les paramètres affines élément par élément dans les couches de normalisation.
- norm_eps (float, facultatif, par défaut 1e-6) — Une petite constante ajoutée au dénominateur des couches de normalisation pour éviter la division par zéro.
- interpolation_scale (int, facultatif) — Facteur d'échelle à utiliser lors de l'interpolation des embeddings de position.
- use_additional_conditions (bool, optionnel) — Si nous utilisons des conditions supplémentaires en tant qu'entrées.
- attention_type (str, facultatif, par défaut “default”) — Type de mécanisme d’attention à utiliser.
- caption_channels (int, facultatif, par défaut None) — Nombre de canaux à utiliser pour projeter les embeddings de légende.
- use_linear_projection (bool, facultatif, par défaut False) — Argument obsolète. Sera supprimé dans une version future.
- num_vector_embeds (bool, optionnel, par défaut False) — Argument obsolète. Sera supprimé dans une version future.
Un modèle Transformer 2D tel qu’introduit dans la famille de modèles PixArt (https://huggingface.co/papers/2310.00426, https://huggingface.co/papers/2403.04692).
forward
< source >( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict = Nonecross_attention_kwargs: dict = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )
Paramètres
- hidden_states (
torch.FloatTensorde forme(batch size, channel, height, width)) —hidden_statesd'entrée. - encoder_hidden_states (
torch.FloatTensorde forme(batch size, sequence len, embed dims), facultatif) — Embeddings conditionnels pour la couche d'attention croisée. S'ils ne sont pas fournis, l'attention croisée se comporte par défaut comme une auto-attention. - timestep (
torch.LongTensor, facultatif) — Utilisé pour indiquer l'étape de débruitage. Timestep facultatif à appliquer en tant qu'embedding dansAdaLayerNorm. - added_cond_kwargs — (
dict[str, Any], facultatif) : Conditions supplémentaires à utiliser en tant qu'entrées. - cross_attention_kwargs (
dict[str, Any], facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - attention_mask (
torch.Tensor, facultatif) — Un masque d’attention de forme(batch, key_tokens)est appliqué àencoder_hidden_states. Si la valeur est1, le masque est conservé ; sinon, si elle est0, il est ignoré. Le masque est converti en biais, qui ajoute de grandes valeurs négatives aux scores d’attention correspondant aux jetons « ignorés ». - encoder_attention_mask (
torch.Tensor, facultatif) — Masque d'attention croisée appliqué auxencoder_hidden_states. Deux formats pris en charge :- Masque
(batch, sequence_length)True = conserver, False = supprimer. - Biais
(batch, 1, sequence_length)0 = conserver, -10000 = supprimer.
Si
ndim == 2: sera interprété comme un masque, puis converti en un biais cohérent avec le format ci-dessus. Ce biais sera ajouté aux scores d'attention croisée. - Masque
- return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un UNet2DConditionOutput plutôt qu'un simple tuplet.
La méthode forward du PixArtTransformer2DModel.
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 les processeurs d'attention personnalisés et définit l'implémentation d'attention par défaut.
Il est sans risque d’utiliser simplement AttnProcessor(), car PixArt ne comporte aucun processeur d’attention exotique dans le modèle par défaut.
Désactive la projection QKV fusionnée si elle est activée.
> Cette API est 🧪 expérimentale.