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 15, 07:15 UTC
[Misc] Add packages for benchmark as extra dependency (#19089)
Signed-off-by: Isotr0py <2037008807@qq.com>
Isotr0py committed
Jun 4, 2025 at 19:18 UTC
8711bc5e684d43a333c0c20bef575a0d8ee8346f
3 files changed
+20
-22
docs/cli/README.md
+2
@@ -77,6 +77,8 @@ vllm complete --quick "The future of AI is"
77
78
Run benchmark tests for latency online serving throughput and offline inference throughput.
79
80
+To use benchmark commands, please install with extra dependencies using `pip install vllm[bench]`.
81
+
82
Available Commands:
83
84
```bash
setup.py
+1
@@ -688,6 +688,7 @@ setup(
688
ext_modules=ext_modules,
689
install_requires=get_requirements(),
690
extras_require={
691
+ "bench": ["pandas", "datasets"],
692
"tensorizer": ["tensorizer>=2.9.0"],
693
"fastsafetensors": ["fastsafetensors >= 0.1.10"],
694
"runai": ["runai-model-streamer", "runai-model-streamer-s3", "boto3"],
vllm/benchmarks/datasets.py
+17
-22
@@ -24,7 +24,6 @@ from io import BytesIO
24
from typing import Any, Callable, Optional, Union
25
26
import numpy as np
27
-import pandas as pd
27
from PIL import Image
28
from transformers import PreTrainedTokenizerBase
29
@@ -33,6 +32,23 @@ from vllm.lora.utils import get_adapter_absolute_path
32
from vllm.multimodal import MultiModalDataDict
33
from vllm.multimodal.image import convert_image_mode
34
from vllm.transformers_utils.tokenizer import AnyTokenizer, get_lora_tokenizer
35
+from vllm.utils import PlaceholderModule
36
+
37
+try:
38
+ from datasets import load_dataset
39
+except ImportError:
40
+ datasets = PlaceholderModule("datasets")
41
+ load_dataset = datasets.placeholder_attr("load_dataset")
42
+
43
+try:
44
+ import pandas as pd
45
+except ImportError:
46
+ pd = PlaceholderModule("pandas")
47
+
48
+try:
49
+ import librosa
50
+except ImportError:
51
+ librosa = PlaceholderModule("librosa")
52
53
logger = logging.getLogger(__name__)
54
@@ -636,13 +652,6 @@ class BurstGPTDataset(BenchmarkDataset):
652
if self.dataset_path is None:
653
raise ValueError("dataset_path must be provided for loading data.")
654
639
- try:
640
- import pandas as pd
641
- except ImportError as e:
642
- raise ImportError(
643
- "Pandas is required for BurstGPTDataset. Please install it "
644
- "using `pip install pandas`.") from e
645
-
655
df = pd.read_csv(self.dataset_path)
656
# Filter to keep only GPT-4 rows.
657
gpt4_df = df[df["Model"] == "GPT-4"]
@@ -717,13 +726,6 @@ class HuggingFaceDataset(BenchmarkDataset):
726
727
def load_data(self) -> None:
728
"""Load data from HuggingFace datasets."""
720
- try:
721
- from datasets import load_dataset
722
- except ImportError as e:
723
- raise ImportError(
724
- "Hugging Face datasets library is required for this dataset. "
725
- "Please install it using `pip install datasets`.") from e
726
-
729
self.data = load_dataset(
730
self.dataset_path,
731
name=self.dataset_subset,
@@ -1147,13 +1149,6 @@ class ASRDataset(HuggingFaceDataset):
1149
output_len: Optional[int] = None,
1150
**kwargs,
1151
) -> list:
1150
- try:
1151
- import librosa
1152
- except ImportError as e:
1153
- raise ImportError(
1154
- "librosa is required for ASRDataset. Please install it "
1155
- "using `pip install librosa`.") from e
1156
-
1152
output_len = (output_len
1153
if output_len is not None else self.DEFAULT_OUTPUT_LEN)
1154
prompt = ASRDataset.TRANSCRIPTION_PREAMBLE