bridge.models.minimax_m3.modeling_minimax_m3_vl#

MiniMax-M3 vision-language model components.

The released MiniMax-M3 checkpoint predates the native Transformers model implementation. Keeping the small vision stack local lets the Bridge support the full published checkpoint across the supported Transformers range while preserving its legacy parameter namespace exactly.

Module Contents#

Classes#

MiniMaxM3VisionPatchEmbeddings

Conv3d patch embedding used by the MiniMax-M3 vision tower.

MiniMaxM3Vision3DRotaryEmbedding

Build MiniMax-M3’s temporal/height/width rotary embeddings.

MiniMaxM3VisionAttention

CLIP-style self-attention with MiniMax-M3 3D RoPE.

MiniMaxM3VisionMLP

GELU feed-forward block for the vision tower.

MiniMaxM3VisionEncoderLayer

Pre-norm MiniMax-M3 vision transformer layer.

MiniMaxM3VisionEncoder

Container preserving the checkpoint’s encoder.layers namespace.

MiniMaxM3VisionModel

MiniMax-M3 Conv3d + 3D-RoPE vision encoder.

MiniMaxM3VisionTower

Wrapper preserving the checkpoint’s vision_tower.vision_model path.

MiniMaxM3ProjectorMLP

Biased GELU MLP with the released projector parameter names.

_MiniMaxM3CheckpointWeight

Frozen checkpoint tensor with a conventional weight leaf.

MiniMaxM3LightningIndexerState

Checkpoint-only state for one Lightning Indexer layer.

MiniMaxM3VLModel

MiniMax-M3 vision tower, projectors, and Megatron language model.

Functions#

_config_value

Read a field from either a config object or a plain dictionary.

_rotate_half

_apply_vision_rope

Data#

API#

bridge.models.minimax_m3.modeling_minimax_m3_vl._config_value(
config: Any,
name: str,
default: Any = None,
) Any#

Read a field from either a config object or a plain dictionary.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionPatchEmbeddings(config: Any)#

Bases: torch.nn.Module

Conv3d patch embedding used by the MiniMax-M3 vision tower.

Initialization

forward(pixel_values: torch.Tensor) torch.Tensor#

Embed flattened image/video patches.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3Vision3DRotaryEmbedding(
head_dim: int,
*,
theta: float,
spatial_merge_size: int,
)#

Bases: torch.nn.Module

Build MiniMax-M3’s temporal/height/width rotary embeddings.

Initialization

forward(
grid_thw: torch.Tensor,
*,
device: torch.device,
dtype: torch.dtype,
) tuple[torch.Tensor, torch.Tensor]#

Return cosine and sine tables in spatial-merge patch order.

bridge.models.minimax_m3.modeling_minimax_m3_vl._rotate_half(hidden_states: torch.Tensor) torch.Tensor#
bridge.models.minimax_m3.modeling_minimax_m3_vl._apply_vision_rope(
query: torch.Tensor,
key: torch.Tensor,
cosine: torch.Tensor,
sine: torch.Tensor,
) tuple[torch.Tensor, torch.Tensor]#
class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionAttention(config: Any)#

Bases: torch.nn.Module

CLIP-style self-attention with MiniMax-M3 3D RoPE.

Initialization

forward(
hidden_states: torch.Tensor,
position_embeddings: tuple[torch.Tensor, torch.Tensor],
) torch.Tensor#

Apply non-causal vision self-attention.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionMLP(config: Any)#

Bases: torch.nn.Module

GELU feed-forward block for the vision tower.

Initialization

forward(hidden_states: torch.Tensor) torch.Tensor#

Apply the vision MLP.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionEncoderLayer(config: Any)#

Bases: torch.nn.Module

Pre-norm MiniMax-M3 vision transformer layer.

Initialization

forward(
hidden_states: torch.Tensor,
position_embeddings: tuple[torch.Tensor, torch.Tensor],
) torch.Tensor#

Apply attention and MLP residual blocks.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionEncoder(config: Any)#

Bases: torch.nn.Module

Container preserving the checkpoint’s encoder.layers namespace.

Initialization

forward(
hidden_states: torch.Tensor,
position_embeddings: tuple[torch.Tensor, torch.Tensor],
) torch.Tensor#

Run all vision transformer layers.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionModel(config: Any, *, spatial_merge_size: int)#

