Model reference · open weights

MiniMax-VL-01

LLMs MiniMaxAI Vision + text 1 build Licence not stated 18k dl/mo

MiniMax-VL-01 is an open-weight language model from MiniMax. MiniMax-VL-01 (BF16) weighs 915 GB; the smallest configuration that runs it is 8× H200 141 GB.

  • MiniMax-VL-01 is a 456.4B parameter multimodal large language model developed by MiniMax for image-text-to-text tasks.
  • It utilizes a ViT-MLP-LLM framework with a dynamic resolution feature that processes input images in resolutions ranging from 336 to 2016.
  • The model supports function calling and is trained on 512 billion tokens across four distinct stages.

Summary of the MiniMaxAI/MiniMax-VL-01 model card, 2026-10-01

What it is

Released byMiniMax
Released2025-01-12
Parameters456.4B
VRAM915 GB for the weights

What it runs on

Memory and cards for MiniMax-VL-01 (BF16)

915 GBweights, file size
2.1 GBruntime overhead, at least
8,192 tokenscontext max

How much memory each request adds isn't estimated yet for this architecture. The weights need at least the cards below, plus room for the context.

CardWeights alone
RTX 3060 12 GB … 8× A100 80 GB
14 smaller cards
does not fit
8× H200 141 GB
tensor parallel
tight
8× B200 180 GB
tensor parallel
fits

From the model card

What MiniMax says about MiniMax-VL-01

Read the model card

WeChat

MiniMax-VL-01

1. Introduction

We are delighted to introduce our MiniMax-VL-01 model. It adopts the "ViT-MLP-LLM" framework, which is a commonly used technique in the field of multimodal large language models. The model is initialized and trained with three key parts: a 303-million-parameter Vision Transformer (ViT) for visual encoding, a randomly initialized two-layer MLP projector for image adaptation, and the MiniMax-Text-01 as the base LLM. MiniMax-VL-01 has a notable dynamic resolution feature. Input images are resized per a pre-set grid, with resolutions from 336×336 to 2016×2016, keeping a 336×336 thumbnail. The resized images are split into non-overlapping patches of the same size. These patches and the thumbnail are encoded separately and then combined for a full image representation. The training data for MiniMax-VL-01 consists of caption, description, and instruction data. The Vision Transformer (ViT) is trained on 694 million image-caption pairs from scratch. Across four distinct stages of the training pipeline, a total of 512 billion tokens are processed, leveraging this vast amount of data to endow the model with strong capabilities. Finally, MiniMax-VL-01 has reached top-level performance on multimodal leaderboards, demonstrating its edge and dependability in complex multimodal tasks.

2. Evaluation

TasksGPT-4o(11-20)Claude-3.5-Sonnet (10-22)Gemini-1.5-Pro (002)Gemini-2.0-Flash (exp)Qwen2-VL-72B-Inst.InternVL2.5-78BLLama-3.2-90BMiniMax-VL-01
Knowledge
MMMU*63.572.068.470.664.566.562.168.5
MMMU-Pro*54.554.750.957.043.247.336.052.7
Visual Q&A
ChartQA*relaxed88.190.888.788.391.291.585.591.7
DocVQA*91.194.291.592.997.196.190.196.4
OCRBench806790800846856847805865
Mathematics & Sciences
AI2D*83.182.080.985.184.486.878.983.3
MathVista*62.165.470.673.169.668.457.368.6
OlympiadBenchfull25.228.432.146.121.925.119.324.2
Long Context
M-LongDocacc41.431.426.231.411.619.713.932.5
Comprehensive
MEGA-Benchmacro49.451.445.953.946.845.319.947.4
User Experience
In-house Benchmark62.347.049.272.140.634.813.656.6

3. Quickstart

Here we provide a simple example of loading the tokenizer and model to generate content.

from transformers import AutoModelForCausalLM, AutoProcessor, AutoConfig, QuantoConfig, GenerationConfig
import torch
import json
import os
from PIL import Image

# load hf config
hf_config = AutoConfig.from_pretrained("MiniMaxAI/MiniMax-VL-01", trust_remote_code=True)

# quantization config, int8 is recommended
quantization_config =  QuantoConfig(
            weights="int8",
            modules_to_not_convert=[
                "vision_tower",
                "image_newline",
                "multi_modal_projector",
                "lm_head",
                "embed_tokens",
            ] + [f"model.layers.{i}.coefficient" for i in range(hf_config.text_config.num_hidden_layers)]
            + [f"model.layers.{i}.block_sparse_moe.gate" for i in range(hf_config.text_config.num_hidden_layers)]
        )

# set device map
model_safetensors_index_path = os.path.join("MiniMax-VL-01", "model.safetensors.index.json")
with open(model_safetensors_index_path, "r") as f:
    model_safetensors_index = json.load(f)
weight_map = model_safetensors_index['weight_map']
vision_map = {}
for key, value in weight_map.items():
    if 'vision_tower' in key or 'image_newline' in key or 'multi_modal_projector' in key:
        new_key = key.replace('.weight','').replace('.bias','')
        if new_key not in vision_map:
            vision_map[new_key] = value
# assume 8 GPUs
world_size = 8
device_map = {
    'language_model.model.embed_tokens': 'cuda:0',
    'language_model.model.norm': f'cuda:{world_size - 1}',
    'language_model.lm_head': f'cuda:{world_size - 1}'
}
for key, value in vision_map.items():
    device_map[key] = f'cuda:0'
device_map['vision_tower.vision_model.post_layernorm'] = f'cuda:0'
layers_per_device = hf_config.text_config.num_hidden_layers // world_size
for i in range(world_size):
    for j in range(layers_per_device):
        device_map[f'language_model.model.layers.{i * layers_per_device + j}'] = f'cuda:{i}'

# load processor
processor = AutoProcessor.from_pretrained("MiniMaxAI/MiniMax-VL-01", trust_remote_code=True)
messages = [
    {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant created by MiniMax based on MiniMax-VL-01 model."}]},
    {"role": "user", "content": [{"type": "image", "image": "placeholder"},{"type": "text", "text": "Describe this image."}]},
]
prompt = processor.tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
raw_image = Image.open("figures/image.jpg")
# tokenize and move to device
model_inputs = processor(images=[raw_image], text=prompt, return_tensors='pt').to('cuda').to(torch.bfloat16)

# load bfloat16 model, move to device, and apply quantization
quantized_model = AutoModelForCausalLM.from_pretrained(
    "MiniMaxAI/MiniMax-VL-01",
    torch_dtype="bfloat16",
    device_map=device_map,
    quantization_config=quantization_config,
    trust_remote_code=True,
    offload_buffers=True,
)
generation_config = GenerationConfig(
    max_new_tokens=100,
    eos_token_id=200020,
    use_cache=True,
)

# generate response
generated_ids = quantized_model.generate(**model_inputs, generation_config=generation_config)
print(f"generated_ids: {generated_ids}")
generated_ids = [
    output_ids[len(input_ids):]

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms