alt.freeweights.mistral / Ministral-3-8B-Reasoning-2512-GGUF
From: unsloth <huggingface.co/unsloth>Newsgroups: alt.freeweights.mistralSubject:

Ministral-3-8B-Reasoning-2512-GGUF

Date: 2026-11-15Commit: 64184afSigned: 2DC28CC7B26A283B ✓

Model. Gguf weights, 146 GB in all. Published by unsloth under Apache-2.0.

mistral146GBMinistral-3-8B-Reasoning-2512-GGUFggufpermissive
FactsParamsnot statedSize146 GBFormatsggufTasknot taggedLicenseApache-2.0From sourcepermissive
$ fw get unsloth/Ministral-3-8B-Reasoning-2512-GGUF
# manifest sha256 d580d3f1fb33… · 146 GB · 32 files
$ fw verify ./Ministral-3-8B-Reasoning-2512-GGUF unsloth/Ministral-3-8B-Reasoning-2512-GGUF
From sourceHosted (signed)unsloth/Ministral-3-8B-Reasoning-2512-GGUFLast check: 2026-11-15 04:45 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of Ministral-3-8B-Reasoning-2512.

Works with

Convert with

Scan with

Overview

Size
146 GB
Weights
2.27 GB (smallest of 26 GGUF variants)
Parameters
not stated
Formats
gguf
Task
not tagged
License
Apache-2.0 (permissive)
Files
32, each with a sha256
Publisher
unsloth
Added
2026-11-15
Section
alt.freeweights.mistral
Lineage

Original release from the publisher.

Base model: mistralai/Ministral-3-8B-Reasoning-2512

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:45 UTCpassed

Model card

From the publisher at commit 64184af. Shown as plain text with links; images open at the publisher.

See our Ministral 3 collection for all versions including GGUF, 4-bit & FP8 formats.

Learn to run Ministral correctly - Read our Guide.

See Unsloth Dynamic 2.0 GGUFs for our quantization benchmarks.

https://github.com/unslothai/unsloth/ https://discord.gg/unsloth https://docs.unsloth.ai/new/ministral-3

✨ Read our Ministral 3 Guide here!#


Ministral 3 8B Reasoning 2512#

A balanced model in the Ministral 3 family, Ministral 3 8B is a powerful, efficient tiny language model with vision capabilities.

This model is the reasoning post-trained version, trained for reasoning tasks, making it ideal for math, coding and stem related use cases.

The Ministral 3 family is designed for edge deployment, capable of running on a wide range of hardware. Ministral 3 8B can even be deployed locally, capable of fitting in 24GB of VRAM in BF16, and less than 12GB of RAM/VRAM when quantized.

Key Features#

Ministral 3 8B consists of two main architectural components:

  • 8.4B Language Model
  • 0.4B Vision Encoder

The Ministral 3 8B Reasoning model offers the following capabilities:

  • Vision: Enables the model to analyze images and provide insights based on visual content, in addition to text.
  • Multilingual: Supports dozens of languages, including English, French, Spanish, German, Italian, Portuguese, Dutch, Chinese, Japanese, Korean, Arabic.
  • System Prompt: Maintains strong adherence and support for system prompts.
  • Agentic: Offers best-in-class agentic capabilities with native function calling and JSON outputting.
  • Reasoning: Excels at complex, multi-step reasoning and dynamic problem-solving.
  • Edge-Optimized: Delivers best-in-class performance at a small scale, deployable anywhere.
  • Apache 2.0 License: Open-source license allowing usage and modification for both commercial and non-commercial purposes.
  • Large Context Window: Supports a 256k context window.
Use Cases#

Perfect for balanced performance in local or embedded systems, combining versatility with efficiency.

  • Chat interfaces in constrained environments
  • Local daily-driver AI assistant
  • Image/document description and understanding
  • Translation and content generation
  • Specialized agentic use cases
  • Fine-tuning and specialization
  • And more...

Bringing advanced AI capabilities to resource-constrained environments.

Ministral 3 Family#

