openvinotoolkit / openvinotoolkit/model_server
Feature request: CPU offload / HETERO:GPU,CPU support for models exceeding VRAM in continuous batching
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 931
- Forks
- 277
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 68
Description
I'm running an Intel Arc Pro B50 (16 GB GDDR6) and want to serve OpenVINO/Qwen3.6-35B-A3B-int4-ov (23.1 GB) with OVMS. The model is too large to fit entirely in VRAM, so I tried --target_device HETERO:GPU,CPU to spill the overflow into system RAM (96 GB available).
OVMS rejects this at startup:
Check 'all_gpu_device || execution_devices.size() == 1' failed at pipeline_impl.cpp:169:
Continuous batching: execution device is expected to be single CPU / single GPU / multi GPUs
I understand the continuous batching pipeline currently only accepts a single device or an all-GPU HETERO config. The only workaround is --target_device CPU, which forgoes GPU acceleration entirely.
Request: Support HETERO:GPU,CPU (or an equivalent GPU-primary-with-CPU-overflow mode) so models that slightly exceed VRAM can still benefit from GPU acceleration. For context, llama.cpp's SYCL backend already handles this on the same hardware Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf runs at ~32 tok/s generation on this GPU by offloading as many layers as fit into VRAM and spilling the rest to system RAM. Having comparable functionality in OVMS would make it practical to serve mid-to-large OpenVINO models on consumer/prosumer Intel Arc GPUs without needing an exact VRAM fit.
Hardware: Intel Arc Pro B50, 16 GB GDDR6, 96 GB system RAM, LXC container on Proxmox, openvino/model_server:latest-gpu (OVMS 2026.2.0 / OpenVINO GenAI 2026.2.0.0).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at pipeline_impl.cpp:169 and trace the continuous-batching validation that rejects HETERO:GPU,CPU. Determine how execution devices are represented and where device selection is enforced; done means a GPU-primary configuration can spill to CPU for oversized models without disabling continuous batching.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100