Skip to content
all longreads
Longread#LocalAI#MLSystems

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

A practical atlas of local deployment in two parts. The first covers principles that do not age with the models: what counts as local, how to budget memory, measure speed, estimate total cost, and make the purchase decision. The second is a dated snapshot: the model map, hardware with prices, software, published benchmarks, and six configurations for actual work. There is no universal ranking here.

8 August · updated 31 October 2026≈ 51 minprimary sources ↓

The principles (sections 1–8) are not tied to a date. The snapshot (sections 9–12) was checked against sources on 31 October 2026: prices are official US stores and suggested prices before tax; availability and regional prices differ.

Short answer · snapshot as of 31 October 2026
24–32 GB

The practical sweet spot: gpt-oss-20b, Qwen3.6-35B-A3B, Gemma 4 26B-A4B, Nemotron 3.5 Lightning, or dense Qwen3.8 27B and Gemma 4 31B at Q4.

96–192 GB

The 100–125B class: gpt-oss-120b, Qwen3.5-122B-A10B, Nemotron 3.5 Super VL. Capacity grows faster than speed, so watch memory bandwidth and full system price.

Purchase

Replay your usual requests with the exact model file and software you plan to use first. “The model loaded” proves capacity, not the usefulness of the resulting system.

How the article is organized. Sections 1–8 are the durable part: what local means, memory arithmetic, model choice, reading hardware specifications, performance measurement, the runtime, total cost, and the purchase-decision order. They do not depend on specific models. Sections 9–12 are an explicitly dated snapshot: models, hardware, prices, software versions, benchmarks, and six configurations. An update to the article changes only that part.

01

A local model runs on a device or network you control

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.

A trace here is the saved requests and sequence of model and tool calls that can be replayed. A quant is a particular quantized weight build, such as Q4: compare the exact file, not just its bit width. The runtime is the software that loads the weights and executes requests, including its version and settings.

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 + Mvision
Mconfiguration ≥ Mpeak × 1.15–1.25 + MOS
the additional 15–25% covers workload variation and runtime updates; MOS is a separate reserve for the system and background applications
Figure 2 · the complete memory budget
  1. WEIGHTSP × bits / 8+ scales & metadata
  2. KV CACHElayers × tokens× KV heads
  3. RUNTIMEgraphs · buffersvision encoder

FIT IS A SUM, NOT A FILE SIZE

PLANNING RULE · capacity ≥ peak × 1.15–1.25 + OS reserve

35B AT RAW Q4 · ≈ 17.5 GB floor

REAL ARTIFACT · packing adds bytes

LONG CONTEXT · can consume the reserve

“It loads” is not the same as “it serves the workload”

Local inference memory budgetFIT IS A SUM, NOT A FILE SIZEWEIGHTSP × bits / 8+ scales & metadataKV CACHElayers × tokens× KV headsRUNTIMEgraphs · buffersvision encoder++PLANNING RULEcapacity ≥ peak × 1.15–1.25 + OS reserve35B 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: memory capacity ≥ (peak resident memory of the target process set at P95 context and working concurrency + multimodal/draft components not covered by that measurement) × 1.15–1.25 + OS and application reserve. This is the formula above with a measured Mpeak: it 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. The opposite mistake happens too: the official FP8 checkpoint of a 35B-parameter MoE takes about 35–38 GB and already targets 48 GB, even though its Q4 floor is 17.5 GB. The file format moves the hardware tier more than the “35B” in the name does.

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

Choose a model by task, exact weight file, and license

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 selection order is therefore the reverse of the usual one: first the use case and quality threshold, then the memory tier, and only then the exact weight file. Tiers with current examples live in the snapshot, in section 9; this section covers the rules for choosing among them.

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. An accepted task is one whose result clears the predefined quality check. The useful metric is the number of those tasks per wall-clock time.

For attempts of comparable duration, a rough estimate of time to an accepted result is the mean duration of one attempt divided by the share of attempts that pass acceptance.

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, Gemma 4, and many Qwen and Mistral models use Apache 2.0. 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.

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

The generator is only one part of RAG. An embedding model can run on CPU or a small GPU, a 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. The same holds for speech, document recognition, and command routing: a compact specialist model with hundreds of millions or a few billion parameters is often cheaper, faster, and more stable than a general one. Concrete models for these use cases are collected in section 9.

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
for MoE the denominator holds only active experts and shared layers, so a 120B MoE with 5B active parameters generates faster than a dense 70B on the same device

Discrete GPU or unified memory

  • A discrete card offers the highest bandwidth and the most mature kernels, but its VRAM is a hard wall: whatever does not fit crosses PCIe and generation slows sharply.
  • Cards with the same capacity from another vendor are often cheaper, but support for the exact model and quant must be validated on the OS–driver–runtime combination.
  • Unified memory—Apple silicon, AMD Ryzen AI Max, NVIDIA GB10—addresses 64–128 GB or more without PCIe offload, but its bandwidth is several times lower than a fast discrete card's and limits large dense models sooner.
  • A professional card combines large capacity with high bandwidth, but price and power move the decision from personal to infrastructure class.

The second item is not a theoretical caveat. A specification promises capacity and bandwidth, not that the chosen runtime will come up on your OS and driver version on the first attempt. The time it takes to assemble a working stack is a budget line, just like the device price.

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. NVIDIA consumer cards have no NVLink, so layers or tensors move over PCIe, synchronization reduces speed, and the chassis must power and cool two cards drawing 300–600 W each. 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.

How to read a hardware price

A price in a review is useful only with five attributes: date, market, taxes, exact configuration, and availability state. A “from” price refers to base memory, not the configuration the model needs. A graphics-card price excludes the host, PSU, and cooling. A manufacturer's suggested price and the store price differ, and a deposit pre-order is not the same as a device in stock. In the snapshot, every price carries these attributes; when moving it to another market, add VAT, import costs, and the cost of warranty.

The used market stays out of the snapshot tables for the same reason. Second-hand RTX 3090 and 4090 cards, with their 24 GB, are the main real alternative to new cards on memory per dollar, but there is no warranty, the mining and overclocking history is unknown, memory and fans arrive with accumulated wear, and listing prices shift week to week and region to region—they cannot be pinned to a date. They should not be excluded from a personal decision: the same capacity and bandwidth arithmetic applies, with repair risk and inspection time added mentally to the price.

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.

