Diffusers documentation

CogVideoXTransformer3DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

CogVideoXTransformer3DModel

A Diffusion Transformer model for 3D data from CogVideoX was introduced in CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer by Tsinghua University & ZhipuAI.

Модель можно загрузить с помощью следующего фрагмента кода.

from diffusers import CogVideoXTransformer3DModel

transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX-2b", subfolder="transformer", dtype=torch.float16).to("cuda")  # or "mps", "xpu", "cpu"

CogVideoXTransformer3DModel

класс diffusers.CogVideoXTransformer3DModel

< >

( 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 )

Параметры

  • num_attention_heads (int, по умолчанию 30) — Количество голов, используемых для многоголовного внимания.
  • attention_head_dim (int, по умолчанию 64) — Количество каналов в каждой голове.
  • in_channels (int, по умолчанию 16) — Количество каналов на входе.
  • out_channels (int, необязательный, по умолчанию 16) — Количество каналов на выходе.
  • flip_sin_to_cos (bool, по умолчанию True) — Определяет, следует ли заменить sin на cos во временном эмбеддинге.
  • time_embed_dim (int, по умолчанию 512) — Размерность выходного вектора эмбеддингов временных шагов.
  • ofs_embed_dim (int, по умолчанию 512) — Выходное измерение эмбеддингов «ofs», используемых в CogVideoX-5b-I2B версии 1.5
  • text_embed_dim (int, по умолчанию 4096) — Входное измерение текстовых эмбеддингов от текстового энкодера.
  • num_layers (int, по умолчанию 30) — Количество блоков Transformer, используемых в модели.
  • dropout (float, по умолчанию 0.0) — Вероятность применения dropout.
  • attention_bias (bool, по умолчанию True) — Использовать ли смещение (bias) в слоях проекции внимания.
  • sample_width (int, по умолчанию 90) — Ширина входных латентов.
  • sample_height (int, по умолчанию 60) — Высота входных латентов.
  • sample_frames (int, по умолчанию 49) — Количество кадров во входных латентах. Обратите внимание, что этот параметр был неверно инициализирован значением 49 вместо 13, поскольку CogVideoX обрабатывал 13 латентных кадров за один проход в своих настройках по умолчанию и рекомендуемых настройках, однако его нельзя изменить на правильное значение, чтобы обеспечить обратную совместимость. Чтобы создать трансформер с K латентными кадрами, правильным значением для передачи здесь будет: ((K - 1) * temporal_compression_ratio + 1).
  • patch_size (int, по умолчанию 2) — Размер патчей, используемых в слое встраивания патчей.
  • temporal_compression_ratio (int, по умолчанию 4) — Коэффициент сжатия по временному измерению. См. документацию для sample_frames.
  • max_text_seq_length (int, по умолчанию 226) — Максимальная длина последовательности входных текстовых эмбеддингов.
  • activation_fn (str, по умолчанию "gelu-approximate") — Функция активации, используемая в полносвязном слое.
  • timestep_activation_fn (str, по умолчанию "silu") — Функция активации, используемая при генерации эмбеддингов временных шагов.
  • norm_elementwise_affine (bool, по умолчанию True) — Использовать ли elementwise affine в слоях нормализации.
  • norm_eps (float, по умолчанию 1e-5) — Значение эпсилона, используемое в слоях нормализации.
  • spatial_interpolation_scale (float, по умолчанию 1.875) — Коэффициент масштабирования, применяемый к 3D-позиционным эмбеддингам по пространственным измерениям.
  • temporal_interpolation_scale (float, по умолчанию 1.0) — Коэффициент масштабирования, применяемый к 3D-позиционным эмбеддингам вдоль временных измерений.

Модель Transformer для видеоподобных данных в CogVideoX.

forward

< >

( 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 )

Параметры

  • hidden_states (torch.Tensor формы (batch_size, num_frames, channels, height, width)) — Входные hidden_states.
  • encoder_hidden_states (torch.Tensor формы (batch_size, sequence_len, embed_dims)) — Условные эмбеддинги (эмбеддинги, вычисленные на основе входных условий, таких как промпты), которые следует использовать.
  • timestep (torch.LongTensor) — Используется для указания шага денойзинга.
  • timestep_cond (torch.Tensor, необязательный) — Условные эмбеддинги для временного шага. Если переданы, эмбеддинги будут сложены с сэмплами, прошедшими через слой self.time_embedding, чтобы получить итоговые эмбеддинги временного шага.
  • ofs (torch.Tensor, необязательный) — Смещённые эмбеддинги, используемые в CogVideoX-5b-I2V.
  • image_rotary_emb (tuple из torch.Tensor, необязательный) — Предварительно вычисленные ротационные позиционные эмбеддинги.
  • attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~models.transformer_2d.Transformer2DModelOutput вместо обычного кортежа.

Метод forward модели CogVideoXTransformer3DModel.

fuse_qkv_projections

< >

( )

Включает объединённые проекции QKV. Для модулей само-внимания все матрицы проекций (т. е. запрос, ключ, значение) объединяются. Для модулей кросс-внимания объединяются матрицы проекций ключа и значения.

> Этот API 🧪 экспериментальный.

unfuse_qkv_projections

< >

( )

Отключает объединенную проекцию QKV, если она включена.

> Этот API 🧪 экспериментальный.

Transformer2DModelOutput

класс diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Параметры

  • sample (torch.Tensor формы (batch_size, num_channels, height, width) или (batch size, num_vector_embeds - 1, num_latent_pixels), если Transformer2DModel дискретный) — Выходные скрытые состояния, обусловленные входом encoder_hidden_states. Если модель дискретная, возвращает распределения вероятностей для латентных пикселей без шума.

Вывод Transformer2DModel.

Update on GitHub