Diffusers documentation

SanaTransformer2DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaTransformer2DModel

Модель Diffusion Transformer для 2D-данных из SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers была представлена NVIDIA и MIT HAN Lab, авторами Enze Xie, Junsong Chen, Junyu Chen, Han Cai, Haotian Tang, Yujun Lin, Zhekai Zhang, Muyang Li, Ligeng Zhu, Yao Lu, Song Han.

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

Мы представляем Sana — фреймворк для генерации изображений по текстовому описанию, способный эффективно создавать изображения с разрешением до 4096×4096. Sana синтезирует изображения высокого разрешения и качества с сильной согласованностью текста и изображения на удивительно высокой скорости, при этом его можно развернуть на GPU ноутбука. Ключевые элементы архитектуры: (1) Автоэнкодер с глубокой компрессией: в отличие от традиционных AE, которые сжимают изображения только в 8 раз, мы обучили AE, способный сжимать изображения в 32 раза, что эффективно снижает количество латентных токенов. (2) Linear DiT: мы заменили все стандартные механизмы внимания в DiT на линейное внимание, которое более эффективно при высоких разрешениях без потери качества. (3) Текстовый энкодер только с декодером: мы заменили T5 на современный небольшой LLM с архитектурой только с декодером в качестве текстового энкодера и разработали сложные инструкции для людей с использованием обучения в контексте, чтобы усилить согласованность текста и изображения. (4) Эффективное обучение и сэмплирование: мы предлагаем Flow-DPM-Solver для сокращения числа шагов сэмплирования, а также эффективное размечивание и отбор описаний для ускорения сходимости. В результате Sana-0.6B очень конкурентоспособен по сравнению с современными гигантскими диффузионными моделями (например, Flux-12B), будучи в 20 раз меньше и более чем в 100 раз быстрее по измеренной пропускной способности. Более того, Sana-0.6B можно развернуть на GPU ноутбука с 16 ГБ памяти, при этом генерация изображения с разрешением 1024×1024 занимает менее 1 секунды. Sana позволяет создавать контент с низкими затратами. Код и модель будут опубликованы.

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

from diffusers import SanaTransformer2DModel

transformer = SanaTransformer2DModel.from_pretrained("Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", subfolder="transformer", dtype=torch.bfloat16)

SanaTransformer2DModel

класс diffusers.SanaTransformer2DModel

< >

( in_channels: int = 32out_channels: int | None = 32num_attention_heads: int = 70attention_head_dim: int = 32num_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 = 32patch_size: int = 1norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneguidance_embeds: bool = Falseguidance_embeds_scale: float = 0.1qk_norm: str | None = Nonetimestep_scale: float = 1.0 )

Параметры

  • in_channels (int, по умолчанию 32) — Количество каналов на входе.
  • out_channels (int, необязательный, по умолчанию 32) — Количество каналов на выходе.
  • num_attention_heads (int, по умолчанию 70) — Количество голов, используемых для многоголовного внимания.
  • attention_head_dim (int, по умолчанию 32) — Количество каналов в каждой голове.
  • 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) — Нормализация, используемая для запроса и ключа.
  • timestep_scale (float, по умолчанию 1.0) — Масштаб, используемый для временных шагов.

Двумерная модель Transformer, представленная в семействе моделей Sana.

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, 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 модели SanaTransformer2DModel.

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