Mistral AI logo

Ministral 3 14B 2512

MinistralCurrent
byMistral AIMistral AI(ai lab)
Released December 2, 2025
Context262.1K tokens
Price (In / Out)$0.20/M / $0.20/M
CategoryMultimodal LLM

About Ministral 3 14B 2512

Ministral 3 14B 2512 is a multimodal llm from Mistral AI. Supports up to 262,144 token context window. Available from $0.20/M input tokens.

Capabilities

textvisioncodetool use

Input Modalities

textimage

Output Modalities

text

Technical Details

API Identifier
mistralai/ministral-14b-2512
Category
Multimodal LLM
Context Window
262,144 tokens

Tags

multimodalbudget-friendlylong-context

Run this model yourself

Local and cloud setup for Ministral 3 14B 2512, with exact configurations, sources and clear evidence limits.

Find a model for your hardware
Local hardwareDocumented setupSources checked Oct 16, 2026

Run Ministral 3 14B Instruct text chat on a 32 GiB Intel desktop

Serve the exact Ministral 3 14B Instruct 2512 Unsloth Q4_K_M derivative with pinned native Mistral chat formatting. Four CPU threads, one sequence, 4,096 total context tokens and a 512-token output cap. Authenticated loopback; documented only. Full memory fit, speed and text quality remain unmeasured.

Hardware
Intel Core i5-12400 desktop, 4 inference threads, 32 GiB RAM
Runtime
llama.cpp v0.7.0 (620d2225cc436ab0b001e3200e590e3b286ef9ab) · CPU
Model format
GGUF · GGUF Q4_K_M mixed quantization; vision projector not loaded · Q4_K_M post-training GGUF derivative published by Unsloth
Workload
4,096 token context · 1 concurrent

Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.

Read the complete setup guide

Before you start

  • Use an owned Intel Core i5-12400 desktop with Ubuntu 24.04 x86_64, 32 GiB installed RAM and 40 GiB free disk. Allocate four inference threads and build natively on the same host.
  • These resources are author allocations, not measured minimums or a full-fit guarantee. Exact process RAM, setup disk needs, speed and quality remain unknown.
  • Read the explicit Apache-2.0 grant in the pinned Mistral model card, its linked official license and Unsloth base/license metadata. This GGUF is published by Unsloth, not Mistral AI.
  • This is the Instruct 2512 variant. Do not substitute Base, Reasoning, a different size or a similarly named older Ministral model.
  • This bounded recipe accepts text only and downloads no projector or image fixture. The model family can read images, but that capability requires the separate image configuration.

Exact model and requirements

Artifact:
Unsloth (GGUF derivative); Mistral AI (native Instruct model) / Ministral 3 14B Instruct 2512 Q4_K_M, Unsloth derivative · checkpoint unsloth/Ministral-3-14B-Instruct-2512-GGUF
Publisher revision:
9b948841b705cc11285ff274b84ba6c885908b19
Artifact digest:
sha256:76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8
Download size:
7.67 GiB
Memory requirement (unknown):
Unknown — No exact CPU process peak for this pinned text configuration.
System RAM / disk:
Unknown / Unknown
Placement:
single device. One CPU host; no tensor or pipeline sharding. CPU-only language model; --device none and zero GPU layers.
KV cache:
F16 attention K/V cache, explicitly configured; exact process memory and cache bytes not measured.
Workload:
4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache unknown; repetitions Unknown.
Tokenizer:
Exact Ministral 3 14B Instruct GGUF tokenizer plus native pinned Mistral Jinja template · 9b948841b705cc11285ff274b84ba6c885908b19; native template 29439f81c2be264d8d393273f99e7db9c0961120
Sampling / reasoning:
Publisher recommends temperature below 0.1. This author selects greedy temperature 0, top_k 0, top_p 1, min_p 0, presence_penalty 0 and repeat_penalty 1; these remaining values are author controls, not a publisher preset. Validation max_tokens 512. Native Instruct variant, distinct from Reasoning and Base. No Qwen thinking flags or templates. Explicit concise system message limits the request to supplied evidence; no tools or generated reasoning trace is requested.
Runtime prerequisites:
Ubuntu 24.04 x86_64; See prerequisites above.

Official artifact · License

Mistral AI explicitly licenses the native Instruct model under Apache License 2.0 in its pinned model card and metadata, which link this license text. Unsloth declares Apache-2.0 and explicitly names that base. The native repository has no separate root LICENSE file at this revision (404); the explicit model-card grant and linked official Apache text establish the source. Read the license and retain required copyright, license, attribution and modification notices when redistributing covered work. No provider inference API subscription is required for public self-host downloads.

  • The 8,239,067,840-byte language file does not establish working RAM. Attention cache, compute buffers, runtime, OS and setup files add requirements.
  • Four CPU threads and 32 GiB RAM / 40 GiB disk are planning allocations. No measured fit, latency, throughput or quantization-quality claim is made.

One-time setup and hardware

hardware
Unknown — Existing desktop purchase price and incremental hardware cost depend on the reader; unknown.
Existing desktop purchase price and incremental hardware cost depend on the reader; unknown. Tax: unknown.
setup
Unknown — Initial provisioning/build time and labor cost are unknown.
Initial provisioning/build time and labor cost are unknown. Tax: unknown.

Recurring costs

electricity
Unknown — Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion.
Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion. Tax: unknown.
storage
Unknown — Incremental cost of local disk capacity is unknown. The 40 GiB free-disk walkthrough allocation is an author choice, not a measured requirement.
Incremental cost of local disk capacity is unknown. The 40 GiB free-disk walkthrough allocation is an author choice, not a measured requirement. Tax: unknown.
egress
Unknown — Data transfer price, allowances and traffic volume are unknown.
Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
administration
Unknown — Maintenance labor rate and hours are unknown.
Maintenance labor rate and hours are unknown. Tax: unknown.

Install the runtime

  1. 1. Build the exact CPU runtime

    Install host build dependencies and compile the pinned official source. No CUDA driver is required. Build and run natively on this same CPU; save resolved package/tool versions and build logs during actual execution.

    Command
    sudo apt-get update
    sudo apt-get install -y build-essential cmake git curl ca-certificates openssl python3
    mkdir -p "$HOME/ministral3-14b-text-hosting/models"
    cd "$HOME/ministral3-14b-text-hosting"
    git clone https://github.com/ggml-org/llama.cpp.git
    git -C llama.cpp checkout --detach 620d2225cc436ab0b001e3200e590e3b286ef9ab
    cmake -S llama.cpp -B llama.cpp/build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=OFF -DGGML_NATIVE=ON
    cmake --build llama.cpp/build --config Release -j 4
    ./llama.cpp/build/bin/llama-server --version

    Expected result: Checkout and build succeed; server version identifies the pinned source. Stop on failure. No inference has been executed by the author.

Download the model

  1. 1. Download language weights and native template

    Use immutable separate native/quantizer revisions and verify both SHA-256 values. Stop on either mismatch.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    curl --fail --location --output models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf 'https://huggingface.co/unsloth/Ministral-3-14B-Instruct-2512-GGUF/resolve/9b948841b705cc11285ff274b84ba6c885908b19/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf'
    curl --fail --location --output models/ministral-chat-template.jinja 'https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512/raw/29439f81c2be264d8d393273f99e7db9c0961120/chat_template.jinja'
    sha256sum --check <<'SHA256'
    76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8  models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf
    2f545122222db8bb43ca0ea0c49e9185320a8670f7d35575b0da0eb48b1e8970  models/ministral-chat-template.jinja
    SHA256

    Expected result: Both files report OK. Language artifact 8,239,067,840 bytes; native template 11,913 bytes.

Configure

  1. 1. Create a private service credential

    Generate a local server password on your own host when following this guide. Preserve an existing key on repeat setup and never print or share it. This is not an OpenAI or Mistral API key.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    umask 077
    if [ ! -e .api-key ]; then
      openssl rand -hex 32 > .api-key
    fi
    test -s .api-key || { echo 'Restore the empty service-key file before continuing.'; exit 1; }
    chmod 600 .api-key

    Expected result: A nonempty private .api-key exists with mode 600. Existing key preserved; no secret printed.

