Speed test matrix
Nanbeige4.3-33B-FP8 on CMP 170HX 64GB
vllm · 0.32.0rc1.dev249+g18305948a · FP87 contexts (0–416K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K
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
- FP8
- 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. KV cache: int4_per_token_head # 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 primitive-ai/Nanbeige4.3-33B-FP8 --max-model-len 434176 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --trust-remote-code --kv-cache-dtype int4_per_token_head --attention-backend TRITON_ATTN
Prefill
prompt tok/s by context length8K context1,0157,966 ms TTFT
16K context671.023,786 ms TTFT
32K context414.076,765 ms TTFT
64K context234.0270,261 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 | 32.99,533 ms TTFT | 64.29,701 ms TTFT | 123.4266 ms TTFT | 233.2317 ms TTFT | 421.4394 ms TTFT | 612.9613 ms TTFT | Over capacity | Over capacity |
| 16K | 25.6282 ms TTFT | 40.9402 ms TTFT | 66.9514 ms TTFT | 98.5695 ms TTFT | 123.61,074 ms TTFT | Over capacity | Over capacity | Over capacity |
| 32K | 20.7Requests queued467 ms TTFT | 29.9Requests queued601 ms TTFT | 45.9912 ms TTFT | 62.11,275 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 14.8Requests queued911 ms TTFT | 19.2Requests queued1,092 ms TTFT | 28.01,612 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 128K | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 256K | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 416K | Over capacity | 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,015.0 | — | 7,966 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 671.0 | — | 23,786 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 414.0 | — | 76,765 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 234.0 | — | 270,261 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 32.9 | 32.9 | 9,533 ms | 30.4 ms | 1.0 | 0 | 985 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 64.2 | 32.1 | 9,701 ms | 31.1 ms | 2.0 | 0 | 1,924 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 123.4 | 31.0 | 266 ms | 32.3 ms | 4.0 | 0 | 3,700 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 233.2 | 29.4 | 317 ms | 34.0 ms | 8.0 | 0 | 6,992 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 421.4 | 26.7 | 394 ms | 37.4 ms | 16.0 | 0 | 12,640 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 612.9 | 19.4 | 613 ms | 51.5 ms | 32.0 | 0 | 18,368 | 30.0 s |
| Sustained decode | 0 | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 25.6 | 25.6 | 282 ms | 39.0 ms | 1.0 | 0 | 766 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 40.9 | 20.5 | 402 ms | 48.8 ms | 2.0 | 0 | 1,228 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 66.9 | 16.8 | 514 ms | 59.6 ms | 4.0 | 0 | 2,008 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 98.5 | 12.3 | 695 ms | 81.1 ms | 8.0 | 0 | 2,952 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 123.6 | 7.7 | 1,074 ms | 129.0 ms | 16.0 | 0 | 3,696 | 29.9 s |
| Sustained decode | 16K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 1 | Requests queued | 20.7 | 20.7 | 467 ms | 48.2 ms | 1.0 | 0 | 620 | 30.0 s |
| Sustained decode | 32K | 2 | Requests queued | 29.9 | 15.0 | 601 ms | 66.6 ms | 2.0 | 0 | 896 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 45.9 | 11.5 | 912 ms | 87.2 ms | 4.0 | 0 | 1,376 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 62.1 | 7.8 | 1,275 ms | 128.7 ms | 8.0 | 0 | 1,856 | 29.9 s |
| 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 | 14.8 | 15.0 | 911 ms | 66.6 ms | 1.0 | 0 | 445 | 30.0 s |
| Sustained decode | 64K | 2 | Requests queued | 19.2 | 9.8 | 1,092 ms | 102.5 ms | 1.9 | 0 | 574 | 29.9 s |
| Sustained decode | 64K | 4 | Valid | 28.0 | 7.0 | 1,612 ms | 143.1 ms | 4.0 | 0 | 836 | 29.9 s |
| 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 | 128K | 1 | Over capacity | — | — | — | — | 0.4 | 0 | 0 | 30.0 s |
| Sustained decode | 128K | 2 | Over capacity | — | — | — | — | 0.4 | 0 | 0 | 30.0 s |
| Sustained decode | 128K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 128K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| 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 | 256K | 1 | Over capacity | — | — | — | — | 0.6 | 0 | 0 | 30.0 s |
| Sustained decode | 256K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 1 | Over capacity | — | — | — | — | 0.6 | 0 | 0 | 30.0 s |
| Sustained decode | 416K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 416K | 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.