Model NameTypePrecisionLink
Ministral 3 3B Base 2512Base pre-trainedBF16Hugging Face
Ministral 3 3B Instruct 2512Instruct post-trainedFP8Hugging Face
Ministral 3 3B Reasoning 2512Reasoning capableBF16Hugging Face
Ministral 3 8B Base 2512Base pre-trainedBF16Hugging Face
Ministral 3 8B Instruct 2512Instruct post-trainedFP8Hugging Face
Ministral 3 8B Reasoning 2512Reasoning capableBF16Hugging Face
Ministral 3 14B Base 2512Base pre-trainedBF16Hugging Face
Ministral 3 14B Instruct 2512Instruct post-trainedFP8Hugging Face
Ministral 3 14B Reasoning 2512Reasoning capableBF16Hugging Face

Other formats available here.

Benchmark Results#

We compare Ministral 3 to similar sized models.

Reasoning#
ModelAIME25AIME24GPQA DiamondLiveCodeBench
Ministral 3 14B0.8500.8980.7120.646
Qwen3-14B (Thinking)0.7370.8370.6630.593
Ministral 3 8B0.7870.8600.6680.616
Qwen3-VL-8B-Thinking0.7980.8600.6710.580
Ministral 3 3B0.7210.7750.5340.548
Qwen3-VL-4B-Thinking0.6970.7290.6010.513
Instruct#
ModelArena HardWildBenchMATH Maj@1MM MTBench
Ministral 3 14B0.55168.50.9048.49
Qwen3 14B (Non-Thinking)0.42765.10.870NOT MULTIMODAL
Gemma3-12B-Instruct0.43663.20.8546.70
Ministral 3 8B0.50966.80.8768.08
Qwen3-VL-8B-Instruct0.52866.30.9468.00
Ministral 3 3B0.30556.80.8307.83
Qwen3-VL-4B-Instruct0.43856.80.9008.01
Qwen3-VL-2B-Instruct0.16342.20.7866.36
Gemma3-4B-Instruct0.31849.10.7595.23
Base#
ModelMultilingual MMLUMATH CoT 2-ShotAGIEval 5-shotMMLU Redux 5-shotMMLU 5-shotTriviaQA 5-shot
Ministral 3 14B0.7420.6760.6480.8200.7940.749
Qwen3 14B Base0.7540.6200.6610.8370.8040.703
Gemma 3 12B Base0.6900.4870.5870.7660.7450.788
Ministral 3 8B0.7060.6260.5910.7930.7610.681
Qwen 3 8B Base0.7000.5760.5960.7940.7600.639
Ministral 3 3B0.6520.6010.5110.7350.7070.592
Qwen 3 4B Base0.6770.4050.5700.7590.7130.530
Gemma 3 4B Base0.5160.2940.4300.6260.5890.640

Usage#

The model can be used with the following frameworks;

vLLM#

We recommend using this model with vLLM.

Installation#

Make sure to install vLLM >= 0.12.0:

pip install vllm --upgrade

Doing so should automatically install mistral_common >= 1.8.6.

To check:

python -c "import mistral_common; print(mistral_common.__version__)"

You can also make use of a ready-to-go docker image or on the docker hub.

Serve#

Due to their size, Ministral-3-3B-Reasoning-2512 and Ministral-3-8B-Reasoning-2512 can run on a single 1xH200 GPU.

A simple launch command is:


vllm serve mistralai/Ministral-3-8B-Reasoning-2512-FP8 \
  --enable-auto-tool-choice --tool-call-parser mistral \
  --reasoning-parser mistral

Key parameter notes:

  • enable-auto-tool-choice: Required when enabling tool usage.
  • tool-call-parser mistral: Required when enabling tool usage.
  • reasoning-parser mistral: Required when enabling reasoning.

Additional flags:

  • You can set --max-model-len to preserve memory. By default it is set to 262144 which is quite large but not necessary for most scenarios.
  • You can set --max-num-batched-tokens to balance throughput and latency, higher means higher throughput but higher latency.
Usage of the model#

Here we asumme that the model mistralai/Ministral-3-8B-Reasoning-2512 is served and you can ping it to the domain localhost with the port 8000 which is the default for vLLM.

Vision Reasoning

Let's see if the Ministral 3 model knows when to pick a fight !

from typing import Any

from openai import OpenAI
from huggingface_hub import hf_hub_download

# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"

TEMP = 0.7
TOP_P = 0.95
MAX_TOK = 262144
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

models = client.models.list()
model = models.data[0].id


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(model, "SYSTEM_PROMPT.txt")

