Speed test matrix
GLM-5.2-W4A16-MTP on CMP 170HX 64GB ×8
vllm · 0.30.1rc1.dev379+gab60b723a · W4A165 contexts (0–96K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K, 96K
Hardware
- Type
- Discrete GPU
- GPU
- CMP 170HX
- GPU count
- 8
- VRAM
- 64 GB (8 × 8 GB)
- CPU
- Intel Core i7-9800X
- RAM
- 128 GB
- OS
- Ubuntu 26.04.1
Engine
- Engine
- vllm
- Version
- 0.30.1rc1.dev379+gab60b723a
- Quantization
- W4A16
- Backend
- cuda
- Repository
- github.com/Morrowmake/vllm-cmp170hx
- Build
- ghcr.io/morrowmake/vllm-cmp170hx@sha256:0d249835cb8502316403350a3cad9d531b46e5249e4076ecb70faa42067b5b7a
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. Warm room, SYSTIN 30-32 C; power: window-average max 174 W, instantaneous peaks up to 332 W (GA100 reports instantaneous draw); enforced limit 180 W
# 8x NVIDIA CMP 170HX 64GB (cmpunlocker), 180 W limit, PCIe Gen2 x4 per card | i7-9800X | 128 GB DDR4 | Ubuntu 26.04.1, NVIDIA driver 610.57.04 | vLLM: Morrowmake vllm-cmp170hx image
vllm serve canada-quant/GLM-5.2-W4A16-MTP --served-model-name bench --trust-remote-code --pipeline-parallel-size 8 --max-model-len 106496 --gpu-memory-utilization 0.94 --max-num-seqs 128 --enable-prefix-caching --host 0.0.0.0 --port 8000 --reasoning-parser glm47 --hf-overrides '{"index_topk_freq":1}'Prefill
prompt tok/s by context length8K context1,8024,550 ms TTFT
16K context2,5286,420 ms TTFT
32K context3,11110,387 ms TTFT
64K context3,36919,146 ms TTFT
96K context3,33428,998 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 | 22.0356 ms TTFT | 37.3203 ms TTFT | 71.1393 ms TTFT | 80.9541 ms TTFT | 122.9713 ms TTFT | 194.71,054 ms TTFT | 297.21,673 ms TTFT | Over capacity |
| 16K | 21.1945 ms TTFT | 40.9359 ms TTFT | 59.5628 ms TTFT | 88.9826 ms TTFT | 129.51,665 ms TTFT | Over capacity | Over capacity | Over capacity |
| 32K | 20.8497 ms TTFT | 40.4523 ms TTFT | 70.4681 ms TTFT | 114.81,283 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 20.7550 ms TTFT | 40.3720 ms TTFT | 78.2961 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 96K | 20.6731 ms TTFT | 40.21,050 ms TTFT | 70.91,238 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 | 1,802.0 | — | 4,550 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 2,528.0 | — | 6,420 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 3,111.0 | — | 10,387 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 3,369.0 | — | 19,146 ms | — | — | 1 | — | — |
| Prefill | 96K | 1 | Valid | 3,334.0 | — | 28,998 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 22.0 | 22.0 | 356 ms | 45.4 ms | 1.0 | 0 | 660 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 37.3 | 18.9 | 203 ms | 52.9 ms | 2.0 | 0 | 1,119 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 71.1 | 17.8 | 393 ms | 56.3 ms | 4.0 | 0 | 2,134 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 80.9 | 10.4 | 541 ms | 96.2 ms | 8.0 | 0 | 2,425 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 122.9 | 8.2 | 713 ms | 121.3 ms | 16.0 | 0 | 3,681 | 30.0 s |
| Sustained decode | 0 | 32 | Valid | 194.7 | 6.5 | 1,054 ms | 155.0 ms | 32.0 | 0 | 5,822 | 29.9 s |
| Sustained decode | 0 | 64 | Valid | 297.2 | 4.8 | 1,673 ms | 207.4 ms | 64.0 | 0 | 8,893 | 29.9 s |
| Sustained decode | 0 | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 21.1 | 21.2 | 945 ms | 47.3 ms | 1.0 | 0 | 634 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 40.9 | 20.4 | 359 ms | 49.0 ms | 2.0 | 0 | 1,227 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 59.5 | 14.9 | 628 ms | 67.2 ms | 4.0 | 0 | 1,784 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 88.9 | 11.1 | 826 ms | 90.2 ms | 8.0 | 0 | 2,661 | 29.9 s |
| Sustained decode | 16K | 16 | Valid | 129.5 | 8.1 | 1,665 ms | 123.0 ms | 16.0 | 0 | 3,874 | 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 | Valid | 20.8 | 20.8 | 497 ms | 48.0 ms | 1.0 | 0 | 624 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 40.4 | 20.1 | 523 ms | 49.7 ms | 2.0 | 0 | 1,212 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 70.4 | 17.5 | 681 ms | 57.0 ms | 4.0 | 0 | 2,113 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 114.8 | 14.3 | 1,283 ms | 70.0 ms | 8.0 | 0 | 3,440 | 30.0 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 | Valid | 20.7 | 20.7 | 550 ms | 48.2 ms | 1.0 | 0 | 621 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 40.3 | 20.2 | 720 ms | 49.6 ms | 2.0 | 0 | 1,210 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 78.2 | 19.5 | 961 ms | 51.4 ms | 4.0 | 0 | 2,347 | 30.0 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 | 96K | 1 | Valid | 20.6 | 20.7 | 731 ms | 48.4 ms | 1.0 | 0 | 619 | 30.0 s |
| Sustained decode | 96K | 2 | Valid | 40.2 | 20.1 | 1,050 ms | 49.7 ms | 2.0 | 0 | 1,205 | 30.0 s |
| Sustained decode | 96K | 4 | Valid | 70.9 | 17.6 | 1,238 ms | 56.8 ms | 4.0 | 0 | 2,126 | 30.0 s |
| Sustained decode | 96K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 96K | 128 | Over capacity | — | — | — | — | — | — | — | — |
Over capacity: not run because this many requests at this context would exceed the server's KV cache.
