cross_attention_dit
cross_attention_dit
¶
Cross-Attention 1D Diffusion Transformer (PixArt style).
DiT that conditions via cross-attention to observation tokens.
Shape notation
B: batch size S: observation sequence length (from external embeddings) T: action sequence length D: embedding dimension
References
https://github.com/PixArt-alpha/PixArt-alpha/blob/master/diffusion/model/nets/PixArt.py#L25 https://arxiv.org/pdf/2310.00426 https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/pixart_transformer_2d.py
CrossAttentionDiT
¶
CrossAttentionDiT(number_of_layers, embedding_dimension, number_of_heads, number_of_key_value_heads=None, feedforward_dimension=None, dropout=0.1, attention_dropout=0.0, activation=value, normalization_type=value, attention_type=value, positional_encoding_type=None, maximum_sequence_length=2048, timestep_embedding_dimension=256, bias=True, normalization_epsilon=1e-06, use_gating=True, initializer_range=0.02)
Bases: Module
DiT that conditions via cross-attention (PixArt style).
Initialize CrossAttentionDiT.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
number_of_layers
|
int
|
Number of decoder layers. |
required |
embedding_dimension
|
int
|
Hidden dimension of the transformer. |
required |
number_of_heads
|
int
|
Number of attention heads. |
required |
number_of_key_value_heads
|
int | None
|
Number of K/V heads (for GQA). |
None
|
feedforward_dimension
|
int | None
|
Feedforward network hidden dimension. |
None
|
dropout
|
float
|
Dropout rate. |
0.1
|
attention_dropout
|
float
|
Dropout rate for attention. |
0.0
|
activation
|
str
|
Activation function. |
value
|
normalization_type
|
str
|
Type of normalization. |
value
|
attention_type
|
str
|
Type of attention. |
value
|
positional_encoding_type
|
str | None
|
Type of positional encoding for decoder. |
None
|
maximum_sequence_length
|
int
|
Maximum decoder sequence length. |
2048
|
timestep_embedding_dimension
|
int
|
Dimension for timestep sinusoidal embedding. |
256
|
bias
|
bool
|
Whether to use bias in linear layers. |
True
|
normalization_epsilon
|
float
|
Epsilon for normalization layers. |
1e-06
|
use_gating
|
bool
|
Whether to use gating in decoder AdaNorm (AdaLN-Zero style). |
True
|
initializer_range
|
float
|
Standard deviation for weight initialization. |
0.02
|
Source code in src/versatil/models/layers/diffusion_transformer/cross_attention_dit.py
precompute_conditioning_kv
¶
Precompute decoder conditioning K/V for forward pass reuse.
Source code in src/versatil/models/layers/diffusion_transformer/cross_attention_dit.py
forward
¶
forward(decoder_hidden_states, timesteps, encoder_hidden_states=None, conditioning_cache=None, encoder_padding_mask=None, decoder_padding_mask=None)
Forward pass through the transformer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
decoder_hidden_states
|
Tensor
|
Noisy action tokens (B, T, D). |
required |
timesteps
|
Tensor
|
Diffusion timesteps (B,). |
required |
encoder_hidden_states
|
Tensor | None
|
External observation embeddings (B, S, D). |
None
|
conditioning_cache
|
ConditioningCache | None
|
Precomputed K/V for reuse across denoising steps. When provided, encoder_hidden_states is not needed. |
None
|
encoder_padding_mask
|
Tensor | None
|
Padding mask for observations (B, S). |
None
|
decoder_padding_mask
|
Tensor | None
|
Padding mask for actions (B, T). |
None
|
Returns:
| Type | Description |
|---|---|
Tensor
|
Decoder hidden states and conditioning with shapes |
Tensor
|
and |
Source code in src/versatil/models/layers/diffusion_transformer/cross_attention_dit.py
forward_features
¶
forward_features(decoder_hidden_states, timesteps, encoder_hidden_states=None, conditioning_cache=None, encoder_padding_mask=None, decoder_padding_mask=None)
Alias for forward kept for decoder readability.