image_url = "https://static.wikia.nocookie.net/essentialsdocs/images/7/70/Battle.png/revision/latest?cb=20220523172438"

messages = [
    SYSTEM_PROMPT,
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "What action do you think I should take in this situation? List all the possible actions and explain why you think they are good or bad.",
            },
            {"type": "image_url", "image_url": {"url": image_url}},
        ],
    },
]


stream = client.chat.completions.create(
    model=model,
    messages=messages,
    stream=True,
    temperature=TEMP,
    top_p=TOP_P,
    max_tokens=MAX_TOK,
)

print("client: Start streaming chat completions...:\n")
printed_reasoning_content = False
answer = []

for chunk in stream:
    reasoning_content = None
    content = None
    # Check the content is reasoning_content or content
    if hasattr(chunk.choices[0].delta, "reasoning_content"):
        reasoning_content = chunk.choices[0].delta.reasoning_content
    if hasattr(chunk.choices[0].delta, "content"):
        content = chunk.choices[0].delta.content

    if reasoning_content is not None:
        if not printed_reasoning_content:
            printed_reasoning_content = True
            print("Start reasoning:\n", end="", flush=True)
        print(reasoning_content, end="", flush=True)
    elif content is not None:
        # Extract and print the content
        if not reasoning_content and printed_reasoning_content:
            answer.extend(content)
        print(content, end="", flush=True)

if answer:
    print("\n\n=============\nAnswer\n=============\n")
    print("".join(answer))
else:
    print("\n\n=============\nNo Answer\n=============\n")
    print(
        "No answer was generated by the model, probably because the maximum number of tokens was reached."
    )

Now we'll make it compute some maths !

from typing import Any

from openai import OpenAI
from huggingface_hub import hf_hub_download

# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"

TEMP = 0.7
TOP_P = 0.95
MAX_TOK = 262144
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

models = client.models.list()
model = models.data[0].id


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(model, "SYSTEM_PROMPT.txt")

image_url = "https://i.ytimg.com/vi/5Y3xLHeyKZU/hqdefault.jpg"

messages = [
    SYSTEM_PROMPT,
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "Solve the equations. If they contain only numbers, use your calculator, else only think. Answer in the language of the image.",
            },
            {"type": "image_url", "image_url": {"url": image_url}},
        ],
    },
]

stream = client.chat.completions.create(
    model=model,
    messages=messages,
    stream=True,
    temperature=TEMP,
    top_p=TOP_P,
    max_tokens=MAX_TOK,
)

print("client: Start streaming chat completions...:\n")
printed_reasoning_content = False
answer = []

for chunk in stream:
    reasoning_content = None
    content = None
    # Check the content is reasoning_content or content
    if hasattr(chunk.choices[0].delta, "reasoning_content"):
        reasoning_content = chunk.choices[0].delta.reasoning_content
    if hasattr(chunk.choices[0].delta, "content"):
        content = chunk.choices[0].delta.content

    if reasoning_content is not None:
        if not printed_reasoning_content:
            printed_reasoning_content = True
            print("Start reasoning:\n", end="", flush=True)
        print(reasoning_content, end="", flush=True)
    if content is not None:
        # Extract and print the content
        if not reasoning_content and printed_reasoning_content:
            answer.extend(content)
        print(content, end="", flush=True)

if answer:
    print("\n\n=============\nAnswer\n=============\n")
    print("".join(answer))
else:
    print("\n\n=============\nNo Answer\n=============\n")
    print(
        "No answer was generated by the model, probably because the maximum number of tokens was reached."
    )

Text-Only Request

Let's do more maths and leave it up to the model to figure out how to achieve a result.

from typing import Any
from openai import OpenAI
from huggingface_hub import hf_hub_download

# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"

TEMP = 0.7
TOP_P = 0.95
MAX_TOK = 262144
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

models = client.models.list()
model = models.data[0].id


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(model, "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": query}
]
stream = client.chat.completions.create(
  model=model,
  messages=messages,
  stream=True,
  temperature=TEMP,
  top_p=TOP_P,
  max_tokens=MAX_TOK,
)

print("client: Start streaming chat completions...:\n")
printed_reasoning_content = False
answer = []

