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(