Start the model

  1. 1. Start one authenticated CPU sequence

    Run in the foreground. Native Instruct chat template is explicitly pinned; no enable_thinking flag is used. One request slot and 4,096 total context tokens include prompt and output. Reserve 512 tokens for output and keep the supplied text short. No projector is loaded. Additional context or concurrency creates a different configuration.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    ./llama.cpp/build/bin/llama-server -m models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf --alias ministral3-14b --host 127.0.0.1 --port 8080 --api-key "$MINISTRAL14B_SERVICE_KEY" --device none -ngl 0 -t 4 -c 4096 -np 1 --cache-type-k f16 --cache-type-v f16 --jinja --chat-template-file models/ministral-chat-template.jinja --skip-chat-parsing --reasoning-format none --temp 0 --top-k 0 --top-p 1 --min-p 0 --presence-penalty 0 --repeat-penalty 1

    Expected result: Model loads and loopback listener starts. Stop on architecture, template or projector errors. Local/privileged users may see process arguments; use a trusted host.

Connect to your endpoint

http://127.0.0.1:8080/v1

Same host loopback only. Run the client on this trusted desktop.

Access: loopback. Private reader-generated service key in Authorization: Bearer for chat and /props. /health is public on loopback. Trusted host required; this is not a provider API key.

Verify the setup

  1. 1. Verify readiness, authenticated text and unauthorized rejection

    Use a second terminal on the same host, or inside the VM SSH shell. Health is public on loopback. Inspect summary facts and finish_reason; wording is not prescribed.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    curl --fail http://127.0.0.1:8080/health
    curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"system","content":"Answer using only the supplied evidence. Do not invent facts or use tools."},{"role":"user","content":"Summarize only this supplied passage in one sentence: The community library opens at 9am on weekdays and closes at 6pm. On Saturday it opens at 10am and closes at 4pm. It is closed on Sunday."}],"max_tokens":512,"temperature":0,"top_k":0,"top_p":1,"min_p":0,"presence_penalty":0,"repeat_penalty":1}'
    curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"user","content":"Hello"}]}'

    Expected result: Ready health returns HTTP 200. Authenticated response has nonempty choices[0].message.content with accurate weekday/Saturday hours and Sunday closure; finish_reason is not length. Request without the key returns HTTP 401. Wrong facts or failed access checks fail this smoke test.

Performance evidence

No compatible measurement available. Documented support and estimated memory do not establish response speed.

Limits and troubleshooting

  • Documented configuration only. No build, weights, model inference, memory fit, speed or quality measurement was executed by the author.
  • Instruct 2512 is a specific native variant. Its dense 40-layer text architecture uses Mistral/Ministral YaRN and attention-temperature metadata; the exact runtime supports that branch. No Qwen hybrid-state formula, reasoning switch or sampler is transferred.
  • The publisher advertises 262,144 context positions. This guide configures only 4,096 total prompt/output tokens and one slot; 512 is an output cap, not a measured length.
  • Greedy temperature zero satisfies the model-card below-0.1 guidance. Other decoding controls are author choices; no exact response or full-precision equivalence is promised.
  • The native Instruct instructions support images and explicitly exclude audio/video. This guide does not validate tools, structured-output schemas, audio, video or long-context behavior.
  • Package/build dependencies resolve at install time. Preserve exact source checkout, resolved versions and build logs with any future execution evidence.
  • Loopback plus a service key does not protect against privileged local users. Shared/public serving requires separate access/TLS/operations design.
Checksum, architecture or template failure
Stop. Confirm exact model/quantizer/template revisions and file hashes, native CPU source commit and Instruct variant. Do not substitute Base/Reasoning or an older generic runtime.
Out of memory or context overflow
Stop the server, free/provision resources or shorten input/output. Record any new context, batch or hardware configuration. Allocated capacity does not guarantee fit; do not suppress overflow.
Connection refused or HTTP 401
Check foreground logs, loopback port and matching private service key. For cloud, confirm the SSH tunnel targets the correct VM. Keep port 8080 closed to public ingress.
Wrong text summary
Inspect the supplied evidence and response. Keep source passage and output bounded; wrong facts fail validation. This text recipe has no vision projector.

Stop the model

  1. 1. Stop the server

    Press Ctrl+C in the foreground server terminal. Close any client SSH tunnel with Ctrl+C and unset the key in each shell.

    Command
    unset MINISTRAL14B_SERVICE_KEY

    Expected result: The intended localhost:8080 endpoint stops serving; cloud compute still bills until its lifecycle is stopped/terminated.

Uninstall

  1. 1. Remove dedicated walkthrough files

    Back up wanted requests/results and logs. Confirm this path before removing only its dedicated model/build/key folder; shared apt packages remain.

    Command
    rm -r -- "$HOME/ministral3-14b-text-hosting"

    Expected result: Dedicated model, template, build, request and service-key files are removed. Shared system dependencies remain.

Sources and verification

Sources checked Oct 16, 2026. Verification source

Related guides

Compare this configuration
Cloud serverDocumented setupSources checked Oct 16, 2026

Self-host Ministral 3 14B Instruct text chat on an AWS CPU VM

Serve the exact Ministral 3 14B Instruct 2512 Unsloth Q4_K_M derivative with pinned native Mistral chat formatting. Four CPU threads, one sequence, 4,096 total context tokens and a 512-token output cap. Authenticated loopback; documented only. Full memory fit, speed and text quality remain unmeasured.

Hardware
AWS r7i.xlarge, 32 GiB RAM, Ubuntu x86_64
Runtime
llama.cpp v0.7.0 (620d2225cc436ab0b001e3200e590e3b286ef9ab) · CPU
Model format
GGUF · GGUF Q4_K_M mixed quantization; vision projector not loaded · Q4_K_M post-training GGUF derivative published by Unsloth
Workload
4,096 token context · 1 concurrent

Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.

Read the complete setup guide

Before you start

  • Use Ubuntu 24.04 x86_64 on AWS r7i.xlarge, four vCPUs and 32 GiB RAM, in us-east-1 with a 40 GiB gp3 root disk. Use an existing SSH key, restrict port 22 to your client IP and keep port 8080 closed to the network. Confirm quote, quota and capacity before any billable provisioning.
  • These resources are author allocations, not measured minimums or a full-fit guarantee. Exact process RAM, setup disk needs, speed and quality remain unknown.
  • Read the explicit Apache-2.0 grant in the pinned Mistral model card, its linked official license and Unsloth base/license metadata. This GGUF is published by Unsloth, not Mistral AI.
  • This is the Instruct 2512 variant. Do not substitute Base, Reasoning, a different size or a similarly named older Ministral model.
  • This bounded recipe accepts text only and downloads no projector or image fixture. The model family can read images, but that capability requires the separate image configuration.

Exact model and requirements

Artifact:
Unsloth (GGUF derivative); Mistral AI (native Instruct model) / Ministral 3 14B Instruct 2512 Q4_K_M, Unsloth derivative · checkpoint unsloth/Ministral-3-14B-Instruct-2512-GGUF
Publisher revision:
9b948841b705cc11285ff274b84ba6c885908b19
Artifact digest:
sha256:76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8
Download size:
7.67 GiB
Memory requirement (unknown):
Unknown — No exact CPU process peak for this pinned text configuration.
System RAM / disk:
Unknown / Unknown
Placement:
single device. One CPU host; no tensor or pipeline sharding. CPU-only language model; --device none and zero GPU layers.
KV cache:
F16 attention K/V cache, explicitly configured; exact process memory and cache bytes not measured.
Workload:
4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache unknown; repetitions Unknown.
Tokenizer:
Exact Ministral 3 14B Instruct GGUF tokenizer plus native pinned Mistral Jinja template · 9b948841b705cc11285ff274b84ba6c885908b19; native template 29439f81c2be264d8d393273f99e7db9c0961120
Sampling / reasoning:
Publisher recommends temperature below 0.1. This author selects greedy temperature 0, top_k 0, top_p 1, min_p 0, presence_penalty 0 and repeat_penalty 1; these remaining values are author controls, not a publisher preset. Validation max_tokens 512. Native Instruct variant, distinct from Reasoning and Base. No Qwen thinking flags or templates. Explicit concise system message limits the request to supplied evidence; no tools or generated reasoning trace is requested.
Runtime prerequisites:
Ubuntu 24.04 x86_64; See prerequisites above.

