Speed test matrix
TwIL-8B on CMP 170HX 64GB
vllm · 0.32.0rc1.dev249+g18305948a · BF165 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
- BF16
- Backend
- cuda
- Repository
- github.com/vllm-project/vllm
- Build
- ghcr.io/morrowmake/vllm-cmp170hx@sha256:5b45c4d6feafefe2eba962375b0a9a0b64fd22b9e05abb4d1966f14a32a2db79
Run
- Served model
- bench
- Revision
- 58d49f0d9909e62f9c2fb09e99fc5c76f3f2d630
- 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 webAI-Official/TwIL-8B --revision 58d49f0d9909e62f9c2fb09e99fc5c76f3f2d630 --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 context6,6071,241 ms TTFT
16K context5,6822,853 ms TTFT
32K context4,5307,122 ms TTFT
64K context3,17120,300 ms TTFT
120K context2,07858,014 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 | 64.355 ms TTFT | 126.372 ms TTFT | 246.681 ms TTFT | 469.2117 ms TTFT | 866.3159 ms TTFT | 1,393.6220 ms TTFT | Over capacity | Over capacity |
| 16K | 56.4169 ms TTFT | 102.7267 ms TTFT | 173.2271 ms TTFT | 262.6462 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 32K | 50.1249 ms TTFT | 85.1362 ms TTFT | 129.4517 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 41.2429 ms TTFT | 62.0696 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 120K | 31.2833 ms TTFT | 41.71,158 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 | 6,607.0 | — | 1,241 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 5,682.0 | — | 2,853 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 4,530.0 | — | 7,122 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 3,171.0 | — | 20,300 ms | — | — | 1 | — | — |
| Prefill | 120K | 1 | Valid | 2,078.0 | — | 58,014 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 64.3 | 64.5 | 55 ms | 15.5 ms | 1.0 | 0 | 1,929 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 126.3 | 63.5 | 72 ms | 15.8 ms | 2.0 | 0 | 3,790 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 246.6 | 62.1 | 81 ms | 16.1 ms | 4.0 | 0 | 7,396 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 469.2 | 59.4 | 117 ms | 16.8 ms | 8.0 | 0 | 14,072 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 866.3 | 55.4 | 159 ms | 18.1 ms | 16.0 | 0 | 25,984 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 1,393.6 | 44.9 | 220 ms | 22.3 ms | 32.0 | 0 | 41,812 | 30.0 s |
| Sustained decode | 0 | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 0 | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 56.4 | 56.5 | 169 ms | 17.7 ms | 1.0 | 0 | 1,690 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 102.7 | 51.5 | 267 ms | 19.4 ms | 2.0 | 0 | 3,080 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 173.2 | 43.4 | 271 ms | 23.0 ms | 4.0 | 0 | 5,197 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 262.6 | 32.9 | 462 ms | 30.4 ms | 8.0 | 0 | 7,872 | 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 | 50.1 | 50.2 | 249 ms | 19.9 ms | 1.0 | 0 | 1,503 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 85.1 | 42.7 | 362 ms | 23.4 ms | 2.0 | 0 | 2,552 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 129.4 | 32.4 | 517 ms | 30.9 ms | 4.0 | 0 | 3,880 | 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 | 41.2 | 41.3 | 429 ms | 24.2 ms | 1.0 | 0 | 1,234 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 62.0 | 31.1 | 696 ms | 32.2 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.2 | 31.4 | 833 ms | 31.9 ms | 1.0 | 0 | 937 | 30.0 s |
| Sustained decode | 120K | 2 | Valid | 41.7 | 20.9 | 1,158 ms | 47.8 ms | 2.0 | 0 | 1,252 | 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.
