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

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

Date: 2026-11-15Commit: e226490Signed: 2DC28CC7B26A283B ✓

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

mistral62.0GBMinistral-3-3B-Reasoning-2512-GGUFggufpermissive
FactsParamsnot statedSize62.0 GBFormatsggufTasknot taggedLicenseApache-2.0From sourcepermissive
$ fw get unsloth/Ministral-3-3B-Reasoning-2512-GGUF
# manifest sha256 35e352dd29de… · 62.0 GB · 32 files
$ fw verify ./Ministral-3-3B-Reasoning-2512-GGUF unsloth/Ministral-3-3B-Reasoning-2512-GGUF
From sourceHosted (signed)unsloth/Ministral-3-3B-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-3B-Reasoning-2512.

Works with

Convert with

Scan with

Overview

Size
62.0 GB
Weights
969 MB (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-3B-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 e226490. 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 3B Reasoning 2512#

The smallest model in the Ministral 3 family, Ministral 3 3B 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 3B can even be deployed locally, fitting in 16GB of VRAM in BF16, and less than 8GB of RAM/VRAM when quantized.

Key Features#

Ministral 3 3B consists of two main architectural components:

  • 3.4B Language Model
  • 0.4B Vision Encoder

The Ministral 3 3B 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#

Ideal for lightweight, real-time applications on edge or low-resource devices, such as:

  • Image captioning
  • Text classification
  • Real-time efficient translation
  • Data extraction
  • Short content generation
  • Fine-tuning and specialization
  • And more...

Bringing advanced AI capabilities to edge and distributed environments for embedded systems.

Ministral 3 Family#

Model NameTypePrecisionLink
Ministral 3 3B Base 2512Base pre-trainedBF16Hugging Face
Ministral 3 3B Instruct 2512Instruct post-trainedBF16Hugging Face
Ministral 3 3B Reasoning 2512Reasoning capableBF16Hugging Face
Ministral 3 8B Base 2512Base pre-trainedBF16Hugging Face
Ministral 3 8B Instruct 2512Instruct post-trainedBF16Hugging Face
Ministral 3 8B Reasoning 2512Reasoning capableBF16Hugging Face
Ministral 3 14B Base 2512Base pre-trainedBF16Hugging Face
Ministral 3 14B Instruct 2512Instruct post-trainedBF16Hugging 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-3B-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-3B-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 !

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-3B-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 · 62.0 GBWeights 969 MB (smallest of 26 GGUF variants). Sizes and sha256 from the signed manifest.
Show all 32 files with their sha256
FileSizesha256
.gitattributes3.79 KB66e9e9e321e8519a4b02d6404cb561877e395f1b6cb404c58a6a07cd7d7ef42c
Ministral-3-3B-Reasoning-2512-BF16.gguf6.87 GB412e91715b81fa8ab77a7e30e698102c244c6d8ca949495829bdbe8e6bfbdfa1
Ministral-3-3B-Reasoning-2512-IQ4_NL.gguf2.05 GB89ba3f42544cd09abae349ed934636dca2edee5430316470998f05fc543fd1a9
Ministral-3-3B-Reasoning-2512-IQ4_XS.gguf1.96 GB7ae5c0b06886ad5421070083602c73257809e9343fc7d3d03e4bf03de4083b2e
Ministral-3-3B-Reasoning-2512-Q2_K.gguf1.46 GB385ca408979d9b1e1b3024eaa29ff127f3dc25ff74bf651b8834155a59f86f57
Ministral-3-3B-Reasoning-2512-Q2_K_L.gguf1.46 GB385ca408979d9b1e1b3024eaa29ff127f3dc25ff74bf651b8834155a59f86f57
Ministral-3-3B-Reasoning-2512-Q3_K_M.gguf1.80 GB23284537196464cb55ba36bb2c835b10cef4133c0259c4b56c4e4f898f494327
Ministral-3-3B-Reasoning-2512-Q3_K_S.gguf1.64 GB629ad7e22e9fb09bb0f7363b3d380727e2bbeaa426dc792bbbd0ca2e19768608
Ministral-3-3B-Reasoning-2512-Q4_0.gguf2.05 GB2814b15aa72dcbc3159c13816c1ff62c63f8595bd9d9a39e4aa23692507735d6
Ministral-3-3B-Reasoning-2512-Q4_1.gguf2.23 GBa89eac3d34d9d1089620b08bad13b14ca65e461b13bda09ac6c9e37cf4ebe342
Ministral-3-3B-Reasoning-2512-Q4_K_M.gguf2.15 GBa2648395d533b6d1408667d00e0b778f3823f3f3179ba371f89355f2e957e42e
Ministral-3-3B-Reasoning-2512-Q4_K_S.gguf2.05 GB80df743a8767b15b145f08d00cedc88b97e5f8ed00057cc69b32e9e852aaada8
Ministral-3-3B-Reasoning-2512-Q5_K_M.gguf2.47 GB970ad512eb1f73b0e7a1bb449ad7ec05a30e3006a9a85221101441aa0615d3a8
Ministral-3-3B-Reasoning-2512-Q5_K_S.gguf2.42 GBfa1bbba018b5fc75e9217a9ce374d884c29f45a5d4f22c1fde3faf13a5566b4b
Ministral-3-3B-Reasoning-2512-Q6_K.gguf2.82 GB36a1a1a147c6d8d3e9560a6f6dbc675211758437faa2214137bac9a8ff59eb9e
Ministral-3-3B-Reasoning-2512-Q8_0.gguf3.65 GBf5110a0e379adbb77bb4297d23bd9749c159318b2744cfcdbef602b255ec1bbb
Ministral-3-3B-Reasoning-2512-UD-IQ1_M.gguf1.02 GB47b2f3f721fcfa2a1a8036a4be825777e80f3da3b419da468553ff2bb314b50d
Ministral-3-3B-Reasoning-2512-UD-IQ1_S.gguf969 MB34e70327ea438d718ac0d8ba4ace3c2050b88f33b42004bdcd75d13ad21eec1a
Ministral-3-3B-Reasoning-2512-UD-IQ2_M.gguf1.34 GBd3b3c6f5e1e38a6e43b5cc87eb9a6dc257702e38723976e7353dccbe07e7a22d
Ministral-3-3B-Reasoning-2512-UD-IQ2_XXS.gguf1.11 GB2a6212fb69b5e145d9ba651be953abbf75982a88d6c5fe403558222aec77752c
Ministral-3-3B-Reasoning-2512-UD-IQ3_XXS.gguf1.46 GB08f464752619542b945f9ba62c270db316b407f9dc7bf795d76bfcb1dff2a472
Ministral-3-3B-Reasoning-2512-UD-Q2_K_XL.gguf1.49 GB4b6141d1ef187951984263e18b443a99707179dc418508a7495aff95c360784c
Ministral-3-3B-Reasoning-2512-UD-Q3_K_XL.gguf1.86 GB936cfa5ff449059c5e618cb3e5c037ceb2d8856c304ad750779e0742d2c46210
Ministral-3-3B-Reasoning-2512-UD-Q4_K_XL.gguf2.19 GB94830cae0da4911121f6389790b9e5e74041e04e6c657e0bbe5a7ea1e3f44270
Ministral-3-3B-Reasoning-2512-UD-Q5_K_XL.gguf2.48 GB420b4dd1f6b89da95e2a903137197d5b6423f43b5e942545fdcfa225f38f981d
Ministral-3-3B-Reasoning-2512-UD-Q6_K_XL.gguf3.17 GB65aaeccd786201f7ef8682a42b6f80629bbe20c0a550372c1ef26e3dce84e1af
Ministral-3-3B-Reasoning-2512-UD-Q8_K_XL.gguf4.50 GBd2ef5f976718f85787fd7ba42c22e24887ac51032121fc7aa3fd980f3174489f
README.md23.3 KB949841e85ccd317f50732a5a8303400e2cd315c870a2636c026bc81596b2668b
imatrix_unsloth.gguf_file3.01 MB2d97b8d311347b29a1ff07ad55613169c9dc59668e78f12e5384eba3aa094d60
mmproj-BF16.gguf842 MB4582a23edc6c47d396eb20e453ae736a230753e8966fc51edc4ce92e85a8ae45
mmproj-F16.gguf840 MB5fd8c31b78596ebad62db4482192d45eb6083db413c06b20a721fe42601e1c2e
mmproj-F32.gguf1.68 GB8035a6a10dfc6250f50c62764fae3ac2ef6d693fc9252307c7093198aabba812
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
e22649036c pinned now2026-11-15 04:45 UTC32 files · 62.0 GB

Use it

$ fw get unsloth/Ministral-3-3B-Reasoning-2512-GGUF
# manifest sha256 35e352dd29de… · 62.0 GB · 32 files
$ fw verify ./Ministral-3-3B-Reasoning-2512-GGUF unsloth/Ministral-3-3B-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-3B-Reasoning-2512-GGUF.json --dir ./Ministral-3-3B-Reasoning-2512-GGUF $ python3 fw.py verify ./Ministral-3-3B-Reasoning-2512-GGUF ./unsloth__Ministral-3-3B-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-3B-Reasoning-2512-GGUF --revision e22649036c52d4ea95a91a9900dd97b2c431852a --local-dir ./Ministral-3-3B-Reasoning-2512-GGUF
llama.cppDownload one GGUF variant (Ministral-3-3B-Reasoning-2512-UD-IQ1_S, 969 MB), then serve it.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download unsloth/Ministral-3-3B-Reasoning-2512-GGUF --include "Ministral-3-3B-Reasoning-2512-UD-IQ1_S*" --local-dir ./Ministral-3-3B-Reasoning-2512-GGUF $ llama-server -m ./Ministral-3-3B-Reasoning-2512-GGUF/Ministral-3-3B-Reasoning-2512-UD-IQ1_S.gguf
OllamaMake an Ollama model from the downloaded file.
$ printf 'FROM ./Ministral-3-3B-Reasoning-2512-GGUF/Ministral-3-3B-Reasoning-2512-UD-IQ1_S.gguf\n' > Modelfile $ ollama create ministral-3-3b-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
949841e85ccd317f50732a5a8303400e2cd315c870a2636c026bc81596b2668b
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-3B-Reasoning-2512-GGUFDate: 2026-11-15Commit: e226490Signed: 2DC28CC7B26A283B ✓
Upstream
unsloth/Ministral-3-3B-Reasoning-2512-GGUF
Pinned commit
e22649036c52d4ea95a91a9900dd97b2c431852a
Manifest
Ministral-3-3B-Reasoning-2512-GGUF.json · .minisig
Manifest sha256
35e352dd29dea750d50fdcc8b5e4fa598c54b1ae36df1ea9de4edd8223a9773a
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-3B-Reasoning-2512-GGUF.json $ curl -O https://freeweights.allternit.com/manifests/unsloth/Ministral-3-3B-Reasoning-2512-GGUF.json.minisig $ minisign -Vm Ministral-3-3B-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-3B-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-3B-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-3B-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