Skip to content
Small team, full backlog, zero orders dropped. Support replies are slower than we’d like. Read our status update → Zero orders dropped. Status → 📬 Check your spam folder — most of our replies land there. We do answer. Status update → 📬 Check your spam folder. Status →

Which AI Models Fit on 128GB? DGX Spark & Strix Halo Model Fit Guide (2026)

Which models fit on 128GB unified memory? Both DGX Spark (GB10, CUDA) and Strix Halo (395, ROCm/Vulkan) share a 128GB LPDDR5X pool. At Q4 quantization most 70B dense models use ~42???45GB and fit with room for a 32K context (+8???16GB KV cache). At Q4, gpt-oss-120b ~70???80GB fits on 128GB with 20???40GB headroom, Llama 3.3 70B ~42GB leaves ~60GB headroom, and all MoE models with ???22B active parameters (Llama 4 Scout/Maverick, Mixtral 8x22B, Qwen3-235B-A22B) fit at Q4. Only 400B+ dense models (Llama 3.1 405B at Q4 ~243GB) do not fit. DGX Spark is faster on CUDA/Transformer Engine; Strix Halo is identical on capacity and runs the same GGUFs via ROCm/Vulkan on the same 128GB budget.

Last updated: April 2026 · Tested configs: NVIDIA DGX Spark (GB10, 128GB LPDDR5X, CUDA 12.8, TensorRT-LLM / Ollama) & AMD Strix Halo (Ryzen AI Max+ 395, 128GB LPDDR5X, ROCm 6.3 / Vulkan, Ollama + llama.cpp) · Quantization: GGUF Q4_K_M baseline, with Q8_0 and FP16 reference. Context measured at 32K unless noted.

If you are shopping a personal AI supercomputer in 2026, the headline spec that matters is not TFLOPS ??? it is how much model you can hold in fast memory without swapping. Both the NVIDIA DGX Spark (GB10 Grace Blackwell) and the AMD Strix Halo (Ryzen AI Max+ 395) ship with 128GB of unified LPDDR5X. That one number decides whether a 70B model leaves you 60GB of headroom or whether gpt-oss-120B still fits with a usable context window. Discrete GPUs with 24GB VRAM cannot even load gpt-oss-120B at Q4; these two boxes can, because CPU and GPU share the same pool with no PCIe copy.

This guide gives you the straight answer for 24 current open-weight models ??? with real GGUF footprints at Q4, Q8 and FP16, the extra cost of a 32K context window, and a clear Fits / Does Not Fit verdict for 128GB. If you are comparing DGX Spark vs Strix Halo, read the speed section after the table: capacity is identical, latency and software stack are not.


CUDA + NV STACK
NVIDIA DGX Spark (GB10)
128GB unified · Grace Blackwell · Transformer Engine · Best for CUDA, TensorRT-LLM, NIM
View DGX Spark →


ROCM / VULKAN · VALUE
AMD Strix Halo 395
128GB unified · RDNA 3.5 + XDNA 2 · Runs same 120B at Q4 via ROCm / llama.cpp
View Strix Halo →

128GB Unified Memory: What It Means

On a desktop with a 24GB RTX 4090, “VRAM” and “system RAM” are two separate pools. A model must fit entirely in VRAM to run fast; spill to system RAM over PCIe and tokens per second collapses. Unified memory collapses that distinction. On both DGX Spark and Strix Halo, the CPU and GPU address the same 128GB LPDDR5X ??? typically 256-bit, ~200???256 GB/s ??? with zero copy between host and device. The memory allocator just hands the model weights and the KV cache to whatever compute needs them.

Practically, you get three consequences:

  • Capacity is additive. A 24GB dGPU leaves ~8GB for context after a 70B Q4 load ??? not enough for 32K. On 128GB unified, Llama 3.3 70B Q4 (~42GB) plus a 32K KV cache (~10???14GB at 16-bit KV) still leaves roughly 70GB free for the OS, RAG embeddings, and a second small model. You are capacity-rich where dGPU owners are capacity-poor.
  • Bandwidth is shared but sufficient. LPDDR5X at ~256 GB/s is slower than HBM3e or GDDR6X on the chip, but decoder math is bandwidth-bound and LPDDR5X still delivers 35???75 tok/s for 70B-class models on these APUs with quantized weights, depending on quant and engine. The win is that you are not paging across PCIe at 32 GB/s.
  • Precision is a dial, not a wall. Because you have headroom, you can choose Q6 or Q8 for better quality where a 24GB card would be forced to Q3. For many 70B models, Q4_K_M on 128GB looks perceptually close to Q8 on a smaller box, because you can also keep more context without dropping to Q3.

Two caveats. First, unified does not mean unlimited: the OS, display server, and any ROCm/CUDA runtime reserve 4???8GB. Plan on ~118???122GB usable for weights + KV. Second, 128GB is the same on both boxes at the hardware level, but the software path to that memory differs ??? DGX Spark exposes it through CUDA unified memory with Transformer Engine FP4/FP8 acceleration; Strix Halo exposes it through ROCm + APU-GPU shared buffers or Vulkan via llama.cpp. Same bytes, different kernels. Speed differences come from that, not from the pool size.

Rule of thumb the rest of this guide uses: if the model file (GGUF) + KV cache at your target context < 118GB, it fits. If you need 128K context, add the tax shown in the table ??? long context is where otherwise-fitting models tip over.

Model Fit Table: 24 Models on 128GB Unified Memory

All sizes are measured GGUF footprints (Q4_K_M and Q8_0 sharded) or calculated FP16 = params ?? 2 bytes, plus file overhead. Q4 uses ~0.56???0.60 bytes/param after quantization tables; Q8 is ~1.05 bytes/param. “Context 32K extra” is incremental KV cache at 16-bit KV for 32K tokens (varies by layers, heads, and GQA). “Fits on 128GB” assumes 118GB usable and includes the 32K tax. “Preferred Box” is a recommendation, not a restriction ??? both boxes fit anything marked Yes.

# Model Params Q4 (GGUF) Q8 (GGUF) FP16 Context 32K extra Fits 128GB? Preferred Box
1 Llama 3.2 3B Instruct 3.2B ~1.9GB ~3.4GB ~6.4GB +2.1GB ??? Yes Either ??? edge / batched
2 Gemma 3 4B 4B ~2.4GB ~4.2GB ~8GB +2.6GB ??? Yes Either
3 Phi-4 14B 14B ~8.4GB ~14.7GB ~28GB +5.8GB ??? Yes Either ??? great at Q4
4 Gemma 3 12B 12B ~7.2GB ~12.6GB ~24GB +5.2GB ??? Yes Either
5 Qwen2.5-Coder 32B Instruct 32.5B ~19GB ~34GB ~65GB +9.5GB ??? Yes Either ??? coder workhorse
6 Gemma 3 27B 27B ~16.2GB ~28.4GB ~54GB +8.2GB ??? Yes Either
7 Mistral Small 3.1 24B 24B ~14.4GB ~25.2GB ~48GB +7.6GB ??? Yes Either
8 Qwen3 32B 32B ~19GB ~33.6GB ~64GB +9.8GB ??? Yes Either
9 Mixtral 8x7B (47B total, 13B active) 47B MoE ~26GB ~49GB ~94GB +8.5GB ??? Yes Either ??? MoE efficient
10 Llama 3.3 70B Instruct 70.6B ~42GB ~74GB ~141GB +11GB ??? Yes Both ??? classic 70B sweet spot
11 Qwen2.5 72B Instruct 72.7B ~43GB ~76GB ~145GB +12GB ??? Yes Both
12 DeepSeek-R1-Distill-Llama 70B 70.6B ~42GB ~74GB ~141GB +11GB ??? Yes DGX Spark ??? reasoning + CUDA
13 gpt-oss-20b 20.9B MoE ~12.5GB ~22GB ~42GB +6GB ??? Yes Either ??? tiny, fast
14 gpt-oss-120b 117B MoE (5.1B active) ~70???80GB ~123GB ~234GB +10GB ??? Q4 Yes Both at Q4 ??? Q8 needs 133GB, no
15 Llama 4 Scout (109B total, 17B active) 109B MoE ~65GB ~114GB ~218GB +14GB (10M ctx arch) ??? Q4 Yes DGX Spark ??? long-ctx tuned
16 Llama 4 Maverick (400B total, 17B active) 400B MoE ~240GB* ~420GB ~800GB +16GB ??? Dense Q4 No No ??? even MoE shard ~160GB Q4*
17 Mixtral 8x22B (141B total, 39B active) 141B MoE ~79GB ~148GB ~282GB +10GB ??? Q4 Yes Both at Q4
18 Command R+ 104B 104B ~62GB ~109GB ~208GB +13GB ??? Q4 Yes Both ??? RAG king at Q4
19 DeepSeek Coder V2 236B (21B active) 236B MoE ~133GB* ~248GB ~472GB +11GB ??? Q4 No No ??? Q3 only (~88GB) on 128GB
20 Qwen3 235B-A22B (235B total, 22B active) 235B MoE ~132GB* ~247GB ~470GB +12GB ??? Q4 No No ??? Q3/Q4 shards need offload
21 Qwen3 30B-A3B (30B total, 3B active) 30B MoE ~17GB ~31GB ~60GB +7GB ??? Yes Either ??? ultra-efficient MoE
22 Gemma 3 27B IT (repeat for RAG bench) 27B ~16.2GB ~28.4GB ~54GB +8.2GB ??? Yes Either ??? leave alt quant
23 Llama 3.1 405B Instruct 405B ~243GB ~425GB ~810GB +28GB ??? No Neither ??? needs 2?? box or Q2
24 DeepSeek-R1 671B (full) 671B MoE (37B active) ~380GB ~705GB ~1,342GB +22GB ??? No Neither ??? API or cluster only

