Diffusers documentation
CogVideoXTransformer3DModel
CogVideoXTransformer3DModel
Um modelo Diffusion Transformer para dados 3D do CogVideoX foi introduzido em CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer pela Universidade de Tsinghua & ZhipuAI.
O modelo pode ser carregado com o seguinte trecho de código.
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 )
Parâmetros
- num_attention_heads (
int, padrão30) — O número de cabeças a serem usadas para a atenção multi-cabeça. - attention_head_dim (
int, padrão64) — O número de canais em cada cabeça. - in_channels (
int, padrão16) — O número de canais na entrada. - out_channels (
int, opcional, padrão16) — O número de canais na saída. - flip_sin_to_cos (
bool, padrãoTrue) — Se deve inverter o sin para cos no embedding de tempo. - time_embed_dim (
int, padrão512) — Dimensão de saída dos embeddings de timestep. - ofs_embed_dim (
int, padrão512) — Dimensão de saída dos embeddings “ofs” usados no CogVideoX-5b-I2B na versão 1.5 - text_embed_dim (
int, padrão4096) — Dimensão de entrada dos embeddings de texto do codificador de texto. - num_layers (
int, padrão30) — O número de blocos de camadas de Transformer a serem usados. - dropout (
float, padrão0.0) — A probabilidade de dropout a ser utilizada. - attention_bias (
bool, padrãoTrue) — Se deve usar viés nas camadas de projeção de atenção. - sample_width (
int, padrão90) — A largura dos latentes de entrada. - sample_height (
int, padrão60) — A altura dos latentes de entrada. - sample_frames (
int, padrão49) — O número de quadros nos latentes de entrada. Observe que este parâmetro foi inicializado incorretamente como 49 em vez de 13, pois o CogVideoX processava 13 quadros latentes de uma vez em suas configurações padrão e recomendadas, mas não pode ser alterado para o valor correto para garantir compatibilidade reversa. Para criar um transformer com K quadros latentes, o valor correto a ser passado aqui seria: ((K - 1) * temporal_compression_ratio + 1). - patch_size (
int, padrão2) — O tamanho dos patches a serem usados na camada de incorporação de patches. - temporal_compression_ratio (
int, padrão4) — A razão de compressão ao longo da dimensão temporal. Consulte a documentação desample_frames. - max_text_seq_length (
int, padrão226) — O comprimento máximo da sequência dos embeddings de texto de entrada. - activation_fn (
str, padrão"gelu-approximate") — Função de ativação a ser usada no feed-forward. - timestep_activation_fn (
str, padrão"silu") — Função de ativação a ser usada ao gerar os embeddings de timestep. - norm_elementwise_affine (
bool, padrãoTrue) — Se deve usar afinidade elementar em camadas de normalização. - norm_eps (
float, padrão1e-5) — O valor de epsilon a ser usado nas camadas de normalização. - spatial_interpolation_scale (
float, padrão1.875) — Fator de escala a ser aplicado nos embeddings posicionais 3D ao longo das dimensões espaciais. - temporal_interpolation_scale (
float, padrão1.0) — Fator de escala a ser aplicado nos embeddings posicionais 3D ao longo das dimensões temporais.
Um modelo Transformer para dados semelhantes a vídeo no 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 )
Parâmetros
- hidden_states (
torch.Tensorde forma(batch_size, num_frames, channels, 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. - timestep (
torch.LongTensor) — Usado para indicar o passo de desruido. - timestep_cond (
torch.Tensor, opcional) — Incorporações condicionais para o timestep. Se fornecidas, as incorporações serão somadas às amostras passadas pela camadaself.time_embeddingpara obter as incorporações finais de timestep. - ofs (
torch.Tensor, opcional) — Embeddings de deslocamento usados no CogVideoX-5b-I2V. - image_rotary_emb (
tupledetorch.Tensor, opcional) — Incorporações posicionais rotativas pré-computadas. - 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.
O método forward do CogVideoXTransformer3DModel.
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.
Transformer2DModelOutput
classe diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parâmetros
- sample (
torch.Tensorde forma(batch_size, num_channels, height, width)ou(batch size, num_vector_embeds - 1, num_latent_pixels)se Transformer2DModel for discreto) — A saída dos estados ocultos condicionada à entradaencoder_hidden_states. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.
A saída de Transformer2DModel.