Skip to content
all longreads
Longread#LocalAI#MLSystems

Local LLM Inference in 2026: Models, Hardware, Performance, and Cost

A practical atlas of local deployment, from a small model on an existing computer to 120B MoE on a workstation. There is no universal ranking here. Instead, the article separates memory arithmetic, current prices, prompt-processing and generation measurements, license boundaries, and configurations for actual work.

8 August 2026≈ 38 minprimary sources ↓

The research, prices, and tool state were checked against sources on 8 August 2026. Prices are snapshots of public US stores/MSRP before tax; availability and regional prices differ.

Short answer
24–32 GB

The practical sweet spot: gpt-oss-20b, Qwen3.6-35B-A3B, Gemma 4 26B-A4B, and 14–27B dense models at Q4.

64–128 GB

The 70–120B class: gpt-oss-120b, Llama 4 Scout, and large Qwen models. Capacity grows faster than speed, so memory bandwidth matters.

Purchase

Replay your trace on the exact quant and runtime first. “The model loaded” proves capacity, not the usefulness of the resulting system.

01

Local is a trust and latency boundary, not a case size

In this article, local inference means running accessible weights inside a boundary controlled by the owner: a phone, laptop, workstation, or a small office server. A device may expose a local HTTP API to several people. The decisive property is the data and operations boundary, not whether the computer literally sits on a desk.

Local does not have to replace a cloud API. It is compelling when data cannot leave, connectivity is unreliable, network-independent latency matters, a specific model or adapter must be pinned, or utilization is stable enough to amortize the device. Cloud handles bursts, exposes frontier models earlier, and externalizes drivers, cooling, and updates.

Figure 1 · the local inference selection envelope
The local inference envelopeLOCAL IS A CONSTRAINT ENVELOPEUSEFUL MODELquality · capabilitylicenseRESIDENCY + CONTEXTweights · KV · headroomBANDWIDTH + SOFTWAREdecode speed · supported kernelsWORKLOADinput / output lengthconcurrencyOPERATING MODEoffline · desktop APIshared serverParameter count alone does not select a model–hardware pair

Four meanings of efficient

  • The model fits together with context and working buffers without constant CPU offload.
  • First-token and streaming pace match the use case: a background job tolerates seconds; a code editor does not.
  • Quality passes the task set, including format, target language, tools, and refusal behavior.
  • Fully loaded cost, privacy, and operations beat the available cloud or smaller-model alternative.

Local product = exact weights × exact format × runtime × context × concurrency × license. A family name without the other factors is not a deployable configuration.

Three distinct local boundaries

The first is a model running directly on the user's device. The request, cache, and result never leave the phone or laptop; the application works offline and can use local files without a separate server. Power draw, install size, cold-start time, and compatibility with the NPU, Metal, or integrated graphics matter here. Peak speed is rarely the only objective: the model must not drain the battery or evict the primary application from memory.

The second is a personal workstation. The model listens only on localhost or the home network, while a code editor, RAG pipeline, or agent reaches it through a compatible API. This setup can accommodate a discrete GPU, a large SSD, and a persistent server process, but it is still optimized for one active person. Demand usually arrives in bursts: a few minutes of agent activity followed by long idle periods. Fast first-token latency, the ability to release memory, and quiet cooling can therefore matter more than maximum combined throughput across concurrent requests.

The third is a team server inside an office, branch, or private cloud. Data remains on a controlled network, but the system is no longer personal: it needs a queue, authentication, quotas, access logs, redundancy, and a model-update policy. The same computer may physically sit under a desk, yet operationally it is a production service. Comparing it only with a desktop-app subscription is misleading; the real alternative is a cloud API with comparable SLOs, observability, and user count.

Finally, local does not automatically mean private. A model loader may contact an external registry, the shell may send telemetry, an agent tool may call a search engine, and conversation backups may land in the cloud. For sensitive workloads, audit the entire data path: name resolution and weight downloads, request logs, plugins, updates, backups, and outbound connections. The trust boundary is set by the outermost component that sees the original request, not by where matrix multiplication happens.

02

Memory first: weights, KV cache, and reserve

The weight floor can be estimated before downloading. For a model with P billion parameters and b bits per parameter, the arithmetic minimum is P × b / 8 gigabytes. A GGUF, GPTQ, AWQ, or FP4 artifact also stores scales, group coefficients, and metadata. Runtime tensors, graphs, the tokenizer, a vision/audio encoder, and the operating system consume memory as well.

Q4/Q5 weight quantization reduces artifact size and memory traffic, but does not promise equal speed or quality. llama.cpp Q4_K_M, AWQ W4A16, GPTQ Int4, and Blackwell MXFP4 are different layouts with different kernels. “Four bit” without the artifact and backend is an incomplete configuration.

Mpeak ≈ Mweights artifact + MKV + Mruntime + MOS/vision
Mconfiguration ≥ Mpeak × 1.15–1.25
the additional 15–25% covers workload variation, background processes, and runtime updates
Figure 2 · the complete memory budget
Local inference memory budgetFIT IS A SUM, NOT A FILE SIZEWEIGHTSP × bits / 8+ scales & metadataKV CACHElayers × tokens× KV headsRUNTIMEgraphs · buffersvision · OS++PLANNING RULEmemory capacity ≥ estimated peak × 1.15–1.2535B AT RAW Q4≈ 17.5 GB floorREAL ARTIFACTpacking adds bytesLONG CONTEXTcan consume the reserve“It loads” is not the same as “it serves the workload”

The second large term is the KV cache. Its size depends on layer count, KV heads, context length, head dimension, cache precision, and the number of requests processed in parallel: each active chat or generation needs its own KV state. A documented 128K, 256K, or one-million-token architecture limit is therefore not a free local API setting.

Figure 3 · KV-cache formula reused from the systems-inference longread
KV cache memory formulaKV MEMORY GROWS WITH CONTEXT AND CONCURRENCY2 (K and V)×layers×KV heads×head dim×bytes×tokensMulti-Head Attention (MHA)one KV head per query headlargest cacheGrouped-Query Attention (GQA)several groups share K and Vmiddle groundMulti-Query Attention (MQA)one shared K and V setsmallest cacheFLEET BUDGETcache per token × active tokens × replicas + fragmentation + headroomThe model architecture fixes the coefficient; the workload supplies the multiplier

A memory worksheet, not a “B → GB” lookup table

Start with the actual file size, not the parameter count. If a Q4 artifact occupies 19 GB on disk, use 19 GB in the memory budget rather than the 17.5 GB arithmetic floor. Next, launch the intended runtime once and record resident memory before and immediately after loading: some engines unpack part of the tensors, reserve kernel workspace, or keep copies of service metadata. The post-load reading already includes resident weights, so the file size must not be added again. The file remains a floor and sanity check; the delta from the pre-load process shows the cost of that format and runtime.

Then add KV cache for the working context rather than the advertised maximum. With Multi-Head Attention (MHA), the number of KV heads matches the number of attention heads; with Grouped-Query Attention (GQA), several query heads share a key-value pair; with Multi-Query Attention (MQA), there is one such pair per layer. Two models with the same size and context window can therefore need radically different cache capacity. KV precision is also separate from weight precision: Q4 weights do not imply a four-bit cache. FP16, FP8, and Q8 KV change memory, speed, and sometimes quality in different ways, and support for each mode depends on the engine.

When estimating chat memory, use the distribution of context already occupied when generation starts rather than the model's maximum context window—for example, 256K tokens. A typical request might start with 4K tokens of instructions and documents, the P95 might be 24K, and an occasional repository analysis might reach 80K. Designing the whole system around the rare maximum is expensive; truncating everything to the average is risky. A practical setup guarantees P95, uses a separate profile or lower concurrency for the long tail, and makes the cost of a large context visible to the user.

