Skip to content

fit: OVMS serves one GPU - #212

Closed
88plug wants to merge 1 commit into
mainfrom
claude/fit-ovms-one-gpu
Closed

88plug wants to merge 1 commit into
mainfrom
claude/fit-ovms-one-gpu

Conversation

@88plug

@88plug 88plug commented Oct 29, 2026

Copy link
Copy Markdown
Owner

With K3D_GPU_AGENT_GPUS=2 the launcher passed --gpus 2 to the fit for an OVMS agent as well. The fit then sized a layer split over two cards and rendered two cards' worth of KV pool (--cache_size=41 for the Gemma 4 int4 IR on the Xeon fixture) into a pod that holds a single gpu.intel.com/xe.

Changes:

  • console/fit.py: an OVMS placement with more than one GPU asked is refused as "OVMS serves one GPU: N asked" instead of falling back to or [want_gpus].
  • console/fit.py: when no placement can be tried at all (no free card with device-local memory and the CPU not allowed), the refusal says that no Intel GPU with device-local memory is free, instead of echoing the engine's release-note line.
  • scripts/k3d-gpu agent_fit: --gpus is passed to the fit only when the agent app is vLLM.
  • docs/fit.md: says K3D_GPU_AGENT_GPUS is a vLLM knob and documents both refusals.

Tests:

  • tests/fit_test.py OvmsOneGpu: --gpus 2 with OVMS is refused for both OpenVINO fixtures; the GPU --cache_size stays within one card's budget for --gpus unset, 1 and 2; the no-free-GPU refusal reason.
  • tests/fit_test.sh: K3D_GPU_AGENT_GPUS=2 with OVMS renders a --cache_size within one card's budget (13 GiB against 30 GiB; before the fix it rendered 41) and requests one gpu.intel.com/xe.

Run before opening: tests/fit_test.sh (35 passed), python3 tests/fit_test.py (59 tests OK), tests/model_opt_test.sh (37 passed), tests/claims_check.sh, python3 tests/ledger_drift_check.py, shellcheck v0.11.0 at warning severity on the changed shell files.

With K3D_GPU_AGENT_GPUS=2 the launcher passed --gpus 2 to the fit for an OVMS agent too. The fit then sized a layer split over two cards and rendered a KV pool of two cards' worth (--cache_size=41 for the Gemma 4 int4 IR on the Xeon fixture) into a pod that holds one gpu.intel.com/xe.

The fit now refuses a multi-GPU OVMS placement with "OVMS serves one GPU", and agent_fit passes --gpus only when the agent app is vLLM. When no placement can be tried at all, the refusal says no Intel GPU with device-local memory is free instead of echoing the engine note.

Tests: OVMS with --gpus 2 is refused, the GPU cache_size stays within one card's budget, the no-free-GPU reason, and an agent manifest with K3D_GPU_AGENT_GPUS=2 under OVMS whose --cache_size fits one card.
@88plug

88plug commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #229 (merged)

@88plug 88plug closed this Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant