Skip to main content
DGX Spark’s 128GB unified memory pool is both its biggest advantage and its biggest tuning challenge. Unlike discrete GPUs where VRAM is fixed and separate from system RAM, the Grace CPU and Blackwell GPU share one pool — and when you run out, the system becomes unresponsive instead of throwing a clean out-of-memory error. This page explains where the memory goes, how to size the KV cache, and which vLLM parameters to tune for your workload.

How unified memory works on GB10

DGX Spark uses NVIDIA’s GB10 chip, which combines a Grace ARM CPU and a Blackwell GPU on one package. They share 128GB of LPDDR5X memory over a 273 GB/s interconnect. There is no separate VRAM. When vLLM allocates “GPU memory,” it is carving a region out of the same 128GB pool that DGX OS, the CUDA runtime, and your applications use. This means:
  • gpu_memory_utilization controls a share of the total pool, not a dedicated GPU memory budget.
  • System processes compete for the same bytes. DGX OS, background services, and CUDA context overhead all reduce what the model can use.
  • There is no OOM killer safety net. When the pool is exhausted, DGX Spark hangs rather than terminating the offending process.
A realistic memory budget looks like this:

KV cache overhead on 128GB

The KV cache stores the key-value tensors from every token in every active sequence. Its size grows with 3 factors: context length, number of concurrent sequences, and the model’s architecture (number of layers and KV heads).

The formula

For a single sequence at a given context length:
The factor of 2 accounts for both keys and values.

Example: 70B dense model at different context lengths

Assuming a typical 70B model with 80 layers, 8 KV heads, head dimension 128:
Use FP8 KV cache to cut memory in half. Set --kv-cache-dtype fp8 in your vLLM launch command. The quality impact is less than 2% on most benchmarks, and it effectively doubles the number of concurrent sequences or context length you can support.

Example: 35B MoE model

MoE models have the same KV cache math as dense models for their total layer count. A 35B MoE model with ~64 layers at the same KV head configuration: At 35B MoE with NVFP4 weights (~18 GB), you can fit 128K context with FP8 KV cache and still have ~65 GB of headroom.

Context length vs batch size trade-off

Every token of context in every active sequence consumes KV cache memory. The total KV cache budget is:
In practice, the trade-off on DGX Spark looks like this: For a 70B dense model at NVFP4 (~35 GB weights, ~75 GB remaining for KV cache):

Real-world benchmarks vs NVIDIA claims

NVIDIA’s published figure of 82,739 tok/s for DGX Spark refers to aggregate fine-tuning throughput, not single-user inference. The real numbers for interactive serving are:
The 82,739 tok/s figure measures aggregate throughput across many parallel fine-tuning streams. Single-user interactive inference is a different workload — expect 15-120 tok/s depending on model size and engine, which is still fast enough for real-time chat and coding agent use.

Memory guard: prevent system hangs

The most important tuning parameter on DGX Spark is --gpu-memory-utilization. Set it too high and the system hangs without a recoverable error. Set it conservatively and you lose some KV cache headroom.
Never set gpu_memory_utilization above 0.90 on DGX Spark. Unlike discrete GPUs, unified memory exhaustion makes the entire system unresponsive. You will need a hard power cycle to recover. Start conservative and increase only after confirming stability under your actual workload.

Monitor memory in real time

Open a second terminal and watch memory usage while serving:
If memory.free drops below 2-3 GB, your system is at risk of hanging. Reduce max_model_len, max_num_seqs, or gpu_memory_utilization.

Tuning parameters reference

These are the vLLM flags that matter most on DGX Spark, in order of impact:

Decision table: common configurations

Tuning recipes

Maximize throughput for a single user

Maximize concurrent users for 70B

Safest configuration for large models

Next steps

vLLM on DGX Spark

Installation and launch commands for every model size.

Model compatibility

Which models fit in 128GB and their quantization options.

One vs two Sparks

When memory tuning isn’t enough and you need a second Spark.

KV cache concepts

Deeper explanation of KV cache mechanics across model architectures.