Model reference · open weights
Mistral-Small-3.1-2503-dynamic is an open-weight language model from Mistral AI. Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic (FP8) weighs 25.8 GB; the smallest configuration that runs it is RTX 5090 32 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic model card, 2026-10-01
What it is
| Released by | Mistral AI |
|---|---|
| Released | 2025-03-27 |
| Parameters | 24.0B |
| VRAM | 25.8 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … RTX 4090 24 GB 4 smaller cards | ||||
| RTX 5090 32 GB | 2 | 17K | 31.0 GB | |
| L40S 48 GB | 11 | 2 | 95K | 44.0 GB |
| A100 80 GB FP8 without its speed-up here | 37 | 9 | all 128K | 78.2 GB |
| H100 80 GB | 33 | 8 | all 128K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 45 | 11 | all 128K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 55 | 13 | all 128K | 107 GB |
| H200 141 GB | 78 | 19 | all 128K | 138 GB |
| B200 180 GB | 105 | 26 | all 128K | 176 GB |
| 2× RTX 4090 24 GB tensor parallel | 12 | 3 | 98K | 23.4 GB a card |
| 2× RTX 3090 24 GB tensor parallel · FP8 without its speed-up here | 12 | 3 | 98K | 23.4 GB a card |
| 2× RTX 5090 32 GB tensor parallel | 23 | 5 | all 128K | 31.0 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 29.3 GB | 33.4 GB |
| 5 | 34.7 GB | 54.8 GB |
| 8 | 38.7 GB | 71.0 GB |
| 16 | 49.5 GB | 114 GB |
| 32 | 71.0 GB | 200 GB |
| 64 | 114 GB | 372 GB |
One card, with vLLM's small-card settings.
From the model card
Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic
This model was obtained by quantizing activations and weights of Mistral-Small-3.1-24B-Instruct-2503 to FP8 data type. This optimization reduces the number of bits used to represent weights and activations from 16 to 8, reducing GPU memory requirements (by approximately 50%) and increasing matrix-multiply compute throughput (by approximately 2x). Weight quantization also reduces disk size requirements by approximately 50%.
Only weights and activations of the linear operators within transformers blocks are quantized. Weights are quantized with a symmetric static per-channel scheme, whereas activations are quantized with a symmetric dynamic per-token scheme. The llm-compressor library is used for quantization.
vllm serve RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-quantized.w4a16 --tensor_parallel_size 1 --tokenizer_mode mistral
from openai import OpenAI
# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
model = "RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-quantized.w4a16"
messages = [
{"role": "user", "content": "Explain quantum mechanics clearly and concisely."},
]
outputs = client.chat.completions.create(
model=model,
messages=messages,
)
generated_text = outputs.choices[0].message.content
print(generated_text)
podman run --rm -it --device nvidia.com/gpu=all -p 8000:8000 \
--ipc=host \
--env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \
--env "HF_HUB_OFFLINE=0" -v ~/.cache/vllm:/home/vllm/.cache \
--name=vllm \
registry.access.redhat.com/rhaiis/rh-vllm-cuda \
vllm serve \
--tensor-parallel-size 1 \
--max-model-len 32768 \
--enforce-eager --model RedHatAI/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic
See Red Hat AI Inference Server documentation for more details.
# Download model from Red Hat Registry via docker
# Note: This downloads the model to ~/.cache/instructlab/models unless --model-dir is specified.
ilab model download --repository docker://registry.redhat.io/rhelai1/mistral-small-3-1-24b-instruct-2503-fp8-dynamic:1.5
# Serve model via ilab
ilab model serve --model-path ~/.cache/instructlab/models/mistral-small-3-1-24b-instruct-2503-fp8-dynamic
# Chat with model
ilab model chat --model ~/.cache/instructlab/models/mistral-small-3-1-24b-instruct-2503-fp8-dynamic
See Red Hat Enterprise Linux AI documentation for more details.
# Setting up vllm server with ServingRuntime
# Save as: vllm-servingruntime.yaml
apiVersion: serving.kserve.io/v1alpha1
kind: ServingRuntime
metadata:
name: vllm-cuda-runtime # OPTIONAL CHANGE: set a unique name
annotations:
openshift.io/display-name: vLLM NVIDIA GPU ServingRuntime for KServe
opendatahub.io/recommended-accelerators: '["nvidia.com/gpu"]'
labels:
opendatahub.io/dashboard: 'true'
spec:
annotations:
prometheus.io/port: '8080'
prometheus.io/path: '/metrics'
multiModel: false
supportedModelFormats:
- autoSelect: true
name: vLLM
containers:
- name: kserve-container
image: quay.io/modh/vllm:rhoai-2.20-cuda # CHANGE if needed. If AMD: quay.io/modh/vllm:rhoai-2.20-rocm
command:
- python
- -m
- vllm.entrypoints.openai.api_server
args:
- "--port=8080"
- "--model=/mnt/models"
- "--served-model-name={{.Name}}"
env:
- name: HF_HOME
value: /tmp/hf_home
ports:
- containerPort: 8080
protocol: TCP
# Attach model to vllm server. This is an NVIDIA template
# Save as: inferenceservice.yaml
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
annotations:
openshift.io/display-name: mistral-small-3-1-24b-instruct-2503-fp8-dynamic # OPTIONAL CHANGE
serving.kserve.io/deploymentMode: RawDeployment
name: mistral-small-3-1-24b-instruct-2503-fp8-dynamic # specify model name. This value will be used to invoke the model in the payload
labels:
opendatahub.io/dashboard: 'true'
spec:
predictor:
maxReplicas: 1
minReplicas: 1
model:
modelFormat:
name: vLLM
name: ''
resources:
limits:
cpu: '2' # this is model specific
memory: 8Gi # this is model specific
nvidia.com/gpu: '1' # this is accelerator specific
requests: # same comment for this block
cpu: '1'
memory: 4Gi
nvidia.com/gpu: '1'
runtime: vllm-cuda-runtime # must match the ServingRuntime name above
storageUri: oci://registry.redhat.io/rhelai1/modelcar-mistral-small-3-1-24b-instruct-2503-fp8-Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.