Speed test matrix
deepseek-r1-distill-qwen-14b-awq on CMP 170HX 64GB
vllm · 0.32.0rc1.dev249+g18305948a · AWQ5 contexts (0–120K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K, 120K
Hardware
- Type
- Discrete GPU
- GPU
- CMP 170HX
- VRAM
- 64 GB
- CPU
- 2x Intel Xeon E5-2630 v3
- RAM
- 64 GB
- OS
- Ubuntu 26.04.1
Engine
- Engine
- vllm
- Version
- 0.32.0rc1.dev249+g18305948a
- Quantization
- AWQ
- Backend
- cuda
- Repository
- github.com/vllm-project/vllm
- Build
- ghcr.io/morrowmake/vllm-cmp170hx@sha256:5b45c4d6feafefe2eba962375b0a9a0b64fd22b9e05abb4d1966f14a32a2db79
Run
- Served model
- bench
- Revision
- main
- Benchmark tool
- llm-inference-bench v0.8.0
- Decode test
- Fixed duration
- Prefill mode
- Measured during decode warm-up
- Time per measurement
- 30 s
- Max output
- 8,192 tokens
Launch command
# Untuned out-of-the-box baseline. Spec decode: none # 1x NVIDIA CMP 170HX 64GB (cmpunlocker), 180 W limit, PCIe Gen2 x4 | 2x Intel Xeon E5-2630 v3 | 64 GB DDR4 | Ubuntu 26.04.1, NVIDIA driver 610.57.04 | vLLM: Morrowmake vllm-cmp170hx image vllm serve casperhansen/deepseek-r1-distill-qwen-14b-awq --max-model-len 131072 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --trust-remote-code
Prefill
prompt tok/s by context length8K context3,4272,392 ms TTFT
16K context2,9805,447 ms TTFT
32K context2,45113,192 ms TTFT
64K context1,79935,866 ms TTFT
120K context1,22198,989 ms TTFT
Sustained decode
total tok/s · rows are context length, columns are simultaneous requests| Context | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 |
|---|---|---|---|---|---|---|---|---|
| 0 | 92.666 ms TTFT | 175.991 ms TTFT | 333.393 ms TTFT | 606.4143 ms TTFT | 974.8186 ms TTFT | 1,487.7259 ms TTFT | Over capacity | Over capacity |
| 16K | 73.7151 ms TTFT | 124.2193 ms TTFT | 194.8314 ms TTFT | 271.7424 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 32K | 61.3276 ms TTFT | 94.0366 ms TTFT | 131.9574 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 46.0452 ms TTFT | 62.1696 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 120K | 31.9953 ms TTFT | 38.71,258 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
Over capacity: not run because this many requests at this context would exceed the server's KV cache.
TTFT is measured after the benchmark warms the server's prompt cache, so it mostly excludes prefill.
All measurements
Latencies are medians. Total tok/s is output across all simultaneous requests.| Phase | Context | Requests at once | Status | Total tok/s | Per request tok/s | TTFT | Time between tokens | Average active requests | Completed requests | Output tokens | Measured for |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Prefill | 8K | 1 | Valid | 3,427.0 | — | 2,392 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 2,980.0 | — | 5,447 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 2,451.0 | — | 13,192 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 1,799.0 | — | 35,866 ms | — | — | 1 | — | — |
| Prefill | 120K | 1 | Valid | 1,221.0 | — | 98,989 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 92.6 | 93.2 | 66 ms | 10.7 ms | 1.0 | 0 | 2,777 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 175.9 | 88.8 | 91 ms | 11.3 ms | 2.0 | 0 | 5,276 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 333.3 | 84.8 | 93 ms | 11.8 ms | 4.0 | 0 | 9,996 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 606.4 | 77.9 | 143 ms | 12.8 ms | 8.0 | 0 | 18,192 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 974.8 | 63.3 | 186 ms | 15.8 ms | 16.0 | 0 | 29,232 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 1,487.7 | 48.7 | 259 ms | 20.5 ms | 32.0 | 0 | 44,641 | 30.0 s |
| Sustained decode | 0 | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 73.7 | 74.0 | 151 ms | 13.5 ms | 1.0 | 0 | 2,211 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 124.2 | 62.3 | 193 ms | 16.0 ms | 2.0 | 0 | 3,726 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 194.8 | 48.9 | 314 ms | 20.5 ms | 4.0 | 0 | 5,844 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 271.7 | 33.9 | 424 ms | 29.5 ms | 8.0 | 0 | 8,152 | 30.0 s |
| Sustained decode | 16K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 1 | Valid | 61.3 | 61.4 | 276 ms | 16.3 ms | 1.0 | 0 | 1,837 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 94.0 | 47.1 | 366 ms | 21.2 ms | 2.0 | 0 | 2,820 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 131.9 | 33.0 | 574 ms | 30.3 ms | 4.0 | 0 | 3,956 | 30.0 s |
| Sustained decode | 32K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 1 | Valid | 46.0 | 46.1 | 452 ms | 21.7 ms | 1.0 | 0 | 1,379 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 62.1 | 31.1 | 696 ms | 32.1 ms | 2.0 | 0 | 1,860 | 30.0 s |
| Sustained decode | 64K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 120K | 1 | Valid | 31.9 | 32.0 | 953 ms | 31.3 ms | 1.0 | 0 | 955 | 30.0 s |
| Sustained decode | 120K | 2 | Valid | 38.7 | 19.4 | 1,258 ms | 51.5 ms | 2.0 | 0 | 1,160 | 30.0 s |
| Sustained decode | 120K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 120K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 120K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 120K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 120K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 120K | 128 | Over capacity | — | — | — | — | — | — | — | — |
Over capacity: not run because this many requests at this context would exceed the server's KV cache.
