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: MTP, 3 tokens lookahead. Warm room, SYSTIN 29-31 C; instantaneous power peaks up to 322 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 --speculative-config '{"method":"mtp","num_speculative_tokens":3,"adaptive_k":{"by_load":[3,2],"draft_by_load":true}}' --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,2913,579 ms TTFT
16K context2,9875,434 ms TTFT
32K context3,4729,309 ms TTFT
64K context3,67817,542 ms TTFT
128K context3,64935,325 ms TTFT
Sustained decode
total tok/s · rows are context length, columns are simultaneous requests| Context | 1 | 2 | 4 | 8 | 16 |
|---|---|---|---|---|---|
| 0 | 49.8475 ms TTFT | 96.8381 ms TTFT | 163.8481 ms TTFT | 218.31,004 ms TTFT | 279.11,885 ms TTFT |
| 16K | 49.6297 ms TTFT | 80.2429 ms TTFT | 153.4706 ms TTFT | 230.11,224 ms TTFT | 283.42,351 ms TTFT |
| 32K | 42.0412 ms TTFT | 85.0426 ms TTFT | 154.7606 ms TTFT | 201.5897 ms TTFT | 291.81,583 ms TTFT |
| 64K | 45.5435 ms TTFT | 85.8660 ms TTFT | 156.2935 ms TTFT | 203.81,476 ms TTFT | 311.92,487 ms TTFT |
| 128K | 41.8796 ms TTFT | 83.01,159 ms TTFT | 151.51,799 ms TTFT | 195.02,764 ms TTFT | Over capacity |
| 256K | 39.21,654 ms TTFT | 72.02,018 ms TTFT | 135.12,641 ms TTFT | Over capacity | Over capacity |
| 512K | 43.1Requests queued2,661 ms TTFT | 72.8Requests queued3,355 ms TTFT | Over capacity | Over capacity | Over capacity |
| 1016K | 36.6Requests queued5,019 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,291.0 | — | 3,579 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 2,987.0 | — | 5,434 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 3,472.0 | — | 9,309 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 3,678.0 | — | 17,542 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 3,649.0 | — | 35,325 ms | — | — | 1 | — | — |
| Sustained decode | 0 | 1 | Valid | 49.8 | 49.4 | 475 ms | 20.3 ms | 1.0 | 0 | 1,491 | 30.0 s |
| Sustained decode | 0 | 2 | Valid | 96.8 | 47.9 | 381 ms | 20.9 ms | 2.0 | 0 | 2,903 | 30.0 s |
| Sustained decode | 0 | 4 | Valid | 163.8 | 41.3 | 481 ms | 24.2 ms | 4.0 | 0 | 4,913 | 30.0 s |
| Sustained decode | 0 | 8 | Valid | 218.3 | 27.1 | 1,004 ms | 36.9 ms | 8.0 | 0 | 6,547 | 30.0 s |
| Sustained decode | 0 | 16 | Valid | 279.1 | 17.6 | 1,885 ms | 56.9 ms | 16.0 | 0 | 8,368 | 30.0 s |
| Sustained decode | 16K | 1 | Valid | 49.6 | 49.4 | 297 ms | 20.3 ms | 1.0 | 0 | 1,484 | 29.9 s |
| Sustained decode | 16K | 2 | Valid | 80.2 | 40.4 | 429 ms | 24.7 ms | 2.0 | 0 | 2,405 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 153.4 | 38.7 | 706 ms | 25.8 ms | 4.0 | 0 | 4,602 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 230.1 | 28.6 | 1,224 ms | 35.0 ms | 8.0 | 0 | 6,902 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 283.4 | 18.0 | 2,351 ms | 55.6 ms | 16.0 | 0 | 8,501 | 30.0 s |
| Sustained decode | 32K | 1 | Valid | 42.0 | 42.5 | 412 ms | 23.5 ms | 1.0 | 0 | 1,259 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 85.0 | 43.0 | 426 ms | 23.3 ms | 2.0 | 0 | 2,548 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 154.7 | 38.6 | 606 ms | 25.9 ms | 4.0 | 0 | 4,639 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 201.5 | 26.2 | 897 ms | 38.2 ms | 8.0 | 0 | 6,044 | 30.0 s |
| Sustained decode | 32K | 16 | Valid | 291.8 | 18.5 | 1,583 ms | 54.0 ms | 16.0 | 0 | 8,751 | 30.0 s |
| Sustained decode | 64K | 1 | Valid | 45.5 | 46.9 | 435 ms | 21.3 ms | 1.0 | 0 | 1,364 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 85.8 | 43.4 | 660 ms | 23.1 ms | 2.0 | 0 | 2,572 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 156.2 | 38.3 | 935 ms | 26.1 ms | 4.0 | 0 | 4,686 | 30.0 s |
| Sustained decode | 64K | 8 | Valid | 203.8 | 25.9 | 1,476 ms | 38.7 ms | 8.0 | 0 | 6,113 | 30.0 s |
| Sustained decode | 64K | 16 | Valid | 311.9 | 19.8 | 2,487 ms | 50.4 ms | 16.0 | 0 | 9,356 | 30.0 s |
| Sustained decode | 128K | 1 | Valid | 41.8 | 43.3 | 796 ms | 23.1 ms | 1.0 | 0 | 1,254 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 83.0 | 41.8 | 1,159 ms | 23.9 ms | 2.0 | 0 | 2,490 | 30.0 s |
| Sustained decode | 128K | 4 | Valid | 151.5 | 37.7 | 1,799 ms | 26.5 ms | 4.0 | 0 | 4,544 | 30.0 s |
| Sustained decode | 128K | 8 | Valid | 195.0 | 24.4 | 2,764 ms | 40.9 ms | 8.0 | 0 | 5,850 | 30.0 s |
| Sustained decode | 128K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 1 | Valid | 39.2 | 41.0 | 1,654 ms | 24.4 ms | 1.0 | 0 | 1,176 | 30.0 s |
| Sustained decode | 256K | 2 | Valid | 72.0 | 37.0 | 2,018 ms | 27.0 ms | 2.0 | 0 | 2,159 | 30.0 s |
| Sustained decode | 256K | 4 | Valid | 135.1 | 34.3 | 2,641 ms | 29.3 ms | 4.0 | 0 | 4,052 | 30.0 s |
| Sustained decode | 256K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 256K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 512K | 1 | Requests queued | 43.1 | 46.4 | 2,661 ms | 21.5 ms | 0.9 | 0 | 1,292 | 30.0 s |
| Sustained decode | 512K | 2 | Requests queued | 72.8 | 40.2 | 3,355 ms | 24.9 ms | 1.8 | 0 | 2,182 | 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 | 36.6 | 43.0 | 5,019 ms | 23.3 ms | 0.9 | 0 | 1,096 | 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.
