Two speeds that matter
Decode throughput is how fast the model generates tokens after it starts answering, measured in tokens per second (tok/s). It determines how quickly a chat reply or code completion appears on screen. Prefill latency is how long the model takes to process your input before it generates the 1st token, measured in milliseconds per token (ms/token). It determines the pause between hitting Enter and seeing output start to stream. Different workloads care about different speeds:Time-to-first-token (TTFT) combines prefill latency with any scheduling or queue delay. For a single user on local hardware, TTFT is roughly equal to prefill time. Under concurrent load, queuing adds to TTFT independently.
What precision means for speed
Precision controls how many bits represent each weight in the model. Fewer bits means smaller weights, which changes 2 things: how much memory the model occupies and how much data the GPU reads per token.How precision affects decode vs prefill differently
This is the key insight: decode and prefill hit different hardware bottlenecks, so the same precision change affects them unequally.Decode is memory-bandwidth-bound
During decode, the model generates 1 token at a time. For each token, it reads the entire weight matrix from memory and performs a tiny amount of compute per weight. The GPU spends most of its time waiting for data to arrive from memory, not doing math. Smaller weights = less data to read = faster decode. The speedup is roughly proportional to the memory reduction:- FP16 → FP8: ~1.8-2.0x decode speedup
- FP16 → INT4: ~2.5-3.5x decode speedup
- FP16 → NVFP4: ~2.5-3.0x decode speedup
Prefill is compute-bound
During prefill, the model processes all input tokens in parallel. It reads the weights once but performs a large matrix multiplication across all prompt tokens. The GPU spends most of its time doing math, not waiting for memory. Quantization helps prefill less because the math is the bottleneck, not the weight reads:- FP16 → FP8: ~1.3-1.5x prefill speedup
- FP16 → INT4: ~1.2-1.5x prefill speedup
- FP16 → NVFP4: ~1.3-1.5x prefill speedup
Practical implication
As precision decreases, decode improves faster than prefill. At INT4, a model that felt sluggish at FP16 generates text rapidly but still pauses noticeably on long prompts. This asymmetry drives the workload-specific recommendations below.Power draw across precision levels
Lower precision reduces power consumption for 2 reasons: fewer memory reads (memory access dominates energy cost) and simpler arithmetic (INT4 multiply costs less than FP16 multiply).DGX Spark power envelope
DGX Spark’s GB10 chip has a ~40W TDP shared between Grace CPU and Blackwell GPU. Here are observed power ranges during inference:Consumer GPU power expectations
Cost of 24/7 serving
For a DGX Spark running continuously at decode load:
On a consumer GPU like the RTX 4090 at 10 hours/day:
Benchmark methodology
Run these tests on your own setup to see how precision affects your specific model and hardware.Measure decode throughput
Generate a fixed number of output tokens from a short prompt and measure tokens per second.Measure prefill latency
Time how long the model takes to produce its 1st token at varying prompt lengths.Measure power draw
What to report
Fill in this table for each precision level you test:Real-world decision table
Pick the row that matches your primary workload:Why not always use INT4?
Why not always use INT4?
INT4 quantization (GPTQ, AWQ, Q4_K_M) reduces quality noticeably on smaller models and instruction-following tasks. On models under 13B parameters, the quality gap between FP16 and INT4 can degrade output. On 70B+ models, the gap narrows because the model has more capacity to absorb quantization noise. Test your specific model before committing.
Does KV cache precision affect these numbers?
Does KV cache precision affect these numbers?
Yes. FP8 KV cache (set with
--kv-cache-dtype fp8 in vLLM) halves the KV cache memory independently of weight quantization. It has minimal impact on decode speed but lets you fit longer contexts or more concurrent users. See DGX Spark memory tuning for sizing tables.How does context length change decode speed?
How does context length change decode speed?
Decode reads the entire KV cache on every token. Longer conversations build larger caches, so decode slows down as context grows. A model at 4K context may generate at 40 tok/s but drop to 25 tok/s at 32K context on the same hardware. See KV cache and context for the mechanics.
Quick benchmark commands
Use these as starting points to compare precisions on a single model.vLLM benchmark suite
llama.cpp benchmark
Ollama built-in evaluation
Compare across precisions
Run the same prompt at each precision and record results in a table:Next steps
DGX Spark memory tuning
KV cache sizing, batch trade-offs, and tuning parameters for 128GB unified memory.
vLLM on DGX Spark
Installation, NVFP4 configuration, and optimal launch commands.
Benchmark a deployment
End-to-end testing through Tokios — latency, streaming, and client comparison.
Quantization concepts
Deeper explanation of GPTQ, AWQ, GGUF, and quantization trade-offs.