Diffusers documentation
Modelo Transformer de SD3
Modelo Transformer de SD3
El modelo Transformer introducido en Stable Diffusion 3. Su novedad radica en el bloque de transformer MMDiT.
SD3Transformer2DModel
clase diffusers.SD3Transformer2DModel
< source >( sample_size: int = 128patch_size: int = 2in_channels: int = 16num_layers: int = 18attention_head_dim: int = 64num_attention_heads: int = 18joint_attention_dim: int = 4096caption_projection_dim: int = 1152pooled_projection_dim: int = 2048out_channels: int = 16pos_embed_max_size: int = 96dual_attention_layers: tuple = ()qk_norm: str | None = None )
Parámetros
- sample_size (
int, por defecto128) — El ancho/alto de los latentes. Esto se mantiene fijo durante el entrenamiento, ya que se utiliza para aprender un número de embeddings de posición. - patch_size (
int, por defecto2) — Tamaño del parche para dividir los datos de entrada en parches pequeños. - in_channels (
int, por defecto16) — El número de canales latentes en la entrada. - num_layers (
int, por defecto18) — El número de capas de bloques de transformador a utilizar. - attention_head_dim (
int, por defecto64) — El número de canales en cada cabeza. - num_attention_heads (
int, por defecto18) — El número de cabezas a utilizar para la atención multi-cabeza. - joint_attention_dim (
int, por defecto4096) — La dimensión de incrustación a utilizar para la atención conjunta de texto e imagen. - caption_projection_dim (
int, por defecto1152) — La dimensión de los embeddings de las descripciones. - pooled_projection_dim (
int, por defecto2048) — La dimensión de la incrustación de las proyecciones de texto agrupadas. - out_channels (
int, por defecto16) — El número de canales latentes en la salida. - pos_embed_max_size (
int, por defecto96) — La altura/ancho máximo latente de las incrustaciones posicionales. - dual_attention_layers (
tuple[int, ...], por defecto()) — El número de bloques de transformador de doble flujo a utilizar. - qk_norm (
str, opcional, valor predeterminadoNone) — La normalización que se utilizará para la consulta y la clave en la capa de atención. Si esNone, no se utiliza ninguna normalización.
El modelo Transformer introducido en Stable Diffusion 3.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
Parámetros
- chunk_size (
int, opcional) — El tamaño de bloque de las capas feed-forward. Si no se especifica, se ejecutará la capa feed-forward de forma individual sobre cada tensor con dim=dim. - dim (
int, opcional, valor predeterminado0) — La dimensión sobre la que se debe dividir en bloques el cálculo de la red feed-forward. Elija entre dim=0 (lote) o dim=1 (longitud de la secuencia).
Establece el procesador de atención para usar fragmentación de avance hacia adelante.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensor = Nonepooled_projections: Tensor = Nonetimestep: LongTensor = Noneblock_controlnet_hidden_states: list = Nonejoint_attention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = Trueskip_layers: list[int] | None = None )
Parámetros
- hidden_states (
torch.Tensorde forma(batch size, channel, height, width)) — Estados ocultos de entradahidden_states. - encoder_hidden_states (
torch.Tensorde 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. - pooled_projections (
torch.Tensorde forma(batch_size, projection_dim)) — Incrustaciones proyectadas a partir de las incrustaciones de las condiciones de entrada. - timestep (
torch.LongTensor) — Se utiliza para indicar el paso de desruido. - block_controlnet_hidden_states (
listdetorch.Tensor) — Una lista de tensores que, si se especifica, se suma a los residuos de los bloques del transformador. - joint_attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~models.transformer_2d.Transformer2DModelOutputen lugar de una tupla simple. - skip_layers (
listdeint, opcional) — Una lista de índices de capas que se omitirán durante la pasada hacia adelante.
El método forward de SD3Transformer2DModel.
Habilita las proyecciones QKV fusionadas. Para los módulos de autoatención, todas las matrices de proyección (es decir, consulta, clave y valor) se fusionan. Para los módulos de atención cruzada, las matrices de proyección de clave y valor se fusionan.
> Esta API es 🧪 experimental.
Desactiva la proyección QKV fusionada si está habilitada.
> Esta API es 🧪 experimental.