Diffusers documentation

SanaVideoTransformer3DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaVideoTransformer3DModel

Модель Diffusion Transformer для 3D-данных (видео) из SANA-Video: Efficient Video Generation with Block Linear Diffusion Transformer от NVIDIA и MIT HAN Lab, авторы: Junsong Chen, Yuyang Zhao, Jincheng Yu, Ruihang Chu, Junyu Chen, Shuai Yang, Xianbang Wang, Yicheng Pan, Daquan Zhou, Huan Ling, Haozhe Liu, Hongwei Yi, Hao Zhang, Muyang Li, Yukang Chen, Han Cai, Sanja Fidler, Ping Luo, Song Han, Enze Xie.

Аннотация из статьи:

Мы представляем SANA-Video — небольшую диффузионную модель, способную эффективно генерировать видео с разрешением до 720x1280 и длительностью до минуты. SANA-Video синтезирует видео высокого разрешения, высокого качества и длительной продолжительности с сильной согласованностью текста и видео на удивительно высокой скорости, и может быть развернута на GPU RTX 5090. Два ключевых решения обеспечивают эффективную, результативную и длительную генерацию видео: (1) Linear DiT: мы используем линейное внимание как базовую операцию, что эффективнее стандартного внимания с учетом большого количества токенов, обрабатываемых при генерации видео. (2) KV-кэш с постоянной памятью для Block Linear Attention: мы разработали блочный авто-регрессивный подход для генерации длинных видео, используя состояние с постоянной памятью, выведенное из кумулятивных свойств линейного внимания. Этот KV-кэш предоставляет Linear DiT глобальный контекст при фиксированных затратах памяти, устраняя необходимость в традиционном KV-кэше и позволяя эффективно генерировать видео длительностью в минуту. Кроме того, мы исследуем эффективные фильтры данных и стратегии обучения модели, сокращая стоимость обучения до 12 дней на 64 GPU H100, что составляет лишь 1% от стоимости MovieGen. Благодаря низкой стоимости SANA-Video демонстрирует конкурентоспособные результаты по сравнению с современными передовыми небольшими диффузионными моделями (например, Wan 2.1-1.3B и SkyReel-V2-1.3B), при этом будучи в 16 раз быстрее по измеренной задержке. Более того, SANA-Video может быть развернута на GPU RTX 5090 с точностью NVFP4, что ускоряет инференс генерации 5-секундного видео в 720p с 71 с до 29 с (ускорение в 2,4 раза). В целом, SANA-Video обеспечивает генерацию видео высокого качества при низких затратах.

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

from diffusers import SanaVideoTransformer3DModel
import torch

transformer = SanaVideoTransformer3DModel.from_pretrained("Efficient-Large-Model/SANA-Video_2B_480p_diffusers", subfolder="transformer", dtype=torch.bfloat16)

SanaVideoTransformer3DModel

класс diffusers.SanaVideoTransformer3DModel

< >

( in_channels: int = 16out_channels: int | None = 16num_attention_heads: int = 20attention_head_dim: int = 112num_layers: int = 20num_cross_attention_heads: int | None = 20cross_attention_head_dim: int | None = 112cross_attention_dim: int | None = 2240caption_channels: int = 2304mlp_ratio: float = 2.5dropout: float = 0.0attention_bias: bool = Falsesample_size: int = 30patch_size: tuple[int, int, int] = (1, 2, 2)norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneguidance_embeds: bool = Falseguidance_embeds_scale: float = 0.1qk_norm: str | None = 'rms_norm_across_heads'rope_max_seq_len: int = 1024 )

Параметры

  • in_channels (int, по умолчанию 16) — Количество каналов на входе.
  • out_channels (int, необязательный, по умолчанию 16) — Количество каналов на выходе.
  • num_attention_heads (int, по умолчанию 20) — Количество голов, используемых для многоголовного внимания.
  • attention_head_dim (int, по умолчанию 112) — Количество каналов в каждой голове.
  • num_layers (int, по умолчанию 20) — Количество блоков Transformer, используемых в модели.
  • num_cross_attention_heads (int, необязательный, по умолчанию 20) — Количество головок, используемых для cross-attention.
  • cross_attention_head_dim (int, необязательный, по умолчанию 112) — Количество каналов в каждой голове для cross-attention.
  • cross_attention_dim (int, необязательный, по умолчанию 2240) — Количество каналов на выходе кросс-внимания.
  • caption_channels (int, по умолчанию 2304) — Количество каналов в эмбеддингах подписей.
  • mlp_ratio (float, по умолчанию 2.5) — Коэффициент расширения, используемый в слое GLUMBConv.
  • dropout (float, по умолчанию 0.0) — Вероятность dropout.
  • attention_bias (bool, по умолчанию False) — Использовать ли смещение (bias) в слое внимания.
  • sample_size (int, по умолчанию 32) — Базовый размер входного латентного представления.
  • patch_size (int, по умолчанию 1) — Размер патчей, используемых в слое встраивания патчей.
  • norm_elementwise_affine (bool, по умолчанию False) — Использовать ли поэлементное сродство в слое нормализации.
  • norm_eps (float, по умолчанию 1e-6) — Значение эпсилона для слоя нормализации.
  • qk_norm (str, необязательный, по умолчанию None) — Нормализация, используемая для запроса и ключа.

Трёхмерная модель Transformer, представленная в семействе моделей Sana-Video.

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensorguidance: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_block_samples: tuple[torch.Tensor] | None = Nonereturn_dict: bool = True )

Параметры

  • hidden_states (torch.Tensor формы (batch_size, in_channels, num_frames, height, width)) — Входные hidden_states.
  • encoder_hidden_states (torch.Tensor формы (batch_size, sequence_len, embed_dims)) — Условные эмбеддинги (эмбеддинги, вычисленные на основе входных условий, таких как промпты), которые следует использовать.
  • timestep (torch.LongTensor) — Используется для указания шага денойзинга.
  • guidance (torch.Tensor, необязательный) — Встраивание масштаба руководства.
  • encoder_attention_mask (torch.Tensor, необязательный) — Маска кросс-внимания, применяемая к encoder_hidden_states.
  • attention_mask (torch.Tensor, необязательный) — Маска само-внимания, применяемая к hidden_states.
  • attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
  • controlnet_block_samples (tuple из torch.Tensor, необязательный) — Список тензоров, которые при указании добавляются к остаткам блоков трансформера.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~models.transformer_2d.Transformer2DModelOutput вместо обычного кортежа.

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

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