for chunk in stream:
    reasoning_content = None
    content = None
    # Check the content is reasoning_content or content
    if hasattr(chunk.choices[0].delta, "reasoning_content"):
        reasoning_content = chunk.choices[0].delta.reasoning_content
    if hasattr(chunk.choices[0].delta, "content"):
        content = chunk.choices[0].delta.content

    if reasoning_content is not None:
        if not printed_reasoning_content:
            printed_reasoning_content = True
            print("Start reasoning:\n", end="", flush=True)
        print(reasoning_content, end="", flush=True)
    if content is not None:
        # Extract and print the content
        if not reasoning_content and printed_reasoning_content:
            answer.extend(content)
        print(content, end="", flush=True)

if answer:
    print("\n\n=============\nAnswer\n=============\n")
    print("".join(answer))
else:
    print("\n\n=============\nNo Answer\n=============\n")
    print("No answer was generated by the model, probably because the maximum number of tokens was reached.")
Transformers#

You can also use Ministral 3 3B Reasoning 2512 with Transformers ! Make sure to install Transformers from its first v5 release candidate or from "main":

pip install transformers==5.0.0rc0

To make the best use of our model with Transformers make sure to have installed mistral-common >= 1.8.6 to use our tokenizer.

pip install mistral-common --upgrade

Then load our tokenizer along with the model and generate:

Python snippet

import torch
from transformers import Mistral3ForConditionalGeneration, MistralCommonBackend

model_id = "mistralai/Ministral-3-8B-Reasoning-2512"

tokenizer = MistralCommonBackend.from_pretrained(model_id)
model = Mistral3ForConditionalGeneration.from_pretrained(
    model_id, torch_dtype=torch.bfloat16, device_map="auto"
)

image_url = "https://static.wikia.nocookie.net/essentialsdocs/images/7/70/Battle.png/revision/latest?cb=20220523172438"

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "What action do you think I should take in this situation? List all the possible actions and explain why you think they are good or bad.",
            },
            {"type": "image_url", "image_url": {"url": image_url}},
        ],
    },
]

tokenized = tokenizer.apply_chat_template(messages, return_tensors="pt", return_dict=True)

tokenized["input_ids"] = tokenized["input_ids"].to(device="cuda")
tokenized["pixel_values"] = tokenized["pixel_values"].to(dtype=torch.bfloat16, device="cuda")
image_sizes = [tokenized["pixel_values"].shape[-2:]]

output = model.generate(
    **tokenized,
    image_sizes=image_sizes,
    max_new_tokens=8092,
)[0]

decoded_output = tokenizer.decode(output[len(tokenized["input_ids"][0]):])
print(decoded_output)

License#

This model is licensed under the Apache 2.0 License.

You must not use this model in a manner that infringes, misappropriates, or otherwise violates any third party’s rights, including intellectual property rights.

Files

