Speed test matrix
Llama-3.3-70B-Instruct-NVFP4 on CMP 170HX 64GB
vllm · 0.32.0rc1.dev249+g18305948a · NVFP45 contexts (0–96K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K, 96K
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
- NVFP4
- 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 nvidia/Llama-3.3-70B-Instruct-NVFP4 --max-model-len 106496 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --trust-remote-code
Prefill
prompt tok/s by context length8K context702.011,691 ms TTFT
16K context637.025,482 ms TTFT
32K context563.057,284 ms TTFT
64K context460.0139,972 ms TTFT
96K context389.0248,130 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 | 21.5181 ms TTFT | 43.0211 ms TTFT | 85.2174 ms TTFT | 165.0213 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 16K | 20.3181 ms TTFT | 38.4272 ms TTFT | 69.3412 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 32K | 19.0Requests queued248 ms TTFT | 34.8Requests queued364 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 17.1Requests queued464 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 96K | 15.6Requests queued653 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
Requests queued: the server could not run all requests at once, so some waited in a queue. 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 | 702.0 | — | 11,691 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 637.0 | — | 25,482 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 563.0 | — | 57,284 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 460.0 | — | 139,972 ms | — | — | 1 | — | — |
| Prefill | 96K | 1 | Valid | 389.0 | — | 248,130 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 21.5 | 21.5 | 181 ms | 46.5 ms | 1.0 | 0 | 644 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 43.0 | 21.5 | 211 ms | 46.5 ms | 2.0 | 0 | 1,288 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 85.2 | 21.3 | 174 ms | 46.9 ms | 4.0 | 0 | 2,556 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 165.0 | 20.7 | 213 ms | 48.3 ms | 8.0 | 0 | 4,944 | 30.0 s |
| Sustained decode | 0 | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 20.3 | 20.4 | 181 ms | 49.1 ms | 1.0 | 0 | 610 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 38.4 | 19.3 | 272 ms | 51.9 ms | 2.0 | 0 | 1,153 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 69.3 | 17.4 | 412 ms | 57.6 ms | 4.0 | 0 | 2,080 | 30.0 s |
| Sustained decode | 16K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| 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 | Requests queued | 19.0 | 19.0 | 248 ms | 52.6 ms | 1.0 | 0 | 570 | 30.0 s |
| Sustained decode | 32K | 2 | Requests queued | 34.8 | 17.4 | 364 ms | 57.4 ms | 2.0 | 0 | 1,042 | 30.0 s |
| Sustained decode | 32K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| 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 | Requests queued | 17.1 | 17.1 | 464 ms | 58.5 ms | 1.0 | 0 | 511 | 30.0 s |
| Sustained decode | 64K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| 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 | 96K | 1 | Requests queued | 15.6 | 15.7 | 653 ms | 63.9 ms | 1.0 | 0 | 468 | 30.0 s |
| Sustained decode | 96K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 128 | Over capacity | — | — | — | — | — | — | — | — |
Requests queued: the server could not run all requests at once, so some waited in a queue. Over capacity: not run because this many requests at this context would exceed the server's KV cache.