Bases: torch.nn.Module

MiniMax-M3 Conv3d + 3D-RoPE vision encoder.

Initialization

forward(
pixel_values: torch.Tensor,
image_grid_thw: torch.Tensor,
) torch.Tensor#

Return unprojected patch features with shape [1, patches, hidden].

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VisionTower(config: Any, *, spatial_merge_size: int)#

Bases: torch.nn.Module

Wrapper preserving the checkpoint’s vision_tower.vision_model path.

Initialization

forward(
pixel_values: torch.Tensor,
image_grid_thw: torch.Tensor,
) torch.Tensor#

Encode image or video patches.

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3ProjectorMLP(
input_size: int,
hidden_size: int,
output_size: int,
*,
bias: bool,
)#

Bases: torch.nn.Module

Biased GELU MLP with the released projector parameter names.

Initialization

forward(hidden_states: torch.Tensor) torch.Tensor#

Project vision features.

class bridge.models.minimax_m3.modeling_minimax_m3_vl._MiniMaxM3CheckpointWeight(
shape: tuple[int, ...],
*,
dtype: torch.dtype,
)#

Bases: torch.nn.Module

Frozen checkpoint tensor with a conventional weight leaf.

Initialization

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3LightningIndexerState(config: Any)#

Bases: torch.nn.Module

Checkpoint-only state for one Lightning Indexer layer.

Megatron currently executes full causal attention instead of MiniMax-M3’s block-sparse selection path. Keeping these tensors as frozen parameters makes checkpoint conversion lossless without adding trainable parameters or coupling the shared conversion path to the source checkpoint.

Initialization

class bridge.models.minimax_m3.modeling_minimax_m3_vl.MiniMaxM3VLModel(
config: Any,
pre_process: bool = True,
post_process: bool = True,
vp_stage: int | None = None,
)#

Bases: megatron.core.transformer.module.MegatronModule

MiniMax-M3 vision tower, projectors, and Megatron language model.

Initialization

property decoder: torch.nn.Module | None#

Expose the text decoder for Megatron-Core inference inspection.

set_input_tensor(
input_tensor: torch.Tensor | list[torch.Tensor],
) None#

Set the pipeline input tensor on the language model.

_project_vision(
pixel_values: torch.Tensor,
grid_thw: torch.Tensor,
) torch.Tensor#
get_image_features(
pixel_values: torch.Tensor,
image_grid_thw: torch.Tensor,
) torch.Tensor#

Encode and project image patches into language-model tokens.

get_video_features(
pixel_values_videos: torch.Tensor,
video_grid_thw: torch.Tensor,
) torch.Tensor#

Encode and project video patches into language-model tokens.

static _scatter_features(
inputs_embeds: torch.Tensor,
input_ids: torch.Tensor | None,
*,
token_id: int,
features: torch.Tensor | None,
modality: str,
) torch.Tensor#
forward(
input_ids: torch.LongTensor | None = None,
attention_mask: torch.Tensor | None = None,
position_ids: torch.LongTensor | None = None,
inputs_embeds: torch.Tensor | None = None,
pixel_values: torch.Tensor | None = None,
pixel_values_videos: torch.Tensor | None = None,
image_grid_thw: torch.Tensor | None = None,
video_grid_thw: torch.Tensor | None = None,
mm_token_type_ids: torch.Tensor | None = None,
labels: torch.Tensor | None = None,
inference_context: megatron.core.inference.contexts.BaseInferenceContext | None = None,
runtime_gather_output: bool | None = None,
packed_seq_params: megatron.core.packed_seq_params.PackedSeqParams | None = None,
extra_block_kwargs: dict[str, Any] | None = None,
*,
inference_params: megatron.core.inference.contexts.BaseInferenceContext | None = None,
loss_mask: torch.Tensor | None = None,
) torch.Tensor | tuple[torch.Tensor, torch.Tensor]#

Run the multimodal forward path and return a CP-local mask when supplied.

freeze(
*,
freeze_language_model: bool,
freeze_vision_model: bool,
freeze_vision_projection: bool,
) None#

Freeze selected VLM components.

bridge.models.minimax_m3.modeling_minimax_m3_vl.__all__#

[‘MiniMaxM3LightningIndexerState’, ‘MiniMaxM3VLModel’, ‘MiniMaxM3VisionModel’]