Official artifact · License

Mistral AI explicitly licenses the native Instruct model under Apache License 2.0 in its pinned model card and metadata, which link this license text. Unsloth declares Apache-2.0 and explicitly names that base. The native repository has no separate root LICENSE file at this revision (404); the explicit model-card grant and linked official Apache text establish the source. Read the license and retain required copyright, license, attribution and modification notices when redistributing covered work. No provider inference API subscription is required for public self-host downloads.

  • The 8,239,067,840-byte language file does not establish working RAM. Attention cache, compute buffers, runtime, OS and setup files add requirements.
  • Four CPU threads and 32 GiB RAM / 40 GiB disk are planning allocations. No measured fit, latency, throughput or quantization-quality claim is made.

One-time setup and hardware

hardware
Not applicable — AWS hardware acquisition is included in compute rental; no purchased GPU required. Any separate hardware cost is not applicable.
AWS hardware acquisition is included in compute rental; no purchased GPU required. Any separate hardware cost is not applicable. Tax: unknown.
setup
Unknown — Initial provisioning/build time and labor cost are unknown.
Initial provisioning/build time and labor cost are unknown. Tax: unknown.

Recurring costs

compute
$0.26 / hour
AWS public us-east-1 Linux On-Demand rate USD 0.2646 per billed instance-hour, no paid preinstalled software. Eight hours USD 2.1168; 24 hours USD 6.3504 compute. Idle running hours bill. Storage, egress, tax and administration separate; no Spot/reservation/discount assumed. Capacity/quota unverified. Region: us-east-1. SKU: r7i.xlarge Linux On-Demand. Tax: excluded. Price dated Oct 15, 2026. Price source
storage
$0.08 / GB month
US East (N. Virginia) gp3 USD 0.08 per GB-month; AWS defines GB as 1024^3 bytes. Selected 40 GiB root volume is USD 3.20 per full month, prorated by provisioned duration. Baseline 3000 IOPS / 125 MB/s; no extras assumed. Retained snapshots/resources separate; storage persists after instance stop. Tax excluded. Region: us-east-1. SKU: EBS gp3 baseline 3000 IOPS / 125 MB/s. Tax: excluded. Price dated Oct 16, 2026. Price source
egress
Unknown — Data transfer price, allowances and traffic volume are unknown.
Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
administration
Unknown — Maintenance labor rate and hours are unknown.
Maintenance labor rate and hours are unknown. Tax: unknown.

Install the runtime

  1. 1. Build the exact CPU runtime

    Install host build dependencies and compile the pinned official source. No CUDA driver is required. Build and run natively on this same CPU; save resolved package/tool versions and build logs during actual execution.

    Command
    sudo apt-get update
    sudo apt-get install -y build-essential cmake git curl ca-certificates openssl python3
    mkdir -p "$HOME/ministral3-14b-text-hosting/models"
    cd "$HOME/ministral3-14b-text-hosting"
    git clone https://github.com/ggml-org/llama.cpp.git
    git -C llama.cpp checkout --detach 620d2225cc436ab0b001e3200e590e3b286ef9ab
    cmake -S llama.cpp -B llama.cpp/build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=OFF -DGGML_NATIVE=ON
    cmake --build llama.cpp/build --config Release -j 4
    ./llama.cpp/build/bin/llama-server --version

    Expected result: Checkout and build succeed; server version identifies the pinned source. Stop on failure. No inference has been executed by the author.

Download the model

  1. 1. Download language weights and native template

    Use immutable separate native/quantizer revisions and verify both SHA-256 values. Stop on either mismatch.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    curl --fail --location --output models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf 'https://huggingface.co/unsloth/Ministral-3-14B-Instruct-2512-GGUF/resolve/9b948841b705cc11285ff274b84ba6c885908b19/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf'
    curl --fail --location --output models/ministral-chat-template.jinja 'https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512/raw/29439f81c2be264d8d393273f99e7db9c0961120/chat_template.jinja'
    sha256sum --check <<'SHA256'
    76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8  models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf
    2f545122222db8bb43ca0ea0c49e9185320a8670f7d35575b0da0eb48b1e8970  models/ministral-chat-template.jinja
    SHA256

    Expected result: Both files report OK. Language artifact 8,239,067,840 bytes; native template 11,913 bytes.

Configure

  1. 1. Create a private service credential

    Generate a local server password on your own host when following this guide. Preserve an existing key on repeat setup and never print or share it. This is not an OpenAI or Mistral API key.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    umask 077
    if [ ! -e .api-key ]; then
      openssl rand -hex 32 > .api-key
    fi
    test -s .api-key || { echo 'Restore the empty service-key file before continuing.'; exit 1; }
    chmod 600 .api-key

    Expected result: A nonempty private .api-key exists with mode 600. Existing key preserved; no secret printed.

  2. 2. Open an SSH tunnel from your client

    On your client replace the placeholders with an existing SSH key and this VM address. Keep the server bound to VM loopback; run verification in the SSH shell or forward localhost 8080 for your local client.

    Command
    ssh -i /path/to/existing-key.pem -N -L 8080:127.0.0.1:8080 ubuntu@YOUR_INSTANCE_ADDRESS

    Expected result: Tunnel remains open while the SSH session runs. Client localhost:8080 reaches only the selected VM loopback service.

Start the model

  1. 1. Start one authenticated CPU sequence

    Run in the foreground. Native Instruct chat template is explicitly pinned; no enable_thinking flag is used. One request slot and 4,096 total context tokens include prompt and output. Reserve 512 tokens for output and keep the supplied text short. No projector is loaded. Additional context or concurrency creates a different configuration.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    ./llama.cpp/build/bin/llama-server -m models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf --alias ministral3-14b --host 127.0.0.1 --port 8080 --api-key "$MINISTRAL14B_SERVICE_KEY" --device none -ngl 0 -t 4 -c 4096 -np 1 --cache-type-k f16 --cache-type-v f16 --jinja --chat-template-file models/ministral-chat-template.jinja --skip-chat-parsing --reasoning-format none --temp 0 --top-k 0 --top-p 1 --min-p 0 --presence-penalty 0 --repeat-penalty 1

    Expected result: Model loads and loopback listener starts. Stop on architecture, template or projector errors. Local/privileged users may see process arguments; use a trusted host.

Connect to your endpoint

http://127.0.0.1:8080/v1

Same host loopback only. From your client use the SSH tunnel below; port 8080 is never publicly exposed.

Access: loopback. Private reader-generated service key in Authorization: Bearer for chat and /props. /health is public on loopback. Trusted host required; this is not a provider API key.

Verify the setup

  1. 1. Verify readiness, authenticated text and unauthorized rejection

    Use a second terminal on the same host, or inside the VM SSH shell. Health is public on loopback. Inspect summary facts and finish_reason; wording is not prescribed.

    Command
    cd "$HOME/ministral3-14b-text-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    curl --fail http://127.0.0.1:8080/health
    curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"system","content":"Answer using only the supplied evidence. Do not invent facts or use tools."},{"role":"user","content":"Summarize only this supplied passage in one sentence: The community library opens at 9am on weekdays and closes at 6pm. On Saturday it opens at 10am and closes at 4pm. It is closed on Sunday."}],"max_tokens":512,"temperature":0,"top_k":0,"top_p":1,"min_p":0,"presence_penalty":0,"repeat_penalty":1}'
    curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"user","content":"Hello"}]}'

    Expected result: Ready health returns HTTP 200. Authenticated response has nonempty choices[0].message.content with accurate weekday/Saturday hours and Sunday closure; finish_reason is not length. Request without the key returns HTTP 401. Wrong facts or failed access checks fail this smoke test.

