Run Nemotron 3 Nano on a 64 GiB Intel desktop
Serve the NVIDIA Nemotron 3 Nano hybrid MoE/Mamba text model with an exact Unsloth Q4_K_M derivative and pinned publisher template. This deliberate non-thinking configuration uses one CPU sequence, eight threads, 4,096 total context tokens and a 128-token output cap. 64 GiB RAM and 80 GiB disk are planning allocations; full fit and performance are unknown.
- Hardware
- Intel Core i5-12400 desktop, 8 inference threads, 64 GiB RAM
- Runtime
- llama.cpp v0.7.0 (620d2225cc436ab0b001e3200e590e3b286ef9ab) · CPU
- Model format
- GGUF · GGUF Q4_K_M mixed quantization · Q4_K_M mixed quantization 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 Intel Core i5-12400 desktop (6 cores / 12 threads, AVX2) with Ubuntu 24.04 x86_64, 64 GiB installed RAM and 80 GiB free disk. Allocate eight inference threads. Before a RAM upgrade, confirm motherboard, DIMM and OS compatibility; Intel’s 128 GB CPU maximum depends on memory type and does not validate a particular desktop. Build and run natively on this same CPU.
- 64 GiB RAM, 80 GiB free/root disk and eight threads are author allocations for the full artifact plus runtime and OS resources, not measured minimums or fit guarantees.
- Read both custom NVIDIA license declarations described below; do not treat this as Apache licensing.
- Use the exact Nano 30B A3B model. Publisher gives 30B total and 3.5B active parameters, with 23 Mamba-2 blocks, 23 MoE blocks and six attention blocks; the runtime calls the 52-layer variant 31B_A3_5B. Branding is not an exact three-billion active count.
Exact model and requirements
- Artifact:
- Unsloth (quantizer); NVIDIA (base model) / Nemotron-3-Nano-30B-A3B Q4_K_M · checkpoint unsloth/Nemotron-3-Nano-30B-A3B-GGUF
- Publisher revision:
- 9ad8b366c308f931b2a96b9306f0b41aef9cd405
- Artifact digest:
- sha256:0e7f6e51fdd9039928749d07eed9e846dbfd97681646544c5406bcdd788e5940
- Download size:
- 22.89 GiB
- Memory requirement (unknown):
- Unknown — No exact peak for Nemotron hybrid MoE/Mamba Q4_K_M configuration.
- System RAM / disk:
- Unknown / Unknown
- Placement:
- single device. One CPU host; no tensor/pipeline sharding. CPU-only execution; --device none and zero GPU layers. No disk or accelerator offload.
- KV cache:
- F16 attention K and V only; recurrent Mamba state precision and full hybrid memory are separately runtime-managed and not established by these flags.
- Workload:
- 4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache unknown; repetitions Unknown.
- Tokenizer:
- Exact derivative tokenizer with pinned NVIDIA native Jinja template · 9ad8b366c308f931b2a96b9306f0b41aef9cd405; template bf77c3174f68ad409e1c2aa60daeb46e32d1c606
- Sampling / reasoning:
- Author bounded non-thinking sampler uses source generation defaults temperature 1.0 and top_p 1.0; top_k 0, min_p 0, repetition 1.0 and frequency/presence 0 are explicit author settings. Output cap 128. No tool-calling recommendation is transferred. Native template enable_thinking=False emits closed empty thinking prefill; --reasoning off requests non-thinking mode. No tool executor or multimodal input.
- Runtime prerequisites:
- Ubuntu 24.04 x86_64; See prerequisites above.
Custom NVIDIA terms, not Apache. The current base card names NVIDIA Nemotron Open Model License (December 15, 2025), while this pinned Unsloth derivative card links NVIDIA Open Model License (October 24, 2025). Read both declarations and full terms; they are not identical. The older derivative-linked terms include guardrail and Trustworthy AI conditions. Both licenses permit commercial use subject to conditions, and require license/notice compliance on redistribution. This guide does not resolve or relicense that metadata difference.
- nemotron-chat.jinja · 0 GiB · revision bf77c3174f68ad409e1c2aa60daeb46e32d1c606
- All expert weights and recurrent state remain relevant even though only 3.5B publisher-rounded parameters are active per token.
- The 24,574,373,664-byte GGUF excludes runtime buffers, attention cache, Mamba recurrent state, OS and build files. 64 GiB RAM and 80 GiB disk are allocations, not measured minimums or fit guarantees.
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 80 GiB free-disk walkthrough allocation is an author choice, not a measured requirement.
- Incremental cost of local disk capacity is unknown. The 80 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. Build the pinned CPU server
Install build dependencies and compile the exact official source revision. These packages are system shared dependencies; no CUDA/GPU driver is required. GGML_NATIVE=ON selects -march=native for this GNU/Linux x86 build, compiling for the host CPU. Build and run on the same machine; no AVX-512 requirement is imposed on the i5-12400.
Commandsudo apt-get update sudo apt-get install -y build-essential cmake git curl ca-certificates openssl mkdir -p "$HOME/nemotron3nano-hosting/models" cd "$HOME/nemotron3nano-hosting" git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp git checkout --detach 620d2225cc436ab0b001e3200e590e3b286ef9ab cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=OFF -DGGML_NATIVE=ON cmake --build build --config Release -j 8 ./build/bin/llama-server --versionExpected result: Build succeeds and server version identifies pinned source. Stop if checkout or build fails.
Download the model
1. Download and verify the exact GGUF
Download the full Unsloth derivative and independently pinned NVIDIA native template; verify both before loading. All experts are included in the full artifact. Access metadata is public/ungated as captured; no paid provider API is needed.
Commandcd "$HOME/nemotron3nano-hosting" curl --fail --location --output models/Nemotron-3-Nano-30B-A3B-Q4_K_M.gguf 'https://huggingface.co/unsloth/Nemotron-3-Nano-30B-A3B-GGUF/resolve/9ad8b366c308f931b2a96b9306f0b41aef9cd405/Nemotron-3-Nano-30B-A3B-Q4_K_M.gguf' curl --fail --location --output nemotron-chat.jinja 'https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/raw/bf77c3174f68ad409e1c2aa60daeb46e32d1c606/chat_template.jinja' sha256sum --check <<'SHA256' 0e7f6e51fdd9039928749d07eed9e846dbfd97681646544c5406bcdd788e5940 models/Nemotron-3-Nano-30B-A3B-Q4_K_M.gguf ab7813c3abdd9cb655905a410728b26c7884eca45ddfab8d9f931553485a7862 nemotron-chat.jinja SHA256Expected result: Both hashes report OK; GGUF 24,574,373,664 bytes and template 10,504 bytes. Stop on mismatch.
Configure
1. Create a private service credential
Generate this only on your own host when following the guide. It is a local service password, not an OpenAI/provider credential. Keep it private and never paste it into tickets. Create it only when absent; preserve an existing key so a repeated setup does not silently rotate access. It is not created during this documentation run.
Commandcd "$HOME/nemotron3nano-hosting" umask 077 if [ ! -e .api-key ]; then openssl rand -hex 32 > .api-key fi test -s .api-key || { echo 'Existing .api-key is empty; restore it before continuing.'; exit 1; } chmod 600 .api-keyExpected result: A non-empty private .api-key file exists; existing key preserved. No secret is printed.
Start the model
1. Start one CPU-only sequence
Use the pinned native NemotronH MoE/Mamba implementation, complete CPU residency and one slot. Native Jinja enable_thinking=false produces a closed empty thinking prefill; --reasoning off disables requested reasoning. Reserve 128 output tokens inside 4,096 total context. F16 K/V settings apply to attention cache, not all recurrent state.
Commandcd "$HOME/nemotron3nano-hosting" export NEMOTRON3_SERVICE_KEY="$(cat .api-key)" ./llama.cpp/build/bin/llama-server -m models/Nemotron-3-Nano-30B-A3B-Q4_K_M.gguf --alias nemotron3nano --host 127.0.0.1 --port 8080 --api-key "$NEMOTRON3_SERVICE_KEY" --device none -ngl 0 -t 8 -c 4096 -np 1 --cache-type-k f16 --cache-type-v f16 --jinja --chat-template-file nemotron-chat.jinja --chat-template-kwargs '{"enable_thinking":false}' --reasoning off --temp 1.0 --top-k 0 --top-p 1.0 --min-p 0.0 --repeat-penalty 1.0 --frequency-penalty 0.0 --presence-penalty 0.0Expected result: Model initializes and listener starts. Pass health and authenticated chat checks before relying on the service. Command-line credentials may be visible to privileged/local users; trusted host required.
Connect to your endpoint
http://127.0.0.1:8080/v1
Same desktop loopback only; no LAN/public listener. Use on a trusted single-user host.
Access: loopback. Reader-generated private service key in Authorization: Bearer header for chat; /health is public on loopback. Run the client on this same desktop. Keep the key private; this is not an OpenAI API key.
Verify the setup
1. Check readiness and authenticated text generation
Run checks from a second terminal on the server. Health is public on loopback. Check the authenticated chat’s non-empty final content against the supplied passage and ensure finish_reason is not length; no exact wording is guaranteed. This is a short functional summarization check, not a quality benchmark.
Commandcd "$HOME/nemotron3nano-hosting" export NEMOTRON3_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 $NEMOTRON3_SERVICE_KEY" -H 'Content-Type: application/json' -d '{"model":"nemotron3nano","messages":[{"role":"user","content":"Summarize this supplied passage in one sentence without adding facts: 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":128,"temperature":1.0,"top_k":0,"top_p":1.0,"min_p":0.0,"repeat_penalty":1.0}' curl -o /dev/null -s -w '%{http_code}\n' http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"nemotron3nano","messages":[{"role":"user","content":"Hello"}]}'Expected result: Health HTTP 200 when ready; authorized response contains non-empty choices[0].message.content accurately summarizing the supplied opening hours, with finish_reason not length; unauthorized chat returns HTTP 401. Inspect facts yourself; generated text can be wrong.
Performance evidence
No compatible measurement available. Documented support and estimated memory do not establish response speed.
Limits and troubleshooting
- Documented instructions only. Exact startup compatibility, full memory fit, latency, throughput and output quality are unknown; no model build or inference was run.
- Publisher gives 30B total and 3.5B active parameters per token. A3B is model branding; full routed/shared expert weights remain resident in this CPU configuration.
- Hybrid pattern has 23 Mamba blocks, 23 MoE blocks and six attention blocks. Routed experts total 128 plus one shared, with six routed experts selected per token. Active computation does not imply a small storage footprint.
- Publisher supports up to 1M context in its documentation but ships 262,144 default positions in config. This recipe selects 4,096 total tokens, one sequence and 128 output tokens; no long-context fit or quality is inferred.
- F16 attention K/V flags do not establish recurrent-state precision. The publisher HF float32 Mamba cache setting is not transferred as a llama.cpp memory claim. Full hybrid peak remains unknown.
- Non-thinking uses the exact NVIDIA template with enable_thinking=false and runtime reasoning off. No separate thinking traces, tool executor, multimodal input or provider API is configured.
- Source generation defaults temperature 1.0/top_p 1.0 are used as an author non-thinking choice; publisher .6/.95 advice specifically concerns tool calling and is not transferred. Top-k/min-p disabled explicitly.
- Custom license metadata differs between current base and derivative; read both captured declarations and terms. This guide does not claim Apache licensing, license equivalence or legal clearance.
- The paid OpenRouter model metadata maps this canonical API identifier to the exact NVIDIA checkpoint. The separate frozen :free canonical remains preserved and identity-held; no current free/API availability claim is made here.
- 64 GiB RAM, 80 GiB disk and eight threads are author allocations, not measured minimums. Original dated compute/storage prices and unknown egress/admin/power remain distinct.
- Dependencies resolve at installation. Build on the same CPU, save versions and logs, inspect all output against supplied facts. Full model-family coverage is not final.
- Download or checksum failure
- Check exact pinned Unsloth GGUF and NVIDIA template URLs, filename case and both hashes. Do not serve mismatched bytes.
- Unsupported architecture or build failure
- Use the exact llama.cpp commit pinned in the build and download steps, with native NemotronH hybrid MoE/Mamba support. Do not silently substitute an older package.
- Out of memory or context overflow
- Stop the service and inspect host memory. Shorten prompt/output within 4,096 total tokens or explicitly change allocation. Full fit remains unknown.
- HTTP 401 or connection refused
- Check foreground server startup, loopback port 8080 and matching Bearer service key. Run the client on the same desktop.
- Poor or truncated summary
- Confirm exact Nemotron Nano GGUF, exact NVIDIA template, enable_thinking=false, reasoning off and sampler. Inspect finish_reason and supplied facts. Increase output cap only within total context and record the changed workload; smoke checks do not establish reliable quality.
Stop the model
1. Stop the service
Press Ctrl+C in server terminal. Unset key in each shell. Confirm this desktop localhost:8080 no longer serves the model.
Commandunset NEMOTRON3_SERVICE_KEYExpected result: Server stops and localhost:8080 stops serving.
Uninstall
1. Remove dedicated model, build and credential files
Back up wanted logs/files first. Remove only this walkthrough directory after confirming its path. Shared apt packages can remain; do not remove other workloads.
Commandrm -r -- "$HOME/nemotron3nano-hosting"Expected result: Dedicated files and local service credential removed; shared system dependencies remain.
Sources and verification
Sources checked Oct 16, 2026. Verification source
- https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/raw/bf77c3174f68ad409e1c2aa60daeb46e32d1c606/README.mdpublisher · retrieved Oct 16, 2026
- https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/raw/bf77c3174f68ad409e1c2aa60daeb46e32d1c606/config.jsonpublisher · retrieved Oct 16, 2026
- https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/raw/bf77c3174f68ad409e1c2aa60daeb46e32d1c606/generation_config.jsonpublisher · retrieved Oct 16, 2026
- https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/raw/bf77c3174f68ad409e1c2aa60daeb46e32d1c606/chat_template.jinjapublisher · retrieved Oct 16, 2026
- https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-nemotron-open-model-license/publisher · retrieved Oct 16, 2026
- https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/publisher · retrieved Oct 16, 2026
- https://huggingface.co/api/models/unsloth/Nemotron-3-Nano-30B-A3B-GGUF?blobs=truepublisher · retrieved Oct 16, 2026
- https://huggingface.co/unsloth/Nemotron-3-Nano-30B-A3B-GGUF/raw/9ad8b366c308f931b2a96b9306f0b41aef9cd405/README.mdpublisher · retrieved Oct 16, 2026
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/src/models/nemotron-h.cppruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/conversion/nemotron.pyruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/src/llama-memory-recurrent.cppruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/common/arg.cppruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://www.intel.com/content/www/us/en/products/sku/134586/intel-core-i512400-processor-18m-cache-up-to-4-40-ghz/specifications.htmlmanufacturer · retrieved Oct 16, 2026
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/docs/build.mdruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/ggml/src/ggml-cpu/CMakeLists.txtruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://docs.liquid.ai/lfm/inference/llama-cppruntime maintainer · retrieved Oct 16, 2026
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/tools/server/README.mdruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://api.github.com/repos/ggml-org/llama.cpp/releases/latestruntime maintainer · retrieved Oct 16, 2026