Concurrency multiplies per-sequence state almost linearly, but not the weights. One process serving four chats does not hold four model copies, yet it does hold four KV sets and their working buffers. Images add tokens and vision-encoder memory; speculative decoding adds a draft model or its cache; LoRA adapters add their own tensors. With unified memory, a nominal 128 GB cannot all be promised to the model: the OS, applications, and display buffers share the same pool. On a discrete card, system RAM does not become VRAM without offload over a slower bus.

Fit test = peak resident memory of the target process set at P95 context and working concurrency + multimodal/draft components not covered by that measurement + OS and application reserve. That peak already includes weights, runtime overhead, and KV cache.

On a 24 GB card, a 27B dense Q4 with a 13.5 GB arithmetic floor looks spacious. The real artifact, long KV, images, and CUDA graphs can consume that reserve. For Qwen3.6-35B-A3B, the Q4 floor is 17.5 GB, but the official FP8 checkpoint is about 37.5 GB. It belongs on 48 GB, while a community Q4 on 24 GB needs short context and quality validation.

Dense and MoE answer different questions

A dense model touches almost all weights for every token. A mixture-of-experts model normally keeps all experts resident while its router activates a subset. A 35B-A3B model therefore stores roughly 35B parameters while activating about 3B per token. Those 3B already include the shared expert, so it should not be added again. This is the source of modern local MoE speed—and the reason active parameters must never be treated as a memory requirement.

Figure 4 · dense versus mixture of experts
Dense and mixture-of-experts models on local hardwareCAPACITY FOLLOWS TOTAL · SPEED FOLLOWS ACTIVEDENSE 27Ball resident weights participateMOE 35B-A3Ball experts reside · a subset firesEVERY TOKEN READSthe whole dense stackROUTER SELECTSactive experts per tokenFIT ≈ TOTAL BYTESPER TOKEN ≈ ALL WEIGHTSFIT ≈ TOTAL BYTESPER TOKEN ≈ ACTIVE + ROUTER + ATTENTIONMoE makes large resident models fast; it does not make them small
03

The model map on 8 August 2026

Open weights no longer form one ladder where more parameters automatically mean a better local product. Multimodality, tool support, attention mechanism, active expert fraction, available quantization formats, and license terms can matter more than a small difference in parameter count. The table is a tiered shortlist, not a quality ranking.

Figure 5 · model tiers and useful work
A model map for local inferenceSELECT A CAPABILITY TIER, THEN A CHECKPOINT2–8B totaledge / voice routerclassification · extractionGemma E2B/E4B · Qwen3.5≈ 4–8 GB DEVICE8–14Bprivate assistantRAG · light codingMinistral 3 · Gemma 4≈ 12–24 GB20–35Bcoding & agentsmultimodal documentsgpt-oss · Qwen3.6≈ 24–48 GB100–120Bshared workstationreasoning / evaluationgpt-oss · Llama 4≈ 80–128+ GBLOW CAPEX · LOW LATENCYMORE CAPACITY · MORE OPERATIONSThe largest model that fits is rarely the best local product
Parameters / tier
2–8Btotal parameters
Examples
Gemma 4 E2B/E4B; Ministral 3 3B; Qwen3.5 2B/4B
Memory
Gemma 4 E2B/E4B: 2.3/4.5B effective, but 5.1/8B stored parameters; Q4 weights ≈ 2.6/4 GB, plan for 6–8 GB
Fits
Offline commands, classification, extraction, a voice router, short answers
Constraint
High speed and low cost, but weaker complex reasoning and coding
Parameters / tier
8–14Beveryday tier
Examples
Qwen3.5 9B; Gemma 4 12B; Ministral 3 8B/14B
Memory
8–14B stored parameters; dense models use almost all of them for every token; Q4 weights ≈ 4–7 GB, plan for 12–16 GB
Fits
Private chat, RAG, documents, light coding, basic multimodal
Constraint
The best first local tier; quality still needs validation on your tasks
Parameters / tier
27–31Bdense models
Examples
Qwen3.6 27B; Gemma 4 31B
Memory
27–31B stored parameters; dense models use almost all of them for every token; Q4 weights ≈ 13.5–15.5 GB, plan for 24–32 GB
Fits
Coding, analysis, long-document RAG, multimodal agents
Constraint
Predictable quality, but every token reads almost all weights
Parameters / tier
20–35BMoE sweet spot
Examples
gpt-oss-20b; Qwen3.6-35B-A3B; Gemma 4 26B-A4B; Nemotron 3 Nano 30B-A3B
Memory
20–35B total, with 3–4B active per token; native FP4/Q4 weights occupy ≈ 11–20 GB, plan for 24–32 GB
Fits
Local agents, coding, tools, reasoning, fast interaction
Constraint
Total weights reside, speed tracks active weights; architecture support is critical
Parameters / tier
100–122Bworkstation
Examples
gpt-oss-120b; Qwen3.5-122B-A10B; Llama 4 Scout 109B-A17B; Mistral Small 4 119B-A6B
Memory
109–122B total, with 5–17B active per token; native FP4/Q4–Q5 weights occupy ≈ 59–76 GB, plan for 80–128 GB
Fits
Strong reasoning, a small-team shared server, evaluating smaller models
Constraint
Mistral Small 4 officially requires server-class hardware; its local low-bit path is experimental. Licenses and formats differ
Parameters / tier
284B+local boundary
Examples
DeepSeek V4 Flash 284B-A13B; Qwen3.5 397B-A17B; Kimi K2.7 Code 1T-A32B
Memory
284B–1T total, with 13–32B active per token; the Q4 lower bound starts at ≈ 142 GB, while Kimi's official INT4 artifact is about 595 GB; expect multiple devices and hundreds of gigabytes of memory
Fits
Research, compatibility, an offline cluster—not a normal personal assistant
Constraint
Multiple devices, networking, and offload often erase the advantage implied by “local”

The most practical candidates

On an existing laptop, begin with 3–12B: Gemma 4 E4B/12B, Ministral 3, or Qwen3.5 4B/9B. For a new 24–32 GB GPU system, the center of gravity is gpt-oss-20b, Qwen3.6-27B/35B-A3B, Gemma 4 26B-A4B/31B, and Nemotron 3 Nano. These models can do useful coding, document, and tool work without distributed placement.

Parameter count does not determine quality

Compare models on the form of output that will enter the product. A coding agent must do more than solve an isolated algorithm problem: it must find the right file, preserve repository constraints, produce an applicable patch, call tools correctly, and stop after completing the task. For RAG, check citations to supplied passages and resistance to conflicting instructions inside a document. A Russian-language assistant needs separate tests for morphology, mixed Russian-English code, and local names rather than only a translated general benchmark.

Evaluate the exact weight build, not just the model architecture. Results for BF16 or an official FP8 release do not automatically carry over to a third-party Q4 build: the quantization method and conversion quality can change model behavior. Failures may concentrate in rare capabilities rather than average answers: strict JSON, long reasoning, tool selection, or reading small text in images. Every eval row should therefore record the full filename, hash, chat template, sampling parameters, and tokenizer version. If the exact artifact cannot be reproduced, its score cannot justify a hardware purchase.

Reasoning mode changes the economics as well. A model may answer more accurately while producing several times more hidden or visible tokens, so a high tokens-per-second figure does not guarantee less time to an accepted result. A defined metric is accepted tasks per wall-clock time. For a single-attempt view, expected time to an accepted result is roughly end-to-end cycle latency divided by acceptance rate, including retries. In background batch analysis, waiting several minutes for a single task and automatically retrying failed attempts may be acceptable. In an IDE extension, even a capable model loses if the first useful fragment arrives after the developer has switched to another task.