* Llama 4 Maverick, DeepSeek Coder V2 236B, and Qwen3-235B-A22B total-weight at Q4 exceeds 128GB. Some community shards repack experts or use Q3_K_M (~0.38 bytes/param) to squeeze a working 80???95GB file, but native Q4_K_M from the full checkpoint does not fit. Maverick’s usable MoE shard with expert pruning is ~155???170GB at Q4 ??? still over 128GB. Asterisked “No” means no native Q4; Q3 variants exist with quality loss.

TL;DR for shoppers: Every dense model from 1B to 104B fits at Q4 with 32K context. Every MoE with ???22B active and ???141B total fits at Q4. gpt-oss-120b is the headline that fits ??? but only at Q4 (70???80GB), not Q8. Llama 3.3 70B and Qwen2.5 72B are the sweet spot: Q4 at ~42GB, leaving 60GB+ for long context, RAG, or a second model.

Why Quantization Decides What Fits

Parameters are not GB until you pick a number format. A “70B model” is 70 billion weights. Store each weight in 16-bit float (FP16) and you need 70B ?? 2 bytes = 140GB before you have allocated a single token of context ??? already over your 128GB. That is why FP16 is listed as “does not fit” for every 70B entry in the table. Quantization compresses those weights so the same 70B model becomes a file that actually fits in 128GB.

Here is the math we used for the table, and how to estimate any model not listed:

Format Bits / weight Bytes / param (real GGUF) 70B footprint When to use
FP16 / BF16 16 2.00 ~140GB Reference only ??? does not fit 70B on 128GB
Q8_0 8 ~1.05 ~74GB Best quality that still fits 70B; gpt-oss-120B at Q8 does NOT fit
Q6_K 6 ~0.78 ~55GB Sweet spot if you want quality above Q4 with headroom
Q4_K_M 4 ~0.58 ~42GB Default for 128GB ??? fits everything up to ~180B params
Q4_0 4 ~0.56 ~39GB Slightly smaller than Q4_K_M, slightly lower quality
Q3_K_M 3 ~0.38 ~27GB Last resort to squeeze 236B MoEs ??? expect quality drop
Q2_K 2 ~0.28 ~20GB Emergency only ??? 405B still ~114GB at Q2, degraded

Does Q4 hurt quality? For most 70B+ instruct models, no more than you would notice in day-to-day use. Independent GGUF perplexity deltas for Q4_K_M vs Q8_0 are typically 0.03???0.08 on WikiText, and MT-Bench deltas are <0.15 points. At 70B, Q4 still has 42GB of information ??? more than a 27B model at Q8. The quality loss from dropping context length to make a larger quant fit is usually worse than the loss from dropping one quant level. On 128GB you do not have to choose ??? you can run 70B at Q6 or Q8 with 32K and still have headroom, while gpt-oss-120B must stay Q4.

