ThinkFacility

Error messages

ValueError: No available memory for the cache blocks. Try increasing `gpu_memory_utilization`

The message

ValueError: No available memory for the cache blocks. Try increasing `gpu_memory_utilization`
vLLM 0.30.0 read September 25, 2026vLLMlocal modelsVRAM

What it means

After loading the weights and running a test pass, vLLM had nothing left inside its memory budget for the KV cache, the store that holds each request's context. With zero cache it can't serve anything, so it stops.

What to do

Raise --gpu-memory-utilization if the GPU has free memory, otherwise use a smaller or quantized model, split it across GPUs, or try --enforce-eager.

vLLM raises this during startup, after the model has loaded, and then the launch ends with the usual "Engine core initialization failed" line:

ValueError: No available memory for the cache blocks. Try increasing `gpu_memory_utilization` when initializing the engine (this flag also controls CPU memory reservation on the CPU backend, despite its name). See https://docs.vllm.ai/en/latest/configuration/conserving_memory/ for more details.

Older versions stopped after "initializing the engine." and people still paste that shorter form. As of September 25, 2026, 93 issues and pull requests in the vllm-project/vllm repo contain the message.

How vLLM works out the memory it has left

We read the code in vLLM 0.30.0. It takes a share of the GPU's total memory, set by --gpu-memory-utilization (0.92 by default), as its budget. Then it loads the weights and runs a test pass with dummy inputs to see the peak. Everything that pass used, plus memory for CUDA graphs (recorded GPU call sequences that speed up decoding), comes off the budget. What's left becomes the KV cache, the memory that holds the context of every request in flight.

This error means that remainder came out at zero or below. The model and its working memory already used the whole budget before any cache was set aside. It's a different case from the max seq len error, where there is some cache, but not enough for one full-length request.

What to change

When the model should fit

The measurement is taken across the whole GPU, so anything else that grabs memory during vLLM's test pass gets counted as vLLM's own. An open issue from September 8, 2026 (#55827) starts two small models on one GPU at the same moment: one ended up with a KV cache of minus 3.21 GiB and this exact error, though each model fit fine when started alone. The reporter's workarounds were to start instances one after another, or to set --kv-cache-memory-bytes, which skips the measurement and uses the size you give (and ignores --gpu-memory-utilization). A fix was still an open pull request (#55828) on September 25.

When you run two instances on one card on purpose, give each its own --gpu-memory-utilization: the setting's own documentation uses 0.5 each as the example. The share is per instance, so two at the 0.92 default ask for far more than the card has.

Other lines the same feature prints

Match yours against these if the one at the top of the page is not quite it. They come from the same code and mean related things.

  • No available memory for the cache blocks.
  • ValueError: No available memory for the cache blocks. Try increasing `gpu_memory_utilization` when initializing the engine.
  • No available memory for the cache blocks. Try increasing `gpu_memory_utilization` when initializing the engine (this flag also controls CPU memory reservation on the CPU backend, despite its name).