94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
125 lines
4.2 KiB
Python
125 lines
4.2 KiB
Python
import io
|
|
import random
|
|
from argparse import Namespace
|
|
from dataclasses import dataclass
|
|
from typing import List, Optional
|
|
|
|
import pybase64
|
|
from datasets import load_dataset
|
|
from transformers import AutoProcessor, AutoTokenizer
|
|
|
|
from sglang.benchmark.datasets.common import BaseDataset, DatasetRow
|
|
from sglang.benchmark.datasets.image import create_mm_data_row
|
|
from sglang.benchmark.utils import get_processor
|
|
|
|
|
|
@dataclass
|
|
class MMMUDataset(BaseDataset):
|
|
num_requests: int
|
|
backend: str
|
|
fixed_output_len: Optional[int]
|
|
|
|
@classmethod
|
|
def from_args(cls, args: Namespace) -> "MMMUDataset":
|
|
return cls(
|
|
num_requests=args.num_prompts,
|
|
backend=args.backend,
|
|
fixed_output_len=args.random_output_len,
|
|
)
|
|
|
|
def load(self, tokenizer=None, model_id=None) -> List[DatasetRow]:
|
|
processor = get_processor(model_id)
|
|
return sample_mmmu_requests(
|
|
num_requests=self.num_requests,
|
|
processor=processor,
|
|
backend=self.backend,
|
|
fixed_output_len=self.fixed_output_len,
|
|
)
|
|
|
|
|
|
def sample_mmmu_requests(
|
|
num_requests: int,
|
|
processor: AutoProcessor | AutoTokenizer,
|
|
backend: str = "sglang",
|
|
fixed_output_len: Optional[int] = None,
|
|
random_sample: bool = True,
|
|
) -> List[DatasetRow]:
|
|
"""
|
|
Sample requests from the MMMU dataset using HuggingFace datasets.
|
|
|
|
Args:
|
|
num_requests: Number of requests to sample.
|
|
fixed_output_len: If provided, use this fixed output length for all requests.
|
|
random_sample: Whether to randomly sample or take the first N.
|
|
|
|
Returns:
|
|
List of tuples (prompt, prompt_token_len, output_token_len).
|
|
"""
|
|
print("Loading MMMU dataset from HuggingFace...")
|
|
|
|
try:
|
|
print("Attempting to load MMMU Math dataset...")
|
|
mmmu_dataset = load_dataset("MMMU/MMMU", "Math", split="test")
|
|
print(
|
|
f"Successfully loaded MMMU Math dataset from HuggingFace with {len(mmmu_dataset)} examples"
|
|
)
|
|
except Exception as e:
|
|
print(f"Failed to load MMMU Math dataset: {e}")
|
|
raise ValueError(f"Failed to load MMMU dataset: {e}")
|
|
|
|
# Sample from the dataset
|
|
if len(mmmu_dataset) > num_requests:
|
|
if random_sample:
|
|
# Random sample
|
|
indices = random.sample(range(len(mmmu_dataset)), num_requests)
|
|
sample_dataset = mmmu_dataset.select(indices)
|
|
else:
|
|
# Take first N
|
|
sample_dataset = mmmu_dataset.select(
|
|
range(min(num_requests, len(mmmu_dataset)))
|
|
)
|
|
else:
|
|
print(f"Dataset has less than {num_requests} examples, using all examples")
|
|
sample_dataset = mmmu_dataset
|
|
|
|
print(f"Selected {len(sample_dataset)} examples for benchmarking")
|
|
|
|
# Create prompts
|
|
filtered_dataset = []
|
|
|
|
for i, example in enumerate(sample_dataset):
|
|
try:
|
|
# Extract image_1
|
|
image = example.get("image_1")
|
|
|
|
if image is not None:
|
|
if hasattr(image, "save"):
|
|
# Convert RGBA images to RGB before encoding
|
|
if image.mode == "RGBA":
|
|
image = image.convert("RGB")
|
|
|
|
# Encode image to base64 (save as PNG to support palette/alpha modes)
|
|
buffered = io.BytesIO()
|
|
image.save(buffered, format="PNG")
|
|
img_str = pybase64.b64encode(buffered.getvalue()).decode("utf-8")
|
|
image_data = f"data:image/png;base64,{img_str}"
|
|
else:
|
|
continue
|
|
|
|
# Extract the question
|
|
question = example.get("question")
|
|
|
|
# Construct the prompt
|
|
text_prompt = f"Question: {question}\n\nAnswer: "
|
|
output_len = fixed_output_len if fixed_output_len is not None else 256
|
|
data_row = create_mm_data_row(
|
|
text_prompt, [image], [image_data], output_len, processor, backend
|
|
)
|
|
filtered_dataset.append(data_row)
|
|
|
|
except Exception as e:
|
|
print(f"Error processing example {i}: {e}")
|
|
|
|
print(f"\nCreated {len(filtered_dataset)} MMMU prompts")
|
|
return filtered_dataset
|