Performance evidence

No compatible measurement available. Documented support and estimated memory do not establish response speed.

Limits and troubleshooting

  • Documented configuration only. No build, weights, model inference, memory fit, speed or quality measurement was executed by the author.
  • Instruct 2512 is a specific native variant. Its dense 40-layer text architecture uses Mistral/Ministral YaRN and attention-temperature metadata; the exact runtime supports that branch. No Qwen hybrid-state formula, reasoning switch or sampler is transferred.
  • The publisher advertises 262,144 context positions. This guide configures only 4,096 total prompt/output tokens and one slot; 512 is an output cap, not a measured length.
  • Greedy temperature zero satisfies the model-card below-0.1 guidance. Other decoding controls are author choices; no exact response or full-precision equivalence is promised.
  • The native Instruct instructions support images and explicitly exclude audio/video. This guide does not validate tools, structured-output schemas, audio, video or long-context behavior.
  • Package/build dependencies resolve at install time. Preserve exact source checkout, resolved versions and build logs with any future execution evidence.
  • Loopback plus a service key does not protect against privileged local users. Shared/public serving requires separate access/TLS/operations design.
Checksum, architecture or template failure
Stop. Confirm exact model/quantizer/template revisions and file hashes, native CPU source commit and Instruct variant. Do not substitute Base/Reasoning or an older generic runtime.
Out of memory or context overflow
Stop the server, free/provision resources or shorten input/output. Record any new context, batch or hardware configuration. Allocated capacity does not guarantee fit; do not suppress overflow.
Connection refused or HTTP 401
Check foreground logs, loopback port and matching private service key. For cloud, confirm the SSH tunnel targets the correct VM. Keep port 8080 closed to public ingress.
Wrong text summary
Inspect the supplied evidence and response. Keep source passage and output bounded; wrong facts fail validation. This text recipe has no vision projector.

Stop the model

  1. 1. Stop the server

    Press Ctrl+C in the foreground server terminal. Close any client SSH tunnel with Ctrl+C and unset the key in each shell.

    Command
    unset MINISTRAL14B_SERVICE_KEY

    Expected result: The intended localhost:8080 endpoint stops serving; cloud compute still bills until its lifecycle is stopped/terminated.

Uninstall

  1. 1. Remove dedicated walkthrough files

    Back up wanted requests/results and logs. Confirm this path before removing only its dedicated model/build/key folder; shared apt packages remain.

    Command
    rm -r -- "$HOME/ministral3-14b-text-hosting"

    Expected result: Dedicated model, template, build, request and service-key files are removed. Shared system dependencies remain.

Shut down cloud resources

  1. 1. End cloud billing resources

    In EC2 us-east-1, stop for later reuse or terminate this exact VM. Review Delete on termination for its root volume. Delete unwanted detached EBS volumes, snapshots and reserved/Elastic/public IP resources. Stopped VM storage and retained resources may still bill. Check Bills/Cost Explorer later for final usage.

    Expected result: Exact instance is stopped/terminated as intended; no unwanted attached/retained billed resources remain. Instance compute stops only after its lifecycle transition, not when llama-server stops.

Sources and verification

Sources checked Oct 16, 2026. Verification source

Related guides

Compare this configuration
Local hardwareDocumented setupSources checked Oct 16, 2026

Run Ministral 3 14B Instruct image and text chat on a 32 GiB Intel desktop

Serve the exact Ministral 3 14B Instruct 2512 Unsloth Q4_K_M derivative with pinned native Mistral chat formatting and its matching F16 Pixtral projector. Four CPU threads, one sequence, 4,096 total context tokens and a 512-token output cap. Authenticated loopback; documented only. Full memory fit, speed and visual quality remain unmeasured.

Hardware
Intel Core i5-12400 desktop, 4 inference threads, 32 GiB RAM
Runtime
llama.cpp v0.7.0 (620d2225cc436ab0b001e3200e590e3b286ef9ab) · CPU
Model format
GGUF · GGUF Q4_K_M mixed quantization; F16 Pixtral projector · Q4_K_M post-training GGUF derivative published by Unsloth
Workload
4,096 token context · 1 concurrent

Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.

Read the complete setup guide

Before you start

  • Use an owned Intel Core i5-12400 desktop with Ubuntu 24.04 x86_64, 32 GiB installed RAM and 40 GiB free disk. Allocate four inference threads and build natively on the same host.
  • These resources are author allocations, not measured minimums or a full-fit guarantee. Exact process RAM, setup disk needs, speed and quality remain unknown.
  • Read the explicit Apache-2.0 grant in the pinned Mistral model card, its linked official license and Unsloth base/license metadata. This GGUF is published by Unsloth, not Mistral AI.
  • This is the Instruct 2512 variant. Do not substitute Base, Reasoning, a different size or a similarly named older Ministral model.
  • One local JPEG plus text is supported by this configuration. Use only the exact matching same-revision Pixtral projector. Native Mistral guidance favors near-square images. No audio, video, tools or general OCR quality is validated.

Exact model and requirements

Artifact:
Unsloth (GGUF derivative); Mistral AI (native Instruct model) / Ministral 3 14B Instruct 2512 Q4_K_M, Unsloth derivative · checkpoint unsloth/Ministral-3-14B-Instruct-2512-GGUF
Publisher revision:
9b948841b705cc11285ff274b84ba6c885908b19
Artifact digest:
sha256:76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8
Download size:
7.67 GiB
Memory requirement (unknown):
Unknown — No exact CPU process peak for this pinned vision configuration.
System RAM / disk:
Unknown / Unknown
Placement:
single device. One CPU host; no tensor or pipeline sharding. CPU-only language model and vision projector via --mmproj-device none and --no-mmproj-offload.
KV cache:
F16 attention K/V cache, explicitly configured; exact process memory and cache bytes not measured.
Workload:
4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache unknown; repetitions Unknown.
Tokenizer:
Exact Ministral 3 14B Instruct GGUF tokenizer plus native pinned Mistral Jinja template · 9b948841b705cc11285ff274b84ba6c885908b19; native template 29439f81c2be264d8d393273f99e7db9c0961120
Sampling / reasoning:
Publisher recommends temperature below 0.1. This author selects greedy temperature 0, top_k 0, top_p 1, min_p 0, presence_penalty 0 and repeat_penalty 1; these remaining values are author controls, not a publisher preset. Validation max_tokens 512. Native Instruct variant, distinct from Reasoning and Base. No Qwen thinking flags or templates. Explicit concise system message limits the request to supplied evidence; no tools or generated reasoning trace is requested.
Runtime prerequisites:
Ubuntu 24.04 x86_64; See prerequisites above.

Official artifact · License

Mistral AI explicitly licenses the native Instruct model under Apache License 2.0 in its pinned model card and metadata, which link this license text. Unsloth declares Apache-2.0 and explicitly names that base. The native repository has no separate root LICENSE file at this revision (404); the explicit model-card grant and linked official Apache text establish the source. Read the license and retain required copyright, license, attribution and modification notices when redistributing covered work. No provider inference API subscription is required for public self-host downloads.

  • The 8,239,067,840-byte language file does not establish working RAM. Attention cache, compute buffers, runtime, OS and setup files add requirements.
  • Four CPU threads and 32 GiB RAM / 40 GiB disk are planning allocations. No measured fit, latency, throughput or quantization-quality claim is made.
  • The 878,053,536-byte F16 projector, pixel tensors, Pixtral encoder, patch merger, image-row break embeddings and warmup add unmeasured memory. Token batch/ubatch are explicitly 2048; that is a runtime token-processing allocation, not request concurrency or measured fit.

One-time setup and hardware

hardware
Unknown — Existing desktop purchase price and incremental hardware cost depend on the reader; unknown.
Existing desktop purchase price and incremental hardware cost depend on the reader; unknown. Tax: unknown.
setup
Unknown — Initial provisioning/build time and labor cost are unknown.
Initial provisioning/build time and labor cost are unknown. Tax: unknown.

