@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / f74f1572ca
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 7, 22:45 UTC

[Benchmark] Improve benchmarks (#35012)

Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>

Cyrus Leung committed Feb 21, 2026 at 18:31 UTC f74f1572ca3a0973d8db2187f0064bfecb6d5df2
4 files changed +38 -13
vllm/benchmarks/datasets.py
+18 -8
@@ -2627,22 +2627,26 @@ class VisionArenaDataset(HuggingFaceDataset):
2627 no_oversample: bool = False,
2628 **kwargs,
2629 ) -> list:
2630 + parser_fn = self.SUPPORTED_DATASET_PATHS.get(self.hf_name)
2631 + if parser_fn is None:
2632 + raise ValueError(f"Unsupported dataset path: {self.hf_name}")
2633 +
2634 output_len = output_len if output_len is not None else self.DEFAULT_OUTPUT_LEN
2635 +
2636 sampled_requests = []
2637 for i, item in enumerate(self.data):
2638 if len(sampled_requests) >= num_requests:
2639 break
2635 - parser_fn = self.SUPPORTED_DATASET_PATHS.get(self.hf_name)
2636 - if parser_fn is None:
2637 - raise ValueError(f"Unsupported dataset path: {self.hf_name}")
2640 +
2641 prompt = parser_fn(item)
2642 mm_content = process_image(item["images"][0])
2640 - prompt_len = len(tokenizer(prompt).input_ids)
2643 + prompt_len = len(tokenizer.encode(prompt))
2644 if enable_multimodal_chat:
2645 # Note: when chat is enabled the request prompt_len is no longer
2646 # accurate and we will be using request output to count the
2647 # actual prompt len
2648 prompt = self.apply_multimodal_chat_transformation(prompt, mm_content)
2649 +
2650 sampled_requests.append(
2651 SampleRequest(
2652 prompt=prompt,
@@ -2652,6 +2656,7 @@ class VisionArenaDataset(HuggingFaceDataset):
2656 request_id=request_id_prefix + str(i),
2657 )
2658 )
2659 +
2660 self.maybe_oversample_requests(
2661 sampled_requests, num_requests, request_id_prefix, no_oversample
2662 )
@@ -2681,22 +2686,26 @@ class MMVUDataset(HuggingFaceDataset):
2686 no_oversample: bool = False,
2687 **kwargs,
2688 ) -> list:
2689 + parser_fn = self.SUPPORTED_DATASET_PATHS.get(self.hf_name)
2690 + if parser_fn is None:
2691 + raise ValueError(f"Unsupported dataset path: {self.hf_name}")
2692 +
2693 output_len = output_len if output_len is not None else self.DEFAULT_OUTPUT_LEN
2694 +
2695 sampled_requests = []
2696 for i, item in enumerate(self.data):
2697 if len(sampled_requests) >= num_requests:
2698 break
2689 - parser_fn = self.SUPPORTED_DATASET_PATHS.get(self.hf_name)
2690 - if parser_fn is None:
2691 - raise ValueError(f"Unsupported dataset path: {self.hf_name}")
2699 +
2700 prompt = parser_fn(item)
2701 mm_content = process_video(item["video"])
2694 - prompt_len = len(tokenizer(prompt).input_ids)
2702 + prompt_len = len(tokenizer.encode(prompt))
2703 if enable_multimodal_chat:
2704 # Note: when chat is enabled the request prompt_len is no longer
2705 # accurate and we will be using request output to count the
2706 # actual prompt len
2707 prompt = self.apply_multimodal_chat_transformation(prompt, mm_content)
2708 +
2709 sampled_requests.append(
2710 SampleRequest(
2711 prompt=prompt,
@@ -2706,6 +2715,7 @@ class MMVUDataset(HuggingFaceDataset):
2715 request_id=request_id_prefix + str(i),
2716 )
2717 )
2718 +
2719 self.maybe_oversample_requests(
2720 sampled_requests, num_requests, request_id_prefix, no_oversample
2721 )
vllm/benchmarks/sweep/plot.py
+8 -2
@@ -19,11 +19,17 @@ from .utils import sanitize_filename
19
20 try:
21 import matplotlib.pyplot as plt
22 - import pandas as pd
23 - import seaborn as sns
22 except ImportError:
23 plt = PlaceholderModule("matplotlib").placeholder_attr("pyplot")
24 +
25 +try:
26 + import pandas as pd
27 +except ImportError:
28 pd = PlaceholderModule("pandas")
29 +
30 +try:
31 + import seaborn as sns
32 +except ImportError:
33 seaborn = PlaceholderModule("seaborn")
34
35
vllm/benchmarks/sweep/plot_pareto.py
+9 -3
@@ -16,12 +16,18 @@ from .utils import sanitize_filename
16
17 try:
18 import matplotlib.pyplot as plt
19 - import pandas as pd
20 - import seaborn as sns
19 except ImportError:
20 plt = PlaceholderModule("matplotlib").placeholder_attr("pyplot")
21 +
22 +try:
23 + import pandas as pd
24 +except ImportError:
25 pd = PlaceholderModule("pandas")
24 - sns = PlaceholderModule("seaborn")
26 +
27 +try:
28 + import seaborn as sns
29 +except ImportError:
30 + seaborn = PlaceholderModule("seaborn")
31
32
33 def _first_present(run_data: dict[str, object], keys: list[str]):
vllm/benchmarks/sweep/serve_sla.py
+3
@@ -202,6 +202,7 @@ def solve_sla(
202 with path.open("rb") as f:
203 past_iter_data = json.load(f)
204
205 + sla_data.append(past_iter_data)
206 history[past_sla_value] = _compute_margin(sla_comb, past_iter_data)
207
208 # NOTE: We don't use equality here to be more robust against noisy results
@@ -264,6 +265,8 @@ def search_sla(
265 dry_run: bool,
266 ):
267 print("[SLA START]")
268 + print(f"Serve parameters: {serve_comb.as_text() or '(None)'}")
269 + print(f"Bench parameters: {bench_comb.as_text() or '(None)'}")
270 print(f"SLA criteria: {sla_comb.as_text()}")
271
272 result = solve_sla(