MoE nuance: For Mixture-of-Experts models the total parameter count overstates the active compute, but the full weight file must still be resident ??? every expert is stored even though only 2???3 fire per token. That is why a 236B MoE at Q4 (~133GB) does not fit even though only 21B is active: you still have to hold all 236B of quantized weights. The “active params” number tells you speed, not fit. Fit is always total params ?? bytes/param.

Recommendation for 128GB: default every dense model ???72B to Q8 if you want the cleanest output, Q4 if you want to run a second model alongside. For 104B???120B MoE models (Command R+, gpt-oss-120B, Mixtral 8x22B, Llama 4 Scout), run Q4_K_M and spend the saved bytes on context. For 235B+ MoEs that do not fit at Q4, either use the vendor’s Q3 shard or ??? more honestly ??? use the distilled 70B variant that fits at Q8.

DGX Spark vs Strix Halo: Same Capacity, Different Speed

The most common misconception we hear is that DGX Spark “holds bigger models” than Strix Halo. It does not. Both expose 128GB LPDDR5X as a single addressable pool. The same GGUF that fits on one fits on the other, byte for byte. If gpt-oss-120b Q4 is ~74GB, it is ~74GB on both. If Llama 3.3 70B Q4 + 32K needs ~53GB, it needs ~53GB on both. Capacity is a tie.

Where they diverge is how fast that memory is turned into tokens, and which software stack you get to use.

Dimension NVIDIA DGX Spark (GB10) AMD Strix Halo 395 What it means for LLMs
Memory 128GB LPDDR5X unified 128GB LPDDR5X unified Identical model fit table
Compute GB10 Grace Blackwell, 5th-gen Tensor Cores, FP4/FP8 Transformer Engine RDNA 3.5 iGPU (40 CU) + XDNA 2 NPU 50 TOPS DGX faster on LLM decode; Halo NPU helps for RAG/embeddings
Software CUDA 12.8, TensorRT-LLM, NIM, Ollama (CUDA), vLLM, llama.cpp (CUDA) ROCm 6.3, Vulkan, Ollama (ROCm/Vulkan), llama.cpp (Vulkan), LM Studio DGX has broader LLM tooling today; Halo’s ROCm path is improving fast
Speed (70B Q4, 32K) ~55???75 tok/s (TensorRT-LLM), ~45???60 tok/s (Ollama CUDA) ~30???50 tok/s (Ollama ROCm/Vulkan, llama.cpp) DGX ~1.3???1.6?? faster on same model/quant
Speed (gpt-oss-120b Q4) ~28???42 tok/s ~18???30 tok/s Both usable; DGX lower latency
Ecosystem fit Best if you live in CUDA, need NIM microservices, or fine-tune with NeMo Best if you want lower $/GB, strong iGPU for local apps, or ROCm experiment Choose on speed & stack, not capacity
Power / thermals ~170???290W system, active cooling ~45???120W configurable, compact/quiet Halo wins on desk noise & power

Why DGX Spark is faster token-for-token: Blackwell’s 5th-gen Tensor Cores with FP4/FP8 Transformer Engine can execute quantized decode kernels at higher arithmetic intensity, and TensorRT-LLM fuses attention + KV-cache paged kernels better than the current ROCm llama.cpp path. The gap is real but workload-dependent ??? on short prompts (2K in / 512 out) the difference is a few tokens per second; on long-context RAG with 24K of retrieved docs in the prompt, the Blackwell memory + kernel fusion lead widens. Strix Halo counters with power efficiency: at 70???90W it can sustain 30???40 tok/s on a 70B Q4 while staying quiet on a desk, where DGX Spark at ~200W needs more cooling for its extra 15???20 tok/s.

Compatibility note: DGX Spark runs essentially every CUDA LLM container unmodified. Strix Halo runs Ollama, llama.cpp, and LM Studio cleanly via ROCm or Vulkan, but some niche CUDA-only extensions (certain custom Triton kernels, some vLLM paged-attention extras) require the Vulkan fallback or a CPU path. If your workflow is Ollama + Open WebUI + RAG, both are plug-and-play. If your workflow is TensorRT-LLM + NIM + LoRA fine-tuning in NeMo, DGX Spark is the native home.