Recurring costs

electricity
Unknown — Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion.
Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion. Tax: unknown.
storage
Unknown — Incremental cost of local disk capacity is unknown. The 40 GiB free-disk walkthrough allocation is an author choice, not a measured requirement.
Incremental cost of local disk capacity is unknown. The 40 GiB free-disk walkthrough allocation is an author choice, not a measured requirement. Tax: unknown.
egress
Unknown — Data transfer price, allowances and traffic volume are unknown.
Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
administration
Unknown — Maintenance labor rate and hours are unknown.
Maintenance labor rate and hours are unknown. Tax: unknown.

Install the runtime

  1. 1. Build the exact CPU runtime

    Install host build dependencies and compile the pinned official source. No CUDA driver is required. Build and run natively on this same CPU; save resolved package/tool versions and build logs during actual execution.

    Command
    sudo apt-get update
    sudo apt-get install -y build-essential cmake git curl ca-certificates openssl python3
    mkdir -p "$HOME/ministral3-14b-vision-hosting/models"
    cd "$HOME/ministral3-14b-vision-hosting"
    git clone https://github.com/ggml-org/llama.cpp.git
    git -C llama.cpp checkout --detach 620d2225cc436ab0b001e3200e590e3b286ef9ab
    cmake -S llama.cpp -B llama.cpp/build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=OFF -DGGML_NATIVE=ON
    cmake --build llama.cpp/build --config Release -j 4
    ./llama.cpp/build/bin/llama-server --version

    Expected result: Checkout and build succeed; server version identifies the pinned source. Stop on failure. No inference has been executed by the author.

Download the model

  1. 1. Download language weights and native template

    Use immutable separate native/quantizer revisions and verify both SHA-256 values. Stop on either mismatch.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    curl --fail --location --output models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf 'https://huggingface.co/unsloth/Ministral-3-14B-Instruct-2512-GGUF/resolve/9b948841b705cc11285ff274b84ba6c885908b19/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf'
    curl --fail --location --output models/ministral-chat-template.jinja 'https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512/raw/29439f81c2be264d8d393273f99e7db9c0961120/chat_template.jinja'
    sha256sum --check <<'SHA256'
    76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8  models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf
    2f545122222db8bb43ca0ea0c49e9185320a8670f7d35575b0da0eb48b1e8970  models/ministral-chat-template.jinja
    SHA256

    Expected result: Both files report OK. Language artifact 8,239,067,840 bytes; native template 11,913 bytes.

  2. 2. Download the exact matching projector and visual fixture

    The projector is specific to this Instruct 14B derivative. The official runtime newspaper image is a private diagnostic fixture; photograph redistribution rights are unknown and are not inferred from the code license.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    curl --fail --location --output models/mmproj-F16.gguf 'https://huggingface.co/unsloth/Ministral-3-14B-Instruct-2512-GGUF/resolve/9b948841b705cc11285ff274b84ba6c885908b19/mmproj-F16.gguf'
    curl --fail --location --output fixture.jpg 'https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/tools/mtmd/test-1.jpeg'
    sha256sum --check <<'SHA256'
    b0d2d17d39fa1fff5c1177b672c351cac55fb15b9794f03a8a551df185bffc10  models/mmproj-F16.gguf
    2dff664c0c8aaea18aff8cbe7e868845b775e90cdd7a0bac98df709b131deaa3  fixture.jpg
    SHA256

    Expected result: Projector and fixture report OK. Projector 878,053,536 bytes; fixture 124,071 bytes, 640 by 488 pixels. Stop on mismatch.

Configure

  1. 1. Create a private service credential

    Generate a local server password on your own host when following this guide. Preserve an existing key on repeat setup and never print or share it. This is not an OpenAI or Mistral API key.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    umask 077
    if [ ! -e .api-key ]; then
      openssl rand -hex 32 > .api-key
    fi
    test -s .api-key || { echo 'Restore the empty service-key file before continuing.'; exit 1; }
    chmod 600 .api-key

    Expected result: A nonempty private .api-key exists with mode 600. Existing key preserved; no secret printed.

Start the model

  1. 1. Start one authenticated CPU sequence

    Run in the foreground. Native Instruct chat template is explicitly pinned; no enable_thinking flag is used. One request slot and 4,096 total context tokens include prompt and output. Pixtral dynamic-resolution preprocessing uses bicubic resizing and model merge-size metadata. This author caps nominal image tokens at 1024 and leaves the model/runtime minimum unchanged; image row-break tokens add overhead. A 512-output cap leaves reserve within this short fixture workload. Actual counts remain unknown. Explicit 2048 token batch/ubatch avoid silently inheriting a smaller image processing cap; this does not prove fit.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    ./llama.cpp/build/bin/llama-server -m models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf --alias ministral3-14b --host 127.0.0.1 --port 8080 --api-key "$MINISTRAL14B_SERVICE_KEY" --device none -ngl 0 -t 4 -c 4096 -np 1 --cache-type-k f16 --cache-type-v f16 --jinja --chat-template-file models/ministral-chat-template.jinja --skip-chat-parsing --reasoning-format none --temp 0 --top-k 0 --top-p 1 --min-p 0 --presence-penalty 0 --repeat-penalty 1 --mmproj models/mmproj-F16.gguf --no-mmproj-offload --mmproj-device none --image-max-tokens 1024 --mtmd-batch-max-tokens 2048 -b 2048 -ub 2048

    Expected result: Model loads and loopback listener starts. Stop on architecture, template or projector errors. Local/privileged users may see process arguments; use a trusted host.

Connect to your endpoint

http://127.0.0.1:8080/v1

Same host loopback only. Run the client on this trusted desktop.

Access: loopback. Private reader-generated service key in Authorization: Bearer for chat and /props. /health is public on loopback. Trusted host required; this is not a provider API key.

Verify the setup

  1. 1. Verify readiness, authenticated text and unauthorized rejection

    Use a second terminal on the same host, or inside the VM SSH shell. Health is public on loopback. Inspect summary facts and finish_reason; wording is not prescribed.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    curl --fail http://127.0.0.1:8080/health
    curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"system","content":"Answer using only the supplied evidence. Do not invent facts or use tools."},{"role":"user","content":"Summarize only this supplied passage in one sentence: The community library opens at 9am on weekdays and closes at 6pm. On Saturday it opens at 10am and closes at 4pm. It is closed on Sunday."}],"max_tokens":512,"temperature":0,"top_k":0,"top_p":1,"min_p":0,"presence_penalty":0,"repeat_penalty":1}'
    curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"user","content":"Hello"}]}'

    Expected result: Ready health returns HTTP 200. Authenticated response has nonempty choices[0].message.content with accurate weekday/Saturday hours and Sunday closure; finish_reason is not length. Request without the key returns HTTP 401. Wrong facts or failed access checks fail this smoke test.

  2. 2. Verify single-image grounding

    The JSON content array contains text and image_url with a base64 JPEG data URI; no server remote-image fetching or Transformers processor is used. Native Pixtral patch-merge and [IMG_BREAK]/[IMG_END] boundaries are handled by the pinned runtime. Fixture visibly shows The New York Times and MEN WALK ON MOON. Pass criterion is those grounded observations, not an exact generated paragraph or a general OCR score.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    curl --fail http://127.0.0.1:8080/props -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" --output image-props.json
    python3 - <<'PYREQUEST'
    import base64,json,pathlib
    props=json.loads(pathlib.Path('image-props.json').read_text())
    assert props['modalities']['vision'] is True, 'Vision projector is not active'
    image=base64.b64encode(pathlib.Path('fixture.jpg').read_bytes()).decode()
    request={'model':'ministral3-14b','messages':[{'role':'system','content':'Answer using only the supplied image. Do not invent facts or use tools.'},{'role':'user','content':[{'type':'text','text':'Identify this newspaper and transcribe its largest headline. Briefly describe the visible front page.'},{'type':'image_url','image_url':{'url':'data:image/jpeg;base64,'+image}}]}],'max_tokens':512,'temperature':0,'top_k':0,'top_p':1,'min_p':0,'presence_penalty':0,'repeat_penalty':1}
    pathlib.Path('image-request.json').write_text(json.dumps(request))
    PYREQUEST
    curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary @image-request.json --output image-response.json
    cat image-response.json

    Expected result: Authenticated /props reports vision true and chat returns HTTP 200 with nonempty content identifying The New York Times and MEN WALK ON MOON. Inspect grounded accuracy and finish_reason not length. Wrong newspaper/headline, truncation or image rejection fails; no exact output or confidence is promised.

