# The official vLLM-Omni image (same serving setup the Voxtral-4B-TTS-2603 model card # documents) — vllm, vllm-omni, torch, and CUDA builds all matched and tested together # upstream. v0.22.0 instead of the card's v0.18.0: v0.18.0 has a known orchestrator # crash under concurrent /v1/audio/speech requests (vllm-omni#2316/#2295, memory # budgeting fixed by #2341/#3360, both in by 0.22). The eval runs # `vllm serve --omni` inside this container (see run_eval.sh) and run_eval.py # talks to its OpenAI-compatible /v1/audio/speech endpoint, exactly like the model # card's usage example. FROM vllm/vllm-omni:v0.22.0 # Client-side deps for the eval loop (the serving stack itself is already baked in). # httpx is the HTTP client the model card's own example uses. ENV PIP_BREAK_SYSTEM_PACKAGES=1 RUN python3 -m pip install --no-cache-dir datasets tqdm soundfile httpx WORKDIR /app # Model weights (~9 GB BF16, ungated) are NOT baked in; the server downloads them on # first run into the HF cache that run_eval.sh bind-mounts, so they persist across runs. # Copy the full repository COPY . /app # Default entrypoint (the base image's entrypoint targets `vllm`; the eval drives the # container with explicit bash commands instead). ENTRYPOINT ["bash"] # Keep-alive CMD so the Space runtime stays healthy. HF Jobs and `docker run` # override this with their own command (e.g. run_eval.sh). EXPOSE 7860 CMD ["-c", "python3 -m http.server 7860"]