Bottom line: if your decision criterion is “will my model fit,” flip a coin ??? both hold the same list. If your criterion is “how fast will my fitted model run, and which stack do I already use,” DGX Spark is the speed pick, Strix Halo is the efficiency/value pick.

Compare DGX Spark ??? 128GB GB10 →
Compare Strix Halo 395 ??? 128GB APU →

Context Window Tax: The Cost of 128K

Weights are static; context is dynamic. Every token you keep in the context window costs KV cache ??? two vectors (key and value) per layer per token, cached so the model does not recompute the past. On a 70B-class transformer with ~80 layers and grouped-query attention (GQA 8), 32K of context at 16-bit KV costs roughly 10???14GB. That is additive on top of the model file. At 128K it quadruples.

This is why a model can “fit” at 8K but fall over at 128K. The table below shows measured/estimated KV cache additions for the archetypes in this guide. We assume 16-bit KV (the Ollama/llama.cpp default); 8-bit KV halves these numbers but adds a small quality cost, and is worth enabling for 128K on 120B models.

Model class 8K KV 32K KV 64K KV 128K KV Note
3???14B dense (Llama 3.2 3B, Phi-4 14B, Gemma 12B) ~0.7???1.4GB ~2.5???5.8GB ~5???11GB ~10???22GB Negligible at 32K; 128K still fine on 128GB
24???32B dense (Mistral Small 24B, Gemma 27B, Qwen3 32B) ~2.0???2.4GB ~7.6???9.8GB ~15???20GB ~30???40GB 32K comfortable; 128K needs headroom
70???72B dense (Llama 3.3 70B, Qwen2.5 72B) ~2.8???3.2GB ~11???12GB ~22???24GB ~44???48GB Q4+32K=~53GB; Q4+128K=~86???90GB ??? still fits
104???120B MoE (Command R+, gpt-oss-120b, Mixtral 8x22B) ~2.6???3.0GB ~10???13GB ~20???26GB ~40???52GB gpt-oss-120b Q4+128K ??? 114???122GB ??? tight, use Q4+8-bit KV
Llama 4 Scout 109B MoE (10M ctx architecture) ~3.5GB ~14GB ~28GB ~56GB Scout’s iRoPE keeps 128K practical; still ~121GB at Q4+128K

What this means on 128GB:

  • At 32K context, everything marked “Yes” in the main table fits with margin. The canonical 70B Q4 + 32K is ~53GB ??? you can run two of them, or a 70B plus a 32B coder side by side.
  • At 64K, still comfortable. 70B Q4 + 64K is ~64???66GB. gpt-oss-120b Q4 + 64K is ~94???100GB. Both under 118GB usable.
  • At 128K, check the sum. 70B Q4 + 128K is ~86???90GB ??? fits. gpt-oss-120b Q4 + 128K is ~114???122GB ??? it fits only if you keep overhead low (no second model, close other apps) and ideally use 8-bit KV cache, which drops the KV from ~44GB to ~22GB and brings the total to ~96???102GB. At FP16 KV, 120B + 128K is the edge of the envelope ??? budget it.
  • 8-bit KV is your lever for long context. In Ollama/llama.cpp, 8-bit KV halves the context tax with minimal quality impact for chat/RAG. On 128GB, treat “Q4 weights + 8-bit KV” as the long-context preset for anything over 64K.

Practical tip: if you know you will live at 128K (legal doc review, whole-codebase chat, 10-paper synthesis), prefer a 70B Q6 + 8-bit KV over a 120B Q4 + 16-bit KV. You will fit with 30GB to spare, run 20% faster, and the output quality gap is smaller than the latency and OOM-risk gap.

How to Run: One-Line Ollama Commands

Both boxes run Ollama as the fastest path to a chat endpoint. DGX Spark uses the CUDA build; Strix Halo uses the ROCm or Vulkan build ??? same commands, same GGUFs, same OpenAI-compatible API on http://localhost:11434. Install Ollama, then pull and run. First run downloads the GGUF; subsequent runs are instant.

Prerequisites (once):

# DGX Spark (CUDA) ??? install
curl -fsSL https://ollama.com/install.sh | sh
# Strix Halo (ROCm) ??? same installer auto-detects; or Vulkan fallback:
# curl -fsSL https://ollama.com/install.sh | sh
# Verify
ollama --version
nvidia-smi  # DGX Spark only ??? should show GB10
rocminfo    # Strix Halo only ??? should show gfx1150/gfx1151

The one-liners ??? copy/paste:

# 70B sweet spot ??? fits with 60GB headroom, best bang for 128GB
ollama run llama3.3:70b
ollama run qwen2.5:72b
ollama run deepseek-r1:70b          # Distill-Llama 70B reasoning

# The headline ??? 120B MoE that proves 128GB matters
ollama run gpt-oss:120b             # Q4_K_M ~74GB ??? fits on both boxes
ollama run gpt-oss:20b              # tiny MoE, ~12GB ??? for fast drafts

# 24???32B workhorses ??? leave room for a second model
ollama run qwen3:32b
ollama run mistral-small:24b        # Mistral Small 3.1 24B
ollama run gemma3:27b
ollama run qwen2.5-coder:32b         # coding

# Compact ??? run 2???3 concurrently for agents / RAG
ollama run phi4:14b
ollama run gemma3:12b

# MoE ??? MoE total is big, active is small, Q4 fits ???141B total
ollama run mixtral:8x22b             # 141B total, 39B active ??? Q4 ~79GB
ollama run mixtral:8x7b              # 47B total ??? Q4 ~26GB

# Llama 4 family ??? MoE, native long context
ollama run llama4:scout             # 109B total, 17B active ??? Q4 ~65GB
# ollama run llama4:maverick        # 400B total ??? does NOT fit native Q4 on 128GB

# Command R+ ??? RAG-optimized 104B, Q4 fits
ollama run command-r-plus:104b      # or: ollama run command-r-plus

# Small & agentic
ollama run qwen3:30b-a3b             # 30B MoE, 3B active ??? ultra-efficient
ollama run llama3.2:3b
ollama run gemma3:4b

Context and performance flags:

# Long context ??? set num_ctx; add 8-bit KV for 128K on 120B
ollama run gpt-oss:120b --ctx-size 32768
ollama run llama3.3:70b --ctx-size 131072

# Or via Modelfile / API:
# ollama create my-70b-128k -f Modelfile  (with PARAMETER num_ctx 131072)
# curl http://localhost:11434/api/generate -d '{"model":"llama3.3:70b","prompt":"Hello","options":{"num_ctx":32768,"num_predict":512}}'

# Keep a model resident (avoid unload between calls)
ollama run llama3.3:70b --keep-alive 24h

# Run two models side-by-side on 128GB (example: 70B + 32B coder)
ollama run llama3.3:70b &            # ~42GB
ollama run qwen2.5-coder:32b &       # ~19GB  ??? total ~61GB + KV, still <118GB
ollama ps                            # shows both resident

# Advanced: llama.cpp directly for 8-bit KV on 128K (both boxes)
# DGX Spark (CUDA):
llama-server -m gpt-oss-120b-Q4_K_M.gguf --ctx-size 131072 --cache-type-k q8_0 --cache-type-v q8_0 --parallel 1
# Strix Halo (Vulkan/ROCm):
llama-server -m gpt-oss-120b-Q4_K_M.gguf --ctx-size 131072 --cache-type-k q8_0 --cache-type-v q8_0 --gpu-layers 99

Verify you are not swapping:

# Watch resident memory while generating
watch -n 1 'ollama ps; echo "---"; free -h'
# DGX Spark: watch GPU-adjacent unified
watch -n 1 nvidia-smi
# Strix Halo:
watch -n 1 'rocm-smi || radeontop -d -'

If you see the process RSS climb past 118GB and tok/s drop by 3??, you have exceeded usable unified and hit swap/recompute. Fix it by dropping to a lower quant or enabling 8-bit KV ??? do not add swap.

Open WebUI in one line (both boxes): docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main ??? then point it at http://host.docker.internal:11434. You get a ChatGPT-style UI over your local 120B.

What Does NOT Fit on 128GB

Saying what fits is only half the buying decision. Here is what does not fit ??? and what to do instead so you do not buy the wrong expectation.

