Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion lib/marin/src/marin/inference/vllm_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,11 @@ def stop(self, handle: VllmServerHandle) -> None:


def resolve_vllm_mode(mode: Literal["native", "docker"] | None) -> Literal["native", "docker"]:
mode_str = (mode if mode is not None else os.environ.get("MARIN_VLLM_MODE", "docker")).lower()
# Default to native vLLM. The Docker sidecar path requires a mounted
# /var/run/docker.sock (docker-alongside-docker), which Iris workers do not
# provide. Set MARIN_VLLM_MODE=docker to opt in for Ray-era flows that still
# need the sidecar.
mode_str = (mode if mode is not None else os.environ.get("MARIN_VLLM_MODE", "native")).lower()
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve docker opt-in mode across Ray worker boundary

Changing the fallback in resolve_vllm_mode to native breaks the documented MARIN_VLLM_MODE=docker opt-in for Ray-launched evaluators that resolve mode on the submitter but do not forward that env var to the worker (for example simple_evaluator.launch_evaluate_with_ray and lm_evaluation_harness_evaluator.launch_evaluate_with_ray). In that path, mode_str is computed as docker locally (so no native pip package is added), but the worker process falls back to this new default (native) because MARIN_VLLM_MODE is absent from EnvironmentConfig.env_vars, causing backend/package mismatch and vLLM startup failures.

Useful? React with 👍 / 👎.

if mode_str not in ("native", "docker"):
raise ValueError(f"Unknown MARIN_VLLM_MODE={mode_str!r}; expected 'native' or 'docker'.")
return mode_str # type: ignore[return-value]
Expand Down
2 changes: 1 addition & 1 deletion lib/marin/src/marin/inference/vllm_smoke_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def main(argv: list[str] | None = None) -> int:
"--mode",
choices=["docker", "native"],
default=None,
help="Override MARIN_VLLM_MODE (default: use env; docker if unset).",
help="Override MARIN_VLLM_MODE (default: use env; native if unset).",
)
parser.add_argument(
"--docker-image",
Expand Down
30 changes: 30 additions & 0 deletions tests/vllm/test_vllm_server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright The Marin Authors
# SPDX-License-Identifier: Apache-2.0

"""Tests for marin.inference.vllm_server helpers (do not require vllm)."""

import pytest

from marin.inference.vllm_server import resolve_vllm_mode


def test_default_mode_is_native(monkeypatch):
"""Default mode must be native so Iris workers without /var/run/docker.sock work out of the box."""
monkeypatch.delenv("MARIN_VLLM_MODE", raising=False)
assert resolve_vllm_mode(None) == "native"


def test_env_var_can_select_docker(monkeypatch):
monkeypatch.setenv("MARIN_VLLM_MODE", "docker")
assert resolve_vllm_mode(None) == "docker"


def test_explicit_argument_overrides_env(monkeypatch):
monkeypatch.setenv("MARIN_VLLM_MODE", "docker")
assert resolve_vllm_mode("native") == "native"


def test_unknown_mode_raises(monkeypatch):
monkeypatch.setenv("MARIN_VLLM_MODE", "kubernetes")
with pytest.raises(ValueError, match="MARIN_VLLM_MODE"):
resolve_vllm_mode(None)
Loading