Start / Poradniki / Rozwiązywanie problemów / Windows

Brak pamięci przy długim kontekście (winny jest cache KV, nie wagi)

WindowsLinuxmacOS

Autor: Jakub Rusinowski · Ostatnia aktualizacja: 22 czerwca 2026

Edukator AI i prowadzący warsztaty z wdrażania lokalnych modeli LLM

Komunikat błędu

llama_new_context_with_model: failed to allocate KV cache

Kiedy się pojawia

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.

Co się właściwie dzieje

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.

Jak to naprawić

1. Zostaw zapas VRAM-u — licz wagi I kontekst razem Najczęstsze rozwiązanie

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.

Sprawdź, co zmieści się na twoim sprzęcie — sprawdź, co się mieści przy twojej docelowej długości kontekstu, a nie tylko wagi
Otwórz kalkulator VRAM →

2. Ogranicz długość kontekstu do tego, czego potrzebujesz

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.

bash
# llama.cpp: cap the context
./llama-cli -m model.gguf -c 8192

# Ollama:
OLLAMA_CONTEXT_LENGTH=8192 ollama run <model>

3. Skwantyzuj cache KV

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.

bash
./llama-cli -m model.gguf -c 32768 \
  --cache-type-k q8_0 --cache-type-v q8_0

4. Weź model o mniejszych wagach, żeby zrobić miejsce na kontekst

Jeś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.

Dotyczy także: Linux · Apple

Powiązane

Model, który mieści się na większości zestawów:
Zobacz model i wymagania →

Najczęstsze pytania

Dlaczego model pada tylko przy długich promptach?

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.

Ile VRAM-u zajmuje kontekst?

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.

Czy kwantyzacja cache'u KV pogarsza jakość?

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.