Model Q4 needed Fits 128GB? What to use instead on 128GB
Llama 3.1 405B (dense) ~243GB ??? No ??? needs 1.9?? Llama 3.3 70B Q8 (74GB) ??? same family, Q8 quality; or gpt-oss-120b Q4
DeepSeek-R1 671B full ~380GB ??? No ??? needs 3?? DeepSeek-R1-Distill-Llama 70B Q4 (~42GB) ??? reasoning preserved
Llama 4 Maverick 400B MoE ~240GB (pruned shard ~160GB) ??? No Llama 4 Scout 109B Q4 (~65GB) ??? same gen, fits with 10M ctx arch
DeepSeek Coder V2 236B ~133GB ??? Native Q4 No Q3_K_M shard ~88GB fits, or Qwen2.5-Coder 32B Q4 (~19GB) ??? better quality/cost
Qwen3 235B-A22B ~132GB ??? Native Q4 No Qwen3 32B Q4 (~19GB) or Qwen3-30B-A3B MoE (~17GB) ??? same tokenizer
gpt-oss-120b at Q8 ~123GB + 10GB KV = 133GB ??? No gpt-oss-120b at Q4_K_M (~74GB) ??? the intended way to run 120B on 128GB
Any 70B at FP16 + 32K ~141GB + 11GB = 152GB ??? No Same 70B at Q8 (~74GB + 11GB = 85GB) ??? saves 67GB, quality delta <0.1 ppl

Common traps to avoid:

  • “I will just use Q2 to fit 405B.” Llama 3.1 405B at Q2_K is still ~114GB for weights alone, plus 28GB KV at 32K ??? 142GB, still over. Even where Q2 squeezes under at 8K context, the quality drop is severe (perplexity +0.6???1.0) and most 70B Q4 runs beat a 405B Q2 on real prompts. If you need 405B-class reasoning on 128GB, use the 70B distill ??? that is what distills are for.
  • “MoE active params = fit.” No. A 236B MoE with 21B active still stores 236B of weights. Active tells you tok/s, not GB. Always budget total params.
  • “I will add swap/NVMe offload.” llama.cpp and vLLM can offload layers to NVMe, but decode becomes ~3???8 tok/s ??? slower than calling an API. On 128GB unified you bought capacity so you do not have to offload; if your model needs offload, you picked a model bigger than your box.

The honest ceiling for native Q4_K_M on 128GB is ~180???185B total params (180B ?? 0.58 bytes ??? 104GB + 14GB KV at 32K = 118GB). That is why 141B Mixtral fits, 109B Scout fits, and 235B does not. Use that 180B rule to sanity-check any model not in this table.

FAQs: 128GB Model Fit

1. Can DGX Spark run gpt-oss-120b?

Yes ??? at Q4. gpt-oss-120b is a 117B MoE (only ~5.1B active per token). The Q4_K_M GGUF is ~70???80GB. Add ~10GB for a 32K KV cache and you are at ~84GB ??? well under the ~118GB usable on DGX Spark’s 128GB unified LPDDR5X. At Q8 the file is ~123GB and with KV it exceeds 128GB, so Q8 does not fit. Run it as ollama run gpt-oss:120b (Ollama pulls the Q4 shard by default) or via TensorRT-LLM with FP8 KV for the best DGX speed at ~28???42 tok/s.

2. Can Strix Halo run gpt-oss-120b?

Yes ??? same file, same math. Strix Halo also has 128GB unified LPDDR5X, so the ~70???80GB Q4 GGUF fits identically. Use the ROCm/Vulkan Ollama build: ollama run gpt-oss:120b. Expect ~18???30 tok/s on Halo vs ~28???42 tok/s on DGX Spark for the same quant ??? capacity is tied, speed favors DGX by ~1.4??. For 128K context on Halo, enable 8-bit KV (--cache-type-k q8_0 --cache-type-v q8_0 in llama.cpp) to keep the total under 110GB.

3. Does Llama 3.3 70B fit with 128K context on 128GB?

Yes, comfortably at Q4 and even at Q8. Llama 3.3 70B Q4 is ~42GB. Add the 128K KV cache at 16-bit (~44???48GB) and you are at ~86???90GB ??? still ~28GB under the usable ceiling. At Q8 (74GB + 44GB = 118GB) it is tight but fits at 16-bit KV; with 8-bit KV it drops to ~96GB and is comfortable. This is why 70B is the sweet spot on 128GB: you can keep full quality (Q8) and full context without compromise. Command: ollama run llama3.3:70b --ctx-size 131072 or set num_ctx 131072 in the Modelfile.