A license is as hard a filter as memory

“Open weights” is not a single legal regime. Each release has its own terms: gpt-oss and many Qwen and Mistral models use Apache 2.0, while Gemma has separate Google terms. Apache 2.0 generally permits commercial use. If you redistribute the model or a derivative, however, you must include the license text, retain required attribution notices, and review the separate licenses for the tokenizer, code, and other bundled components. Llama, Nemotron, Kimi, and MiniMax each have their own terms, use restrictions, or thresholds that introduce additional obligations. Check the license named in a model registry against the text for that exact release: a family can change terms between versions.

Data and outputs need separate review. Permission to download weights does not grant rights to voices, images, documents, or code sent to the model; speech synthesis requires the voice owner's consent; local RAG does not waive trade-secret rules or retention limits. For a product, store the license version, source page, download date, and restrictions next to the weight hash. That turns a future model swap from an investigation into a routine dependency update.

The 100–120B tier now runs on one 80–128 GB device through MoE and trained FP4 formats. OpenAI explicitly gives a 16 GB fit for gpt-oss-20b and 80 GB for gpt-oss-120b. That is capacity guidance, not a tokens/s promise: DGX Spark, M3 Ultra, and RTX PRO 6000 read memory at very different rates.

The 284B–1T tier is local only in the sense of an owned cluster. DeepSeek V4 Flash publishes an approximately 160 GB mixed-format checkpoint; Kimi K2.7 Code is around 595 GB. Two small nodes may technically start a large quant, but networking and partial offload can make it slower than a strong 20–35B model on one card.

A long window is a capability, not a recommendation

A 262K- or million-token context can help with rare tasks, but it does not replace retrieval and data structure. As the window grows, prompt-processing time, KV cache, and the chance that the model loses an important detail among irrelevant material all increase. Needle-in-a-haystack performance is not the same as analyzing a long contract or repository. Compare at least three modes: a short request without RAG, selected passages with citations, and the complete long document. The middle option often produces a better answer with lower latency.

Multimodal models consume more than text tokens. Resolution, frame count, image downscaling, and page tiling all change the visual sequence length. A model that fits a text test can run out of memory on a batch of scanned pages. Before choosing a 24 or 32 GB configuration, run the model on real PDFs, screenshots, and photos. Include the maximum number of files or pages the system must process in a single request. If the main task is document OCR, a compact specialist model may be cheaper and more reliable than a general model with 30B parameters.

Not every local AI task needs a general generator

Use case
Small device
Models
LFM2.5-1.2B Thinking; Gemma 4 E2B; SmolVLM2 500M/2.2B
Work
Commands, extraction, routing, basic image/video understanding
License / format
LFM commercial threshold; Gemma/SmolVLM are Apache 2.0
Use case
Enterprise RAG
Models
Granite 4.1 3B/8B/30B; Qwen3 Embedding and Reranker 0.6B/4B/8B; Granite Embedding R2
Work
Tools, code, 32K–131K; dedicated embedding/reranking
License / format
Apache 2.0; official GGUF/ONNX/OpenVINO artifacts are available
Use case
Code and repositories
Models
Devstral Small 2 24B; Qwen3.6 27B/35B-A3B; gpt-oss-20b
Work
File edits, tool calls, long context
License / format
Apache 2.0; Devstral FP8 is official, low-bit GGUF is often community-made
Use case
Documents and interfaces
Models
Granite Vision 4.1 4B; Phi-4 reasoning-vision 15B; Gemma 4 12B/26B
Work
OCR, tables, key-value pairs, charts, GUI grounding
License / format
Apache 2.0 or MIT; validate OCR quality on your scans
Use case
Local speech
Models
Qwen3-ASR 0.6B/1.7B; Whisper large-v3-turbo; Qwen3-TTS 0.6B/1.7B; Kokoro 82M
Work
Russian: Qwen3-ASR, Whisper, and Qwen3-TTS; Kokoro is lightweight non-Russian TTS
License / format
Apache 2.0/MIT; measure audio-loop latency end to end

The generator is only one part of RAG. Qwen3 Embedding or Granite Embedding can run on CPU or a small GPU, Qwen3-Reranker sees a short top-K, and the large LLM receives only selected passages. This pipeline is often faster and more accurate than placing an entire corpus into a model's advertised 256K context.

04

Hardware: capacity decides whether the model fits; bandwidth determines response speed

Start with memory capacity: it must hold the model weights, KV cache, and runtime overhead at the same time. When the system generates one response, a large dense model is often limited by how quickly its weights can be read from memory. For local chat, memory bandwidth is therefore more useful than advertised TOPS—the theoretical number of trillions of operations per second. A rough upper bound on generation speed is simple: divide measured memory bandwidth by the weight bytes read to produce one token. Peak specification bandwidth gives only an ideal ceiling. Actual speed is lower because attention, context processing, synchronization, and incomplete device utilization add overhead.