Performance evidence

No compatible measurement available. Documented support and estimated memory do not establish response speed.

Limits and troubleshooting

  • Documented configuration only. No build, weights, model inference, memory fit, speed or quality measurement was executed by the author.
  • Instruct 2512 is a specific native variant. Its dense 40-layer text architecture uses Mistral/Ministral YaRN and attention-temperature metadata; the exact runtime supports that branch. No Qwen hybrid-state formula, reasoning switch or sampler is transferred.
  • The publisher advertises 262,144 context positions. This guide configures only 4,096 total prompt/output tokens and one slot; 512 is an output cap, not a measured length.
  • Greedy temperature zero satisfies the model-card below-0.1 guidance. Other decoding controls are author choices; no exact response or full-precision equivalence is promised.
  • The native Instruct instructions support images and explicitly exclude audio/video. This guide does not validate tools, structured-output schemas, audio, video or long-context behavior.
  • Package/build dependencies resolve at install time. Preserve exact source checkout, resolved versions and build logs with any future execution evidence.
  • Loopback plus a service key does not protect against privileged local users. Shared/public serving requires separate access/TLS/operations design.
  • Version-specific vision support is sourced from the pinned Mistral3 converter and Pixtral graph: spatial merge 2, preprojector normalization and GELU projection. This establishes documented mapping, not an executed projector-compatibility or visual-quality result.
  • Runtime Pixtral uses dynamic image sizing, bicubic resize and native merge metadata. The configured nominal image ceiling does not count every row-break/template token. Do not use Qwen minimum-token grounding claims or Transformers pixel controls as native server request fields. Actual image/request tokens remain unknown.
  • Mistral favors near-square inputs; the source fixture is 640 by 488 pixels, about 1.31:1. It is not cropped or upscaled by this guide. A different image/resolution/workload requires separate verification. The headline check is narrow and does not establish general OCR accuracy.
Checksum, architecture or template failure
Stop. Confirm exact model/quantizer/template revisions and file hashes, native CPU source commit and Instruct variant. Do not substitute Base/Reasoning or an older generic runtime.
Out of memory or context overflow
Stop the server, free/provision resources or shorten input/output. Record any new context, batch or hardware configuration. Allocated capacity does not guarantee fit; do not suppress overflow.
Connection refused or HTTP 401
Check foreground logs, loopback port and matching private service key. For cloud, confirm the SSH tunnel targets the correct VM. Keep port 8080 closed to public ingress.
Wrong image answer or projector rejection
Inspect the supplied evidence and response. Confirm exact matching projector, /props vision true, native content array and image-token budget. Stop on dimension/template mismatch; never replace the projector with a sibling file.

Stop the model

  1. 1. Stop the server

    Press Ctrl+C in the foreground server terminal. Close any client SSH tunnel with Ctrl+C and unset the key in each shell.

    Command
    unset MINISTRAL14B_SERVICE_KEY

    Expected result: The intended localhost:8080 endpoint stops serving; cloud compute still bills until its lifecycle is stopped/terminated.

Uninstall

  1. 1. Remove dedicated walkthrough files

    Back up wanted requests/results and logs. Confirm this path before removing only its dedicated model/build/key folder; shared apt packages remain.

    Command
    rm -r -- "$HOME/ministral3-14b-vision-hosting"

    Expected result: Dedicated model, template, build, request and service-key files are removed. Shared system dependencies remain.

Sources and verification

Sources checked Oct 16, 2026. Verification source

Related guides

Compare this configuration
Cloud serverDocumented setupSources checked Oct 16, 2026

Self-host Ministral 3 14B Instruct image and text chat on an AWS CPU VM

Serve the exact Ministral 3 14B Instruct 2512 Unsloth Q4_K_M derivative with pinned native Mistral chat formatting and its matching F16 Pixtral projector. Four CPU threads, one sequence, 4,096 total context tokens and a 512-token output cap. Authenticated loopback; documented only. Full memory fit, speed and visual quality remain unmeasured.

Hardware
AWS r7i.xlarge, 32 GiB RAM, Ubuntu x86_64
Runtime
llama.cpp v0.7.0 (620d2225cc436ab0b001e3200e590e3b286ef9ab) · CPU
Model format
GGUF · GGUF Q4_K_M mixed quantization; F16 Pixtral projector · Q4_K_M post-training GGUF derivative published by Unsloth
Workload
4,096 token context · 1 concurrent

Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.

Read the complete setup guide

Before you start

  • Use Ubuntu 24.04 x86_64 on AWS r7i.xlarge, four vCPUs and 32 GiB RAM, in us-east-1 with a 40 GiB gp3 root disk. Use an existing SSH key, restrict port 22 to your client IP and keep port 8080 closed to the network. Confirm quote, quota and capacity before any billable provisioning.
  • These resources are author allocations, not measured minimums or a full-fit guarantee. Exact process RAM, setup disk needs, speed and quality remain unknown.
  • Read the explicit Apache-2.0 grant in the pinned Mistral model card, its linked official license and Unsloth base/license metadata. This GGUF is published by Unsloth, not Mistral AI.
  • This is the Instruct 2512 variant. Do not substitute Base, Reasoning, a different size or a similarly named older Ministral model.
  • One local JPEG plus text is supported by this configuration. Use only the exact matching same-revision Pixtral projector. Native Mistral guidance favors near-square images. No audio, video, tools or general OCR quality is validated.

Exact model and requirements

Artifact:
Unsloth (GGUF derivative); Mistral AI (native Instruct model) / Ministral 3 14B Instruct 2512 Q4_K_M, Unsloth derivative · checkpoint unsloth/Ministral-3-14B-Instruct-2512-GGUF
Publisher revision:
9b948841b705cc11285ff274b84ba6c885908b19
Artifact digest:
sha256:76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8
Download size:
7.67 GiB
Memory requirement (unknown):
Unknown — No exact CPU process peak for this pinned vision configuration.
System RAM / disk:
Unknown / Unknown
Placement:
single device. One CPU host; no tensor or pipeline sharding. CPU-only language model and vision projector via --mmproj-device none and --no-mmproj-offload.
KV cache:
F16 attention K/V cache, explicitly configured; exact process memory and cache bytes not measured.
Workload:
4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache unknown; repetitions Unknown.
Tokenizer:
Exact Ministral 3 14B Instruct GGUF tokenizer plus native pinned Mistral Jinja template · 9b948841b705cc11285ff274b84ba6c885908b19; native template 29439f81c2be264d8d393273f99e7db9c0961120
Sampling / reasoning:
Publisher recommends temperature below 0.1. This author selects greedy temperature 0, top_k 0, top_p 1, min_p 0, presence_penalty 0 and repeat_penalty 1; these remaining values are author controls, not a publisher preset. Validation max_tokens 512. Native Instruct variant, distinct from Reasoning and Base. No Qwen thinking flags or templates. Explicit concise system message limits the request to supplied evidence; no tools or generated reasoning trace is requested.
Runtime prerequisites:
Ubuntu 24.04 x86_64; See prerequisites above.

Official artifact · License

