Speed test matrix
Thomson-1.0-Small-NVFP4 on CMP 170HX 64GB
vllm · 0.32.0rc1.dev249+g18305948a · NVFP46 contexts (0–248K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K, 128K
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 ProprietaryLegal/Thomson-1.0-Small-NVFP4 --max-model-len 262144 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --trust-remote-code
Prefill
prompt tok/s by context length8K context6,7311,210 ms TTFT
16K context6,7422,390 ms TTFT
32K context7,1784,469 ms TTFT
64K context6,04010,600 ms TTFT
128K context4,46828,623 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 | 145.9132 ms TTFT | 255.8227 ms TTFT | 448.8226 ms TTFT | 735.7344 ms TTFT | 1,161.4410 ms TTFT | 1,727.1641 ms TTFT | 2,505.2831 ms TTFT | 3,224.71,288 ms TTFT |
| 16K | 139.2271 ms TTFT | 237.2400 ms TTFT | 395.6560 ms TTFT | 607.8891 ms TTFT | 892.91,736 ms TTFT | 1,228.52,872 ms TTFT | 1,587.65,294 ms TTFT | Over capacity |
| 32K | 132.3332 ms TTFT | 223.6452 ms TTFT | 362.7706 ms TTFT | 532.81,022 ms TTFT | 740.31,722 ms TTFT | 953.53,304 ms TTFT | Over capacity | Over capacity |
| 64K | 123.1596 ms TTFT | 198.8723 ms TTFT | 302.1949 ms TTFT | 421.51,495 ms TTFT | 547.12,435 ms TTFT | Over capacity | Over capacity | Over capacity |
| 128K | 108.2899 ms TTFT | 162.91,024 ms TTFT | 231.11,589 ms TTFT | 297.72,566 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 248K | 87.41,801 ms TTFT | 120.82,437 ms TTFT | 157.93,436 ms TTFT | 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 | 6,731.0 | — | 1,210 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 6,742.0 | — | 2,390 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 7,178.0 | — | 4,469 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 6,040.0 | — | 10,600 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 4,468.0 | — | 28,623 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 145.9 | 146.2 | 132 ms | 6.8 ms | 1.0 | 0 | 4,377 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 255.8 | 128.2 | 227 ms | 7.8 ms | 2.0 | 0 | 7,674 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 448.8 | 112.6 | 226 ms | 8.9 ms | 4.0 | 0 | 13,463 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 735.7 | 92.8 | 344 ms | 10.8 ms | 8.0 | 0 | 22,076 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 1,161.4 | 73.5 | 410 ms | 13.6 ms | 16.0 | 0 | 34,837 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 1,727.1 | 55.0 | 641 ms | 18.2 ms | 32.0 | 0 | 51,808 | 30.0 s |
| Sustained decode | 0 | 64 | Valid | 2,505.2 | 40.0 | 831 ms | 25.0 ms | 64.0 | 0 | 75,136 | 30.0 s |
| Sustained decode | 0 | 128 | Valid | 3,224.7 | 25.6 | 1,288 ms | 39.1 ms | 128.0 | 0 | 96,768 | 30.0 s |
| Sustained decode | 16K | 1 | Valid | 139.2 | 139.5 | 271 ms | 7.2 ms | 1.0 | 0 | 4,177 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 237.2 | 118.6 | 400 ms | 8.4 ms | 2.0 | 0 | 7,116 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 395.6 | 98.9 | 560 ms | 10.1 ms | 4.0 | 0 | 11,869 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 607.8 | 75.7 | 891 ms | 13.2 ms | 8.0 | 0 | 18,232 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 892.9 | 54.7 | 1,736 ms | 18.3 ms | 16.0 | 0 | 26,816 | 30.0 s |
| Sustained decode | 16K | 32 | Valid | 1,228.5 | 37.0 | 2,872 ms | 27.0 ms | 32.0 | 0 | 36,864 | 30.0 s |
| Sustained decode | 16K | 64 | Valid | 1,587.6 | 22.8 | 5,294 ms | 43.9 ms | 64.0 | 0 | 47,616 | 30.0 s |
| Sustained decode | 16K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 1 | Valid | 132.3 | 132.6 | 332 ms | 7.5 ms | 1.0 | 0 | 3,968 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 223.6 | 111.9 | 452 ms | 8.9 ms | 2.0 | 0 | 6,706 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 362.7 | 90.6 | 706 ms | 11.0 ms | 4.0 | 0 | 10,881 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 532.8 | 66.1 | 1,022 ms | 15.1 ms | 8.0 | 0 | 15,984 | 30.0 s |
| Sustained decode | 32K | 16 | Valid | 740.3 | 45.5 | 1,722 ms | 22.0 ms | 16.0 | 0 | 22,209 | 30.0 s |
| Sustained decode | 32K | 32 | Valid | 953.5 | 28.2 | 3,304 ms | 35.5 ms | 32.0 | 0 | 28,608 | 30.0 s |
| Sustained decode | 32K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 1 | Valid | 123.1 | 123.5 | 596 ms | 8.1 ms | 1.0 | 0 | 3,692 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 198.8 | 99.6 | 723 ms | 10.0 ms | 2.0 | 0 | 5,964 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 302.1 | 75.3 | 949 ms | 13.3 ms | 4.0 | 0 | 9,064 | 30.0 s |
| Sustained decode | 64K | 8 | Valid | 421.5 | 51.9 | 1,495 ms | 19.3 ms | 8.0 | 0 | 12,640 | 30.0 s |
| Sustained decode | 64K | 16 | Valid | 547.1 | 32.7 | 2,435 ms | 30.6 ms | 16.0 | 0 | 16,416 | 30.0 s |
| Sustained decode | 64K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 128K | 1 | Valid | 108.2 | 108.7 | 899 ms | 9.2 ms | 1.0 | 0 | 3,244 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 162.9 | 81.8 | 1,024 ms | 12.2 ms | 2.0 | 0 | 4,886 | 30.0 s |
| Sustained decode | 128K | 4 | Valid | 231.1 | 57.8 | 1,589 ms | 17.3 ms | 4.0 | 0 | 6,933 | 30.0 s |
| Sustained decode | 128K | 8 | Valid | 297.7 | 37.1 | 2,566 ms | 27.0 ms | 8.0 | 0 | 8,928 | 30.0 s |
| Sustained decode | 128K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 128K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 128K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 128K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 248K | 1 | Valid | 87.4 | 88.0 | 1,801 ms | 11.4 ms | 1.0 | 0 | 2,622 | 30.0 s |
| Sustained decode | 248K | 2 | Valid | 120.8 | 60.6 | 2,437 ms | 16.5 ms | 2.0 | 0 | 3,622 | 30.0 s |
| Sustained decode | 248K | 4 | Valid | 157.9 | 39.0 | 3,436 ms | 25.6 ms | 4.0 | 0 | 4,736 | 30.0 s |
| Sustained decode | 248K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 248K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 248K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 248K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 248K | 128 | Over capacity | — | — | — | — | — | — | — | — |
Over capacity: not run because this many requests at this context would exceed the server's KV cache.