How to read other people's benchmarks

A published measurement answers a narrow question: what speed did this model, this weight file, and this software version deliver on this device at this context length. Two rows can be compared only when every condition matches except the one under study. Even a paired post by one author with identical flags stops being a controlled A/B if the systems use different CPUs or drivers. Vendor claims are useful as an upper reference, but their testbed and settings are usually not reproducible. Other people's numbers therefore calibrate scale, not a ranking: “dollars per token” cannot be computed across rows from different experiments.

Several conclusions still carry over between hardware generations. An MoE model with a few billion active parameters on one modern card streams faster than a person reads. A large unified-memory pool with moderate bandwidth is primarily a capacity play: a 100–120B MoE stays fast on it, while a dense 70B is noticeably slower. Finally, context has a cost: generation slows as context fills, so an empty-cache test overstates expectations. The numbers behind these conclusions on the snapshot date are in section 11.

Software changes the result without new hardware

Software can change the result without a new GPU. For example, 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. An acceptance threshold needs a numeric form—for example, “TTFT under 0.5 s for IDE completion”; the number is illustrative, and your threshold comes from your scenario, not from this article.

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. Which runtime versions are current on the snapshot date, and what changed in them, is collected in section 11.

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

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: a separate graphics card still needs a motherboard, CPU, RAM, fast SSD, PSU, and cooling. Complete systems such as a Mac or DGX Spark carry a system price, while do-it-yourself kits are sometimes sold without storage and an OS.

Figure 5 · 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.

08

Test model quality, then replay your work on the chosen device

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 6 · 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

Use one row per exact configuration in the final table: model and weight file, software and version, device, acceptance rate, time to first response, full-cycle P95, peak memory, and price. This shows which candidate meets your thresholds and what it costs.

  • 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, provided external transfer is permitted for those data. If it is prohibited, revisit the task, quality threshold, or local configuration. Optimizing a model that cannot solve the target task at the required quality level will not resolve the problem by itself.

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 protocol above checks all five traps: keep a request archive, launch script, and results table, changing one variable at a time. Replay the test after a material model or software update and keep the previous result. A new version must clear the same quality, P95, and memory thresholds on the same archive; higher average speed alone does not justify an update.

The practical default is deliberately plain and barely depends on the year: an existing machine and a small model to validate the product itself; then one card or memory pool of 24–32 GB and a model that fits it with headroom for a personal agent; 96–128 GB only after a measured advantage of a larger tier. Multi-GPU and models with hundreds of billions of parameters form a research branch, not a mandatory next step. The snapshot below shows which models and devices stand behind these steps today.

Part II · snapshot as of 31 October 2026

Models, hardware, prices, and benchmarks on the check date

Everything below is a market snapshot, not a principle. Models, configurations, prices, and software versions were checked against primary sources on 31 October 2026; prices are official US stores and suggested prices before tax. This part ages fastest: the next update changes only sections 9–12, while the formulas and decision order from Part I stay the same.

If you are reading this months later, recheck prices and availability first, then support for your model in the chosen runtime, and only then the models themselves: that is the order in which this data goes stale.

09

Snapshot: the model map as of 31 October 2026

The tiers below were selected by the rules from section 3: use case, memory tier, exact weight file, license. This is a shortlist, not a quality ranking: models share a row because of capacity and the shape of work, not test scores. Every model was checked against its Hugging Face card on 31 October 2026: parameter count, license, and the size of the official weight files.

Figure 7 · model tiers and useful work
A model map for local inferenceSELECT A CAPABILITY TIER, THEN A CHECKPOINT2–8B totaledge / voice routerclassification ·extractionGemma E2B/E4B ·LFM3≈ 4–8 GB DEVICE8–14Bprivate assistantRAG · light codingQwen3.5 · Gemma 4 ·Granite≈ 12–16 GB20–35Bcoding & agentsmultimodal documentsgpt-oss · Qwen3.6 · 3.8≈ 24–32 GB100–125Bshared workstationreasoning / evaluationgpt-oss · Nemotron 3.5≈ 80–192 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; Qwen3.5 2B/4B; Ministral 3 3B; LFM3 1.7B; Granite 4.2 3B
Memory
Gemma 4 E2B/E4B: 2.3/4.5B effective, but 5.1/8B stored parameters; Q4 weights ≈ 1–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; LFM carries a commercial-license threshold
Parameters / tier
8–14Beveryday tier
Examples
Qwen3.5 9B; Gemma 4 12B; Ministral 3 8B/14B; Granite 4.2 8B
Memory
8–14B stored parameters, almost all used 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; heavy coding and multi-step agents usually need a tier above
Parameters / tier
27–31Bdense models
Examples
Qwen3.8 27B; Gemma 4 31B; Muse Glimmer 30B; Granite 4.2 30B
Memory
Q4 weights ≈ 14–16 GB; Muse Glimmer's official Q4_K_M GGUF is 16.8 GB (Meta lists 24 GB), Qwen3.8 FP8 is 30.9 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–35B MoEsweet spot
Examples
gpt-oss-20b; Qwen3.6-35B-A3B; Gemma 4 26B-A4B; Nemotron 3.5 Lightning 30B-A3B; LFM2.5-24B-A2B
Memory
20–35B total, 2–4B active per token; native FP4/Q4 files ≈ 11–22 GB (Nemotron NVFP4 is 21.6 GB), plan for 24–32 GB
Fits
Local agents, coding, tools, reasoning, fast interaction
Constraint
All weights reside, speed tracks active weights; architecture support is critical
Parameters / tier
100–125B MoEworkstation
Examples
gpt-oss-120b; Qwen3.5-122B-A10B; Nemotron 3.5 Super VL 120B-A12B; Mistral Small 4 119B-A6B; Qwen3.8-Flash-Next 125B-A6B
Memory
100–125B total, 5–12B active per token; native FP4/Q4 files ≈ 59–76 GB (Nemotron NVFP4 is 75 GB), plan for 80–128 GB
Fits
Strong reasoning, a small-team shared server, evaluating smaller models
Constraint
Qwen3.8-Flash-Next stores 180B with n-gram embeddings and its official FP8 is 185.5 GB; Mistral Small 4 officially requires server-class hardware. Licenses differ
Parameters / tier
284B+local boundary
Examples
DeepSeek V4 Flash 284B-A13B; GLM-5.3-Flash 320B-A18B; Qwen3.5 397B-A17B; GigaChat 3.5 Ultra 432B-A28B; DeepSeek V4.1 Flash 552B; Kimi K3 2.8T-A104B
Memory
The Q4 lower bound starts at ≈ 142 GB; official files range from 167 GB for V4 Flash and 510 GB for V4.1 Flash to 1,561 GB for Kimi K3; 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”

