Speed test matrix
Llama-3.3-70B-Instruct-FP8-dynamic on CMP 170HX 64GB ×2
vllm · 0.32.0rc1.dev249+g18305948a · FP8 dynamic5 contexts (0–120K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K, 120K
Hardware
- Type
- Discrete GPU
- GPU
- CMP 170HX
- GPU count
- 2
- VRAM
- 64 GB (2 × 32 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
- FP8 dynamic
- 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. Layout: PP2 (stock vLLM flag) # 2x 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 RedHatAI/Llama-3.3-70B-Instruct-FP8-dynamic --max-model-len 131072 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --trust-remote-code --pipeline-parallel-size 2
Prefill
prompt tok/s by context length8K context1,3556,055 ms TTFT
16K context1,35611,961 ms TTFT
32K context1,25025,824 ms TTFT
64K context1,02063,119 ms TTFT
120K context758.0159,148 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 | 18.5151 ms TTFT | 36.7193 ms TTFT | 60.6183 ms TTFT | 119.2236 ms TTFT | 234.7315 ms TTFT | Over capacity | Over capacity | Over capacity |
| 16K | 17.2213 ms TTFT | 28.4311 ms TTFT | 51.3445 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 32K | 16.1340 ms TTFT | 26.6413 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 14.3477 ms TTFT | 23.7647 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 120K | 11.8Requests queued1,067 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 | 1,355.0 | — | 6,055 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 1,356.0 | — | 11,961 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 1,250.0 | — | 25,824 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 1,020.0 | — | 63,119 ms | — | — | 1 | — | — |
| Prefill | 120K | 1 | Valid | 758.0 | — | 159,148 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 18.5 | 18.5 | 151 ms | 54.0 ms | 1.0 | 0 | 555 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 36.7 | 18.3 | 193 ms | 54.5 ms | 2.0 | 0 | 1,100 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 60.6 | 15.2 | 183 ms | 65.9 ms | 4.0 | 0 | 1,816 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 119.2 | 14.9 | 236 ms | 67.0 ms | 8.0 | 0 | 3,574 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 234.7 | 14.7 | 315 ms | 68.1 ms | 16.0 | 0 | 7,038 | 30.0 s |
| Sustained decode | 0 | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 17.2 | 17.2 | 213 ms | 58.1 ms | 1.0 | 0 | 516 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 28.4 | 14.2 | 311 ms | 70.5 ms | 2.0 | 0 | 850 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 51.3 | 12.8 | 445 ms | 78.0 ms | 4.0 | 0 | 1,539 | 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 | Valid | 16.1 | 16.2 | 340 ms | 61.9 ms | 1.0 | 0 | 484 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 26.6 | 13.3 | 413 ms | 75.0 ms | 2.0 | 0 | 798 | 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 | Valid | 14.3 | 14.4 | 477 ms | 69.7 ms | 1.0 | 0 | 430 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 23.7 | 11.9 | 647 ms | 84.2 ms | 2.0 | 0 | 710 | 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 | Requests queued | 11.8 | 12.0 | 1,067 ms | 83.0 ms | 1.0 | 0 | 355 | 30.0 s |
| Sustained decode | 120K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| 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 | — | — | — | — | — | — | — | — |
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.
