Speed test matrix
Agents-A1-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 InternScience/Agents-A1-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 context10.8K777 ms TTFT
16K context10.3K1,594 ms TTFT
32K context9,2153,508 ms TTFT
64K context7,6718,378 ms TTFT
128K context5,60722,851 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 | 156.6135 ms TTFT | 297.6169 ms TTFT | 560.2241 ms TTFT | 1,005.6391 ms TTFT | 1,745.2485 ms TTFT | 2,594.4728 ms TTFT | 3,748.21,230 ms TTFT | 4,812.82,156 ms TTFT |
| 16K | 145.5226 ms TTFT | 262.3292 ms TTFT | 454.9423 ms TTFT | 724.5587 ms TTFT | 1,061.41,042 ms TTFT | 1,339.21,911 ms TTFT | 1,557.03,888 ms TTFT | Over capacity |
| 32K | 136.4312 ms TTFT | 234.3359 ms TTFT | 382.2563 ms TTFT | 562.7824 ms TTFT | 755.71,550 ms TTFT | 891.22,621 ms TTFT | Over capacity | Over capacity |
| 64K | 121.1528 ms TTFT | 192.7599 ms TTFT | 288.6946 ms TTFT | 388.11,471 ms TTFT | 475.22,566 ms TTFT | Over capacity | Over capacity | Over capacity |
| 128K | 98.5996 ms TTFT | 141.41,236 ms TTFT | 193.11,714 ms TTFT | 238.22,697 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 248K | 72.41,785 ms TTFT | 94.22,217 ms TTFT | 119.13,274 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 | 10.8K | — | 777 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 10.3K | — | 1,594 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 9,215.0 | — | 3,508 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 7,671.0 | — | 8,378 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 5,607.0 | — | 22,851 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 156.6 | 157.3 | 135 ms | 6.4 ms | 1.0 | 0 | 4,699 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 297.6 | 149.5 | 169 ms | 6.7 ms | 2.0 | 0 | 8,926 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 560.2 | 141.1 | 241 ms | 7.1 ms | 4.0 | 0 | 16,818 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 1,005.6 | 127.2 | 391 ms | 7.9 ms | 8.0 | 0 | 30,169 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 1,745.2 | 110.8 | 485 ms | 9.0 ms | 16.0 | 0 | 52,356 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 2,594.4 | 81.9 | 728 ms | 12.2 ms | 32.0 | 0 | 77,824 | 30.0 s |
| Sustained decode | 0 | 64 | Valid | 3,748.2 | 58.4 | 1,230 ms | 17.1 ms | 64.0 | 0 | 112,448 | 30.0 s |
| Sustained decode | 0 | 128 | Valid | 4,812.8 | 36.6 | 2,156 ms | 27.3 ms | 128.0 | 0 | 144,411 | 30.0 s |
| Sustained decode | 16K | 1 | Valid | 145.5 | 145.8 | 226 ms | 6.9 ms | 1.0 | 0 | 4,367 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 262.3 | 131.5 | 292 ms | 7.6 ms | 2.0 | 0 | 7,870 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 454.9 | 114.0 | 423 ms | 8.8 ms | 4.0 | 0 | 13,648 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 724.5 | 90.4 | 587 ms | 11.1 ms | 8.0 | 0 | 21,752 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 1,061.4 | 65.7 | 1,042 ms | 15.2 ms | 16.0 | 0 | 31,840 | 30.0 s |
| Sustained decode | 16K | 32 | Valid | 1,339.2 | 40.7 | 1,911 ms | 24.6 ms | 32.0 | 0 | 40,160 | 30.0 s |
| Sustained decode | 16K | 64 | Valid | 1,557.0 | 22.6 | 3,888 ms | 44.2 ms | 64.0 | 0 | 46,720 | 30.0 s |
| Sustained decode | 16K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 1 | Valid | 136.4 | 136.9 | 312 ms | 7.3 ms | 1.0 | 0 | 4,091 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 234.3 | 117.5 | 359 ms | 8.5 ms | 2.0 | 0 | 7,026 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 382.2 | 95.7 | 563 ms | 10.4 ms | 4.0 | 0 | 11,464 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 562.7 | 70.2 | 824 ms | 14.2 ms | 8.0 | 0 | 16,880 | 30.0 s |
| Sustained decode | 32K | 16 | Valid | 755.7 | 47.0 | 1,550 ms | 21.3 ms | 16.0 | 0 | 22,672 | 30.0 s |
| Sustained decode | 32K | 32 | Valid | 891.2 | 27.3 | 2,621 ms | 36.6 ms | 32.0 | 0 | 26,720 | 30.0 s |
| Sustained decode | 32K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 64K | 1 | Valid | 121.1 | 121.5 | 528 ms | 8.2 ms | 1.0 | 0 | 3,633 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 192.7 | 96.7 | 599 ms | 10.3 ms | 2.0 | 0 | 5,782 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 288.6 | 72.2 | 946 ms | 13.9 ms | 4.0 | 0 | 8,656 | 30.0 s |
| Sustained decode | 64K | 8 | Valid | 388.1 | 48.2 | 1,471 ms | 20.8 ms | 8.0 | 0 | 11,640 | 30.0 s |
| Sustained decode | 64K | 16 | Valid | 475.2 | 29.2 | 2,566 ms | 34.3 ms | 16.0 | 0 | 14,256 | 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.5 | 99.0 | 996 ms | 10.1 ms | 1.0 | 0 | 2,954 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 141.4 | 71.0 | 1,236 ms | 14.1 ms | 2.0 | 0 | 4,242 | 30.0 s |
| Sustained decode | 128K | 4 | Valid | 193.1 | 48.2 | 1,714 ms | 20.7 ms | 4.0 | 0 | 5,792 | 30.0 s |
| Sustained decode | 128K | 8 | Valid | 238.2 | 29.6 | 2,697 ms | 33.8 ms | 8.0 | 0 | 7,144 | 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,785 ms | 13.7 ms | 1.0 | 0 | 2,172 | 30.0 s |
| Sustained decode | 248K | 2 | Valid | 94.2 | 47.5 | 2,217 ms | 21.0 ms | 2.0 | 0 | 2,827 | 30.0 s |
| Sustained decode | 248K | 4 | Valid | 119.1 | 29.9 | 3,274 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 | — | — | — | — | — | — | — | — |
Over capacity: not run because this many requests at this context would exceed the server's KV cache.