Mistral AI explicitly licenses the native Instruct model under Apache License 2.0 in its pinned model card and metadata, which link this license text. Unsloth declares Apache-2.0 and explicitly names that base. The native repository has no separate root LICENSE file at this revision (404); the explicit model-card grant and linked official Apache text establish the source. Read the license and retain required copyright, license, attribution and modification notices when redistributing covered work. No provider inference API subscription is required for public self-host downloads.

  • The 8,239,067,840-byte language file does not establish working RAM. Attention cache, compute buffers, runtime, OS and setup files add requirements.
  • Four CPU threads and 32 GiB RAM / 40 GiB disk are planning allocations. No measured fit, latency, throughput or quantization-quality claim is made.
  • The 878,053,536-byte F16 projector, pixel tensors, Pixtral encoder, patch merger, image-row break embeddings and warmup add unmeasured memory. Token batch/ubatch are explicitly 2048; that is a runtime token-processing allocation, not request concurrency or measured fit.

One-time setup and hardware

hardware
Not applicable — AWS hardware acquisition is included in compute rental; no purchased GPU required. Any separate hardware cost is not applicable.
AWS hardware acquisition is included in compute rental; no purchased GPU required. Any separate hardware cost is not applicable. Tax: unknown.
setup
Unknown — Initial provisioning/build time and labor cost are unknown.
Initial provisioning/build time and labor cost are unknown. Tax: unknown.

Recurring costs

compute
$0.26 / hour
AWS public us-east-1 Linux On-Demand rate USD 0.2646 per billed instance-hour, no paid preinstalled software. Eight hours USD 2.1168; 24 hours USD 6.3504 compute. Idle running hours bill. Storage, egress, tax and administration separate; no Spot/reservation/discount assumed. Capacity/quota unverified. Region: us-east-1. SKU: r7i.xlarge Linux On-Demand. Tax: excluded. Price dated Oct 15, 2026. Price source
storage
$0.08 / GB month
US East (N. Virginia) gp3 USD 0.08 per GB-month; AWS defines GB as 1024^3 bytes. Selected 40 GiB root volume is USD 3.20 per full month, prorated by provisioned duration. Baseline 3000 IOPS / 125 MB/s; no extras assumed. Retained snapshots/resources separate; storage persists after instance stop. Tax excluded. Region: us-east-1. SKU: EBS gp3 baseline 3000 IOPS / 125 MB/s. Tax: excluded. Price dated Oct 16, 2026. Price source
egress
Unknown — Data transfer price, allowances and traffic volume are unknown.
Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
administration
Unknown — Maintenance labor rate and hours are unknown.
Maintenance labor rate and hours are unknown. Tax: unknown.

Install the runtime

  1. 1. Build the exact CPU runtime

    Install host build dependencies and compile the pinned official source. No CUDA driver is required. Build and run natively on this same CPU; save resolved package/tool versions and build logs during actual execution.

    Command
    sudo apt-get update
    sudo apt-get install -y build-essential cmake git curl ca-certificates openssl python3
    mkdir -p "$HOME/ministral3-14b-vision-hosting/models"
    cd "$HOME/ministral3-14b-vision-hosting"
    git clone https://github.com/ggml-org/llama.cpp.git
    git -C llama.cpp checkout --detach 620d2225cc436ab0b001e3200e590e3b286ef9ab
    cmake -S llama.cpp -B llama.cpp/build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=OFF -DGGML_NATIVE=ON
    cmake --build llama.cpp/build --config Release -j 4
    ./llama.cpp/build/bin/llama-server --version

    Expected result: Checkout and build succeed; server version identifies the pinned source. Stop on failure. No inference has been executed by the author.

Download the model

  1. 1. Download language weights and native template

    Use immutable separate native/quantizer revisions and verify both SHA-256 values. Stop on either mismatch.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    curl --fail --location --output models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf 'https://huggingface.co/unsloth/Ministral-3-14B-Instruct-2512-GGUF/resolve/9b948841b705cc11285ff274b84ba6c885908b19/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf'
    curl --fail --location --output models/ministral-chat-template.jinja 'https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512/raw/29439f81c2be264d8d393273f99e7db9c0961120/chat_template.jinja'
    sha256sum --check <<'SHA256'
    76ce697c065f2e40f1e8e958118b02cab38e2c10a6015f7d7908036a292dc8c8  models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf
    2f545122222db8bb43ca0ea0c49e9185320a8670f7d35575b0da0eb48b1e8970  models/ministral-chat-template.jinja
    SHA256

    Expected result: Both files report OK. Language artifact 8,239,067,840 bytes; native template 11,913 bytes.

  2. 2. Download the exact matching projector and visual fixture

    The projector is specific to this Instruct 14B derivative. The official runtime newspaper image is a private diagnostic fixture; photograph redistribution rights are unknown and are not inferred from the code license.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    curl --fail --location --output models/mmproj-F16.gguf 'https://huggingface.co/unsloth/Ministral-3-14B-Instruct-2512-GGUF/resolve/9b948841b705cc11285ff274b84ba6c885908b19/mmproj-F16.gguf'
    curl --fail --location --output fixture.jpg 'https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/tools/mtmd/test-1.jpeg'
    sha256sum --check <<'SHA256'
    b0d2d17d39fa1fff5c1177b672c351cac55fb15b9794f03a8a551df185bffc10  models/mmproj-F16.gguf
    2dff664c0c8aaea18aff8cbe7e868845b775e90cdd7a0bac98df709b131deaa3  fixture.jpg
    SHA256

    Expected result: Projector and fixture report OK. Projector 878,053,536 bytes; fixture 124,071 bytes, 640 by 488 pixels. Stop on mismatch.

Configure

  1. 1. Create a private service credential

    Generate a local server password on your own host when following this guide. Preserve an existing key on repeat setup and never print or share it. This is not an OpenAI or Mistral API key.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    umask 077
    if [ ! -e .api-key ]; then
      openssl rand -hex 32 > .api-key
    fi
    test -s .api-key || { echo 'Restore the empty service-key file before continuing.'; exit 1; }
    chmod 600 .api-key

    Expected result: A nonempty private .api-key exists with mode 600. Existing key preserved; no secret printed.

  2. 2. Open an SSH tunnel from your client

    On your client replace the placeholders with an existing SSH key and this VM address. Keep the server bound to VM loopback; run verification in the SSH shell or forward localhost 8080 for your local client.

    Command
    ssh -i /path/to/existing-key.pem -N -L 8080:127.0.0.1:8080 ubuntu@YOUR_INSTANCE_ADDRESS

    Expected result: Tunnel remains open while the SSH session runs. Client localhost:8080 reaches only the selected VM loopback service.

Start the model

  1. 1. Start one authenticated CPU sequence

    Run in the foreground. Native Instruct chat template is explicitly pinned; no enable_thinking flag is used. One request slot and 4,096 total context tokens include prompt and output. Pixtral dynamic-resolution preprocessing uses bicubic resizing and model merge-size metadata. This author caps nominal image tokens at 1024 and leaves the model/runtime minimum unchanged; image row-break tokens add overhead. A 512-output cap leaves reserve within this short fixture workload. Actual counts remain unknown. Explicit 2048 token batch/ubatch avoid silently inheriting a smaller image processing cap; this does not prove fit.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    ./llama.cpp/build/bin/llama-server -m models/Ministral-3-14B-Instruct-2512-Q4_K_M.gguf --alias ministral3-14b --host 127.0.0.1 --port 8080 --api-key "$MINISTRAL14B_SERVICE_KEY" --device none -ngl 0 -t 4 -c 4096 -np 1 --cache-type-k f16 --cache-type-v f16 --jinja --chat-template-file models/ministral-chat-template.jinja --skip-chat-parsing --reasoning-format none --temp 0 --top-k 0 --top-p 1 --min-p 0 --presence-penalty 0 --repeat-penalty 1 --mmproj models/mmproj-F16.gguf --no-mmproj-offload --mmproj-device none --image-max-tokens 1024 --mtmd-batch-max-tokens 2048 -b 2048 -ub 2048

    Expected result: Model loads and loopback listener starts. Stop on architecture, template or projector errors. Local/privileged users may see process arguments; use a trusted host.

Connect to your endpoint

http://127.0.0.1:8080/v1

Same host loopback only. From your client use the SSH tunnel below; port 8080 is never publicly exposed.

