Downloads · 30 days
2.9K
5% of all-time downloads
mistralai/Magistral-Small-2509-GGUF
Magistral-Small-2509-GGUF is a machine learning model from mistralai. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for llama.cpp. The card lists the license as apache-2.0.
[!Note] To make our models more accesible to everyone, this repo provides a basic GGUF checkpoint compatible with llama.cpp and mistral-common. In addition to using this GGUF checkpoint, we encourage the community to…
Downloads · 30 days
2.9K
5% of all-time downloads
All-time downloads
64.8K
Public
Repo size
103 GB
Likes
87
Trending 1
Click a slice to open those files.
.gguf103 GB · 100%
From the Hugging Face model README
[!Note] To make our models more accesible to everyone, this repo provides a basic GGUF checkpoint compatible with llama.cpp and mistral-common.
In addition to using this GGUF checkpoint, we encourage the community to use other GGUF variants, e.g. from Unsloth, LM Studio, ...
If you encounter any problems with the provided checkpoints here, please open a discussion or pull request.
Building upon Mistral Small 3.2 (2506), with added reasoning capabilities, undergoing SFT from Magistral Medium traces and RL on top, it's a small, efficient reasoning model with 24B parameters.
Magistral Small can be deployed locally, fitting within a single RTX 4090 or a 32GB RAM MacBook once quantized.
This is the GGUF version of the Magistral-Small-2509 model. We released the BF16 weights as well as the following quantized format:
We do not release alongside our GGUF files:
mistral-common, which serves as our source of truth for tokenization and detokenization. Llama.cpp automatically loads a chat template, but it is in most likelihood incorrect for Magistral.We recommend to use Magistral Small 1.2 GGUF with llama.cpp along with mistral-common >= 1.8.5 server. See here for the documentation of mistral-common server.
This recommended usage does not support vision.
[!Note] We do not believe we can guarantee correct behavior using the integrated, stringified chat template hence mistral-common should be used as a reference. However, we strongly encourage the community members to use this GGUF checkpoint and mistral_common as a reference implementation to build a correct integrated, stringified chat template.
Install llama.cpp following their guidelines.
Install mistral-common >= 1.8.5 with its dependencies.
pip install --upgrade mistral-common[server,hf-hub]
pip install -U "huggingface_hub[cli]"
huggingface-cli download \
"mistralai/Magistral-Small-2509-GGUF" \
--include "Magistral-Small-2509-Q4_K_M.gguf" \
--local-dir "mistralai/Magistral-Small-2509-GGUF/"
llama.cpp serverllama-server -m mistralai/Magistral-Small-2509-GGUF/Magistral-Small-2509-Q4_K_M.gguf -c 0
mistral-common server and pass the url of the llama.cpp server.This is the server that will handle tokenization and detokenization and call the llama.cpp server for generations.
mistral_common serve mistralai/Magistral-Small-2509 \
--host localhost --port 6000 \
--engine-url http://localhost:8080 --engine-backend llama_cpp \
--timeout 300
generate: call mistral-common that will tokenizer, call the llama.cpp server to generate new tokens and detokenize the output to an AssistantMessage with think chunk and tool calls parsed.
from mistral_common.protocol.instruct.messages import AssistantMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
from mistral_common.experimental.app.models import OpenAIChatCompletionRequest
from fastapi.encoders import jsonable_encoder
import requests
mistral_common_url = "http://127.0.0.1:6000"
def generate(
request: dict | ChatCompletionRequest | OpenAIChatCompletionRequest, url: str
) -> AssistantMessage:
response = requests.post(
f"{url}/v1/chat/completions", json=jsonable_encoder(request)
)
if response.status_code != 200:
raise ValueError(f"Error: {response.status_code} - {response.text}")
return AssistantMessage(**response.json())
from typing import Any
from huggingface_hub import hf_hub_download
TEMP = 0.7
TOP_P = 0.95
MAX_TOK = 131072
def load_system_prompt(repo_id: str, filename: str) -> dict[str, Any]:
file_path = hf_hub_download(repo_id=repo_id, filename=filename)
with open(file_path, "r") as file:
system_prompt = file.read()
index_begin_think = system_prompt.find("[THINK]")
index_end_think = system_prompt.find("[/THINK]")
return {
"role": "system",
"content": [
{"type": "text", "text": system_prompt[:index_begin_think]},
{
"type": "thinking",
"thinking": system_prompt[
index_begin_think + len("[THINK]") : index_end_think
],
"closed": True,
},
{
"type": "text",
"text": system_prompt[index_end_think + len("[/THINK]") :],
},
],
}
SYSTEM_PROMPT = load_system_prompt("mistralai/Magistral-Small-2509", "SYSTEM_PROMPT.txt")
query = "Use each number in 2,5,6,3 exactly once, along with any combination of +, -, ×, ÷ (and parentheses for grouping), to make the number 24."
messages = [SYSTEM_PROMPT, {"role": "user", "content": [{"type": "text", "text": query}]}]
request = {"messages": messages, "temperature": TEMP, "top_p": TOP_P, "max_tokens": MAX_TOK}
generated_message = generate(request, mistral_common_url)
print(generated_message)