Speed test matrix
gemma-4-31B-it on H200 NVL 141GB
vllm · 0.26.1rc1.dev638+g52be12cfa · 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
- vllm
- Version
- 0.26.1rc1.dev638+g52be12cfa
- Quantization
- BF16
- Backend
- cuda
- Repository
- github.com/vllm-project/vllm
- Build
- cuda-13.2
- Commit
52be12cfac0c
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
"$HOME/env_h200-gemma-vllm/bin/vllm" serve google/gemma-4-31B-it --served-model-name gemma --trust-remote-code --tensor-parallel-size 1 --reasoning-parser gemma4 --enable-auto-tool-choice --tool-call-parser gemma4 --max-model-len 262144 --gpu-memory-utilization 0.850454 --host 0.0.0.0 --port 8000 --api-key <redacted>
Prefill
prompt tok/s by context length8K context7,8571,044 ms TTFT
16K context7,5462,155 ms TTFT
32K context6,6074,899 ms TTFT
64K context5,23212,341 ms TTFT
128K context3,71134,756 ms TTFT
251K context2,437103,737 ms TTFT
256K context2,399107,463 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 | 50.365 ms TTFT | 98.5106 ms TTFT | 189.3138 ms TTFT | 353.2205 ms TTFT | 617.8324 ms TTFT | Over capacity | Over capacity | Over capacity |
| 16K | 49.8114 ms TTFT | 96.8144 ms TTFT | 183.8209 ms TTFT | 335.3288 ms TTFT | 566.5381 ms TTFT | Over capacity | Over capacity | Over capacity |
| 32K | 48.8143 ms TTFT | 93.5189 ms TTFT | 173.9336 ms TTFT | 304.9469 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity |
| 64K | 47.2232 ms TTFT | 87.7322 ms TTFT | 156.9416 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 128K | 44.2474 ms TTFT | 77.7633 ms TTFT | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity | Over capacity |
| 251K | 39.31,058 ms TTFT | Over capacity | Over capacity | 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 | 7,857.0 | — | 1,044 ms | — | — | 1 | — | — |
| Prefill | 16K | 1 | Valid | 7,546.0 | — | 2,155 ms | — | — | 1 | — | — |
| Prefill | 32K | 1 | Valid | 6,607.0 | — | 4,899 ms | — | — | 1 | — | — |
| Prefill | 64K | 1 | Valid | 5,232.0 | — | 12,341 ms | — | — | 1 | — | — |
| Prefill | 128K | 1 | Valid | 3,711.0 | — | 34,756 ms | — | — | 1 | — | — |
| Prefill | 251K | 1 | Valid | 2,437.0 | — | 103,737 ms | — | — | 1 | — | — |
| Prefill | 256K | 1 | Valid | 2,399.0 | — | 107,463 ms | — | — | 1 | — | — |
| Sustained decode | 8K | 1 | Valid | 50.3 | 50.2 | 65 ms | 19.9 ms | 1.0 | 0 | 1,508 | 30.0 s |
| Sustained decode | 8K | 2 | Valid | 98.5 | 49.3 | 106 ms | 20.3 ms | 2.0 | 0 | 2,953 | 30.0 s |
| Sustained decode | 8K | 4 | Valid | 189.3 | 47.4 | 138 ms | 21.1 ms | 4.0 | 0 | 5,678 | 30.0 s |
| Sustained decode | 8K | 8 | Valid | 353.2 | 44.3 | 205 ms | 22.6 ms | 8.0 | 0 | 10,591 | 30.0 s |
| Sustained decode | 8K | 16 | Valid | 617.8 | 38.8 | 324 ms | 25.8 ms | 16.0 | 0 | 18,527 | 30.0 s |
| Sustained decode | 8K | 32 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 8K | 64 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 8K | 128 | Over capacity | — | — | — | — | — | — | — | — |
| Sustained decode | 16K | 1 | Valid | 49.8 | 49.8 | 114 ms | 20.1 ms | 1.0 | 0 | 1,492 | 29.9 s |
| Sustained decode | 16K | 2 | Valid | 96.8 | 48.4 | 144 ms | 20.7 ms | 2.0 | 0 | 2,904 | 30.0 s |
| Sustained decode | 16K | 4 | Valid | 183.8 | 46.0 | 209 ms | 21.7 ms | 4.0 | 0 | 5,511 | 30.0 s |
| Sustained decode | 16K | 8 | Valid | 335.3 | 42.1 | 288 ms | 23.8 ms | 8.0 | 0 | 10,056 | 30.0 s |
| Sustained decode | 16K | 16 | Valid | 566.5 | 35.5 | 381 ms | 28.1 ms | 16.0 | 0 | 16,987 | 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 | 48.8 | 48.9 | 143 ms | 20.5 ms | 1.0 | 0 | 1,464 | 30.0 s |
| Sustained decode | 32K | 2 | Valid | 93.5 | 46.8 | 189 ms | 21.3 ms | 2.0 | 0 | 2,805 | 30.0 s |
| Sustained decode | 32K | 4 | Valid | 173.9 | 43.6 | 336 ms | 23.0 ms | 4.0 | 0 | 5,219 | 30.0 s |
| Sustained decode | 32K | 8 | Valid | 304.9 | 38.2 | 469 ms | 26.2 ms | 8.0 | 0 | 9,149 | 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 | 47.2 | 47.3 | 232 ms | 21.2 ms | 1.0 | 0 | 1,416 | 30.0 s |
| Sustained decode | 64K | 2 | Valid | 87.7 | 44.0 | 322 ms | 22.7 ms | 2.0 | 0 | 2,633 | 30.0 s |
| Sustained decode | 64K | 4 | Valid | 156.9 | 39.3 | 416 ms | 25.4 ms | 4.0 | 0 | 4,706 | 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 | 128K | 1 | Valid | 44.2 | 44.2 | 474 ms | 22.6 ms | 1.0 | 0 | 1,324 | 30.0 s |
| Sustained decode | 128K | 2 | Valid | 77.7 | 39.0 | 633 ms | 25.7 ms | 2.0 | 0 | 2,327 | 30.0 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 | Valid | 39.3 | 39.5 | 1,058 ms | 25.3 ms | 1.0 | 0 | 1,176 | 29.9 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 | — | — | — | — | — | — | — | — |
Over capacity: not run because this many requests at this context would exceed the server's KV cache.
