Diffusers documentation
CogVideoXTransformer3DModel
CogVideoXTransformer3DModel
Un modèle Diffusion Transformer pour des données 3D issu de CogVideoX a été introduit dans CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer par l'Université Tsinghua et ZhipuAI.
Le modèle peut être chargé à l'aide du fragment de code suivant.
from diffusers import CogVideoXTransformer3DModel
transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX-2b", subfolder="transformer", dtype=torch.float16).to("cuda") # or "mps", "xpu", "cpu"CogVideoXTransformer3DModel
classe diffusers.CogVideoXTransformer3DModel
< source >( num_attention_heads: int = 30attention_head_dim: int = 64in_channels: int = 16out_channels: int | None = 16flip_sin_to_cos: bool = Truefreq_shift: int = 0time_embed_dim: int = 512ofs_embed_dim: int | None = Nonetext_embed_dim: int = 4096num_layers: int = 30dropout: float = 0.0attention_bias: bool = Truesample_width: int = 90sample_height: int = 60sample_frames: int = 49patch_size: int = 2patch_size_t: int | None = Nonetemporal_compression_ratio: int = 4max_text_seq_length: int = 226activation_fn: str = 'gelu-approximate'timestep_activation_fn: str = 'silu'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05spatial_interpolation_scale: float = 1.875temporal_interpolation_scale: float = 1.0use_rotary_positional_embeddings: bool = Falseuse_learned_positional_embeddings: bool = Falsepatch_bias: bool = True )
Paramètres
- num_attention_heads (
int, par défaut30) — Le nombre de têtes à utiliser pour l'attention multi-têtes. - attention_head_dim (
int, par défaut64) — Le nombre de canaux dans chaque tête. - in_channels (
int, par défaut16) — Le nombre de canaux dans l'entrée. - out_channels (
int, facultatif, par défaut16) — Le nombre de canaux dans la sortie. - flip_sin_to_cos (
bool, par défautTrue) — Indique s'il faut inverser le sin en cos dans l'embedding temporel. - time_embed_dim (
int, par défaut512) — Dimension de sortie des embeddings de pas de temps. - ofs_embed_dim (
int, par défaut512) — Dimension de sortie des embeddings « ofs » utilisés dans CogVideoX-5b-I2B en version 1.5 - text_embed_dim (
int, par défaut4096) — Dimension d'entrée des embeddings de texte issus de l'encodeur de texte. - num_layers (
int, par défaut30) — Le nombre de blocs Transformer à utiliser. - dropout (
float, par défaut0.0) — La probabilité de dropout à utiliser. - attention_bias (
bool, par défautTrue) — Indique s'il faut utiliser un biais dans les couches de projection d'attention. - sample_width (
int, par défaut90) — La largeur des latents d'entrée. - sample_height (
int, par défaut60) — La hauteur des latents d'entrée. - sample_frames (
int, par défaut49) — Le nombre de frames dans les latents d’entrée. Notez que ce paramètre a été initialisé à tort à 49 au lieu de 13, car CogVideoX traitait 13 frames latentes à la fois dans ses réglages par défaut et recommandés, mais sa valeur ne peut pas être corrigée afin de garantir la rétrocompatibilité. Pour créer un transformer avec K frames latentes, la valeur correcte à passer ici est : ((K - 1) * temporal_compression_ratio + 1). - patch_size (
int, par défaut2) — La taille des patches à utiliser dans la couche d'embedding de patches. - temporal_compression_ratio (
int, par défaut4) — Le ratio de compression le long de la dimension temporelle. Consultez la documentation desample_frames. - max_text_seq_length (
int, par défaut226) — La longueur de séquence maximale des embeddings de texte en entrée. - activation_fn (
str, par défaut"gelu-approximate") — Fonction d'activation à utiliser dans le réseau de neurones à propagation avant. - timestep_activation_fn (
str, par défaut"silu") — Fonction d'activation à utiliser lors de la génération des embeddings de timestep. - norm_elementwise_affine (
bool, par défautTrue) — Indique s'il faut utiliser l'affine élément par élément dans les couches de normalisation. - norm_eps (
float, par défaut1e-5) — La valeur epsilon à utiliser dans les couches de normalisation. - spatial_interpolation_scale (
float, par défaut1.875) — Facteur d'échelle à appliquer aux embeddings positionnels 3D le long des dimensions spatiales. - temporal_interpolation_scale (
float, par défaut1.0) — Facteur d'échelle à appliquer dans les embeddings positionnels 3D le long des dimensions temporelles.
Un modèle Transformer pour des données de type vidéo dans CogVideoX.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: typing.Union[int, float, torch.LongTensor]timestep_cond: typing.Optional[torch.Tensor] = Noneofs: typing.Union[int, float, torch.LongTensor, NoneType] = Noneimage_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = Noneattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True )
Paramètres
- hidden_states (
torch.Tensorde forme(batch_size, num_frames, channels, 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. - timestep (
torch.LongTensor) — Utilisé pour indiquer l'étape de débruitage. - timestep_cond (
torch.Tensor, facultatif) — Embeddings conditionnels pour le timestep. S'ils sont fournis, les embeddings seront additionnés aux échantillons passés à travers la coucheself.time_embeddingpour obtenir les embeddings finaux de timestep. - ofs (
torch.Tensor, facultatif) — Embeddings de décalage utilisés dans CogVideoX-5b-I2V. - image_rotary_emb (
tupledetorch.Tensor, facultatif) — Emplacements positionnels rotatifs précalculés. - 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.
La méthode forward du CogVideoXTransformer3DModel.
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.
Transformer2DModelOutput
classe diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Paramètres
- sample (
torch.Tensorde forme(batch_size, num_channels, height, width)ou(batch size, num_vector_embeds - 1, num_latent_pixels)si Transformer2DModel est discret) — Les états cachés en sortie, conditionnés par l'entréeencoder_hidden_states. Si discret, renvoie les distributions de probabilité pour les pixels latents non bruités.
La sortie de Transformer2DModel.