Why is the vision-encoder phase a different bottleneck class from LLM decode in a multi-modal model?
Explain why the vision-encoder phase of a multimodal model (ViT + LLM) creates serving headaches when co-located on the same GPU as LLM decode. What does production do to fix it?
A ViT encoder is a compute-bound burst; LLM decode is bandwidth-bound and steady. Co-located, the burst monopolizes the GPU and stalls every in-flight decode, so production isolates or interleaves them.
Picture one kitchen serving two kinds of orders. The vision encoder is a giant catering job: it briefly grabs every burner and oven at once, runs hot for a few seconds, then finishes. The chat decode is a steady drip of tiny single plates, each one waiting on the pantry rather than the stove. While the catering job hogs all the burners, every small plate just sits there getting cold, even though they barely needed a burner at all. Customers waiting on their tiny plates suddenly see long, jittery delays. The fix is the same one any busy kitchen reaches for: give the catering job its own dedicated stoves, or force it to cook in small chunks between the little plates so nobody starves.
Detailed answer & concept explanation~7 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
4 min: two rooflines (ViT compute-bound burst vs decode bandwidth-bound) + the SM monopoly and tail latency spike + three fixes (encoder pool disaggregation, chunked interleaving, image-token caching).
Real products, models, and research that use this idea.
- vLLM and SGLang both serve multimodal models like Llama 4 and Qwen 3 VL, where the ViT encoder forward competes with decode on the same device unless scheduled apart.
- DistServe popularized prefill-decode disaggregation, and the same routing pattern is reused to place vision encoders on dedicated compute-optimized GPU pools.
- Gemini 3.1 Pro and GPT-5.5 vision endpoints handle high image-token counts per request, making encoder bursts a first-order latency concern at production scale.
- Claude Opus 4.7 multimodal serving caches encoded features for repeated images, so shared UI screenshots or icon sets skip re-encoding on subsequent requests.
- NVIDIA TensorRT-LLM exposes chunked and interleaved scheduling primitives used to keep a heavy encoder forward from monopolizing SMs during concurrent decode.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhy does an encoder burst hurt text-only requests that sent no image?
QHow does disaggregating the encoder change the data you ship across the interconnect?
QWhen does image-token caching actually pay off, and how do you key the cache?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Treating the vision encoder as just more prefill. It is a separate compute-bound burst with its own roofline, and ignoring that interference is why co-located decode latency spikes.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.