dense decode tok/s ≤ sustained memory bandwidth / resident weight bytes touched per token
specification example: 273 GB/s peak ÷ 42 GB ≈ 6.5 tok/s—the theoretical ceiling for dense 70B Q4, not a benchmark
Figure 6 · memory capacity versus memory bandwidth
Memory capacity and bandwidthCAPACITY — DOES THE MODEL FIT? · BANDWIDTH — RESPONSE SPEEDMEMORY CAPACITY →MEMORY BANDWIDTH →16 GB32 GB64 GB128 GB256 GB512 GBMac mini M424 GB · 120 GB/sM4 Pro48 GB · 273 GB/sRTX 509032 GB · 1.79 TB/sR9700 / B7032 GB · 0.61–0.64 TB/sMac Studio M3 Ultra96 GB unified memory · 819 GB/sMacBook M5 Max128 GB · 614 GB/sFramework DesktopAMD Ryzen AI Max+ 395 · 128 GB · 256 GB/sDGX Spark128 GB · 273 GB/sRTX PRO 600096 GB · 1.79 TB/sPoints show published specifications, not equal-workload performance
Hardware
Existing CPU PC
Memory / bandwidth
16–64 GB system RAM; bandwidth depends on memory channels
US price
$0 incremental
Fits
2–14B Q4; background jobs and occasional private requests
Constraint
Cheapest starting point; large dense models often fall below a comfortable pace
Hardware
Intel Arc B580
Memory / bandwidth
12 GB GDDR6; 456 GB/s; 190 W
US price
$249 RCP · GPU only
Fits
7–8B Q4/Q8; budget chat, embeddings, and small RAG
Constraint
12 GB becomes a limit quickly; Intel's stack is narrower than CUDA
Hardware
RTX 5060 Ti 16 GB
Memory / bandwidth
16 GB GDDR7; 448 GB/s; 180 W
US price
$429 launch MSRP · GPU only
Fits
7–14B; gpt-oss-20b in native MXFP4 with a short validated context; fast RAG
Constraint
Dense 20–24B models require tight quantization/offload; 5080 is faster but also limited to 16 GB
Hardware
Mac mini M4
Memory / bandwidth
up to 24 GB orderable in the US store; 120 GB/s
US price
$1,199 · 24 GB / 512 GB
Fits
2–14B Q4; gpt-oss-20b MXFP4 with a short validated context; quiet API
Constraint
Metal/MLX are convenient, but memory is tight for dense 20–35B models and long context
Hardware
Mac mini M4 Pro
Memory / bandwidth
up to 48 GB currently orderable; 273 GB/s
US price
$2,199 · 48 GB / 512 GB
Fits
9–35B Q4; development, private RAG, multimodal
Constraint
Good workstation/inference balance; memory is not upgradeable
Hardware
RTX 5090
Memory / bandwidth
32 GB GDDR7; 1,792 GB/s; 575 W
US price
$1,999 · NVIDIA Marketplace, out of stock
Fits
7–35B; very high batch-1 speed and broad CUDA compatibility
Constraint
Needs an expensive host/PSU/cooling; 70B does not fit; street price differs
Hardware
Radeon AI PRO R9700
Memory / bandwidth
32 GB GDDR6; 640 GB/s; 300 W
US price
$1,299 MSRP · GPU only
Fits
14–35B; cost-effective capacity for Linux/ROCm
Constraint
Slower than 5090 in the same llama.cpp run; kernel and OS coverage needs checking
Hardware
Intel Arc Pro B70
Memory / bandwidth
32 GB GDDR6 ECC; 608 GB/s; 230 W for Intel’s reference card
US price
from $949 suggested · GPU only
Fits
14–35B; inexpensive 32 GB and multi-GPU experiments
Constraint
The XPU/llm-scaler stack is more version-sensitive than CUDA
Hardware
Mac Studio M4 Max
Memory / bandwidth
36/64 GB currently orderable; 410/546 GB/s
US price
$3,499 · 64 GB / 512 GB
Fits
Fast 20–35B; 70B Q4 on 64 GB with limited headroom
Constraint
The generation's documented 128 GB maximum is not currently offered in the US store
Hardware
MacBook Pro M5 Max
Memory / bandwidth
up to 128 GB currently orderable; up to 614 GB/s
US price
$6,699 · 14-inch, 128 GB / 2 TB
Fits
Fast 20–70B; gpt-oss-120b fits by the official 80 GB guidance, but speed needs measurement
Constraint
The highest-capacity current Apple option after Studio SKU reductions; the 128 GB configuration costs more than the base one
Hardware
Framework Desktop 128 · AMD Ryzen AI Max+ 395
Memory / bandwidth
128 GB LPDDR5x; 256 GB/s; up to 112 GB GPU-addressable
US price
$3,449 · bare DIY, no SSD/OS · pre-order
Fits
70B Q4 and gpt-oss-120b; quiet personal lab
Constraint
Large capacity with modest bandwidth; price rose from the $1,999 launch point
Hardware
Mac Studio M3 Ultra
Memory / bandwidth
96 GB currently orderable; 819 GB/s
US price
from $5,299 · complete system
Fits
70B Q4/Q8 and 100–120B native FP4/Q4 depending on headroom
Constraint
Fast and quiet, but expensive; former 256/512 GB options are not currently orderable
Hardware
NVIDIA DGX Spark
Memory / bandwidth
128 GB coherent LPDDR5x; 273 GB/s; ConnectX-7
US price
$4,699 · complete system
Fits
gpt-oss-120b, CUDA prototyping, two-node experiments
Constraint
Capacity and CUDA matter more than raw decode speed; Arm64 creates compatibility gaps
Hardware
RTX PRO 6000 Blackwell
Memory / bandwidth
96 GB GDDR7 ECC; 1,792 GB/s; 600 W
US price
$13,250 · NVIDIA Marketplace, out of stock
Fits
Fast 70B, 100–120B in an aggressive format; shared server
Constraint
The listed price is the current NVIDIA Marketplace price; NVIDIA has not published an MSRP. The card offers high speed and ECC, but is prohibitively expensive for a home system

Why the current Apple lineup looks unusual

The Mac Studio generation documents M4 Max up to 128 GB and M3 Ultra up to 512 GB, yet the current US configurator offers only 36/64 GB and 96 GB respectively. The MacBook Pro M5 Max is available with 128 GB and up to 614 GB/s, making it the highest-capacity currently orderable Apple option in August 2026. The article separates “the platform supports” from “you can order today”; otherwise a historical specification becomes false purchase advice.

Discrete GPU or unified memory

  • RTX 5090 provides 1.79 TB/s and the broadest CUDA path, but is capped at 32 GB and has no NVLink.
  • R9700 and Arc Pro B70 provide 32 GB for less, with more work to validate the exact OS–driver–runtime combination.
  • Mac, Framework, and DGX Spark address 64–128 GB without PCIe offload, but their 256–819 GB/s limits large dense models sooner.
  • RTX PRO 6000 combines 96 GB with 1.79 TB/s, but price and 600 W move it from personal to professional infrastructure.

CPU, NPU, and multiple GPUs each have a niche

A CPU is useful for more than emergency fallback. Small models, embeddings, reranking, and background batch work can use a machine that is already paid for, without a separate card. Performance depends heavily on memory channels and vector instructions, so two computers with the same RAM capacity are not equivalent. For an occasional request, 5–10 tok/s may be more economical than keeping a large GPU idle. llama.cpp can also leave some layers on CPU to test a model larger than VRAM, but treat that as a capacity experiment rather than a promise of interactive speed.

Laptop and phone NPUs are well suited to a stable small model when battery life and silence are critical. Their advertised TOPS cannot be compared directly with a discrete GPU's memory bandwidth: supported operators, weight formats, maximum tensor size, and compiler tooling constrain the model that can actually run. A packaged vendor demo is not enough. Confirm that its tools can convert and run the model architecture you need, then update the model without releasing a new version of the app.

Multiple consumer GPUs add capacity only after the model is partitioned; they do not become one transparent memory pool. RTX 5090 has no NVLink, so layers or tensors move over PCIe, synchronization reduces speed, and the chassis must power and cool two 575 W cards. Two less expensive 32 GB cards may provide 64 GB of capacity, but they do not guarantee the pace of one professional 96 GB card. Such a purchase needs a measured run of the exact engine using the intended partitioning scheme.

Unified memory wins on simplicity: one large file is available to CPU and GPU without manual transfer, and the system is quieter than a typical multi-card workstation. The tradeoff is shared bandwidth and competition with applications. Discrete VRAM offers higher bandwidth and mature specialized kernels, but creates a hard capacity wall. A practical rule follows: for 7–35B and interactive work, start with a fast discrete card; for 70–120B and one user, look at a large unified pool; for a shared server that needs both capacity and concurrency, model a server GPU as a separate system.

05

Performance: separate measurement from transferability

Tokens per second are meaningful only next to model, quant, backend, version, occupied-context length, and test mode. llama-bench separates prompt processing (pp) and text generation (tg); tokenization and sampling are excluded. Chat speed also includes queueing, context construction, and streaming delivery.

Figure 7 · published generation snapshots, not a hardware ranking
Local inference benchmark snapshotsONE PAIRED POST · FOUR INDEPENDENT SNAPSHOTSPAIRED POST: SAME MODEL / REVISION · DIFFERENT HOSTS / BACKENDSRTX 5090 · Qwen3.5 35B-A3B Q4194 tok/sR9700 · Qwen3.5 35B-A3B Q4127 tok/sINDEPENDENT: DO NOT COMPARE CARD SIZE OR VALUEFRAMEWORK 128gpt-oss-120b≈ 48 tok/s · vendor16-inch MBP M4 MAX64 GB · gpt-oss-20b118 tok/s · communityDGX SPARKgpt-oss-120b59 tok/s · tg32DGX SPARKgpt-oss-20b83 tok/s · tg32DIFFERENT MODEL · QUANT · CONTEXT · BACKEND · TOKEN-GENERATION TESTUse these values to calibrate scale; rerun your own workload before buying
Hardware
RTX 5090 · 32 GB
Workload
Qwen3.5-35B-A3B UD-Q4_K_XL (Unsloth) · llama.cpp CUDA · full offload · Q8 KV
Prompt processing
512-token input: 7,026 tok/s, about 0.07 s to process
Generation
TG average 194 tok/s
Evidence class
Paired post: same model, code revision, and flags, but Ryzen 9900X/CUDA versus 7500F/Vulkan; TG is more comparable than PP. A quant-recipe issue was discussed later
Hardware
Radeon AI PRO R9700 · 32 GB
Workload
Same model/quant · llama.cpp Vulkan · full offload · Q8 KV
Prompt processing
512-token input: 2,713 tok/s, about 0.19 s to process
Generation
TG average 127 tok/s
Evidence class
The same paired post, but with a different CPU and backend; full GPU offload reduces CPU impact on TG, yet this is not a controlled A/B
Hardware
16-inch MacBook Pro M4 Max · 64 GB
Workload
gpt-oss-20b MXFP4 · llama.cpp Metal · build 7030
Prompt processing
32,768-token input: 1,094 tok/s, about 30 s to process
Generation
TG128 118 tok/s
Evidence class
Community measurement; exact chip and memory configuration matters
Hardware
DGX Spark · 128 GB
Workload
gpt-oss-20b MXFP4 · llama.cpp · FA on
Prompt processing
2,048-token input: 4,506 tok/s, about 0.45 s to process
Generation
TG32 83; at 32K — 62 tok/s
Evidence class
Published llama.cpp bench; demonstrates the impact of occupied context
Hardware
DGX Spark · 128 GB
Workload
gpt-oss-120b MXFP4 · 59.0 GiB · llama.cpp
Prompt processing
2,048-token input: 2,444 tok/s, about 0.84 s to process
Generation
TG32 59; at 32K — 43 tok/s
Evidence class
Published llama.cpp bench; the MoE does not read all 117B parameters per token
Hardware
Framework Desktop 128 · AMD Ryzen AI Max+ 395
Workload
gpt-oss-120b · LM Studio/llama.cpp · Fedora 43
Prompt processing
not published
Generation
≈ 48 tok/s
Evidence class
Vendor claim from December 2025; Windows is reported at ≈ 40 tok/s
Hardware
Intel Arc Pro B70 · 32 GB
Workload
gpt-oss-20b · 2K input / 2K output · concurrency 1 · vLLM bench sweep · TP=1
Prompt processing
not published
Generation
54.8 tok/s
Evidence class
Joint Intel/Lablup vendor claim; rerun on your stack version

What can still be inferred

First, a 20–35B MoE on one modern card can stream far faster than reading pace. Second, 128 GB at 256–273 GB/s is primarily a capacity play: gpt-oss-120b remains fast because only 5.1B parameters are active, while dense 70B on the same device will be much slower. Third, context has a cost: the published DGX Spark gpt-oss-120b run falls from about 59 to 43 tok/s as occupied context moves from empty to 32K.

Software can also change the result without a new GPU. In a separate llama.cpp test, operation fusion and concurrent CUDA streams together moved Qwen3 30B-A3B tg128 on RTX 5090 from about 247 to 352 tok/s. The environment variable was named GGML_CUDA_GRAPH_OPT, but the author explicitly noted that the mechanism had nothing to do with CUDA Graphs. This is not a universal speedup; it is a reminder to record the code revision, flags, and warm-up together with the card name.

What to measure beyond average throughput

Prompt processing and generation stress the system differently. A large PP figure matters for the first pass over a document, but the user experiences time to first token (TTFT), which also includes tokenization, queueing, cache preparation, and the first decode iteration. TG describes the steady stream of one answer but hides pauses between individual tokens. For a code editor, record P50 and P95 TTFT, average inter-token latency, and the longest stall. Two runs with the same tok/s can feel entirely different.

Occupy the context before measuring generation. An empty-cache test describes a hardware ceiling, not a multi-step agent after twenty messages and tool results. Take P50 and P95 input lengths from a real trace and test several output lengths. A short TG32 run may end before heat and clock reduction appear; a long TG512 run shows steady state but does not represent answers that usually stop after 80 tokens. You need both views.

On a shared server, performance under concurrent generation matters more than the speed of one response. Run 1, 2, 4, and 8 requests at the same time; at each concurrency level, measure aggregate generation throughput, P95 latency, and the share of requests meeting the SLO. Continuous batching raises the combined token rate but may worsen one user's inter-token latency. Also test request cancellation. When an agent stops generating an answer it no longer needs, the system should promptly release the resources held by that request: its KV cache and scheduler slot. Otherwise, a benchmark in which every response runs to completion will overstate how many requests the server can handle concurrently.

Finally, measure accepted work rather than computation alone. For code, that means an applicable patch with passing tests; for extraction, a valid schema with correct fields; for RAG, an answer with a verifiable citation. Accepted tasks divided by energy and time produce a metric that can be compared with cloud alternatives. Raw model speed almost always creates false savings when the model needs twice as many retries.

06

The runtime is part of the hardware configuration

Different runtimes add support for a new model at different times, and that support is often partial. A runtime may recognize the tokenizer but process images on CPU instead of GPU; load FP8 weights without fast kernels for the selected GPU; or run the model in llama.cpp while the current vLLM release still does not support it. Before buying, verify the exact model, weight format, and runtime version. Support for a similar model guarantees nothing.

Stack
llama.cpp + GGUF
Where
CPU, Metal, CUDA, Vulkan, and a broad hardware set
Strength
Transparent local baseline, hybrid CPU/GPU offload, llama-bench
Boundary
Format/kernel support for a new architecture may lag the model release
Stack
MLX / mlx-lm
Where
Apple silicon and unified memory
Strength
Native Metal path, simple Python API, strong community quantizations
Boundary
Apple-only; does not replace a Linux/CUDA serving stack
Stack
Ollama / LM Studio
Where
Desktop UX and an OpenAI-compatible local API
Strength
Fast start, model management, minimal manual setup
Boundary
Performance and support are inherited from the underlying backend
Stack
vLLM / SGLang
Where
Linux server, CUDA/ROCm, multiple users
Strength
Continuous batching, prefix cache, metrics, OpenAI API
Boundary
Not the best path for Mac/phone; new multimodal/MoE models require the right version
Stack
TensorRT-LLM
Where
NVIDIA CUDA, especially a production GPU server
Strength
Specialized kernels and graphs, Blackwell quant formats
Boundary
Engine builds and the supported-model matrix increase change cost
Stack
ROCm / Intel XPU stacks
Where
AMD and Intel respectively
Strength
CUDA alternatives, cheaper 32 GB, multi-GPU
Boundary
Validate OS, driver, PyTorch, runtime, and kernel as one versioned set

For one user, a sensible baseline is llama.cpp or MLX through LM Studio, Ollama, or a direct CLI. It quickly proves whether the exact artifact fits and what batch-1 tg is. Move a shared Linux API to vLLM, SGLang, or TensorRT-LLM only after architecture support is verified. Continuous batching, authentication, quotas, prefix caching, and P95 now matter more than one local chat.

  • Pin model revision, tokenizer, chat template, and weight-file hash.
  • Pin OS, firmware, driver, runtime commit/container, and every flag.
  • Run a cold start and sustained thermals; record peak RAM/VRAM and wall power.
  • Validate text, images, JSON/tool calls, long context, and cancellation separately.
  • Update one layer at a time and keep rollback; newer does not guarantee support for an older quant.

A reproducible build matters more than the most convenient interface

A graphical shell is convenient for the first experiment, but a production configuration must survive restarts and upgrades. Preserve the launch command or configuration file, the model source and hash, and the engine, driver, and chat-template versions. Verify recovery after a reboot without a manual click, as well as behavior after a corrupted download. If the product depends on a single file from a community registry, keep a verified copy inside your boundary while honoring its license.

An OpenAI-compatible API simplifies server replacement but does not make semantics identical. Model names, token counting, tool-call format, image support, streaming events, and stop reasons differ. Before switching a client, write contract tests for a normal response, JSON, cancellation, timeout, and context overflow. Moving among Ollama, LM Studio, llama.cpp server, and vLLM then does not require a manual retest of the whole application.

For an offline boundary, decide in advance how security updates and new weights will enter. Complete isolation without a delivery process quickly leaves a vulnerable driver and an outdated model. A signed package, hash verification, a staging system, and a controlled maintenance window are more practical. Locality answers who controls a change; it does not require never updating anything.

07

Six configurations for actual work

The use case sets minimum useful quality and workload shape. A voice router benefits from an on-device 3B even when 27B is smarter. A coding agent needs stable diff/JSON and a low token interval. A shared RAG server needs concurrency and access control, even if its batch-1 demo looks identical.

Use case
Offline assistant and voice
Models
Gemma 4 E2B/E4B; Ministral 3 3B; Qwen3.5 2B/4B
Hardware
8–16 GB on device; NPU/GPU/CPU
Acceptance criterion
Low TTFT, offline operation, structured output; quality on a closed command set
Use case
Single-user private RAG
Models
Qwen3.5 9B; Gemma 4 12B; Ministral 3 8B/14B
Hardware
16–32 GB; Mac mini or any supported GPU
Acceptance criterion
Evaluate retrieval separately; do not enable 256K merely because the model allows it
Use case
Developer coding and agents
Models
gpt-oss-20b; Qwen3.6 27B/35B-A3B; Nemotron 3 Nano
Hardware
24–48 GB; RTX 5090/R9700/B70 or M4 Pro/Max
Acceptance criterion
Interactive pace, tool calling, diff/JSON, and quality on your repositories
Use case
Multimodal documents
Models
Qwen3.6 27B/35B-A3B; Gemma 4 12B/26B; Ministral 3 14B
Hardware
24–64 GB; reserve for the vision encoder and image tokens
Acceptance criterion
OCR, tables, forms, screenshots; count images as part of context
Use case
Small-team shared server
Models
Qwen3.6-35B-A3B or gpt-oss-120b; a smaller draft/router model
Hardware
64–128 GB; M3 Ultra, DGX Spark, RTX PRO, or Linux GPU host
Acceptance criterion
Measure concurrency, P95, and auth; batch-1 tok/s is no longer sufficient
Use case
Research lab
Models
122B–397B+ and multiple formats of one model
Hardware
Multiple GPUs/nodes; fast network; reproducible testbed
Acceptance criterion
The goal is research/compatibility, not the best end-user answer economics

1. Existing computer: begin at zero incremental CapEx

An 8–12B Q4 on 16–32 GB can cover private retrieval and drafting. Measure it on the device you already own. Buying a 32 GB GPU for a model that fails your eval merely produces the wrong answer faster.

2. Developer workstation: 24–48 GB

For coding and agents, choose between discrete-GPU pace and unified-memory convenience. RTX 5090 offers very high interactive speed and a mature CUDA path; R9700/B70 provide less expensive 32 GB with more stack work; M4 Pro/M5 Max are quiet systems where the IDE, code, and model share memory. Evaluate repositories, patch format, and tool loops—not only a public coding score.

3. Large personal model: 96–128 GB

Framework Desktop with AMD Ryzen AI Max+ 395 and 128 GB of memory at $3,449 is the least expensive new route in this table to gpt-oss-120b, but 256 GB/s favors MoE over dense 70B. DGX Spark costs more but adds CUDA, 4 TB SSD, and ConnectX-7. MacBook Pro M5 Max and Mac Studio M3 Ultra provide more bandwidth and Metal/MLX, with different price, thermals, and currently orderable SKUs.

4. A small team is already a service

One person tolerates cold loading and can occupy all memory. Five people create a queue, multiple KV caches, and authentication requirements. At that point, return to the separate longread on LLM inference as a distributed system—continuous batching can contribute more than moving to the next GPU generation.

5. Voice, documents, and edge devices

Dictation, commands, and first-pass document processing benefit from a composed pipeline: a small ASR or OCR model, a 2–4B router, and a larger generator only for difficult requests. It lowers average latency and can keep sensitive raw audio or images on the device. Acceptance tests include end-to-end time from signal to action, quality under noise and accents, battery use, false activations, and offline behavior. No single generator metric describes this system.

6. A research lab buys flexibility

Several GPUs or nodes are justified when the objective is to compare formats, develop kernels, study large models, or reproduce an owned cluster. ECC, fast networking, enough SSD capacity, remote management, and the ability to pin versions create the value. If the end goal is one personal chat, the same configuration will almost certainly lose to one fast card or the cloud on price, complexity, and engineering time. Judge a lab by reproducible experiments, not by the largest model it managed to load once.

08

Device price is only the first cost layer

Local inference avoids per-token API fees but incurs other costs: hardware, electricity, model storage, engineering support, idle capacity, and potential losses from lower model quality. Fully loaded cost includes the host: an RTX 5090 at $1,999 still needs a motherboard, CPU, RAM, fast SSD, PSU, and cooling. Mac and DGX prices are system prices; Framework excludes storage and OS.

Figure 8 · full cost layers and break-even
The full cost stack of local inferenceLOCAL COST IS MORE THAN THE DEVICE PRICEQUALITY LOSSESretries · manual fixes · failuresOPERATIONSupdates · model validation · monitoringENERGY + COOLINGaverage power · cooling · idle timeCAPEXGPU or system · storage · networkACCEPTED TASKS TO BREAK EVENQ ≈ CapEx ÷ (C₁ − C₂)C₁ = cloud · C₂ = localC = cost per accepted taskINVALID IFquality differsutilization is unknownlabor is omittedPrivacy and offline operation may matter more than financial break-even
tasks to break even ≈ CapEx / (cloud variable cost per accepted task − local variable cost per accepted task)
the formula is invalid when quality differs or utilization is unknown

Energy should use measured average wall power on the production profile, not TDP. A device averaging 250 W for eight hours per day consumes roughly 730 kWh per year; the bill depends on local tariffs. An always-on shared server approaches 2,190 kWh before cooling. At low utilization, depreciation still dominates electricity.

Three calculations instead of one break-even point

For occasional personal use, account for the full device price: it spends most of its life idle, while API savings remain small. If the computer would be purchased for development anyway, local AI can be assigned only the incremental memory or GPU cost—but that must be labeled as a different scenario. A shared server adds reserve, administration, monitoring, and the cost of downtime. These three bases cannot be collapsed into one “pays back in N months” line.

The depreciation period should match stack risk. A case and PSU may last five years, a GPU three, while the useful model format may change within months. Calculate optimistic, working, and low utilization, then add a case in which more memory is needed after one year. A consumer card's resale value can reduce risk; soldered memory and specialized nodes are harder to upgrade, though they are sold as complete systems.

Cloud cost is not fixed either: prompt caching, batch mode, and a cheaper model all change the denominator. Conversely, a local system may save not tokens but the time needed to approve data handling or the cost of a privacy incident. The final model should separate financial assumptions from non-financial requirements. If privacy is mandatory, break-even selects among local options rather than removing the constraint itself.

09

A purchase starts with an eval and ends with trace replay

A reliable choice starts not with hardware reviews but with the minimum acceptable quality threshold for a specific use case. First define that threshold and evaluate models against it; then choose the exact weight file, estimate the required memory, confirm software-stack compatibility, and only after that select the device. Exclude any model that falls below the threshold. If a model passes but does not fit in memory, choose a different weight format or a device with more memory. If it fits but responds too slowly, first check memory bandwidth and support for the required GPU kernels — and only then consider a different graphics card.