32 files · 146 GBWeights 2.27 GB (smallest of 26 GGUF variants). Sizes and sha256 from the signed manifest.
Show all 32 files with their sha256
FileSizesha256
.gitattributes3.79 KB8a245b855de44db7147609d774e33c8bd3ccd57e8b64eebc52477660e71933a0
Ministral-3-8B-Reasoning-2512-BF16.gguf17.0 GBf561c186d77208f8f07e3e5e7ef2a8988eacd8bc7ae4ef7bddd7798d629fd0ae
Ministral-3-8B-Reasoning-2512-IQ4_NL.gguf4.94 GB81aa35efa64887866d0696252b2b1e0b7b301a8c647a535fa4538c0e3943f081
Ministral-3-8B-Reasoning-2512-IQ4_XS.gguf4.71 GB07da1f593631ed76f3ad94205fb9729b34199b80f9f169614ec007826fd69784
Ministral-3-8B-Reasoning-2512-Q2_K.gguf3.35 GBb491a376423d06969867053201b292d7a3249a8a64307bfc40a7b65d48d642a0
Ministral-3-8B-Reasoning-2512-Q2_K_L.gguf3.48 GB4937996e3f58688cf1712df0dc7538aa44077aa2acd01520a2ca9a6fd6888dc3
Ministral-3-8B-Reasoning-2512-Q3_K_M.gguf4.24 GB5597733b54c79e89b897e10bccb2516f306537eb55abcb7fa39be5d400439984
Ministral-3-8B-Reasoning-2512-Q3_K_S.gguf3.87 GBd5490c1fdbfc7c0fbc85fc4da198fe985a978d0edee5aef8ad4ab14674e99a88
Ministral-3-8B-Reasoning-2512-Q4_0.gguf4.94 GB81a6259f15cfca411012b81fc125075b953fe1ba2dd792a6e86f0b0a455edb37
Ministral-3-8B-Reasoning-2512-Q4_1.gguf5.42 GBa2b81410a6b7dc7e595a65fb3cdb7049a9ae51d2b052f59a3fdea912e77187cc
Ministral-3-8B-Reasoning-2512-Q4_K_M.gguf5.20 GBc3d1c5ab7406a0fc9d50ad2f0d15d34d5693db00bf953e8a9cd9a243b81cb1b2
Ministral-3-8B-Reasoning-2512-Q4_K_S.gguf4.95 GBa380c047bc326f03f81f65daa08be63b84ba2e06dceb54f0033f95b60e28cd7d
Ministral-3-8B-Reasoning-2512-Q5_K_M.gguf6.06 GBd080e084bf94902c3b858cb17fe5e611fd4fc30d17a9195dce501f8e1df0cae7
Ministral-3-8B-Reasoning-2512-Q5_K_S.gguf5.92 GB01ae4ae86b051c2d3ad855600553939178a488a9704e1d13c31a57ee3de3c159
Ministral-3-8B-Reasoning-2512-Q6_K.gguf6.97 GB9d624ee43d7d852e03e34dae589765709c389296413d9bcd1eda6a331c88ce98
Ministral-3-8B-Reasoning-2512-Q8_0.gguf9.03 GB1968c05dd76a49a1b68e55f7fe91dfa50d55b4b93eb6c5cb7df176b885dd5b83
Ministral-3-8B-Reasoning-2512-UD-IQ1_M.gguf2.40 GBee8173c53558de250eee41c8ea209c0c15a948beb663379cdc575f27d70b82eb
Ministral-3-8B-Reasoning-2512-UD-IQ1_S.gguf2.27 GB3e89caacc801b9ebc0355ec4db847c8f07b258add32e0d12c58e42ec1798d69f
Ministral-3-8B-Reasoning-2512-UD-IQ2_M.gguf3.16 GB8d92dcaceebb9408549a6305ceebb466033eb2ae38410309e58fc5070269b683
Ministral-3-8B-Reasoning-2512-UD-IQ2_XXS.gguf2.63 GBf05d8786f3f060b3c3432f12972357d6da1acf08b16c4dfcd626f4c741e4dce9
Ministral-3-8B-Reasoning-2512-UD-IQ3_XXS.gguf3.50 GB6378fb3851db1023b0d0aa5122f6f1b5a51ce41b7be27f54954ab04cef668d4b
Ministral-3-8B-Reasoning-2512-UD-Q2_K_XL.gguf3.57 GBa3b9f31b1cfa1c7c97bb0f1906544d448065eb9b7c908d00b74c975aa869c2f9
Ministral-3-8B-Reasoning-2512-UD-Q3_K_XL.gguf4.43 GBd1293010caa862d6a2035d0ed07e6469e761572d2bbeb7548caab5d723dc886c
Ministral-3-8B-Reasoning-2512-UD-Q4_K_XL.gguf5.29 GB00300cf53173be004b77de572ffd31e58289abe59d0ae6c23f46e397652aff11
Ministral-3-8B-Reasoning-2512-UD-Q5_K_XL.gguf6.07 GB7969b90e7616084ec78577ebba25ad7149663cbc738c800103d6c60de82bff01
Ministral-3-8B-Reasoning-2512-UD-Q6_K_XL.gguf7.72 GB9efc266b028bf98c243789ef6365fc8d369da8b3e5574b587a548a2d5e8d49a6
Ministral-3-8B-Reasoning-2512-UD-Q8_K_XL.gguf11.1 GB0302d43d1e9f6f46e9e53e87514438b4065fcf56d7e19218ba98bc5d48bdf154
README.md23.5 KB0e3325c5b7ac780c1c42d480f38b01b0aa086bf1ec9fe72402fdadf4413a35d7
imatrix_unsloth.gguf_file5.33 MB3f61f68e7b0df91f2e6edd5ada7c9e4e12b1ada193a6e3fa8ec64878921b7336
mmproj-BF16.gguf858 MBfe69f2bdff001f75b2b0b39f2f438b3a795ffba36fd598222a2c67e13c56d0a8
mmproj-F16.gguf857 MB624657f83080525cb3c31d3d766dcdddb309106838802be0244fd96582d4d982
mmproj-F32.gguf1.71 GB92252621cb957949379ff81ee14b15887d37eade3845a6e937e571b98c2c84c2
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
64184af4fc pinned now2026-11-15 04:45 UTC32 files · 146 GB

Use it

$ fw get unsloth/Ministral-3-8B-Reasoning-2512-GGUF
# manifest sha256 d580d3f1fb33… · 146 GB · 32 files
$ fw verify ./Ministral-3-8B-Reasoning-2512-GGUF unsloth/Ministral-3-8B-Reasoning-2512-GGUF
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/unsloth/Ministral-3-8B-Reasoning-2512-GGUF.json --dir ./Ministral-3-8B-Reasoning-2512-GGUF $ python3 fw.py verify ./Ministral-3-8B-Reasoning-2512-GGUF ./unsloth__Ministral-3-8B-Reasoning-2512-GGUF.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download unsloth/Ministral-3-8B-Reasoning-2512-GGUF --revision 64184af4fcdc23e3e49e9722c9267e0ec4813a62 --local-dir ./Ministral-3-8B-Reasoning-2512-GGUF
llama.cppDownload one GGUF variant (Ministral-3-8B-Reasoning-2512-UD-IQ1_S, 2.27 GB), then serve it.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download unsloth/Ministral-3-8B-Reasoning-2512-GGUF --include "Ministral-3-8B-Reasoning-2512-UD-IQ1_S*" --local-dir ./Ministral-3-8B-Reasoning-2512-GGUF $ llama-server -m ./Ministral-3-8B-Reasoning-2512-GGUF/Ministral-3-8B-Reasoning-2512-UD-IQ1_S.gguf
OllamaMake an Ollama model from the downloaded file.
$ printf 'FROM ./Ministral-3-8B-Reasoning-2512-GGUF/Ministral-3-8B-Reasoning-2512-UD-IQ1_S.gguf\n' > Modelfile $ ollama create ministral-3-8b-reasoning-2512-gguf -f Modelfile

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
0e3325c5b7ac780c1c42d480f38b01b0aa086bf1ec9fe72402fdadf4413a35d7
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: unsloth <huggingface.co/unsloth>Newsgroups: alt.freeweights.mistralSubject: Ministral-3-8B-Reasoning-2512-GGUFDate: 2026-11-15Commit: 64184afSigned: 2DC28CC7B26A283B ✓
Upstream
unsloth/Ministral-3-8B-Reasoning-2512-GGUF
Pinned commit
64184af4fcdc23e3e49e9722c9267e0ec4813a62
Manifest
Ministral-3-8B-Reasoning-2512-GGUF.json · .minisig
Manifest sha256
d580d3f1fb330dc829ab48ba930ba9cd532b68ddcbe6daeaf3fa0b804b517449
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:45 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/unsloth/Ministral-3-8B-Reasoning-2512-GGUF.json $ curl -O https://freeweights.allternit.com/manifests/unsloth/Ministral-3-8B-Reasoning-2512-GGUF.json.minisig $ minisign -Vm Ministral-3-8B-Reasoning-2512-GGUF.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

mistralai/Ministral-3-8B-Reasoning-2512 · this model is a quantization of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download unsloth/Ministral-3-8B-Reasoning-2512-GGUF
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Ministral-3-8B-Reasoning-2512-GGUF.json. Provenance. Takedown history: none.
From: bartowski <huggingface.co/bartowski>Subject: alamios_Mistral-Small-3.1-DRAFT-0.5B-GGUF
From: microsoft <huggingface.co/microsoft>Subject: chatbench-mistral-7b
From: NousResearch <huggingface.co/NousResearch>Subject: DeepHermes-3-Mistral-24B-Preview
From: mistralai <huggingface.co/mistralai>Subject: Devstral-Small-2-24B-Instruct-2512
From: mlx-community <huggingface.co/mlx-community>Subject: Devstral-Small-2-24B-Instruct-2512-4bit
From: mlx-community <huggingface.co/mlx-community>Subject: Devstral-Small-2-24B-Instruct-2512-6bit