Speed test matrix
GLM-5.3-569B-W4A16 on CMP 170HX 64GB ×8
vllm · 0.30.1rc1.dev379+gab60b723a · W4A168 contexts (0–1016K) × 5 concurrency levels (1–16) · prefill at 8K, 16K, 32K, 64K, 128K
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
- m
- 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
# x299 recipe as deployed (not an untuned baseline). Spec decode: none. Warm room, SYSTIN 22-29 C; instantaneous power peaks up to 338 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, driver 610.57.04 | vLLM: Morrowmake vllm-cmp170hx image
# Checkpoint: W4H local derivative of 0xSero/GLM-5.3-569B-W4A16 (0xSero's W8 variant with the LM head re-quantized to int4 locally; REAP-pruned to 192 experts by 0xSero). Thanks to 0xSero. DSA attention on sm_80 via a local patch.
vllm serve /models/GLM-5.3-569B-W4A16 --served-model-name m --trust-remote-code --tensor-parallel-size 1 --pipeline-parallel-size 8 --max-model-len 1048576 --gpu-memory-utilization 0.95 --max-num-seqs 32 --reasoning-parser glm47 --tool-call-parser glm47 --enable-auto-tool-choice --host 0.0.0.0 --port 8000 --kv-transfer-config '{"kv_connector":"OffloadingConnector","kv_role":"kv_both","kv_connector_extra_config":{"spec_name":"TieringOffloadingSpec","cpu_bytes_to_use":42949672960,"worker_kv_bytes_per_block":853248,"secondary_tiers":[{"type":"fs","root_dir":"/kvcache/glm53-569b-pp8/GLM-5.3-569B-W4A16-W4H"}]}}' --max-num-batched-tokens 1024 --long-prefill-token-threshold 0Prefill
prompt tok/s by context length8K context2,4283,378 ms TTFT
16K context3,0475,326 ms TTFT
32K context3,5339,148 ms TTFT
64K context3,73217,288 ms TTFT
128K context3,69334,903 ms TTFT
Sustained decode
total tok/s · rows are context length, columns are simultaneous requests| Context | 1 | 2 | 4 | 8 | 16 |
|---|---|---|---|---|---|
| 0 | 32.3375 ms TTFT | 57.3311 ms TTFT | 108.8314 ms TTFT | 147.1352 ms TTFT | 229.5924 ms TTFT |
| 16K | 31.8277 ms TTFT | 56.3357 ms TTFT | 107.4634 ms TTFT | 148.2748 ms TTFT | 223.21,709 ms TTFT |
| 32K | 31.6281 ms TTFT | 56.1363 ms TTFT | 106.9504 ms TTFT | 145.5783 ms TTFT | 229.81,193 ms TTFT |
| 64K | 31.4461 ms TTFT | 55.9585 ms TTFT | 106.6756 ms TTFT | 147.31,272 ms TTFT | 219.82,157 ms TTFT |
| 128K | 31.3794 ms TTFT | 55.51,207 ms TTFT | 105.41,692 ms TTFT | 144.52,451 ms TTFT | Over capacity |
| 256K | 31.11,665 ms TTFT | 55.21,901 ms TTFT | 104.72,476 ms TTFT | Over capacity | Over capacity |
| 512K | 23.3Requests queued2,817 ms TTFT | 33.2Requests queued3,296 ms TTFT | Over capacity | Over capacity | Over capacity |
| 1016K | 20.3Requests queued5,040 ms TTFT | 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 | 2,428.0 | — | 3,378 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 3,047.0 | — | 5,326 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 3,533.0 | — | 9,148 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 3,732.0 | — | 17,288 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 3,693.0 | — | 34,903 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 32.3 | 32.3 | 375 ms | 30.9 ms | 1.0 | 0 | 968 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 57.3 | 28.7 | 311 ms | 34.8 ms | 2.0 | 0 | 1,720 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 108.8 | 27.1 | 314 ms | 36.8 ms | 4.0 | 0 | 3,264 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 147.1 | 18.3 | 352 ms | 54.7 ms | 8.0 | 0 | 4,413 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 229.5 | 14.4 | 924 ms | 69.5 ms | 16.0 | 0 | 6,885 | 30.0 s |
| Sustained decode | 16K | 1 | Valid | 31.8 | 31.8 | 277 ms | 31.5 ms | 1.0 | 0 | 953 | 30.0 s |
| Sustained decode | 16K | 2 | Valid | 56.3 | 28.1 | 357 ms | 35.6 ms | 2.0 | 0 | 1,689 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 107.4 | 26.9 | 634 ms | 37.2 ms | 4.0 | 0 | 3,222 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 148.2 | 18.4 | 748 ms | 54.2 ms | 8.0 | 0 | 4,445 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 223.2 | 14.1 | 1,709 ms | 71.1 ms | 16.0 | 0 | 6,694 | 30.0 s |
| Sustained decode | 32K | 1 | Valid | 31.6 | 31.6 | 281 ms | 31.6 ms | 1.0 | 0 | 947 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 56.1 | 28.1 | 363 ms | 35.6 ms | 2.0 | 0 | 1,684 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 106.9 | 26.6 | 504 ms | 37.5 ms | 4.0 | 0 | 3,205 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 145.5 | 18.2 | 783 ms | 55.1 ms | 8.0 | 0 | 4,364 | 30.0 s |
| Sustained decode | 32K | 16 | Valid | 229.8 | 14.2 | 1,193 ms | 70.3 ms | 16.0 | 0 | 6,893 | 30.0 s |
| Sustained decode | 64K | 1 | Valid | 31.4 | 31.5 | 461 ms | 31.8 ms | 1.0 | 0 | 942 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 55.9 | 28.0 | 585 ms | 35.8 ms | 2.0 | 0 | 1,676 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 106.6 | 26.6 | 756 ms | 37.6 ms | 4.0 | 0 | 3,197 | 30.0 s |
| Sustained decode | 64K | 8 | Valid | 147.3 | 18.3 | 1,272 ms | 54.5 ms | 8.0 | 0 | 4,419 | 30.0 s |
| Sustained decode | 64K | 16 | Valid | 219.8 | 13.5 | 2,157 ms | 74.1 ms | 16.0 | 0 | 6,593 | 30.0 s |
| Sustained decode | 128K | 1 | Valid | 31.3 | 31.4 | 794 ms | 31.8 ms | 1.0 | 0 | 939 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 55.5 | 27.7 | 1,207 ms | 36.0 ms | 2.0 | 0 | 1,664 | 30.0 s |
| Sustained decode | 128K | 4 | Valid | 105.4 | 26.2 | 1,692 ms | 38.2 ms | 4.0 | 0 | 3,162 | 30.0 s |
| Sustained decode | 128K | 8 | Valid | 144.5 | 17.9 | 2,451 ms | 56.0 ms | 8.0 | 0 | 4,333 | 30.0 s |
| Sustained decode | 128K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 1 | Valid | 31.1 | 31.3 | 1,665 ms | 32.0 ms | 1.0 | 0 | 933 | 30.0 s |
| Sustained decode | 256K | 2 | Valid | 55.2 | 27.7 | 1,901 ms | 36.2 ms | 2.0 | 0 | 1,654 | 30.0 s |
| Sustained decode | 256K | 4 | Valid | 104.7 | 26.1 | 2,476 ms | 38.3 ms | 4.0 | 0 | 3,140 | 30.0 s |
| Sustained decode | 256K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 512K | 1 | Requests queued | 23.3 | 25.2 | 2,817 ms | 39.7 ms | 0.9 | 0 | 697 | 30.0 s |
| Sustained decode | 512K | 2 | Requests queued | 33.2 | 18.3 | 3,296 ms | 54.8 ms | 1.8 | 0 | 994 | 30.0 s |
| Sustained decode | 512K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 512K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 512K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 1016K | 1 | Requests queued | 20.3 | 23.8 | 5,040 ms | 42.0 ms | 0.9 | 0 | 607 | 30.0 s |
| Sustained decode | 1016K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 1016K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 1016K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 1016K | 16 | 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.
