mmdit_transformer
mmdit_transformer
¶
MMDiT (Multimodal Diffusion Transformer) implementation.
References
Esser et al. "Scaling Rectified Flow Transformers for High-Resolution Image Synthesis" https://arxiv.org/abs/2403.03206
MMDiTTransformer
¶
MMDiTTransformer(number_of_layers, embedding_dimension, number_of_heads, feedforward_dimension=None, dropout=0.1, attention_dropout=0.0, activation=value, normalization_type=value, positional_encoding_type=None, maximum_sequence_length=2048, maximum_decoder_length=256, timestep_embedding_dimension=256, use_query_key_norm=True, use_gating=True, bias=True, normalization_epsilon=1e-06, initializer_range=0.02)
Bases: Module
MMDiT transformer for diffusion-based action generation.
Components: - Timestep embedding network - MMDiT decoder with joint attention between observations and action tokens - Final prediction layer for action output
Shape notation
B: batch size S: observation sequence length T: action sequence length D: embedding dimension
Initialize MMDiT Transformer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
number_of_layers
|
int
|
Number of MMDiT layers. |
required |
embedding_dimension
|
int
|
Hidden dimension of the transformer. |
required |
number_of_heads
|
int
|
Number of attention heads. |
required |
feedforward_dimension
|
int | None
|
FFN 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
|
positional_encoding_type
|
str | None
|
Type of positional encoding. |
None
|
maximum_sequence_length
|
int
|
Maximum observation sequence length. |
2048
|
maximum_decoder_length
|
int
|
Maximum action sequence length. |
256
|
timestep_embedding_dimension
|
int
|
Dimension for timestep sinusoidal embedding. |
256
|
use_query_key_norm
|
bool
|
Whether to use QK-normalization in MMDiT layers. |
True
|
use_gating
|
bool
|
Whether to use gating in AdaNorm (AdaLN-Zero). |
True
|
bias
|
bool
|
Whether to use bias in linear layers. |
True
|
normalization_epsilon
|
float
|
Epsilon for normalization layers. |
1e-06
|
initializer_range
|
float
|
Standard deviation for weight initialization. |
0.02
|
Source code in src/versatil/models/layers/diffusion_transformer/mmdit_transformer.py
forward
¶
forward(decoder_hidden_states, timesteps, encoder_hidden_states, encoder_padding_mask=None, decoder_padding_mask=None)
Forward pass through the MMDiT 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
|
Observation tokens (B, S, D). |
required |
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
|
Action hidden states and conditioning, with shapes |
Tensor
|
and |
Source code in src/versatil/models/layers/diffusion_transformer/mmdit_transformer.py
forward_features
¶
forward_features(decoder_hidden_states, timesteps, encoder_hidden_states, encoder_padding_mask=None, decoder_padding_mask=None)
Alias for forward kept for decoder readability.