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

Un modelo Diffusion Transformer para datos 2D de SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers fue introducido por NVIDIA y MIT HAN Lab, por Enze Xie, Junsong Chen, Junyu Chen, Han Cai, Haotian Tang, Yujun Lin, Zhekai Zhang, Muyang Li, Ligeng Zhu, Yao Lu, Song Han.

El resumen del artículo es:

Presentamos Sana, un marco de texto a imagen que puede generar imágenes de forma eficiente hasta una resolución de 4096×4096. Sana puede sintetizar imágenes de alta resolución y alta calidad con una fuerte alineación texto-imagen a una velocidad notablemente rápida, y es desplegable en la GPU de un portátil. Los diseños principales incluyen: (1) Autoencoder de compresión profunda: a diferencia de los AE tradicionales, que comprimen las imágenes solo 8×, entrenamos un AE que puede comprimir las imágenes 32×, reduciendo efectivamente el número de tokens latentes. (2) DiT lineal: reemplazamos toda la atención vanilla en DiT con atención lineal, que es más eficiente en altas resoluciones sin sacrificar la calidad. (3) Codificador de texto solo decodificador: reemplazamos T5 con un pequeño LLM moderno solo decodificador como codificador de texto y diseñamos instrucciones humanas complejas con aprendizaje in-context para mejorar la alineación imagen-texto. (4) Entrenamiento y muestreo eficientes: proponemos Flow-DPM-Solver para reducir los pasos de muestreo, con etiquetado y selección de descripciones eficientes para acelerar la convergencia. Como resultado, Sana-0.6B es muy competitivo con el modelo de difusión gigante moderno (p. ej. Flux-12B), siendo 20 veces más pequeño y más de 100 veces más rápido en el rendimiento medido. Además, Sana-0.6B puede desplegarse en una GPU de portátil de 16GB, tardando menos de 1 segundo en generar una imagen de resolución 1024×1024. Sana permite la creación de contenido a bajo costo. El código y el modelo se publicarán.

El modelo se puede cargar con el siguiente fragmento de código.

from diffusers import SanaTransformer2DModel

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

SanaTransformer2DModel

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

Parámetros

  • in_channels (int, por defecto 32) — El número de canales en la entrada.
  • out_channels (int, opcional, valor predeterminado 32) — El número de canales en la salida.
  • num_attention_heads (int, por defecto 70) — El número de cabezas a utilizar para la atención multi-cabeza.
  • attention_head_dim (int, por defecto 32) — El número de canales en cada cabeza.
  • num_layers (int, por defecto 20) — El número de capas de bloques Transformer a utilizar.
  • num_cross_attention_heads (int, opcional, valor predeterminado 20) — El número de cabezas a utilizar para la atención cruzada.
  • cross_attention_head_dim (int, opcional, valor predeterminado 112) — El número de canales en cada cabeza para la atención cruzada.
  • cross_attention_dim (int, opcional, valor predeterminado 2240) — El número de canales en la salida de la atención cruzada.
  • caption_channels (int, por defecto 2304) — El número de canales en los embeddings de la descripción.
  • mlp_ratio (float, por defecto 2.5) — La proporción de expansión a utilizar en la capa GLUMBConv.
  • dropout (float, por defecto 0.0) — La probabilidad de dropout.
  • attention_bias (bool, por defecto False) — Si se debe usar sesgo en la capa de atención.
  • sample_size (int, por defecto 32) — El tamaño base del latente de entrada.
  • patch_size (int, por defecto 1) — El tamaño de los parches a utilizar en la capa de incrustación de parches.
  • norm_elementwise_affine (bool, por defecto False) — Si se debe usar afinidad por elemento en la capa de normalización.
  • norm_eps (float, por defecto 1e-6) — El valor de epsilon para la capa de normalización.
  • qk_norm (str, opcional, valor predeterminado None) — La normalización a utilizar para la consulta y la clave.
  • timestep_scale (float, por defecto 1.0) — La escala a utilizar para los pasos de tiempo.

Un modelo Transformer 2D introducido en la familia de modelos 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 )

Parámetros

  • hidden_states (torch.Tensor de forma (batch_size, in_channels, height, width)) — Entrada hidden_states.
  • encoder_hidden_states (torch.Tensor de forma (batch_size, sequence_len, embed_dims)) — Incrustaciones condicionales (incrustaciones calculadas a partir de las condiciones de entrada, como los prompts) que se deben utilizar.
  • timestep (torch.LongTensor) — Se utiliza para indicar el paso de desruido.
  • guidance (torch.Tensor, opcional) — Incrustación de escala de orientación.
  • encoder_attention_mask (torch.Tensor, opcional) — Máscara de atención cruzada aplicada a encoder_hidden_states.
  • attention_mask (torch.Tensor, opcional) — Máscara de autoatención aplicada a hidden_states.
  • attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • controlnet_block_samples (tuple de torch.Tensor, opcional) — Una lista de tensores que, si se especifica, se añaden a los residuos de los bloques del transformer.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~models.transformer_2d.Transformer2DModelOutput en lugar de una tupla simple.

El método forward de SanaTransformer2DModel.

Transformer2DModelOutput

clase diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Parámetros

  • sample (torch.Tensor de forma (batch_size, num_channels, height, width) o (batch size, num_vector_embeds - 1, num_latent_pixels) si Transformer2DModel es discreto) — La salida de estados ocultos condicionada a la entrada encoder_hidden_states. Si es discreto, devuelve distribuciones de probabilidad para los píxeles latentes sin ruido.

La salida de Transformer2DModel.

Update on GitHub