Figure 9 · local configuration decision tree
Decision tree for local LLM inferenceWORKLOAD → MODEL → MEMORY → SOFTWARE → TRACE1 · WORKLOADquality thresholdlatency · privacy2 · MODELcapabilitieslicense · format3 · FITweights + KV+ 15–25%4 · STACKCUDA · ROCmMetal · XPU5 · TRACEP50 / P95quality / wattONE PERSONlaptop / desktop · batch 1SMALL TEAMshared API · concurrencyRESEARCHlarge model · multi-deviceBUY ONLY AFTER REPLAYsame prompts · same context · same quant · same backend · sustained thermalsA benchmark is the last step of selection, not the first
Layer
Quality
Measure
Accepted answers, code, JSON, and tool calls on your eval set
Error guard
Do not compare the price of models that solve different shares of tasks
Layer
Capacity
Measure
Memory capacity ≥ estimated peak × 1.15–1.25
Error guard
Validate P95 input/output and multimodal tokens
Layer
Interaction
Measure
TTFT, average and P95 token interval, stop/resume
Error guard
Separate cold and warm starts
Layer
Performance
Measure
PP and TG, batch 1 and production concurrency
Error guard
Same prompt, context, quant, sampling, and backend
Layer
Operations
Measure
Driver/runtime/model versions, restart, update, observability
Error guard
Pin a working lockfile/container and rollback
Layer
Economics
Measure
CapEx, host, storage, energy, labor, idle time
Error guard
Compute cost per accepted task, not raw token

Minimum protocol before ordering

  • Collect 50–200 real requests with P50/P95 lengths, formats, and accepted answers.
  • Choose two model sizes and two exact artifacts each—not ten family names.
  • Rent or borrow nearby hardware for a day; pin versions and replay the same trace.
  • Record quality, TTFT, PP, TG, P95, peak memory, power, and tool failures.
  • Price the complete system under three utilization cases: occasional, workday, and shared server.
  • Buy context reserve, but not capacity for a model you do not plan to use.

Stop conditions protect the budget

Before testing, write down which result cancels the purchase: quality below the threshold, P95 above the SLO, memory without a 15% reserve, an unsuitable license, or no reproducible build. Otherwise a day of tuning makes it easy to mistake the mere fact that the model started for success. If testing shows that no local model reaches the required quality threshold on the target tasks, the rational choice is a hybrid setup or a cloud service. This costs less than optimizing a model that cannot solve the target task at the required quality level.

Five traps that look like shortcuts

The first is buying for the largest possible model. A larger file may answer more slowly, carry an unsuitable license, and follow output formats less reliably, while a specialist 12–24B model completes the job. The second is treating the calculated Q4 weight size as the total memory required for inference. Beyond the weights, memory is consumed by format metadata, the KV cache, working buffers and compute graphs, the encoder, and the OS. A model that “should fit” under simple arithmetic may not fit entirely in accelerator memory and may start using slower system memory instead.

The third is comparing tokens-per-second figures directly across reviews and benchmark tables. If the tests use different models, quantizations, context lengths, batch sizes, or engine versions, their results are not comparable. Treat external measurements as rough guidance; a final comparison requires replaying the same request set on every candidate. The fourth is buying two cards solely for their combined VRAM. Without measuring partitioning, PCIe traffic, and engine support, this is an expensive way to gain capacity while losing responsiveness.

The fifth is building a decision around a promised future. Announced memory, unverified support for a new architecture, or an expected quant is not a working configuration at the time of selection. A shortlist should contain only combinations for which exact weights, available hardware, a compatible runtime, and a reproducible test all exist. Future options belong on a dated watchlist, not in the current SLO or budget.

The strongest antidote to all five traps is a small reproducible testbed. One request archive, one launch script, and one results table let you change one variable at a time: model first, then quant, then runtime, and only then hardware. The purchase becomes a response to an observed bottleneck. Without such a testbed, every new review resets the decision because it compares a different system.

Replay that testbed after a material model or runtime update, but keep the previous result. A regression can look like higher average speed while P95, memory use, or tool quality gets worse. A version is better only if it clears the same thresholds on the same archive. Over time, this log reveals whether the product is limited by the model itself, memory capacity, bandwidth, the software stack, or an obsolete use case. An upgrade can then answer a concrete question instead of a general fear of missing the next hardware release. The decision remains auditable even after the team, vendor, and owner of the local service change over the years.

The practical 2026 default is deliberately plain: an existing machine and 8–14B to validate the product; then 24–32 GB and a 20–35B MoE for a personal agent; 96–128 GB only after a measured 100–120B advantage. Multi-GPU and 284B+ form a research branch, not a mandatory next step.

Takeaways

Five conclusions about local inference in 2026

  1. 01Local inference is not selected by parameter count alone: start with the quality threshold and use case, then add memory, bandwidth, and actual model support.
  2. 02The 20–35B tier—especially MoE with 3–4B active parameters—is the 2026 sweet spot for 24–32 GB: useful for coding and agents while still fitting one card.
  3. 03128 GB unified systems provide rare capacity for 100–120B models, but Framework Desktop and DGX Spark are bounded by roughly 256–273 GB/s; fitting is not the same as being fastest.
  4. 04RTX 5090 remains a strong batch-1 option through 1.79 TB/s and CUDA, while AMD and Intel offer cheaper 32 GB capacity with a more version-sensitive software stack.
  5. 05Price is a snapshot: compare the currently orderable complete configuration and cost per accepted task, then replay your own trace before buying.
Sources

Model cards, specifications, prices, and measurements

Model cards, official specifications, and original benchmark threads take priority. Vendor numbers are marked as vendor claims; prices are dated and do not transfer across regions or availability states.

Method and memory

  1. llama.cpp · llama-bench READMEdefinitions of prompt processing (pp), text generation (tg), and combined tests; tokenization and sampling are excluded
  2. ggml-org · llama.cppthe baseline GGUF inference implementation and supported CPU/GPU backends; state changes quickly
  3. MLX Community · mlx-lmLLM inference and quantization on Apple silicon through MLX

2026 models

  1. OpenAI · Introducing gpt-oss21B/3.6B active and 117B/5.1B active, native MXFP4; official 16 GB and 80 GB fit guidance
  2. Qwen Team · Qwen3.6the April 2026 family, local llama.cpp/MLX paths, and text/image/video support
  3. Qwen · Qwen3.6-35B-A3B model card35B total/3B active, 262K native context, Apache 2.0, and multimodal/agentic capabilities
  4. Qwen · Qwen3.5-9B model cardofficial card for the dense 9B model: parameters, context, multimodality, and the Apache 2.0 license
  5. Qwen · Qwen3.5-397B-A17B model cardofficial 397B-A17B card as a cluster-local rather than personal-local boundary
  6. Qwen · Qwen3.5-122B-A10B GPTQ-Int4an official 4-bit checkpoint of the large MoE model; format and kernels must be validated together
  7. Google · Gemma 4 model cardE2B/E4B/12B/26B-A4B/31B models, context limits, and multimodal capabilities
  8. Google · Get started with Gemma modelsofficial per-size positioning, from mobile devices through large servers and clusters
  9. Mistral AI · Ministral 3 14B model cardApache 2.0, 256K, native vision, and official 24 GB FP8 fit guidance
  10. Mistral AI · Mistral Small 4119B total, 6B active per token and 8B including input/output layers; the official minimum is 4×HGX H100, 2×HGX H200, or 1×DGX B200
  11. NVIDIA · Inside Nemotron 3the canonical Nano 30B-A3B name rounds the active count; the NVFP4 card reports approximately 3.5B active. Performance claims are vendor material
  12. Meta · Llama 4 Scout and Maverick109B-A17B and 400B-A17B, multimodal, under a custom community license; single-H100 fit applies to Int4 Scout
  13. DeepSeek · DeepSeek-V4-Flash model card284B-A13B as a lower boundary where “local” already means multi-device
  14. Moonshot AI · Kimi K2.7 Code1T/32B active, native INT4, and an approximately 595 GB checkpoint: a current rack-scale boundary for coding agents

