359afb3a59
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI, control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve). Co-authored-by: Cursor <cursoragent@cursor.com>
2.2 KiB
2.2 KiB
KV cache w LocalAI (llama-cpp)
Problem
Przy inference LLM pamięć KV rośnie z długością kontekstu. Domyślnie LocalAI/llama.cpp używa f16 dla K i V — pełna precyzja, najwięcej VRAM.
Na RTX 3090 Ti (24 GB) przy modelu Q4 + mmproj (Gemma 4 12B) kwantyzacja KV zwalnia miejsce na dłuższy context_size lub większy model.
Gdzie konfigurować
| Miejsce | KV cache? |
|---|---|
docker-compose.yml |
nie |
.env stacku |
nie |
models/<nazwa>.yaml → parameters: |
tak |
Pola YAML (llama-cpp)
| Pole | Typ | Domyślnie | Opis |
|---|---|---|---|
cache_type_k |
string | f16 |
Kwantyzacja cache kluczy (-ctk w llama.cpp) |
cache_type_v |
string | f16 |
Kwantyzacja cache wartości (-ctv) |
flash_attention |
bool/string | off | Wymagane przy skwantyzowanym cache_type_v |
context_size |
int | niski / auto | Maks. tokenów kontekstu (wpływa na rozmiar KV) |
Dozwolone typy (cuda13-llama-cpp)
f16, f32, q8_0, q4_0, q4_1, q5_0, q5_1
Rekomendacja dla tego serwera (q8_0)
parameters:
cache_type_k: q8_0
cache_type_v: q8_0
flash_attention: true
context_size: 8192
Po teście VRAM można podnieść context_size do 16384.
Szacunek VRAM (Gemma 4 12B Q4_0 + mmproj)
| Składnik | Orientacyjnie |
|---|---|
| Wagi + mmproj | ~8–10 GB |
| KV @ f16, ctx 8k | ~2–4 GB |
| KV @ q8_0, ctx 8k | ~1–2 GB |
TurboQuant (odłożone)
Backend turboquant + typy turbo2/turbo3/turbo4 dają większą kompresję (~3–4×), ale wymagają:
docker exec localai /local-ai backends install turboquant
oraz backend: turboquant w YAML. Nie wdrożone w bieżącej sesji.
Zastosowanie profilu
cd stacks/localai
./scripts/apply-kv-profile.sh gemma-4-12b-it-qat-q4_0
docker compose --profile localai restart localai
Weryfikacja
# modele
curl -s http://localhost:8070/v1/models -H "Authorization: Bearer $KEY"
# VRAM
nvidia-smi
# logi backendu
docker compose --profile localai logs localai 2>&1 | grep -iE 'cache|ctk|ctv|flash' | tail -20