From ff2c2bd80a200813e1b0d5821a2064f0abb90100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sophie=20du=20Cou=C3=A9dic?= Date: Fri, 24 Apr 2026 00:48:29 +0200 Subject: [PATCH] [Docs]Add documentation for bench serve visualization arguments (#40539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sophie du Couédic Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../vllm_bench_serve_dataset_stats.png | Bin 0 -> 110228 bytes .../vllm_bench_serve_timeline.html | 3888 +++++++++++++++++ docs/benchmarking/cli.md | 32 + pyproject.toml | 3 +- vllm/benchmarks/serve.py | 29 +- 5 files changed, 3943 insertions(+), 9 deletions(-) create mode 100644 docs/assets/contributing/vllm_bench_serve_dataset_stats.png create mode 100644 docs/assets/contributing/vllm_bench_serve_timeline.html diff --git a/docs/assets/contributing/vllm_bench_serve_dataset_stats.png b/docs/assets/contributing/vllm_bench_serve_dataset_stats.png new file mode 100644 index 0000000000000000000000000000000000000000..72c19d3d7c0725e18a79f0d6d3c4d019bec2d4f5 GIT binary patch literal 110228 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%0DpkB>t=5mI!tcS?7{RN3RTZc&0zZ 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 + + +
+
+ + \ No newline at end of file diff --git a/docs/benchmarking/cli.md b/docs/benchmarking/cli.md index a7e50c907d..c9ceb67cce 100644 --- a/docs/benchmarking/cli.md +++ b/docs/benchmarking/cli.md @@ -108,6 +108,38 @@ P99 ITL (ms): 8.39 ================================================== ``` +#### Results Visualization + +The `--plot-timeline` and `--plot-dataset-stats` can be used to generate respectively the requests completion timeline and dataset prompt and output tokens statistics, which can be useful for debugging purpose or for deeper analysis. + +```bash +vllm bench serve \ + --backend vllm \ + --model meta-llama/Llama-3.1-8B-Instruct \ + --endpoint /v1/completions \ + --dataset-name sharegpt \ + --dataset-path /ShareGPT_V3_unfiltered_cleaned_split.json \ + --num-prompts 100 \ + --plot-timeline \ + --timeline-itl-thresholds 2,5 \ + --plot-dataset-stats \ + --save-result +``` + +##### Interactive Timeline + +The generated timeline is an interactive visualization in the form of an HTML file that can be rendered in most browsers. To customize the ITL color thresholds, one can use `--timeline-itl-thresholds` flag (default: 25ms, 50ms) + +Example output: + + + +##### Dataset statistics + +The generated figure shows the input prompt and output tokens distribution. + +Example output: ![Dataset Statistics](../assets/contributing/vllm_bench_serve_dataset_stats.png) + #### Custom Dataset If the dataset you want to benchmark is not supported yet in vLLM, even then you can benchmark on it using `CustomDataset`. Your data needs to be in `.jsonl` format and needs to have "prompt" field per entry, e.g., data.jsonl diff --git a/pyproject.toml b/pyproject.toml index 5c87de018c..c7b77f0e91 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -123,7 +123,8 @@ extend-exclude = ["tests/models/fixtures/*", "tests/prompts/*", "tests/tokenizer "benchmarks/sonnet.txt", "tests/lora/data/*", "build/*", "examples/pooling/token_embed/*", "tests/models/language/pooling/*", "vllm/third_party/*", "vllm/entrypoints/serve/instrumentator/static/*", "tests/entrypoints/openai/speech_to_text/test_transcription_validation.py", - "docs/governance/process.md", "tests/v1/engine/test_fast_incdec_prefix_err.py", ".git/*"] + "docs/governance/process.md", "docs/assets/contributing/vllm_bench_serve_timeline.html", + "tests/v1/engine/test_fast_incdec_prefix_err.py", ".git/*"] ignore-hidden = false [tool.typos.default] diff --git a/vllm/benchmarks/serve.py b/vllm/benchmarks/serve.py index a4133d17ff..dc8b293a42 100644 --- a/vllm/benchmarks/serve.py +++ b/vllm/benchmarks/serve.py @@ -1611,14 +1611,12 @@ def add_cli_args(parser: argparse.ArgumentParser): ) parser.add_argument( "--timeline-itl-thresholds", - type=float, - nargs=2, - default=[25.0, 50.0], - metavar=("THRESHOLD1", "THRESHOLD2"), + type=str, + default="25,50", help="ITL thresholds in milliseconds for timeline plot coloring. " - "Specify two values to categorize inter-token latencies into three groups: " - "below first threshold (green), between thresholds (orange), " - "and above second threshold (red). Default: 25 50 (milliseconds).", + "Specify two comma-separated values to categorize inter-token " + "latencies into three groups: below first threshold (green), " + "between thresholds (orange), and above second threshold (red).", ) parser.add_argument( "--plot-dataset-stats", @@ -1637,6 +1635,19 @@ async def main_async(args: argparse.Namespace) -> dict[str, Any]: random.seed(args.seed) np.random.seed(args.seed) + # Validate timeline ITL thresholds + if args.plot_timeline: + try: + itl_thresholds = [ + float(t.strip()) for t in args.timeline_itl_thresholds.split(",") + ] + if len(itl_thresholds) != 2: + raise ValueError( + f"Expected 2 ITL threshold values, got {len(itl_thresholds)}" + ) + except ValueError as e: + raise ValueError(f"Invalid --timeline-itl-thresholds format: {e}") from e + # Validate ramp-up arguments if args.ramp_up_strategy is not None: if args.request_rate != float("inf"): @@ -1906,7 +1917,9 @@ async def main_async(args: argparse.Namespace) -> dict[str, Any]: timeline_path = Path(file_name).with_suffix(".timeline.html") # Convert thresholds from milliseconds to seconds - itl_thresholds_sec = [t / 1000.0 for t in args.timeline_itl_thresholds] + itl_thresholds_sec = [ + float(t) / 1000.0 for t in args.timeline_itl_thresholds.split(",") + ] generate_timeline_plot( per_request_data, timeline_path, itl_thresholds=itl_thresholds_sec )