OpenAI-compatible Endpoint Benchmarking using GuideLLM¶
Overview¶
This Helm chart deploys a batch job that benchmarks LLM performance against an OpenAI-compatible API endpoint using GuideLLM.
Prerequisites¶
- Helm: Helm installed on your system
Configuration¶
Parameter | Description | Default |
---|---|---|
env_vars.OPENAI_API_BASE_URL |
OpenAI-compatible API endpoint URL | "http://example-open-ai-api-server.com/v1" |
env_vars.TOKENIZER |
HuggingFace model repository for token calculations | deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B |
env_vars.HF_TOKEN |
HuggingFace access token (required for gated models like Mistral or Llama) | not set |
Deployment¶
Deploy the benchmark job with the following command:
helm template . --set env_vars.OPENAI_API_BASE_URL="http://your-api-endpoint.com/v1/" | kubectl apply -f -
Monitor job progress with kubectl logs
, and review the benchmark results in the final output of the completed job.
Example output:
╭─ GuideLLM Benchmarks Report (stdout) ────────────────────────────────────────╮
│ ╭─ Benchmark Report 1 ─────────────────────────────────────────────────────╮ │
│ │ Backend(type=openai_server, │ │
│ │ target=http://llm-inference-vllm-llama-4-maverick/v1, │ │
│ │ model=meta-llama/Llama-4-Maverick-17B-128E-Instruct) │ │
│ │ Data(type=emulated, source=prompt_tokens=512,generated_tokens=128, │ │
│ │ tokenizer=meta-llama/Llama-4-Maverick-17B-128E-Instruct) │ │
│ │ Rate(type=sweep, rate=None) │ │
│ │ Limits(max_number=None requests, max_duration=120 sec) │ │
│ │ │ │
│ │ │ │
│ │ Requests Data by Benchmark │ │
│ │ ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ │ │
│ │ ┃ ┃ Requests ┃ Request ┃ ┃ Start ┃ ┃ │ │
│ │ ┃ Benchmark ┃ Completed ┃ Failed ┃ Duration ┃ Time ┃ End Time ┃ │ │
│ │ ┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ │ │
│ │ │ synchron… │ 101/101 │ 0/101 │ 119.00 │ 08:21:17 │ 08:23:16 │ │ │
│ │ │ │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 354/354 │ 0/354 │ 119.80 │ 08:23:43 │ 08:25:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 607/607 │ 0/607 │ 119.99 │ 08:25:43 │ 08:27:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 854/854 │ 0/854 │ 119.93 │ 08:27:43 │ 08:29:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 1099/1099 │ 0/1099 │ 119.96 │ 08:29:43 │ 08:31:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 1331/1331 │ 0/1331 │ 119.98 │ 08:31:43 │ 08:33:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 1578/1578 │ 0/1578 │ 119.49 │ 08:33:43 │ 08:35:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 1798/1798 │ 0/1798 │ 119.90 │ 08:35:43 │ 08:37:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 1885/1885 │ 0/1885 │ 119.92 │ 08:37:43 │ 08:39:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ asynchro… │ 2026/2026 │ 0/2026 │ 119.35 │ 08:39:44 │ 08:41:43 │ │ │
│ │ │ req/sec │ │ │ sec │ │ │ │ │
│ │ │ throughp… │ 505/505 │ 0/505 │ 25.14 sec │ 08:23:18 │ 08:23:43 │ │ │
│ │ └───────────┴───────────┴───────────┴───────────┴───────────┴──────────┘ │ │
│ │ │ │
│ │ Tokens Data by Benchmark │ │
│ │ ┏━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ │ │
│ │ ┃ ┃ ┃ Prompt (1%, ┃ ┃ ┃ │ │
│ │ ┃ ┃ ┃ 5%, 50%, 95%, ┃ ┃ Output (1%, 5%, ┃ │ │
│ │ ┃ Benchmark ┃ Prompt ┃ 99%) ┃ Output ┃ 50%, 95%, 99%) ┃ │ │
│ │ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ │
│ │ │ synchronous │ 512.49 │ 512.0, 512.0, │ 127.84 │ 128.0, 128.0, │ │ │
│ │ │ │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@2… │ 512.33 │ 512.0, 512.0, │ 127.70 │ 114.7, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@5… │ 512.37 │ 512.0, 512.0, │ 127.61 │ 112.3, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@7… │ 512.37 │ 512.0, 512.0, │ 127.73 │ 115.1, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@9… │ 512.34 │ 512.0, 512.0, │ 127.86 │ 125.0, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@1… │ 512.33 │ 512.0, 512.0, │ 127.75 │ 119.3, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@1… │ 512.34 │ 512.0, 512.0, │ 127.75 │ 118.0, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@1… │ 512.36 │ 512.0, 512.0, │ 127.78 │ 119.9, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@1… │ 512.36 │ 512.0, 512.0, │ 127.79 │ 118.0, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ asynchronous@2… │ 512.36 │ 512.0, 512.0, │ 127.79 │ 123.0, 128.0, │ │ │
│ │ │ req/sec │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ │ throughput │ 512.38 │ 512.0, 512.0, │ 127.72 │ 116.3, 128.0, │ │ │
│ │ │ │ │ 512.0, 514.0, │ │ 128.0, 128.0, │ │ │
│ │ │ │ │ 514.0 │ │ 128.0 │ │ │
│ │ └─────────────────┴────────┴────────────────┴────────┴─────────────────┘ │ │
│ │ │ │
│ │ Performance Stats by Benchmark │ │
│ │ ┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ │ │
│ │ ┃ ┃ ┃ ┃ Inter Token ┃ │ │
│ │ ┃ ┃ Request Latency ┃ Time to First ┃ Latency [1%, ┃ │ │
│ │ ┃ ┃ [1%, 5%, 10%, ┃ Token [1%, 5%, ┃ 5%, 10%, 50%, ┃ │ │
│ │ ┃ ┃ 50%, 90%, 95%, ┃ 10%, 50%, 90%, ┃ 90% 95%, 99%] ┃ │ │
│ │ ┃ Benchmark ┃ 99%] (sec) ┃ 95%, 99%] (ms) ┃ (ms) ┃ │ │
│ │ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ │
│ │ │ synchronous │ 1.17, 1.17, │ 60.2, 60.7, │ 8.0, 8.6, 8.7, │ │ │
│ │ │ │ 1.17, 1.18, │ 61.0, 62.1, │ 8.7, 8.9, 9.0, │ │ │
│ │ │ │ 1.19, 1.19, │ 63.6, 64.2, │ 9.4 │ │ │
│ │ │ │ 1.20 │ 69.3 │ │ │ │
│ │ │ asynchronous@2… │ 1.46, 1.59, │ 57.7, 58.7, │ 0.2, 10.2, │ │ │
│ │ │ req/sec │ 1.59, 1.60, │ 59.5, 63.1, │ 10.3, 10.9, │ │ │
│ │ │ │ 1.61, 1.62, │ 68.5, 71.7, │ 12.0, 15.4, │ │ │
│ │ │ │ 1.65 │ 117.9 │ 48.1 │ │ │
│ │ │ asynchronous@5… │ 1.71, 1.91, │ 57.3, 58.2, │ 0.2, 10.9, │ │ │
│ │ │ req/sec │ 1.91, 1.93, │ 59.1, 64.2, │ 11.4, 11.8, │ │ │
│ │ │ │ 1.96, 2.00, │ 72.1, 115.5, │ 16.8, 46.3, │ │ │
│ │ │ │ 2.11 │ 138.1 │ 49.3 │ │ │
│ │ │ asynchronous@7… │ 2.17, 2.39, │ 58.4, 59.4, │ 0.2, 11.8, │ │ │
│ │ │ req/sec │ 2.42, 2.44, │ 60.2, 64.3, │ 12.7, 13.4, │ │ │
│ │ │ │ 2.50, 2.57, │ 74.6, 124.3, │ 47.0, 48.9, │ │ │
│ │ │ │ 2.96 │ 145.3 │ 50.5 │ │ │
│ │ │ asynchronous@9… │ 2.78, 3.05, │ 62.3, 63.4, │ 0.2, 13.9, │ │ │
│ │ │ req/sec │ 3.09, 3.16, │ 64.3, 67.1, │ 14.4, 18.5, │ │ │
│ │ │ │ 3.21, 3.25, │ 81.6, 130.7, │ 48.8, 50.6, │ │ │
│ │ │ │ 3.32 │ 201.6 │ 53.2 │ │ │
│ │ │ asynchronous@1… │ 3.56, 4.29, │ 70.1, 71.5, │ 0.2, 13.1, │ │ │
│ │ │ req/sec │ 4.36, 4.66, │ 72.2, 78.6, │ 19.8, 27.7, │ │ │
│ │ │ │ 4.83, 5.02, │ 104.1, 176.4, │ 53.8, 54.7, │ │ │
│ │ │ │ 5.39 │ 356.6 │ 70.4 │ │ │
│ │ │ asynchronous@1… │ 4.25, 4.53, │ 61.9, 74.5, │ 0.2, 14.3, │ │ │
│ │ │ req/sec │ 4.61, 4.75, │ 81.1, 149.6, │ 17.4, 25.6, │ │ │
│ │ │ │ 5.04, 5.13, │ 460.8, 538.6, │ 59.9, 70.1, │ │ │
│ │ │ │ 5.30 │ 712.5 │ 122.4 │ │ │
│ │ │ asynchronous@1… │ 4.11, 4.27, │ 92.2, 217.3, │ 0.2, 13.8, │ │ │
│ │ │ req/sec │ 4.35, 4.72, │ 345.8, 710.8, │ 15.9, 24.4, │ │ │
│ │ │ │ 5.41, 6.05, │ 1255.9, │ 54.8, 57.7, │ │ │
│ │ │ │ 6.28 │ 1559.3, 2121.3 │ 84.8 │ │ │
│ │ │ asynchronous@1… │ 4.11, 4.40, │ 129.0, 666.0, │ 0.1, 0.2, 0.2, │ │ │
│ │ │ req/sec │ 4.71, 8.49, │ 1044.1, │ 22.2, 55.1, │ │ │
│ │ │ │ 13.42, 14.13, │ 4703.2, │ 61.2, 112.8 │ │ │
│ │ │ │ 14.62 │ 9479.4, │ │ │ │
│ │ │ │ │ 10238.6, │ │ │ │
│ │ │ │ │ 10723.4 │ │ │ │
│ │ │ asynchronous@2… │ 3.85, 4.35, │ 137.9, 920.0, │ 0.1, 0.2, 0.2, │ │ │
│ │ │ req/sec │ 4.86, 10.38, │ 1499.8, │ 19.8, 54.4, │ │ │
│ │ │ │ 17.68, 18.69, │ 6826.9, │ 64.0, 149.5 │ │ │
│ │ │ │ 19.42 │ 14005.3, │ │ │ │
│ │ │ │ │ 14994.2, │ │ │ │
│ │ │ │ │ 15808.3 │ │ │ │
│ │ │ throughput │ 3.02, 3.24, │ 295.8, 497.8, │ 0.1, 0.2, 0.2, │ │ │
│ │ │ │ 3.35, 6.70, │ 692.8, 4160.1, │ 18.3, 44.3, │ │ │
│ │ │ │ 9.33, 9.59, │ 6786.1, │ 48.8, 56.4 │ │ │
│ │ │ │ 10.19 │ 7115.2, 7739.8 │ │ │ │
│ │ └─────────────────┴─────────────────┴────────────────┴─────────────────┘ │ │
│ │ │ │
│ │ Performance Summary by Benchmark │ │
│ │ ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ │ │
│ │ ┃ ┃ Requests ┃ ┃ Time to ┃ Inter ┃ Output ┃ │ │
│ │ ┃ ┃ per ┃ Request ┃ First ┃ Token ┃ Token ┃ │ │
│ │ ┃ Benchmark ┃ Second ┃ Latency ┃ Token ┃ Latency ┃ Through… ┃ │ │
│ │ ┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ │ │
│ │ │ synchron… │ 0.85 │ 1.18 sec │ 62.29 ms │ 8.72 ms │ 108.50 │ │ │
│ │ │ │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 2.96 │ 1.60 sec │ 65.41 ms │ 12.02 ms │ 377.37 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 5.06 │ 1.93 sec │ 69.15 ms │ 14.61 ms │ 645.58 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 7.12 │ 2.46 sec │ 71.39 ms │ 18.69 ms │ 909.53 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 9.16 │ 3.15 sec │ 76.51 ms │ 23.99 ms │ 1171.39 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 11.09 │ 4.61 sec │ 91.56 ms │ 35.39 ms │ 1417.25 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 13.21 │ 4.78 sec │ 212.79 ms │ 35.77 ms │ 1687.03 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 15.00 │ 4.81 sec │ 762.19 ms │ 31.71 ms │ 1916.20 │ │ │
│ │ │ req/sec │ req/sec │ │ │ │ tokens/… │ │ │
│ │ │ asynchro… │ 15.72 │ 8.74 sec │ 4904.15 │ 30.04 ms │ 2008.65 │ │ │
│ │ │ req/sec │ req/sec │ │ ms │ │ tokens/… │ │ │
│ │ │ asynchro… │ 16.98 │ 10.77 sec │ 7203.12 │ 27.90 ms │ 2169.26 │ │ │
│ │ │ req/sec │ req/sec │ │ ms │ │ tokens/… │ │ │
│ │ │ throughp… │ 20.09 │ 6.79 sec │ 4279.14 │ 19.54 ms │ 2565.91 │ │ │
│ │ │ │ req/sec │ │ ms │ │ tokens/… │ │ │
│ │ └───────────┴───────────┴───────────┴───────────┴───────────┴──────────┘ │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────╯