Access: loopback. Private reader-generated service key in Authorization: Bearer for chat and /props. /health is public on loopback. Trusted host required; this is not a provider API key.

Verify the setup

  1. 1. Verify readiness, authenticated text and unauthorized rejection

    Use a second terminal on the same host, or inside the VM SSH shell. Health is public on loopback. Inspect summary facts and finish_reason; wording is not prescribed.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    curl --fail http://127.0.0.1:8080/health
    curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"system","content":"Answer using only the supplied evidence. Do not invent facts or use tools."},{"role":"user","content":"Summarize only this supplied passage in one sentence: The community library opens at 9am on weekdays and closes at 6pm. On Saturday it opens at 10am and closes at 4pm. It is closed on Sunday."}],"max_tokens":512,"temperature":0,"top_k":0,"top_p":1,"min_p":0,"presence_penalty":0,"repeat_penalty":1}'
    curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' --data-binary '{"model":"ministral3-14b","messages":[{"role":"user","content":"Hello"}]}'

    Expected result: Ready health returns HTTP 200. Authenticated response has nonempty choices[0].message.content with accurate weekday/Saturday hours and Sunday closure; finish_reason is not length. Request without the key returns HTTP 401. Wrong facts or failed access checks fail this smoke test.

  2. 2. Verify single-image grounding

    The JSON content array contains text and image_url with a base64 JPEG data URI; no server remote-image fetching or Transformers processor is used. Native Pixtral patch-merge and [IMG_BREAK]/[IMG_END] boundaries are handled by the pinned runtime. Fixture visibly shows The New York Times and MEN WALK ON MOON. Pass criterion is those grounded observations, not an exact generated paragraph or a general OCR score.

    Command
    cd "$HOME/ministral3-14b-vision-hosting"
    export MINISTRAL14B_SERVICE_KEY="$(cat .api-key)"
    curl --fail http://127.0.0.1:8080/props -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" --output image-props.json
    python3 - <<'PYREQUEST'
    import base64,json,pathlib
    props=json.loads(pathlib.Path('image-props.json').read_text())
    assert props['modalities']['vision'] is True, 'Vision projector is not active'
    image=base64.b64encode(pathlib.Path('fixture.jpg').read_bytes()).decode()
    request={'model':'ministral3-14b','messages':[{'role':'system','content':'Answer using only the supplied image. Do not invent facts or use tools.'},{'role':'user','content':[{'type':'text','text':'Identify this newspaper and transcribe its largest headline. Briefly describe the visible front page.'},{'type':'image_url','image_url':{'url':'data:image/jpeg;base64,'+image}}]}],'max_tokens':512,'temperature':0,'top_k':0,'top_p':1,'min_p':0,'presence_penalty':0,'repeat_penalty':1}
    pathlib.Path('image-request.json').write_text(json.dumps(request))
    PYREQUEST
    curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $MINISTRAL14B_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary @image-request.json --output image-response.json
    cat image-response.json

    Expected result: Authenticated /props reports vision true and chat returns HTTP 200 with nonempty content identifying The New York Times and MEN WALK ON MOON. Inspect grounded accuracy and finish_reason not length. Wrong newspaper/headline, truncation or image rejection fails; no exact output or confidence is promised.

Performance evidence

No compatible measurement available. Documented support and estimated memory do not establish response speed.

Limits and troubleshooting

  • Documented configuration only. No build, weights, model inference, memory fit, speed or quality measurement was executed by the author.
  • Instruct 2512 is a specific native variant. Its dense 40-layer text architecture uses Mistral/Ministral YaRN and attention-temperature metadata; the exact runtime supports that branch. No Qwen hybrid-state formula, reasoning switch or sampler is transferred.
  • The publisher advertises 262,144 context positions. This guide configures only 4,096 total prompt/output tokens and one slot; 512 is an output cap, not a measured length.
  • Greedy temperature zero satisfies the model-card below-0.1 guidance. Other decoding controls are author choices; no exact response or full-precision equivalence is promised.
  • The native Instruct instructions support images and explicitly exclude audio/video. This guide does not validate tools, structured-output schemas, audio, video or long-context behavior.
  • Package/build dependencies resolve at install time. Preserve exact source checkout, resolved versions and build logs with any future execution evidence.
  • Loopback plus a service key does not protect against privileged local users. Shared/public serving requires separate access/TLS/operations design.
  • Version-specific vision support is sourced from the pinned Mistral3 converter and Pixtral graph: spatial merge 2, preprojector normalization and GELU projection. This establishes documented mapping, not an executed projector-compatibility or visual-quality result.
  • Runtime Pixtral uses dynamic image sizing, bicubic resize and native merge metadata. The configured nominal image ceiling does not count every row-break/template token. Do not use Qwen minimum-token grounding claims or Transformers pixel controls as native server request fields. Actual image/request tokens remain unknown.
  • Mistral favors near-square inputs; the source fixture is 640 by 488 pixels, about 1.31:1. It is not cropped or upscaled by this guide. A different image/resolution/workload requires separate verification. The headline check is narrow and does not establish general OCR accuracy.
Checksum, architecture or template failure
Stop. Confirm exact model/quantizer/template revisions and file hashes, native CPU source commit and Instruct variant. Do not substitute Base/Reasoning or an older generic runtime.
Out of memory or context overflow
Stop the server, free/provision resources or shorten input/output. Record any new context, batch or hardware configuration. Allocated capacity does not guarantee fit; do not suppress overflow.
Connection refused or HTTP 401
Check foreground logs, loopback port and matching private service key. For cloud, confirm the SSH tunnel targets the correct VM. Keep port 8080 closed to public ingress.
Wrong image answer or projector rejection
Inspect the supplied evidence and response. Confirm exact matching projector, /props vision true, native content array and image-token budget. Stop on dimension/template mismatch; never replace the projector with a sibling file.

Stop the model

  1. 1. Stop the server

    Press Ctrl+C in the foreground server terminal. Close any client SSH tunnel with Ctrl+C and unset the key in each shell.

    Command
    unset MINISTRAL14B_SERVICE_KEY

    Expected result: The intended localhost:8080 endpoint stops serving; cloud compute still bills until its lifecycle is stopped/terminated.

Uninstall

  1. 1. Remove dedicated walkthrough files

    Back up wanted requests/results and logs. Confirm this path before removing only its dedicated model/build/key folder; shared apt packages remain.

    Command
    rm -r -- "$HOME/ministral3-14b-vision-hosting"

    Expected result: Dedicated model, template, build, request and service-key files are removed. Shared system dependencies remain.

Shut down cloud resources

  1. 1. End cloud billing resources

    In EC2 us-east-1, stop for later reuse or terminate this exact VM. Review Delete on termination for its root volume. Delete unwanted detached EBS volumes, snapshots and reserved/Elastic/public IP resources. Stopped VM storage and retained resources may still bill. Check Bills/Cost Explorer later for final usage.

    Expected result: Exact instance is stopped/terminated as intended; no unwanted attached/retained billed resources remain. Instance compute stops only after its lifecycle transition, not when llama-server stops.

Sources and verification

Sources checked Oct 16, 2026. Verification source

Related guides

Compare this configuration

Pricing

Token pricing for Ministral 3 14B 2512 API usage.

Input Tokens

$0.20/M

per million tokens

Output Tokens

$0.20/M

per million tokens

Cache read: $0.0200/M tokens

Mistral AI logo

Frontier AI in your hands

4 Tools5 ModelsFounded 2023Paris, France
View full profile

Tools by Mistral AI

Other AI tools from the same organization.

AI Models by Mistral AI

AI models from the same organization.

ModelContext WindowPrice (In / Out per M)
Leanstral 1.5Current256KFree / Free
Mistral Small 4Current262K$0.15 / $0.60
Mistral Small CreativeDeprecated33KDeprecated
Devstral 2 2512Deprecated262KDeprecated

MCP Servers by Mistral AI

Connect this tool to AI assistants via the Model Context Protocol.

Related News

Latest coverage and updates.