Speed test matrix
gemma-4-12B-it on H200 NVL 141GB
sglang · 0.0.0.dev16562+g6283bde44 · BF166 contexts (8K–251K) × 8 concurrency levels (1–128) · prefill at 8K, 16K, 32K, 64K, 128K, 251K, 256K
Hardware
- Type
- Discrete GPU
- GPU
- H200 NVL
- VRAM
- 141 GB
- OS
- linux
Engine
- Engine
- sglang
- Version
- 0.0.0.dev16562+g6283bde44
- Quantization
- BF16
- Backend
- cuda
- Repository
- github.com/SubSir/sglang
- Build
- cuda-13.2
- Commit
6283bde44381
Run
- Served model
- gemma
- Revision
- main
- Benchmark tool
- llm-inference-bench v0.4.29
- Decode test
- Fixed duration
- Prefill mode
- Measured during decode warm-up
- Time per measurement
- 30 s
- Max output
- 4,096 tokens
Launch command
env SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 "$HOME/env_h200-z-lab-sglang-pr-35209/bin/sglang" serve --model-path google/gemma-4-12B-it --served-model-name gemma --trust-remote-code --tp 1 --reasoning-parser gemma4 --tool-call-parser gemma4 --context-length 262144 --mem-fraction-static 0.838218 --enable-metrics --host 0.0.0.0 --port 8000 --api-key <redacted> --page-size 1 --attention-backend triton --speculative-algorithm DFLASH --speculative-draft-model-path z-lab/gemma4-12B-it-DFlash --speculative-num-draft-tokens 16 --speculative-draft-attention-backend triton
Prefill
prompt tok/s by context length8K context5,3761,526 ms TTFT
16K context9,6531,684 ms TTFT
32K context6,8234,744 ms TTFT
64K context4,32114,941 ms TTFT
128K context2,49051,803 ms TTFT
251K context858.0294,644 ms TTFT
256K context1,352190,659 ms TTFT
Sustained decode
total tok/s · rows are context length, columns are simultaneous requests| Context | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 |
|---|---|---|---|---|---|---|---|---|
| 8K | 20.3Requests queued735 ms TTFT | 20.02,306 ms TTFT | 43.81,062 ms TTFT | 81.21,088 ms TTFT | 123.7830 ms TTFT | Over capacity | Over capacity | Over capacity |
| 16K | 272.8Requests queued130 ms TTFT | 199.422,105 ms TTFT | 611.1256 ms TTFT | 593.9401 ms TTFT | 547.9760 ms TTFT | Over capacity | Over capacity | Over capacity |
| 32K | 140.8205 ms TTFT | 41.7436 ms TTFT | 164.8498 ms TTFT | 405.1790 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 112.8351 ms TTFT | 59.7760 ms TTFT | 142.0848 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 128K | 13.3813 ms TTFT | 50.71,463 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 251K | 7.8Requests queued1,909 ms TTFT | Over capacity | Over capacity | Over capacity | 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 | 5,376.0 | — | 1,526 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 9,653.0 | — | 1,684 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 6,823.0 | — | 4,744 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 4,321.0 | — | 14,941 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 2,490.0 | — | 51,803 ms | — | — | 1 | — | — |
| Prefill | 251K | 1 | Valid | 858.0 | — | 294,644 ms | — | — | 1 | — | — |
| Prefill | 256K | 1 | Valid | 1,352.0 | — | 190,659 ms | — | — | 1 | — | — |
| Sustained decode | 8K | 1 | Requests queued | 20.3 | 20.4 | 735 ms | 49.0 ms | 1.9 | 0 | 602 | 29.7 s |
| Sustained decode | 8K | 2 | Valid | 20.0 | 9.2 | 2,306 ms | 109.6 ms | 3.0 | 0 | 593 | 29.7 s |
| Sustained decode | 8K | 4 | Valid | 43.8 | 10.1 | 1,062 ms | 100.5 ms | 7.0 | 0 | 1,306 | 29.8 s |
| Sustained decode | 8K | 8 | Valid | 81.2 | 7.7 | 1,088 ms | 129.7 ms | 15.0 | 0 | 2,422 | 29.8 s |
| Sustained decode | 8K | 16 | Valid | 123.7 | 6.6 | 830 ms | 150.8 ms | 30.6 | 0 | 3,696 | 29.9 s |
| Sustained decode | 8K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 8K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 8K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Requests queued | 272.8 | 273.6 | 130 ms | 3.7 ms | 1.0 | 2 | 8,162 | 29.9 s |
| Sustained decode | 16K | 2 | Valid | 199.4 | 88.9 | 22,105 ms | 11.3 ms | 23.6 | 0 | 5,973 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 611.1 | 131.3 | 256 ms | 7.6 ms | 9.2 | 3 | 18,323 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 593.9 | 39.1 | 401 ms | 25.6 ms | 12.5 | 3 | 17,777 | 29.9 s |
| Sustained decode | 16K | 16 | Valid | 547.9 | 19.3 | 760 ms | 51.8 ms | 27.4 | 0 | 16,437 | 30.0 s |
| Sustained decode | 16K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 32K | 1 | Valid | 140.8 | 96.8 | 205 ms | 14.1 ms | 0.9 | 1 | 4,220 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 41.7 | 20.3 | 436 ms | 50.6 ms | 24.7 | 0 | 1,249 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 164.8 | 34.5 | 498 ms | 40.4 ms | 21.6 | 0 | 4,915 | 29.8 s |
| Sustained decode | 32K | 8 | Valid | 405.1 | 54.6 | 790 ms | 18.3 ms | 21.9 | 0 | 12,127 | 29.9 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 | 112.8 | 99.5 | 351 ms | 10.0 ms | 1.0 | 0 | 3,374 | 29.9 s |
| Sustained decode | 64K | 2 | Valid | 59.7 | 27.7 | 760 ms | 50.6 ms | 18.6 | 0 | 1,786 | 29.9 s |
| Sustained decode | 64K | 4 | Valid | 142.0 | 32.1 | 848 ms | 31.8 ms | 12.4 | 0 | 4,242 | 29.9 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 | 128K | 1 | Valid | 13.3 | 13.8 | 813 ms | 72.6 ms | 1.0 | 0 | 399 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 50.7 | 23.6 | 1,463 ms | 56.6 ms | 9.7 | 0 | 1,518 | 29.9 s |
| Sustained decode | 128K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 128K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| 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 | 251K | 1 | Requests queued | 7.8 | 8.1 | 1,909 ms | 123.1 ms | 0.6 | 0 | 231 | 29.7 s |
| Sustained decode | 251K | 2 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 251K | 4 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 251K | 8 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 251K | 16 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 251K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 251K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 251K | 128 | 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.
