Start / Poradniki / Rozwiązywanie problemów / Windows
WindowsLinuxmacOS
Autor: Jakub Rusinowski · Ostatnia aktualizacja: 22 czerwca 2026
Edukator AI i prowadzący warsztaty z wdrażania lokalnych modeli LLM
llama_new_context_with_model: failed to allocate KV cache
Model ładuje się bez słowa skargi i odpowiada na krótkie prompty — a potem wywraca się, gdy podasz mu długi dokument albo długą historię rozmowy. Awaria przychodzi przy *generowaniu* dużych wejść, a nie przy ładowaniu, i to właśnie najbardziej myli: wagi wyraźnie się mieszczą, a pamięci mimo to brakuje.
Z twojego VRAM-u czerpią dwie różne rzeczy: wagi modelu (stałe) i cache KV (rosnący wraz z długością kontekstu). Cache KV przechowuje klucze i wartości dla każdego tokenu w oknie, więc zużycie pamięci rośnie mniej więcej liniowo z liczbą trzymanych tokenów. Model, który wygodnie mieści się przy kontekście 4K, przy 32K czy 128K może potrzebować kilku gigabajtów więcej — i to właśnie ta nadwyżka wypycha na OOM kartę, na której wcześniej „ledwo się mieściło”. To klasyczny ciasny przypadek: na papierze w porządku, bez zapasu na kontekst.
Błąd polega na budżetowaniu samych wag. Potrzebujesz miejsca na wagi plus cache KV przy długości kontekstu, z której faktycznie korzystasz. Pewny sposób, żeby tego uniknąć, to wybrać model i kwantyzację zostawiające na karcie zapas na potrzebny kontekst — „ciasne” dopasowanie bez miejsca na cache KV to dokładnie to, co pada przy długich wejściach. Sprawdzaj, co się mieści *razem z* docelowym kontekstem, a nie same wagi.
Jeśli nie potrzebujesz okna 128K, nie alokuj go. Ustawienie kontekstu na rozmiar rzeczywistych wejść wprost zmniejsza cache KV. To najskuteczniejsze pokrętło, jakie masz.
# llama.cpp: cap the context
./llama-cli -m model.gguf -c 8192
# Ollama:
OLLAMA_CONTEXT_LENGTH=8192 ollama run <model>llama.cpp potrafi przechowywać cache KV w niższej precyzji (na przykład q8_0 zamiast f16), zmniejszając jego zużycie pamięci mniej więcej o połowę przy niewielkim koszcie jakości. Przydaje się, gdy naprawdę potrzebujesz długiego kontekstu na ciasnej karcie.
./llama-cli -m model.gguf -c 32768 \
--cache-type-k q8_0 --cache-type-v q8_0Jeśli długi kontekst jest nie do negocjacji, mniejszy albo mocniej skwantyzowany model uwolni VRAM potrzebny cache'owi KV. Oddanie odrobiny precyzji wag za dużo użytecznego kontekstu to przy pracy z dokumentami zwykle właściwy wybór.
Bo cache KV rośnie wraz z długością kontekstu. Krótkie prompty zużywają go niewiele; długie dokumenty i rozmowy potrzebują znacznie więcej, a właśnie ta dodatkowa pamięć wypycha ciasno mieszczący się model poza limit VRAM-u.
To zależy od modelu, ale skaluje się mniej więcej liniowo z liczbą tokenów i przy bardzo długich kontekstach potrafi sięgnąć kilku gigabajtów. Dlatego budżet trzeba planować na wagi i kontekst razem, a nie na same wagi.
Cache KV w Q8 jest w praktyce niemal bezstratny i zmniejsza zużycie pamięci mniej więcej o połowę. Ostrzejsza kwantyzacja cache'u potrafi zaszkodzić spójności przy długim kontekście, dlatego q8_0 to zwykle złoty środek.