What changed since August

  • The 27–31B tier changed the most. Qwen3.8 27B (Apache 2.0; text, image, and video) replaced Qwen3.6 27B; Meta released the dense Muse Glimmer 30B under Apache 2.0 with an official 16.8 GB Q4_K_M GGUF and an explicit 24 GB recommendation; IBM released Granite 4.2 3B/8B/30B with reasoning modes.
  • NVIDIA released the Nemotron 3.5 line under the OpenMDW-1.1 license. Lightning 30B-A3B with a 1M window continues the Nemotron 3 Nano class; Super VL 120B-A12B takes 75 GB in NVFP4 and, according to its card, fits one DGX Spark.
  • Liquid AI released LFM3 with 1.7B parameters (about 1 GB at four bits by Liquid's estimate) and the LFM2.5-24B-A2B MoE. Their license bars commercial use by companies with $10M or more in annual revenue—which also applies to the earlier LFM2.5.
  • No new small Qwen, gpt-oss, Ministral, or Devstral models appeared this quarter: Qwen3.5 2B/4B/9B, Qwen3.6-35B-A3B, gpt-oss-20b/120b, Ministral 3, and Devstral Small 2 remain current. Llama 4 Scout has not been updated and dropped off the list.
  • The top tier moved even further from “local”: DeepSeek V4.1 Flash grew to 552B and a 510 GB file, Mistral Large 4 has about 1T parameters, and Kimi K3 has 2.8T. GigaChat 3.5 Ultra (432B-A28B, MIT) replaced GigaChat 3 Ultra, and Yandex published open weights for the first time—the base model AliceAI-Foundation-80B-A3B, without instruction tuning.

The most practical candidates

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

An example of how the file format moves the hardware tier: Qwen3.6-35B-A3B has a 17.5 GB Q4 floor, but its official FP8 checkpoint is about 37.5 GB. It targets 48 GB, while a community Q4 on 24 GB needs short context and quality validation. The opposite example is Nemotron 3.5 Bolt 74B-A9B: NVIDIA published an official 24 GB package with experts compressed to roughly two bits. That build fits one card, but its quality must be validated separately from the full version.

The 100–125B and 284B+ tiers

The 100–125B tier runs on one 80–128 GB device through MoE and trained FP4 formats. OpenAI explicitly gives 16 GB for gpt-oss-20b and 80 GB for gpt-oss-120b, and NVIDIA lists one DGX Spark for Nemotron 3.5 Super VL. That is capacity guidance, not a tokens/s promise: DGX Spark, Mac Studio, and RTX PRO 6000 read memory at very different rates. The tier name can mislead as well: Qwen3.8-Flash-Next activates 6B of 125B, but with its n-gram embeddings it stores 180B, and its official FP8 weighs 185.5 GB.

Models from 284B up are local only in the sense of an owned cluster. DeepSeek V4 Flash ships as a file of about 167 GB, its successor V4.1 Flash at about 510 GB, and Kimi K3 at about 1.5 TB. 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.

Licenses on the snapshot date

Most models in the table use Apache 2.0 or MIT: gpt-oss, Gemma 4, Qwen3.5/3.6/3.8 27B, Granite 4.2, Muse Glimmer 30B, Ministral 3, Devstral Small 2, DeepSeek, GLM, and GigaChat. Nemotron 3.5 (OpenMDW-1.1), Qwen3.8-Flash-Next (Qwen Community License 1.0, with a separate license for model-as-a-service use), LFM ($10M revenue threshold), Mistral Large 4 (a model-as-a-service restriction), and Kimi K3 carry their own terms. The license names in this paragraph are a snapshot-date guide; check the license text of the exact release before use.

Specialist models by use case

Use case
Small device
Models
LFM3 1.7B and LFM3-VL; Gemma 4 E2B; SmolVLM2 500M/2.2B
Work
Commands, extraction, routing, basic image/video understanding
License / format
The LFM Open License 1.0 bars commercial use at $10M+ annual revenue; Gemma 4/SmolVLM are Apache 2.0
Use case
Enterprise RAG
Models
Granite 4.2 3B/8B/30B; Qwen3 Embedding and Reranker 0.6B/4B/8B; EmbeddingGemma 2; Granite Embedding R2; Nemotron 3.5 Embed/Rerank
Work
Tools, code, 128K context; dedicated embedding/reranking, including scanned-document retrieval
License / format
Apache 2.0 for Granite, Qwen, and EmbeddingGemma; Nemotron 3.5 uses OpenMDW-1.1; Granite ships official GGUF, FP8, MXFP4, and MLX builds
Use case
Code and repositories
Models
Devstral Small 2 24B; Qwen3.8 27B; Qwen3.6-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; MiniCPM-OCR 1.0 1.3B; 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; VibeVoice-ASR-Streaming 1.5B; Qwen3-TTS 0.6B/1.7B; Kokoro 82M
Work
Russian: Qwen3-ASR, Whisper, and Qwen3-TTS; Kokoro is lightweight non-Russian TTS; the new Granite Speech 5.0 does not support Russian
License / format
Apache 2.0/MIT; measure audio-loop latency end to end
10

Snapshot: hardware and prices as of 31 October 2026

The snapshot covers new hardware with a public US price on 31 October 2026, before tax. The used market is excluded for the reasons in section 4. Phones and NPU laptops are excluded because results depend too heavily on the device and software. If you already own such a device, start there—you may not need new hardware. Points in Figure 8 are specifications, not speed on one shared task.

Figure 8 · 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 M632 GB · 153–170 GB/sMac mini M5 Pro64 GB · 307 GB/sRTX 509032 GB · 1.79 TB/sR9700 / B7032 GB · 0.61–0.64 TB/sMac Studio M5 Max128 GB · 614 GB/sDGX Spark · Ryzen AI Max+ 395128 GB · 256–273 GB/sRyzen AI Max+ PRO 495192 GB · 273 GB/sMac Studio M5 Ultra512 GB · 1.2 TB/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 suggested · 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 MSRP · GPU only; lowest US retail price on 22 October was $766
Fits
7–14B; gpt-oss-20b in native MXFP4 with a short validated context; fast RAG
Constraint
The GDDR7 shortage nearly doubled the real price; dense 20–24B models require tight quantization or offload
Hardware
Mac mini M6
Memory / bandwidth
16/24/32 GB; 153–170 GB/s
US price
from $899 · 16 GB / 256 GB; 32 GB ≈ $1,299 via the upgrade step
Fits
2–14B Q4; gpt-oss-20b MXFP4 on 32 GB; quiet API
Constraint
Metal/MLX are convenient, but base-chip bandwidth limits even mid-size models
Hardware
Mac mini M5 Pro
Memory / bandwidth
24/48/64 GB; 307 GB/s
US price
from $1,699 · 24 GB / 512 GB; 64 GB ≈ $2,699–2,899 depending on chip
Fits
9–35B Q4; 70B Q4 on 64 GB with little headroom; development, private RAG
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 Founders Edition MSRP · card only, sells out in minutes; partner cards ≈ $3,500–4,500 per press reports
Fits
7–35B; very high batch-1 speed and broad CUDA compatibility
Constraint
Needs an expensive host/PSU/cooling; 70B does not fit
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 M5 Max
Memory / bandwidth
36–128 GB; 460 or 614 GB/s (40-core GPU)
US price
from $2,499 · 36 GB / 512 GB; 128 GB only with the 40-core GPU, ≈ $5,099 via the upgrade step
Fits
Fast 20–35B; 70B Q4 and gpt-oss-120b on 128 GB
Constraint
The least expensive 128 GB Mac; bandwidth is well below M5 Ultra
Hardware
14-inch MacBook Pro M5 Max
Memory / bandwidth
up to 128 GB; up to 614 GB/s
US price
from $4,699 · 40-core GPU, 48 GB / 2 TB; 128 GB / 2 TB cost $6,699 in August, total not rechecked
Fits
20–70B; gpt-oss-120b fits by the official 80 GB guidance
Constraint
Portability at the cost of thermals and price; same bandwidth as Mac Studio M5 Max
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 · no SSD/OS · per press reports on 30 September
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
AMD Ryzen AI Halo
Memory / bandwidth
128 GB LPDDR5x; 256 GB/s; the same Ryzen AI Max+ 395
US price
$3,999 · 128 GB / 2 TB, Windows 11 or Linux · Micro Center
Fits
Like Framework 128, but a complete system with storage and OS
Constraint
AMD's own developer platform; sold through one retail chain
Hardware
Framework Desktop 192 · AMD Ryzen AI Max+ PRO 495
Memory / bandwidth
192 GB LPDDR5x-8533; 273 GB/s; up to 160 GB for the GPU per AMD
US price
$6,799 DIY / $7,449 assembled with 2 TB · pre-order, shipping from November
Fits
100–125B MoE with context headroom; several models resident at once
Constraint
Capacity grew 1.5×, bandwidth barely moved; dense models above 70B will be slow
Hardware
NVIDIA DGX Spark and GB10 systems
Memory / bandwidth
64 or 128 GB coherent LPDDR5x; 273 GB/s; ConnectX-7
US price
128 GB Founders Edition $6,950, out of stock (was $4,699); 64 GB partner systems from $4,999 since 23 October; Dell Pro Precision with GB10 $8,103 for 128 GB / 2 TB
Fits
gpt-oss-120b and Nemotron 3.5 Super VL, CUDA prototyping, two-node experiments
Constraint
Capacity and CUDA matter more than raw decode speed; 64 GB does not hold the 100–125B tier; Arm64 creates compatibility gaps
Hardware
Mac Studio M5 Ultra
Memory / bandwidth
96/256/512 GB; 1.2 TB/s
US price
from $5,499 · 96 GB / 1 TB; 256 GB ≈ $9,499 via the upgrade step; 512 GB $22,299 since 28 October
Fits
70B Q8, 100–125B with long context; 256–512 GB holds 284B+ models in low-bit formats
Constraint
The highest bandwidth among unified-memory systems; 256–512 GB costs as much as a professional GPU
Hardware
RTX PRO 6000 Blackwell
Memory / bandwidth
96 GB GDDR7 ECC; 1,792 GB/s; 600 W
US price
$16,000 · per press reports, out of stock ($13,250 in August)
Fits
Fast 70B, 100–125B in FP4; shared server
Constraint
NVIDIA has not published an MSRP; the card offers speed and ECC but is prohibitively expensive for a home system

What changed since August

  • On 25 August Apple refreshed its desktop Macs. Mac mini now ships with M6 (up to 32 GB) and M5 Pro (up to 64 GB, 307 GB/s); Mac Studio with M5 Max (up to 128 GB, 614 GB/s) and M5 Ultra (96/256/512 GB, 1.2 TB/s). The August oddity, when large Mac Studio configurations could not be ordered, is gone: the 512 GB option has been orderable again since 28 October at $22,299.
  • Ryzen AI Max+ PRO 495 moved from the watchlist into the table: Framework Desktop with 192 GB is open for pre-order at $6,799, shipping from November. Capacity grows by half, while bandwidth only moves from 256 to 273 GB/s.
  • NVIDIA raised prices: DGX Spark Founders Edition went from $4,699 to $6,950 and is sold out; RTX PRO 6000 from $13,250 to $16,000. Since 23 October partners have sold a 64 GB DGX Spark from $4,999—cheaper, but the 100–125B class no longer fits.
  • RTX 50 Super has still not launched; press reports say it was postponed because of the GDDR7 shortage. At the end of September TrendForce forecast DRAM contract prices rising 10–15% in Q4, and retail shows it: the lowest US price of RTX 5060 Ti is $766 against a $429 MSRP.

The practical consequence: at the end of 2026, unified memory is the only mainstream way to get more than 96 GB on one device without a server budget, but its price rises with the price of memory. If you need a device for a specific 100–125B model, compare a 128 GB Mac Studio M5 Max, a 128–192 GB Ryzen AI Max+, and a 128 GB DGX Spark by full system price and on your own trace, not by a specification line.

11

Snapshot: software and published benchmarks as of 31 October 2026

The table records the versions checked on 31 October 2026 and the main change in each runtime since August. A version number here is not advice to upgrade; it is an example of what to record next to every measurement: a month later the same model on the same hardware may run noticeably faster or stop loading.

Stack
llama.cpp + GGUF · build b12020, version v0.8.0
Where
CPU, Metal, CUDA, Vulkan, ROCm, SYCL
Strength
Since August: M5 neural accelerators for prompt processing, NVFP4 on Blackwell, MTP and new drafters, RPC over RDMA, a host-memory cache for MoE experts
Boundary
Builds ship daily—pin the number; support for a new architecture may lag the model release
Stack
MLX 0.32.4 / mlx-lm 0.32.2
Where
Apple silicon and unified memory
Strength
Kernels for the M5 neural accelerator, faster MoE and long context; outpaces llama.cpp on long input on M5 Ultra
Boundary
Apple-only; does not replace a Linux/CUDA serving stack
Stack
Ollama 0.40.13 / LM Studio 0.4.28
Where
Desktop UX and an OpenAI-compatible local API
Strength
Since 0.40, Ollama runs supported architectures on MLX by default on Mac; LM Studio added MTP and the Splash engine for Apple silicon
Boundary
Performance and support are inherited from the underlying backend; after an update a model may move to another engine
Stack
vLLM 0.32.0 / SGLang 0.5.22
Where
Linux server, CUDA/ROCm, multiple users; vllm-metal is experimental on Mac
Strength
Continuous batching, prefix cache, metrics; NVFP4 KV cache and MXFP4 MoE on RTX 50, RTX PRO 6000, and DGX Spark
Boundary
SGLang targets datacenter GPUs; new multimodal/MoE models require the right version
Stack
TensorRT-LLM 1.2.1 · 1.4.0rc2
Where
NVIDIA CUDA, especially a production GPU server
Strength
Specialized kernels; pre-releases add NVFP4 and optimizations for RTX 50 and DGX Spark
Boundary
The stable release has not moved since April and 1.3 never left RC; engine builds raise change cost
Stack
ROCm 10.1 / Intel llm-scaler 1.5
Where
AMD and Intel respectively
Strength
ROCm moved to 10.x numbering and officially supports Ryzen AI Max+ 395 and R9700; llm-scaler rebased onto vLLM 0.26
Boundary
On Ryzen AI Max+ 395 and R9700, Vulkan in llama.cpp still keeps pace with ROCm on generation; gpt-oss is not on llm-scaler's validated list

The quarter's main change concerns Macs. Since version 0.40, Ollama runs supported models on Mac through MLX rather than llama.cpp by default, and LM Studio added its own Mac engine. After an update the same command may run on a different runtime, so before comparing “before” and “after,” check which engine actually loaded the model.

On AMD, ROCm moved to version 10 and officially supports Ryzen AI Max+ 395 and R9700, yet in published measurements Vulkan in llama.cpp still keeps pace with it on generation.

The measurements below follow the rule from section 5: the publication names the model, quant, runtime version, and context length. No new paired RTX 5090 and R9700 measurement appeared after August, so that pair is unchanged. Open tables for Mac Studio M5 Ultra and Ryzen AI Max+ 395 at several context lengths were added. Rows that could not be rechecked were removed: Framework's gpt-oss-120b result and Intel's Arc Pro B70 result.

Figure 9 · 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 VALUERYZEN AI MAX+ 395Qwen3.6-35B-A3B63 tok/s · VulkanMAC STUDIO M5 ULTRAQwen3.6-35B-A3B144 tok/s · llama.cppDGX 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
Hardware
Radeon AI PRO R9700 · 32 GB
Workload
Same model/quant · llama.cpp Vulkan on Windows with AMD's proprietary driver · 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 a different CPU, OS, and backend; not a controlled A/B
Hardware
Mac Studio M5 Ultra · 80-core GPU, 256 GB
Workload
gpt-oss-20b MXFP4 · llama.cpp b11896 · F16 KV · prompt equals context depth
Prompt processing
512-token input: 6,569 tok/s; 32K input: 4,681 tok/s
Generation
TG 210; at 32K — 154; at 128K — 85 tok/s
Evidence class
Community raw results on Hugging Face, three trials per row, October 2026
Hardware
Mac Studio M5 Ultra · 80-core GPU, 256 GB
Workload
Qwen3.6-35B-A3B UD-Q4_K_M · llama.cpp b11896 versus a 4-bit MLX build · mlx 0.32.4
Prompt processing
32K input: 4,604 tok/s in llama.cpp and 7,893 tok/s in MLX
Generation
llama.cpp: TG 144; at 128K — 85. MLX: 160; at 128K — 107 tok/s
Evidence class
The same dataset; the quants differ, so the runtime gap is a clue rather than an A/B
Hardware
AMD Ryzen AI Max+ 395 · 128 GB
Workload
Qwen3.6-35B-A3B UD-Q4_K_XL · llama.cpp Vulkan (RADV) versus ROCm 7.14 · early-August builds
Prompt processing
2,048-token input: 1,243 tok/s Vulkan and 1,604 tok/s ROCm
Generation
Vulkan: TG 63; at 32K — 51. ROCm: 54; at 32K — 46 tok/s
Evidence class
An open community table; one machine and two backends—a useful Vulkan versus ROCm comparison
Hardware
DGX Spark · 128 GB
Workload
gpt-oss-20b MXFP4 · llama.cpp build 7941 · 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, February 2026; nothing newer on the snapshot date
Hardware
DGX Spark · 128 GB
Workload
gpt-oss-120b MXFP4 · 59.0 GiB · llama.cpp build 7941
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
DGX Spark · 128 GB
Workload
gpt-oss-120b · Ollama versus vLLM 0.26 · single stream
Prompt processing
not published
Generation
Ollama 42; vLLM 61 tok/s
Evidence class
A user measurement on the NVIDIA forum, August 2026; context length not stated

What can still be inferred

  • A 20–35B MoE on one modern card or on Mac Studio M5 Ultra generates several times faster than a person reads: 127–210 tok/s at short context.
  • Long context is expensive everywhere. On M5 Ultra gpt-oss-20b generation drops from 210 to 85 tok/s at 128K; on DGX Spark gpt-oss-120b drops from 59 to 43 tok/s at 32K. Measure speed at the length your trace actually contains.
  • The runtime can give more than the next purchase. On M5 Ultra, MLX processes a 32K input 1.7 times faster than llama.cpp and keeps 107 tok/s versus 85 at 128K. On DGX Spark a forum user got 61 tok/s in vLLM versus 42 in Ollama on the same model.
  • 128 GB at 256–273 GB/s is primarily a capacity play: gpt-oss-120b is fast there thanks to 5.1B active parameters, while a dense 70B model on the same device will be several times slower.
12

Snapshot: six configurations as of 31 October 2026

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. The model short-lists in the rows are assembled by tool support, license, and community adoption, not by measured quality: only your own eval confirms quality.

Use case
Offline assistant and voice
Models
Gemma 4 E2B/E4B; LFM3 1.7B; Qwen3.5 2B/4B; Ministral 3 3B
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; Granite 4.2 8B; 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.8 27B; Qwen3.6-35B-A3B; Nemotron 3.5 Lightning
Hardware
24–64 GB; RTX 5090/R9700/B70 or Mac mini M5 Pro / Mac Studio M5 Max
Acceptance criterion
Interactive pace, tool calling, diff/JSON, and quality on your repositories
Use case
Multimodal documents
Models
Qwen3.8 27B; Qwen3.6-35B-A3B; Gemma 4 12B/26B; Muse Glimmer 30B
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, gpt-oss-120b, or Nemotron 3.5 Super VL; a smaller draft/router model
Hardware
96–192 GB; Mac Studio M5 Ultra, DGX Spark 128 GB, Ryzen AI Max+ PRO 495, RTX PRO 6000, or a Linux GPU host
Acceptance criterion
Measure concurrency, P95, and auth; batch-1 tok/s is no longer sufficient
Use case
Research lab
Models
125B–1T and multiple formats of one model: DeepSeek V4 Flash, GLM-5.3-Flash, Qwen3.5 397B
Hardware
Multiple GPUs/nodes or a 512 GB Mac Studio M5 Ultra; 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; a 48–64 GB Mac mini M5 Pro or a Mac Studio M5 Max is a quiet system where the IDE, code, and model share memory. What decides the choice is not a public coding score but behavior on your repositories: patch format and tool loops.

3. Large personal model: 96–192 GB

Framework Desktop with AMD Ryzen AI Max+ 395 and 128 GB of memory at $3,449 remains the least expensive new route in this table to gpt-oss-120b, but 256 GB/s favors MoE over dense 70B. The 192 GB PRO 495 version costs almost twice as much and adds capacity, not speed. The 128 GB DGX Spark has risen to $6,950 and adds CUDA, 4 TB SSD, and ConnectX-7. A 128 GB Mac Studio M5 Max offers more bandwidth and MLX for about $5,100.

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.

The default as of 31 October 2026 is deliberately plain: an existing machine and 8–14B to validate the product; then 24–32 GB and a 20–35B MoE or a dense 27–31B model for a personal agent; 96–192 GB only after a measured advantage of the 100–125B class. Multi-GPU, a 512 GB Mac Studio, and 284B+ models form a research branch, not a mandatory next step.

Takeaways

Three principles and two observations on the snapshot date

  1. 01Local inference is not selected by parameter count: start with the use case and quality threshold, then the exact weight file, the measured memory peak with 15–25% headroom, bandwidth, and actual model support in the runtime.
  2. 02Memory capacity decides whether a model fits; bandwidth decides how fast it answers. For MoE, active parameters set the speed while all stored parameters set the memory requirement.
  3. 03Other people's tokens per second calibrate scale, not a ranking; your own trace, the share of accepted tasks, and the full system price—not the card price—decide the purchase.
  4. 04As of 31 October 2026 the practical sweet spot is unchanged—24–32 GB with a 20–35B MoE or a dense 27–31B model at Q4; this quarter the tier gained Qwen3.8 27B, Muse Glimmer 30B, Granite 4.2, and Nemotron 3.5.
  5. 05Hardware is getting more expensive in autumn 2026 because of the memory shortage: DGX Spark rose to $6,950, RTX PRO 6000 to $16,000, and the real price of RTX 5060 Ti is nearly double its MSRP. On the other hand, Apple restored 128–512 GB configurations, and the 192 GB Ryzen AI Max+ PRO 495 is open for pre-order.
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 README — definitions of prompt processing (pp), text generation (tg), and combined tests; tokenization and sampling are excluded
  2. ggml-org · llama.cpp — the baseline GGUF inference implementation and supported CPU/GPU backends; state changes quickly
  3. MLX Community · mlx-lm — LLM inference and quantization on Apple silicon through MLX

Runtimes on the snapshot date

  1. llama.cpp · release b12020 — the build on the snapshot date; since August: M5 neural accelerators for prompt processing, NVFP4 on Blackwell, MTP, RPC over RDMA
  2. llama.cpp · PR 27461, Metal tensor API on M5 — 1 September 2026: prompt processing on M5 neural accelerators instead of shader ALUs
  3. MLX · release v0.32.4 — the MLX version on the snapshot date: M5 neural accelerator kernels, faster MoE and long context
  4. Ollama · release v0.40.0 — from this version Ollama runs supported models on Mac through MLX by default; 0.40.13 on the snapshot date
  5. LM Studio · changelog — version 0.4.28 on the snapshot date: MTP and the Splash engine for Apple silicon
  6. vLLM · release v0.32.0 — NVFP4 KV cache and MXFP4 MoE on RTX 50, RTX PRO 6000 and DGX Spark
  7. vLLM · vllm-metal v0.32.0 — an experimental vLLM build for Mac
  8. SGLang · release v0.5.22 — the version on the snapshot date; targets datacenter GPUs
  9. NVIDIA · TensorRT-LLM v1.4.0rc2 — a pre-release with NVFP4 and optimizations for RTX 50 and DGX Spark; the stable release is 1.2.1
  10. AMD · ROCm 10.1 release notes — the move to 10.x numbering and official support for Ryzen AI Max+ 395 and Radeon AI PRO R9700
  11. Intel · llm-scaler 1.5 — rebased onto vLLM 0.26; gpt-oss is not on the validated model list

2026 models

  1. OpenAI · Introducing gpt-oss — 21B/3.6B active and 117B/5.1B active, native MXFP4; official 16 GB and 80 GB fit guidance
  2. Qwen Team · Qwen3.6 — the April 2026 family, local llama.cpp/MLX paths, and text/image/video support
  3. Qwen · Qwen3.6-35B-A3B model card — 35B total/3B active, 262K native context, Apache 2.0, and multimodal/agentic capabilities
  4. Qwen · Qwen3.8-27B model card — dense 27.8B, 262K context, text, images and video, Apache 2.0; the official FP8 is 30.9 GB
  5. Meta · Muse Glimmer 30B GGUF — dense 29.8B with a vision encoder, Apache 2.0; the official Q4_K_M is 16.8 GB and targets 24 GB of memory
  6. Qwen · Qwen3.5-9B model card — official card for the dense 9B model: parameters, context, multimodality, and the Apache 2.0 license
  7. Qwen · Qwen3.5-397B-A17B model card — official 397B-A17B card as a cluster-local rather than personal-local boundary
  8. Qwen · Qwen3.5-122B-A10B GPTQ-Int4 — an official 4-bit checkpoint of the large MoE model; format and kernels must be validated together
  9. Qwen · Qwen3.8-Flash-Next — 125B core and 180B stored parameters, 6B active; the official FP8 is 185.5 GB; Qwen Community License 1.0
  10. Google · Gemma 4 model card — E2B/E4B/12B/26B-A4B/31B models, context limits, and multimodal capabilities
  11. Google · Get started with Gemma models — official per-size positioning, from mobile devices through large servers and clusters
  12. Mistral AI · Ministral 3 14B model card — Apache 2.0, 256K, native vision, and official 24 GB FP8 fit guidance
  13. Mistral AI · Mistral Small 4 — 119B 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
  14. NVIDIA · Nemotron 3.5 Lightning 30B-A3B NVFP4 — hybrid Mamba-2 and MoE, 3B active, 1M context; the NVFP4 file is 21.6 GB; OpenMDW-1.1 license
  15. NVIDIA · Nemotron 3.5 Super VL 120B-A12B NVFP4 — 120B total and 12B active, text, images and video; NVFP4 is 75 GB and targets one DGX Spark or RTX PRO 6000
  16. NVIDIA · Nemotron 3.5 Bolt 74B-A9B, 24 GB build — a 74B-A9B model compressed from Super VL; the official 24.1 GB pack stores experts in IQ2-XXS
  17. DeepSeek · DeepSeek-V4-Flash model card — 284B-A13B as a lower boundary where “local” already means multi-device
  18. DeepSeek · DeepSeek-V4.1-Flash — 552B backbone, about 510 GB of weights, MIT; already needs several devices or a 512 GB Mac Studio
  19. Z.ai · GLM-5.3-Flash — 320B total and 18B active, FP8 is 328 GB, MIT
  20. SberDevices · GigaChat 3.5 Ultra — 432B total and 28B active, FP8 is 438 GB, MIT; succeeds GigaChat 3 Ultra
  21. Mistral AI · Mistral Large 4 — about 1T total and 49B active, FP8 is 1,061 GB; the new Mistral Ecosystem Open-Weight License restricts model-as-a-service use
  22. Яндекс · AliceAI-Foundation-80B-A3B-Base — Yandex's first open weights: a base 81B-A3B MoE without instruction tuning, Apache 2.0
  23. Moonshot AI · Kimi K3 — 2.8T total and 104B active, MXFP4 about 1,561 GB, its own Kimi K3 License; the weight release date comes from a secondary source
  24. Liquid AI · LFM2.5-24B-A2B — 24B total and 2.45B active, LFM Open License 1.0; the claimed 184 tok/s on M5 Max is a vendor measurement

Specialist models

  1. Liquid AI · LFM3-1.7B — 1.73B, 256K context, VL, Audio and Omni variants; the LFM Open License 1.0 bars commercial use at $10M+ annual revenue
  2. IBM · Granite 4.2 8B model card — the 3B/8B/30B family from 25 August 2026, Apache 2.0, 128K; official GGUF, FP8, MXFP4, NVFP4 and MLX builds
  3. Mistral AI · Devstral Small 2 24B — an Apache 2.0 specialist coding model; official FP8, while low-bit GGUF artifacts are typically community-made
  4. IBM · Granite Vision 4.1 4B — a document model for tables, charts, OCR, and key-value-pair extraction
  5. Hugging Face · SmolVLM2 — primary announcement of 256M/500M/2.2B variants for compact image and video understanding
  6. Microsoft · Phi-4 reasoning-vision 15B — official card for visual reasoning, OCR, and interface grounding
  7. OpenBMB · MiniCPM-OCR 1.0 — a 1.3B OCR model, Apache 2.0
  8. Qwen · Qwen3 Embedding — 0.6/4/8B multilingual/code embeddings under Apache 2.0; retrieval is selected separately from generation
  9. Google · EmbeddingGemma 2 — 740M, multimodal embeddings, 8K context, Apache 2.0
  10. NVIDIA · Nemotron 3.5 Embed — 1B/8B embeddings and an 8B reranker for scanned-document retrieval, OpenMDW-1.1
  11. IBM · Granite Embedding R2 — official card for a compact multilingual retrieval model under Apache 2.0
  12. Qwen · Qwen3-ASR 0.6B — Apache 2.0, 30 languages including Russian, and offline/streaming recognition modes
  13. Qwen · Qwen3-TTS 0.6B — Apache 2.0, Russian, streaming synthesis, and voice cloning; use only with rights to the voice
  14. OpenAI · Whisper large-v3-turbo — official card for the mature multilingual speech-recognition model under MIT
  15. Microsoft · VibeVoice-ASR-Streaming 1.5B — streaming speech recognition, MIT
  16. IBM · Granite Speech 5.0 2B — speech recognition and translation in six languages, Russian not among them; Apache 2.0
  17. Kokoro · Kokoro-82M — primary card for the compact text-to-speech model under Apache 2.0

Current hardware and prices

  1. Intel · Arc B-Series launch — 12 GB, 456 GB/s, and a $249 RCP: a budget entry point, not a 20–35B card
  2. Intel ARK · Arc B580 specifications — official 12 GB, 456 GB/s, and 190 W specifications for the reference card
  3. NVIDIA · GeForce RTX 5060 Ti launch — 16 GB, 448 GB/s, and a $429 launch MSRP for the 16 GB version
  4. NVIDIA · GeForce RTX 5060 family specifications — official 16 GB, 448 GB/s, and 180 W specifications for RTX 5060 Ti
  5. GPUPrix · GeForce RTX 5060 Ti 16 GB US prices — US low of $766 on 22 October 2026 against a $429 MSRP; a price tracker, secondary source
  6. Apple Store US · Buy Mac — “from” prices in the US Apple Store on 31 October 2026, before tax; large-memory totals are derived by upgrade step
  7. Apple Store US · Mac mini — M6 from $899 and M5 Pro from $1,699 on 31 October 2026; totals for 32 and 64 GB are derived by memory upgrade step
  8. Apple · Mac mini technical specifications — M6 up to 32 GB and 153–170 GB/s depending on configuration; M5 Pro up to 64 GB and 307 GB/s
  9. Apple · Mac Studio technical specifications — M5 Max up to 128 GB and 460/614 GB/s; M5 Ultra 96/256/512 GB and 1.2 TB/s
  10. Apple Store US · Mac Studio live lineup — M5 Max from $2,499 and M5 Ultra from $5,499 on 31 October 2026
  11. Apple Newsroom · Mac Studio with M5 Max and M5 Ultra — announcement of 25 August 2026: M5 Max and M5 Ultra, configurations up to 512 GB
  12. Daring Fireball · Configurations and pricing for new Mac minis and Mac Studios — the memory upgrade table used to derive large-memory totals; a secondary source rounded to whole dollars
  13. MacRumors · Mac Studio M5 Ultra with 512 GB — the 512 GB configuration has been orderable again since 28 October 2026: $22,299 for 512 GB / 1 TB
  14. Apple · MacBook Pro M5 Max specifications — M5 Max up to 128 GB of unified memory and 614 GB/s
  15. Apple Store US · 14-inch MacBook Pro — M5 Max from $4,699 on 31 October 2026; the 128 GB / 2 TB price ($6,699) is from the 8 August snapshot and was not rechecked
  16. Framework · Desktop live US configurator — the configurator did not load from our environment on 31 October 2026; the 128 GB price ($3,449 without storage or OS) comes from Phoronix
  17. Framework · Desktop launch announcement — launch price of the 128 GB configuration was $1,999; it has since risen to $3,449
  18. Phoronix · Framework Desktop with Ryzen AI Max+ PRO 495 — 30 September 2026: 192 GB, $6,799 DIY and $7,449 pre-built with 2 TB, shipping from November; the 128 GB version now costs $3,449
  19. AMD · Ryzen AI Max+ PRO 495 — specification of up to 192 GB LPDDR5x-8533; GPU-memory and capacity claims are sourced to the separate announcement
  20. AMD · Ryzen AI Max+ PRO 495 announcement — vendor claims: up to 160 GB for the GPU and 300B+ Q4 capacity; a capacity claim, not a speed measurement
  21. Tom's Hardware · AMD Ryzen AI Halo — AMD Ryzen AI Halo on Ryzen AI Max+ 395 with 128 GB / 2 TB at $3,999 at Micro Center
  22. NVIDIA Marketplace · GeForce RTX 5090 — $1,999 is the Founders Edition price; the marketplace did not load from our environment on 31 October 2026, and partner cards reportedly sell for about $3,500–4,500
  23. NVIDIA · GeForce RTX 5090 specifications — 32 GB GDDR7, 575 W, and Blackwell generation; memory bandwidth is the key decode parameter
  24. AMD · Radeon AI PRO R9700 — $1,299 MSRP, 32 GB, 640 GB/s, and 300 W; ROCm compatibility is tied to OS/driver versions
  25. Intel · Arc Pro B70 launch and pricing — 32 GB and a $949 suggested starting price; vendor performance claims are separated from independent measurements
  26. Intel · Arc Pro B70 GPU datasheet — 32 GB GDDR6 ECC, 608 GB/s, and 230 W for Intel's reference card
  27. NVIDIA Marketplace · DGX Spark — the marketplace did not load from our environment on 31 October 2026; the Founders Edition price of $6,950 (was $4,699) and its sold-out status come from press reports
  28. NVIDIA · DGX Spark User Guide — 273 GB/s, Arm64/GB10, and system specifications; updated in 2026
  29. TechnoEdge · DGX Spark price increase — 8 October 2026: DGX Spark Founders Edition price raised to $6,950, sold out
  30. StorageReview · DGX Spark 64 GB — a 64 GB version from partners only, from $4,999 since 23 October 2026
  31. Dell · Pro Precision with GB10 — $8,103 for 128 GB / 2 TB on 31 October 2026
  32. NVIDIA Marketplace · RTX PRO 6000 Blackwell Workstation Edition — $13,250 and out of stock on 8 August 2026; on the snapshot date the marketplace did not load, so the current price comes from the press
  33. NVIDIA · RTX PRO 6000 Blackwell Workstation Edition — 96 GB ECC, 1,792 GB/s, and 600 W; technical specifications are separated from the store-price snapshot
  34. Let's Data Science · RTX PRO 6000 price increase — report of the RTX PRO 6000 price rising to $16,000; out of stock
  35. ServeTheHome · DGX Station systems — DGX Station on GB300 is sold only through partners on request; quotes start at about $85,000
  36. TrendForce · DRAM and NAND contract prices, 4Q26 — 30 September 2026: forecast of DRAM contract prices rising 10–15% and NAND 15–20% in Q4

Performance measurements

  1. llama.cpp discussion · RTX 5090 vs Radeon AI PRO R9700 — paired 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 benchmark — gpt-oss-20b/120b and other models at different occupied context, build 7941; PP and TG are reported separately; no newer run on the snapshot date
  3. tristanbes · M5 Ultra LLM bench (Hugging Face dataset) — raw results for Mac Studio M5 Ultra 80-core GPU, 256 GB: llama.cpp b11896 and MLX 0.32.4, context up to 128K, three trials per row
  4. kyuz0 · AMD Strix Halo toolbox results — an open Ryzen AI Max+ 395 table: one machine, llama.cpp Vulkan (RADV) and ROCm 7.14, several context lengths
  5. NVIDIA Developer Forums · DGX Spark across Ollama, llama.cpp and vLLM — a user measurement with one harness, August 2026: gpt-oss-120b at 42 tok/s in Ollama and 61 tok/s in vLLM; context length not stated
  6. llama.cpp discussion · CUDA graph optimization — shows 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
Continue

Related reading

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.