Speed test matrix
Fara1.5-4B-FP8 on CMP 170HX 64GB
vllm · 0.32.0rc1.dev249+g18305948a · FP86 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
- 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 # 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 prithivMLmods/Fara1.5-4B-FP8 --max-model-len 262144 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --trust-remote-code --language-model-only
Prefill
prompt tok/s by context length8K context9,289877 ms TTFT
16K context10.3K1,572 ms TTFT
32K context9,3693,424 ms TTFT
64K context7,7148,300 ms TTFT
128K context5,60922,800 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 | 157.0104 ms TTFT | 298.1190 ms TTFT | Looped | 1,013.7242 ms TTFT | 1,761.6308 ms TTFT | 2,626.5418 ms TTFT | 3,808.7668 ms TTFT | 4,940.81,001 ms TTFT |
| 16K | 145.6217 ms TTFT | 262.2261 ms TTFT | 455.5386 ms TTFT | 728.2633 ms TTFT | 1,070.51,062 ms TTFT | 1,351.71,777 ms TTFT | 1,571.33,315 ms TTFT | Over capacity |
| 32K | 136.0301 ms TTFT | 234.5362 ms TTFT | 382.4603 ms TTFT | 564.5679 ms TTFT | 757.91,290 ms TTFT | 893.52,293 ms TTFT | Over capacity | Over capacity |
| 64K | 120.8476 ms TTFT | 192.8519 ms TTFT | 288.9887 ms TTFT | 388.51,330 ms TTFT | 476.32,519 ms TTFT | Over capacity | Over capacity | Over capacity |
| 128K | 98.1764 ms TTFT | 141.51,107 ms TTFT | 193.21,556 ms TTFT | 238.52,596 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 248K | 72.41,608 ms TTFT | 94.22,060 ms TTFT | 119.13,024 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
Looped: the model kept repeating the same text, so the benchmark discarded this measurement. 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 | 9,289.0 | — | 877 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 10.3K | — | 1,572 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 9,369.0 | — | 3,424 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 7,714.0 | — | 8,300 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 5,609.0 | — | 22,800 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 157.0 | 157.5 | 104 ms | 6.4 ms | 1.0 | 0 | 4,711 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 298.1 | 149.8 | 190 ms | 6.7 ms | 2.0 | 0 | 8,942 | 30.0 s |
| Sustained decode | 0 | 4 | Looped | — | — | — | — | — | 0 | 0 | — |
| Sustained decode | 0 | 8 | Valid | 1,013.7 | 128.3 | 242 ms | 7.8 ms | 8.0 | 0 | 30,440 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 1,761.6 | 112.2 | 308 ms | 8.9 ms | 16.0 | 0 | 52,848 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 2,626.5 | 83.8 | 418 ms | 11.9 ms | 32.0 | 0 | 78,816 | 30.0 s |
| Sustained decode | 0 | 64 | Valid | 3,808.7 | 60.7 | 668 ms | 16.5 ms | 64.0 | 0 | 114,240 | 30.0 s |
| Sustained decode | 0 | 128 | Valid | 4,940.8 | 38.9 | 1,001 ms | 25.7 ms | 128.0 | 0 | 148,352 | 30.0 s |
| Sustained decode | 16K | 1 | Valid | 145.6 | 146.0 | 217 ms | 6.8 ms | 1.0 | 0 | 4,367 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 262.2 | 131.5 | 261 ms | 7.6 ms | 2.0 | 0 | 7,866 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 455.5 | 114.0 | 386 ms | 8.8 ms | 4.0 | 0 | 13,664 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 728.2 | 91.0 | 633 ms | 11.0 ms | 8.0 | 0 | 21,848 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 1,070.5 | 66.5 | 1,062 ms | 15.0 ms | 16.0 | 0 | 32,112 | 30.0 s |
| Sustained decode | 16K | 32 | Valid | 1,351.7 | 41.5 | 1,777 ms | 24.1 ms | 32.0 | 0 | 40,544 | 30.0 s |
| Sustained decode | 16K | 64 | Valid | 1,571.3 | 23.3 | 3,315 ms | 42.8 ms | 64.0 | 0 | 47,168 | 30.0 s |
| Sustained decode | 16K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 1 | Valid | 136.0 | 136.5 | 301 ms | 7.3 ms | 1.0 | 0 | 4,080 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 234.5 | 117.5 | 362 ms | 8.5 ms | 2.0 | 0 | 7,034 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 382.4 | 95.7 | 603 ms | 10.5 ms | 4.0 | 0 | 11,472 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 564.5 | 70.2 | 679 ms | 14.2 ms | 8.0 | 0 | 16,936 | 30.0 s |
| Sustained decode | 32K | 16 | Valid | 757.9 | 46.7 | 1,290 ms | 21.4 ms | 16.0 | 0 | 22,736 | 30.0 s |
| Sustained decode | 32K | 32 | Valid | 893.5 | 26.9 | 2,293 ms | 37.2 ms | 32.0 | 0 | 26,784 | 30.0 s |
| Sustained decode | 32K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 1 | Valid | 120.8 | 121.3 | 476 ms | 8.2 ms | 1.0 | 0 | 3,625 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 192.8 | 96.7 | 519 ms | 10.3 ms | 2.0 | 0 | 5,784 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 288.9 | 72.3 | 887 ms | 13.8 ms | 4.0 | 0 | 8,664 | 30.0 s |
| Sustained decode | 64K | 8 | Valid | 388.5 | 48.4 | 1,330 ms | 20.7 ms | 8.0 | 0 | 11,656 | 30.0 s |
| Sustained decode | 64K | 16 | Valid | 476.3 | 29.5 | 2,519 ms | 33.9 ms | 16.0 | 0 | 14,288 | 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 | 98.1 | 98.5 | 764 ms | 10.1 ms | 1.0 | 0 | 2,944 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 141.5 | 71.1 | 1,107 ms | 14.1 ms | 2.0 | 0 | 4,244 | 30.0 s |
| Sustained decode | 128K | 4 | Valid | 193.2 | 48.5 | 1,556 ms | 20.6 ms | 4.0 | 0 | 5,796 | 30.0 s |
| Sustained decode | 128K | 8 | Valid | 238.5 | 29.7 | 2,596 ms | 33.6 ms | 8.0 | 0 | 7,152 | 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 | 72.4 | 72.9 | 1,608 ms | 13.7 ms | 1.0 | 0 | 2,173 | 30.0 s |
| Sustained decode | 248K | 2 | Valid | 94.2 | 47.6 | 2,060 ms | 21.0 ms | 2.0 | 0 | 2,826 | 30.0 s |
| Sustained decode | 248K | 4 | Valid | 119.1 | 30.0 | 3,024 ms | 33.4 ms | 4.0 | 0 | 3,572 | 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 | — | — | — | — | — | — | — | — |
Looped: the model kept repeating the same text, so the benchmark discarded this measurement. Over capacity: not run because this many requests at this context would exceed the server's KV cache.