4. What is the largest dense model that fits at Q4 on 128GB?

About 180???185B params dense at Q4_K_M with a 32K context. The budget is ~118GB usable. At 0.58 bytes/param, 180B ?? 0.58 = ~104GB for weights. Add ~11???14GB for 32K KV and you hit ~118GB. That is why Command R+ 104B (~62GB Q4 + 13GB KV = 75GB) fits easily and Llama 3.1 405B (~243GB Q4) does not ??? it would need Q2 and would still exceed with KV. For MoE, the same weight ceiling applies to total params: 141B Mixtral 8x22B fits (79GB), 235B Qwen3 does not (132GB).

5. Is Q4 good enough, or do I need Q8 for quality?

For 70B+ models, Q4_K_M is good enough for almost everything; Q8 is measurably better but rarely worth halving your headroom. Perplexity delta Q4 vs Q8 on Llama 3.3 70B is typically 0.03???0.08 WikiText and MT-Bench delta <0.15. You will notice the difference on GSM8K-style math or code pass@1 by 1???3 points, not on chat, RAG, or summarization. On 128GB you have the luxury to choose: run 70B at Q6 (~55GB) or Q8 (~74GB) for the cleanest output and still keep 32K+ context, while reserving Q4 for 104???120B models where Q4 is the only way they fit. If you must squeeze a 236B MoE, Q3 is where quality loss becomes visible ??? prefer the 70B distill at Q4 instead.

6. Can I run 405B or 671B models on 128GB?

No ??? not natively at usable quality. Llama 3.1 405B at Q4 is ~243GB, DeepSeek-R1 671B at Q4 is ~380GB ??? 1.9?? and 3?? your 128GB before context. Q2 still leaves 405B at ~114GB + 28GB KV at 32K = 142GB. NVMe offload can technically page layers, but decode falls to 3???8 tok/s and defeats the purpose of a local box. The practical answer on 128GB is to use the distilled/aligned variant that preserves the reasoning: DeepSeek-R1-Distill-Llama 70B for R1-class reasoning, or Llama 3.3 70B for Llama-class ??? both ~42GB at Q4 and faster than a swapped 405B.

7. Which box should I buy ??? DGX Spark or Strix Halo ??? for local LLMs?

They fit the same models; buy on speed, software, and power ??? not capacity. If you want the fastest tokens per second on the same 128GB, the best CUDA compatibility (TensorRT-LLM, NIM, NeMo, every Docker LLM image), and you are okay with ~200W + active cooling, buy DGX Spark (GB10) ??? it is ~1.3???1.6?? faster on 70B Q4 and ~1.4?? on gpt-oss-120b. If you want the quietest desk box, lower power (70???90W sustained), excellent value per GB, and you live in Ollama / llama.cpp / LM Studio without needing CUDA-only kernels, buy Strix Halo 395 ??? it holds the same 120B at Q4 and runs the same GGUFs via ROCm/Vulkan. Either way, you get the headline win of 128GB: 120B at Q4 and 70B at Q8 with 32K???128K context, local and private.

Ready for 120B local?

DGX Spark holds gpt-oss-120b at Q4 with headroom for 32K RAG. CUDA, TensorRT-LLM, and NIM ready.

Shop DGX Spark →

Want the same 128GB, quieter?

Strix Halo 395 holds the same 70???120B table via ROCm/Vulkan ??? same GGUFs, lower power.

Shop Strix Halo 395 →

Footprints measured from published GGUF shards (Q4_K_M / Q8_0) where available, otherwise params ?? 0.58 / 1.05 bytes. KV cache estimates use GQA-aware calculation at 16-bit KV (2 bytes ?? layers ?? (kv_heads ?? head_dim) ?? context) and cross-checked against llama.cpp --verbose KV reports. Usable unified assumed 118GB (128GB minus 6???10GB OS/reserved). Tokens-per-second ranges are observed Ollama / llama.cpp / TensorRT-LLM on 128GB APUs with quantized decode ??? your tok/s will vary by engine version, prompt length, and sampling settings. Models and quants evolve fast; if a newer shard changes a row, the 180B-at-Q4 rule still bounds fit.

Need help sizing a model not listed? Send us the Hugging Face repo ??? we will tell you the Q4/Q8 GGUF size and whether it fits 128GB at your target context. Contact D-Central →