@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / ffe00ef77a
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 15, 03:30 UTC

[Misc] Small: Remove global media connector. Each test should have its own test connector object. (#20395)

Signed-off-by: Chenheli Hua <huachenheli@outlook.com>

Chenheli Hua committed Jul 4, 2025 at 08:15 UTC ffe00ef77a540087032aa23222a8c06cb7675994
1 file changed +57 -9
vllm/multimodal/utils.py
+57 -9
@@ -43,6 +43,15 @@ class MediaConnector:
43 *,
44 allowed_local_media_path: str = "",
45 ) -> None:
46 + """
47 + Args:
48 + media_io_kwargs: Additional args passed to process media
49 + inputs, keyed by modalities. For example,
50 + to set num_frames for video, set
51 + `--media-io-kwargs '{"video": {"num_frames": 40} }'`
52 + connection: HTTP connection client to download media contents.
53 + allowed_local_media_path: A local directory to load media files from.
54 + """
55 super().__init__()
56
57 self.media_io_kwargs: dict[str, dict[
@@ -277,15 +286,6 @@ class MediaConnector:
286 return image_embedding_io.load_base64("", data)
287
288
280 -global_media_connector = MediaConnector()
281 -"""The global [`MediaConnector`][vllm.multimodal.utils.MediaConnector]
282 -instance used by vLLM."""
283 -
284 -fetch_audio = global_media_connector.fetch_audio
285 -fetch_image = global_media_connector.fetch_image
286 -fetch_video = global_media_connector.fetch_video
287 -
288 -
289 def encode_audio_base64(
290 audio: np.ndarray,
291 sampling_rate: float,
@@ -441,3 +441,51 @@ def run_dp_sharded_vision_model(image_input: torch.Tensor,
441 dim=0)
442 vision_embeddings = vision_embeddings[:num_chunks, ...]
443 return vision_embeddings
444 +
445 +
446 +def fetch_audio(
447 + audio_url: str,
448 + audio_io_kwargs: Optional[dict[str, Any]] = None,
449 +) -> tuple[np.ndarray, Union[int, float]]:
450 + """
451 + Args:
452 + audio_url: URL of the audio file to fetch.
453 + audio_io_kwargs: Additional kwargs passed to handle audio IO.
454 + """
455 + media_io_kwargs = None if not audio_io_kwargs else {
456 + "audio": audio_io_kwargs
457 + }
458 + media_connector = MediaConnector(media_io_kwargs=media_io_kwargs)
459 + return media_connector.fetch_audio(audio_url)
460 +
461 +
462 +def fetch_image(
463 + image_url: str,
464 + image_io_kwargs: Optional[dict[str, Any]] = None,
465 +) -> Image.Image:
466 + """
467 + Args:
468 + image_url: URL of the image file to fetch.
469 + image_io_kwargs: Additional kwargs passed to handle image IO.
470 + """
471 + media_io_kwargs = None if not image_io_kwargs else {
472 + "image": image_io_kwargs
473 + }
474 + media_connector = MediaConnector(media_io_kwargs=media_io_kwargs)
475 + return media_connector.fetch_image(image_url)
476 +
477 +
478 +def fetch_video(
479 + video_url: str,
480 + video_io_kwargs: Optional[dict[str, Any]] = None,
481 +) -> tuple[npt.NDArray, dict[str, Any]]:
482 + """
483 + Args:
484 + video_url: URL of the video file to fetch.
485 + video_io_kwargs: Additional kwargs passed to handle video IO.
486 + """
487 + media_io_kwargs = None if not video_io_kwargs else {
488 + "video": video_io_kwargs
489 + }
490 + media_connector = MediaConnector(media_io_kwargs=media_io_kwargs)
491 + return media_connector.fetch_video(video_url)