Specialist models

  1. Liquid AI · LFM2.5-1.2B Thinkingphone/CPU-class model with 32K context; commercial license terms depend on company revenue
  2. IBM · Granite 4.1 model cardApache 2.0, 131K, and official GGUF/ONNX/OpenVINO paths for enterprise RAG and tools
  3. Mistral AI · Devstral Small 2 24Ban Apache 2.0 specialist coding model; official FP8, while low-bit GGUF artifacts are typically community-made
  4. IBM · Granite Vision 4.1 4Ba document model for tables, charts, OCR, and key-value-pair extraction
  5. Hugging Face · SmolVLM2primary announcement of 256M/500M/2.2B variants for compact image and video understanding
  6. Microsoft · Phi-4 reasoning-vision 15Bofficial card for visual reasoning, OCR, and interface grounding
  7. Qwen · Qwen3 Embedding0.6/4/8B multilingual/code embeddings under Apache 2.0; retrieval is selected separately from generation
  8. IBM · Granite Embedding R2official card for a compact multilingual retrieval model under Apache 2.0
  9. Qwen · Qwen3-ASR 0.6BApache 2.0, 30 languages including Russian, and offline/streaming recognition modes
  10. Qwen · Qwen3-TTS 0.6BApache 2.0, Russian, streaming synthesis, and voice cloning; use only with rights to the voice
  11. OpenAI · Whisper large-v3-turboofficial card for the mature multilingual speech-recognition model under MIT
  12. Kokoro · Kokoro-82Mprimary card for the compact text-to-speech model under Apache 2.0

Current hardware and prices

  1. Intel · Arc B-Series launch12 GB, 456 GB/s, and a $249 RCP: a budget entry point, not a 20–35B card
  2. Intel ARK · Arc B580 specificationsofficial 12 GB, 456 GB/s, and 190 W specifications for the reference card
  3. NVIDIA · GeForce RTX 5060 Ti launch16 GB, 448 GB/s, and a $429 launch MSRP for the 16 GB version
  4. NVIDIA · GeForce RTX 5060 family specificationsofficial 16 GB, 448 GB/s, and 180 W specifications for RTX 5060 Ti
  5. Apple Store US · Buy Mac8 August 2026 snapshot of orderable configurations; the table prices target memory configurations rather than base “from” systems
  6. Apple Store US · Mac mini M4, 24 GB / 512 GBthe table's $1,199 target configuration on 8 August 2026
  7. Apple Store US · Mac mini M4 Pro, 48 GB / 512 GBthe table's $2,199 target configuration on 8 August 2026
  8. Apple · Mac mini technical specifications120 GB/s for M4 and 273 GB/s for M4 Pro; current orderability is separated from historical generation support
  9. Apple · Mac Studio technical specifications410/546 GB/s for M4 Max and 819 GB/s for M3 Ultra; generation limits are separated from current orderability
  10. Apple Store US · Mac Studio M4 Max, 64 GB / 512 GBthe exact table target configuration at $3,499 on 8 August 2026
  11. Apple Store US · Mac Studio live lineupcurrent-lineup snapshot and the base M3 Ultra 96 GB configuration at $5,299 on 8 August 2026
  12. Apple Newsroom · Mac Studio M4 Max and M3 Ultra launchhistorical generation limits: up to 128 GB on M4 Max and 512 GB on M3 Ultra; this is not current orderability
  13. Apple · MacBook Pro M5 Max specificationsup to 128 GB unified memory and 614 GB/s; Apple's current orderable high-capacity option
  14. Apple Store US · 14-inch MacBook Pro M5 Max, 128 GB / 2 TBthe table's $6,699 target configuration on 8 August 2026, not the base M5 Max price
  15. Framework · Desktop live US configuratorcurrent $1,269/$1,959/$3,449 snapshot for 32/64/128 GB, excluding storage and OS; all tiers are listed out of stock and orderable only as a refundable deposit pre-order
  16. Framework · Desktop launch announcementthe 128 GB configuration launched at $1,999; separated from the current $3,449 configurator price
  17. AMD · Ryzen AI Max+ PRO 495specification of up to 192 GB LPDDR5x-8533; GPU-memory and capacity claims are sourced to the separate announcement
  18. AMD · Ryzen AI Max+ PRO 495 announcementvendor claims of up to 160 GB for the GPU and 300B+ Q4 capacity; no orderable system with a public price was found in checked US sources on 8 August 2026
  19. Framework · Using a Framework Desktop for local AI256 GB/s, up to 112 GB GPU-addressable, and a vendor gpt-oss-120b measurement of ≈40/48 tok/s on Windows/Linux
  20. NVIDIA Marketplace · GeForce RTX 5090$1,999 and out-of-stock snapshot on 8 August 2026; this is the card price without a host system
  21. NVIDIA · GeForce RTX 5090 specifications32 GB GDDR7, 575 W, and Blackwell generation; memory bandwidth is the key decode parameter
  22. AMD · Radeon AI PRO R9700$1,299 MSRP, 32 GB, 640 GB/s, and 300 W; ROCm compatibility is tied to OS/driver versions
  23. Intel · Arc Pro B70 launch and pricing32 GB and a $949 suggested starting price; vendor performance claims are separated from independent measurements
  24. Intel · Arc Pro B70 GPU datasheet32 GB GDDR6 ECC, 608 GB/s, and 230 W for Intel's reference card
  25. NVIDIA Marketplace · DGX Sparkcurrent $4,699 price, 128 GB unified memory, and 4 TB NVMe
  26. NVIDIA · DGX Spark User Guide273 GB/s, Arm64/GB10, and system specifications; updated in 2026
  27. NVIDIA Marketplace · RTX PRO 6000 Blackwell Workstation Edition8 August 2026 snapshot: $13,250 and out of stock; this is a current store price, not an announced MSRP
  28. NVIDIA · RTX PRO 6000 Blackwell Workstation Edition96 GB ECC, 1,792 GB/s, and 600 W; technical specifications are separated from the store-price snapshot

Performance measurements

  1. llama.cpp discussion · RTX 5090 vs Radeon AI PRO R9700paired Qwen3.5-35B-A3B UD-Q4_K_XL post: same code revision and flags, but Ryzen 9900X/CUDA versus 7500F/Vulkan; TG is more comparable than PP, and this is not a controlled A/B
  2. llama.cpp · DGX Spark benchmarkgpt-oss-20b/120b and other models at different occupied-context lengths; PP and TG are reported separately
  3. llama.cpp discussion · DGX Spark results and comparison runs16-inch MacBook Pro M4 Max, 64 GB, build 7030: PP32768 1,093.58 and TG128 117.83 tok/s; also context for the DGX Spark bench
  4. llama.cpp discussion · CUDA graph optimizationshows the combined effect of operation fusion and concurrent CUDA streams; the author explicitly notes that the GGML_CUDA_GRAPH_OPT variable name does not mean CUDA Graphs are used
  5. Intel/Lablup · Arc Pro B70 Backend.AI resultsvendor measurements for Qwen3-8B and gpt-oss-20b; not mixed with community llama-bench without reproducing the method
Continue

Related reading

Share

This piece continues the systems-inference analysis: that article covers scheduling, KV memory, and distributed serving; this one turns those constraints into a dated local configuration.