Building upon Mistral Small 3 (2501), Mistral Small 3.1 (2503) adds state-of-the-art vision understanding and enhances long context capabilities up to 128k tokens without compromising text performance.
With 24 billion parameters, this model achieves top-tier capabilities in both text and vision tasks.
This model is the base model of Mistral-Small-3.1-24B-Instruct-2503.
For enterprises requiring specialized capabilities (increased context, specific modalities, domain-specific knowledge, etc.), we will release commercial models beyond what Mistral AI contributes to the community.
Learn more about Mistral Small 3.1 in our blog post.
Key Features
Vision: Vision capabilities enable the model to analyze images and provide insights based on visual content in addition to text.
Apache 2.0 License: Open license allowing usage and modification for both commercial and non-commercial purposes.
Context Window: A 128k context window.
Tokenizer: Utilizes a Tekken tokenizer with a 131k vocabulary size.
Benchmark Results
When available, we report numbers previously published by other model providers, otherwise we re-evaluate them using our own evaluation harness.
Pretrain Evals
Model
MMLU (5-shot)
MMLU Pro (5-shot CoT)
TriviaQA
GPQA Main (5-shot CoT)
MMMU
Small 3.1 24B Base
81.01%
56.03%
80.50%
37.50%
59.27%
Gemma 3 27B PT
78.60%
52.20%
81.30%
24.30%
56.10%
Usage Examples
vLLM (recommended)
We recommend using Mistral-Small 3.1 Base with the vLLM library.
Note however that this is a pretrained-only checkpoint and thus not ready to work as an instruction model out-of-the-box.
For a production-ready instruction model please use Mistral-Small-3.1-24B-Instruct-2503.
You can also make use of a ready-to-go docker image or on the docker hub followed by a nightly install of vllm as shown above.
Example
py
1from vllm import LLM
2from vllm.sampling_params import SamplingParams
3from vllm.inputs.data import TokensPrompt
4import requests
5from PIL import Image
6from io import BytesIO
7from vllm.multimodal import MultiModalDataBuiltins
89from mistral_common.protocol.instruct.messages import TextChunk, ImageURLChunk
1011model_name ="mistralai/Mistral-Small-3.1-24B-Base-2503"12sampling_params = SamplingParams(max_tokens=8192)1314llm = LLM(model=model_name, tokenizer_mode="mistral")1516url ="https://huggingface.co/datasets/patrickvonplaten/random_img/resolve/main/yosemite.png"17response = requests.get(url)18image = Image.open(BytesIO(response.content))1920prompt ="The image shows a"2122user_content =[ImageURLChunk(image_url=url), TextChunk(text=prompt)]2324tokenizer = llm.llm_engine.tokenizer.tokenizer.mistral.instruct_tokenizer
25tokens, _ = tokenizer.encode_user_content(user_content,False)2627prompt = TokensPrompt(28 prompt_token_ids=tokens, multi_modal_data=MultiModalDataBuiltins(image=[image])29)30outputs = llm.generate(prompt, sampling_params=sampling_params)3132print(outputs[0].outputs[0].text)33# ' scene in Yosemite Valley and was taken at ISO 250 with an aperture of f/16 and a shutter speed of 1/18 second. ...'
Transformers (untested)
Transformers-compatible model weights are also uploaded (thanks a lot @cyrilvallez).
However the transformers implementation was not throughly tested, but only on "vibe-checks".
Hence, we can only ensure 100% correct behavior when using the original weight format with vllm (see above).