mistralai
Devstral-Small-2-24B-Instruct-2512
24B parameters · Instruct · Devstral family
Recommended download
Which version should I download?
Default pick: GGUF · Q4_K_M — Balanced size/quality — good default.
Set your rig to confirm it fits and to see if a higher-quality quant runs fully on your hardware.
| Format | Level | Size | Verdict | Est. speed | Quality note | Swarm | Download |
|---|---|---|---|---|---|---|---|
| GGUF | IQ4_XS | 11.90 GB | Set your rig | — | Unsloth IQ4_XS quant of Devstral-Small-2-24B-Instruct-2512 (24.011B dense) — compact low-bit option. Apache-2.0. | 2S / 0L webseed OK | |
| GGUF | Q4_K_M | 13.35 GB | Set your rig | — | Balanced size/quality — good default. | 2S / 0L webseed OK | |
| GGUF | Q8_0 | 23.33 GB | Set your rig | — | Unsloth Q8_0 quant of Devstral-Small-2-24B-Instruct-2512 (24.011B dense) — high-quality option. Apache-2.0. | 2S / 0L webseed OK |
GGUF · IQ4_XS
11.90 GB
- Est. speed
- —
- Swarm
- 2S / 0L webseed OK
Unsloth IQ4_XS quant of Devstral-Small-2-24B-Instruct-2512 (24.011B dense) — compact low-bit option. Apache-2.0.
GGUF · Q4_K_M
13.35 GB
- Est. speed
- —
- Swarm
- 2S / 0L webseed OK
Balanced size/quality — good default.
GGUF · Q8_0
23.33 GB
- Est. speed
- —
- Swarm
- 2S / 0L webseed OK
Unsloth Q8_0 quant of Devstral-Small-2-24B-Instruct-2512 (24.011B dense) — high-quality option. Apache-2.0.
Want a different quant? Request it on the board →
Runs fully on
Green = the model's best quant fits fully in GPU/unified memory at 8K context. Tap a card for its full "what runs on it" page.
Context
Advertised 384k · usable ≈ 256k (reported — model card)
How we know
Evidence grade: reported — a maintainer claim with no independent evaluation.
- Devstral-Small-2 model card — observed Jul 18, 2026
- Mistral release blog: Devstral 2 — observed Jul 18, 2026
Card + release blog state a 256K window — BELOW the catalog advertised 393,216 (config value); discrepancy flagged for review. No long-context evals published.
Reviewed on Jul 18, 2026.
Run it
Runtime completeness (IQ4_XS torrent): llama.cpp ✅ Ollama – vision sidecar –
- – Ollama — runs the GGUF directly; no Modelfile bundled
- – vision sidecar — not a vision model
Context / KV 8,192 tokens · FP16 set above the quant table
Generic commands (no rig set). GPU-offload values assume the model fits on your GPU — set your rig for values tuned to your hardware.
llama-server -m Devstral-Small-2-24B-Instruct-2512-IQ4_XS.gguf -c 8192 -ngl 999
Use llama-cli in place of llama-server for a one-shot prompt.
FROM ./Devstral-Small-2-24B-Instruct-2512-IQ4_XS.gguf
PARAMETER num_ctx 8192
PARAMETER num_gpu 999
PARAMETER stop "</s>"
PARAMETER temperature 0.15
# Chat template: Ollama uses the template embedded in the GGUF (no TEMPLATE directive needed).
ollama create mistralai-devstral-small-2-24b-instruct-2512 -f Modelfile
ollama run mistralai-devstral-small-2-24b-instruct-2512
GGUF is not a first-class vLLM format.
vLLM GGUF support is experimental and single-file only; prefer safetensors/GPTQ/AWQ for production. If you must, pass the .gguf path to `vllm serve` with --load-format gguf on a recent vLLM.
transformers does not load GGUF weights.
GGUF weights run under llama.cpp, Ollama or LM Studio.
Load Devstral-Small-2-24B-Instruct-2512-IQ4_XS.gguf, set the context length to 8192 tokens. Set GPU offload to Max (all layers).
MLX runs MLX-format weights only (Apple Silicon). This quant is a GGUF build.
GGUF weights run under llama.cpp, Ollama or LM Studio.
Technical details
Chat template
{#- Default system message if no system prompt is passed. #}
{%- set default_system_message = '' %}
{#- Begin of sequence token. #}
{{- bos_token }}
{#- Handle system prompt if it exists. #}
{#- System prompt supports text content or text chunks. #}
{%- if messages[0]['role'] == 'system' %}
{{- '[SYSTEM_PROMPT]' -}}
{%- if messages[0]['content'] is string %}
{{- messages[0]['content'] -}}
{%- else %}
{%- for block in messages[0]['content'] %}
{%- if block['type'] == 'text' %}
{{- block['text'] }}
{%- else %}
{{- raise_exception('Only text chunks are supported in system message contents.') }}
{%- endif %}
{%- endfor %}
{%- endif %}
{{- '[/SYSTEM_PROMPT]' -}}
{%- set loop_messages = messages[1:] %}
{%- else %}
{%- set loop_messages = messages %}
{%- if default_system_message != '' %}
{{- '[SYSTEM_PROMPT]' + default_system_message + '[/SYSTEM_PROMPT]' }}
{%- endif %}
{%- endif %}
{#- Tools definition #}
{%- set tools_definition = '' %}
{%- set has_tools = false %}
{%- if tools is defined and tools is not none and tools|length > 0 %}
{%- set has_tools = true %}
{%- set tools_definition = '[AVAILABLE_TOOLS]' + (tools| tojson) + '[/AVAILABLE_TOOLS]' %}
{{- tools_definition }}
{%- endif %}
{#- Checks for alternating user/assistant messages. #}
{%- set ns = namespace(index=0) %}
{%- for message in loop_messages %}
{%- if message.role == 'user' or (message.role == 'assistant' and (message.tool_calls is not defined or message.tool_calls is none or message.tool_calls | length == 0)) %}
{%- if (message['role'] == 'user') != (ns.index % 2 == 0) %}
{{- raise_exception('After the optional system message, conversation roles must alternate user and assistant roles except for tool calls and results.') }}
{%- endif %}
{%- set ns.index = ns.index + 1 %}
{%- endif %}
{%- endfor %}
{#- Handle conversation messages. #}
{%- for message in loop_messages %}
{#- User messages supports text content or text and image chunks. #}
{%- if message['role'] == 'user' %}
{%- if message['content'] is string %}
{{- '[INST]' + message['content'] + '[/INST]' }}
{%- elif message['content'] | length > 0 %}
{{- '[INST]' }}
{%- if message['content'] | length == 2 %}
{%- set blocks = message['content'] | sort(attribute='type') %}
{%- else %}
{%- set blocks = message['content'] %}
{%- endif %}
{%- for block in blocks %}
{%- if block['type'] == 'text' %}
{{- block['text'] }}
{%- elif block['type'] in ['image', 'image_url'] %}
{{- '[IMG]' }}
{%- else %}
{{- raise_exception('Only text, image and image_url chunks are supported in user message content.') }}
{%- endif %}
{%- endfor %}
{{- '[/INST]' }}
{%- else %}
{{- raise_exception('User message must have a string or a list of chunks in content') }}
{%- endif %}
{#- Assistant messages supports text content or text and image chunks. #}
{%- elif message['role'] == 'assistant' %}
{%- if (message['content'] is none or message['content'] == '' or message['content']|length == 0) and (message['tool_calls'] is not defined or message['tool_calls'] is none or message['tool_calls']|length == 0) %}
{{- raise_exception('Assistant message must have a string or a list of chunks in content or a list of tool calls.') }}
{%- endif %}
{%- if message['content'] is string %}
{{- message['content'] }}
{%- elif message['content'] | length > 0 %}
{%- for block in message['content'] %}
{%- if block['type'] == 'text' %}
{{- block['text'] }}
{%- else %}
{{- raise_exception('Only text chunks are supported in assistant message contents.') }}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- if message['tool_calls'] is defined and message['tool_calls'] is not none and message['tool_calls']|length > 0 %}
{%- for tool in message['tool_calls'] %}
{%- set arguments = tool['function']['arguments'] %}
{%- if arguments is not string %}
{%- set arguments = arguments|tojson|safe %}
{%- elif arguments == '' %}
{%- set arguments = '{}' %}
{%- endif %}
{{- '[TOOL_CALLS]' + tool['function']['name'] + '[ARGS]' + arguments }}
{%- endfor %}
{%- endif %}
{#- End of sequence token for each assistant messages. #}
{{- eos_token }}
{#- Tool messages only supports text content. #}
{%- elif message['role'] == 'tool' %}
{{- '[TOOL_RESULTS]' + message['content']|string + '[/TOOL_RESULTS]' }}
{#- Raise exception for unsupported roles. #}
{%- else %}
{{- raise_exception('Only user, assistant and tool roles are supported, got ' + message['role'] + '.') }}
{%- endif %}
{%- endfor %}
Sampling defaults
- temperature
- 0.15
Stop strings
</s>
Evidence & provenance
Source
- Revision pin
-
c599e8e56f3f9110e97f0dc0450ce248e3334d84 - Manifest
- Present
License
- Name
- apache-2.0
- Commercial use
- yes
- Access
- Open
File hashes (SHA-256)
-
devstral-small-2-24b-2512-iq4-xs/Devstral-Small-2-24B-Instruct-2512-IQ4_XS.gguf
6b8270a839e7a1263f34a799c18fb9eb0ca6f1d039cdbfa4a11f9ac9552a118a -
devstral-small-2-24b-2512-iq4-xs/LICENSE
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 -
devstral-small-2-24b-2512-iq4-xs/README.md
f4d507d165697ad5a97c03f14ede76b961f01e81c470c1ee03b3e04131f66413 -
devstral-small-2-24b-2512-q4-k-m/Devstral-Small-2-24B-Instruct-2512-Q4_K_M.gguf
d14ba9edee1bb4c4996a726deb81e49ae81800a3216f0774634238c380aee496 -
devstral-small-2-24b-2512-q4-k-m/LICENSE
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 -
devstral-small-2-24b-2512-q4-k-m/README.md
f4d507d165697ad5a97c03f14ede76b961f01e81c470c1ee03b3e04131f66413 -
devstral-small-2-24b-2512-q4-k-m/mmproj-BF16.gguf
7fbd63a14ed6642370f7a8c276fdb3c1061f3349468dc7bb3a0a9e803e70926b -
devstral-small-2-24b-2512-q4-k-m/mmproj-F16.gguf
236bb4f0500620164917f26749cd402485b7d749034ea817c6a2d65253b126b9 -
devstral-small-2-24b-2512-q4-k-m/mmproj-F32.gguf
f140d901ebc3d3e79dac0d6549592049d9cf411ef41e049e49afaaa72b5255ef -
devstral-small-2-24b-2512-q8-0/Devstral-Small-2-24B-Instruct-2512-Q8_0.gguf
0760502e9228234f6cfa843f8870b8fc91c46a13664cf766c639229cccc80866 -
devstral-small-2-24b-2512-q8-0/LICENSE
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 -
devstral-small-2-24b-2512-q8-0/README.md
f4d507d165697ad5a97c03f14ede76b961f01e81c470c1ee03b3e04131f66413
Explore further
Appears in
Get an email when a better quant fits your rig.
Set your rig once; we'll alert you when a new or better-fitting build lands.
Performance reports
Real-world throughput reported by the community (and scraped sources).
Community
Reviews, sampler presets and community runtime reports. Be the first to contribute.
Community runtime reports
Unofficial, community-submitted "it loads for me" reports. These are not the official verified-working badge — an admin reviews reports before anything is marked officially verified.
Log in to report whether a quant loads in your runtime.
No community reports yet.