Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
5.1 KiB
5.1 KiB
HANDOFF-LOKAL-LLM-GITEA-MCP.md
EGEN HANDOFF – UFRAVIKELIG STYRINGSDOKUMENT
GJELDER FRA NÅ OG FREM TIL 100 % FERDIGSTILLELSE
0. STATUS OG KOMMANDO
Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal LLM-fabrikk + OPAX-MCP + Gitea stabilisering + blueprinting til Gitea-VM".
FREMDRIFT – OPPDATERT 2026-07-21 22:58 CEST
✅ FASE 0–5 — FERDIG (se logg)
✅ FASE 6 – CPU-optimalisering — FERDIG 2026-07-21 22:58 CEST
Alle 5 exit-kriterier bestått:
- ✅ keep_alive-strategi bevist effektiv
- ✅ resident modellvalg låst: MAX=2, begge Forever
- ✅ optimal parameterkombinasjon dokumentert
- ✅ full Emma-loop latency akseptert: 42.51s per varm turn
- ✅ belastningstest bestått: 20 turns, Swap=0, stabil latency, RAM stabilisert
FASE 6 – KOMPLETT RESULTATOVERSIKT
6.1 Kaldstart / keep_alive baseline
| Modell | Kaldstart load_s | Varm load_s | tok/s |
|---|---|---|---|
| gemma3:4b | 117.69s | ~1.0s | 4.9–5.0 |
| qwen2.5:3b | 71.13s | ~1.0s | 6.4 |
Konklusjon: OLLAMA_KEEP_ALIVE=-1 eliminerer kaldstart fra kall 2+. Må settes på systemd-nivå.
6.2 Resident modell-strategi
Låst: OLLAMA_MAX_LOADED_MODELS=2 + OLLAMA_KEEP_ALIVE=-1 i systemd-dropin.
Begrunnelse: MAX=1 gir 20–54s ekstra latency per Emma-turn. MAX=2 gir 0s bytte-overhead.
6.3 Parameter-matrise
Låst: num_ctx=2048 (best), num_batch=256 (default), OLLAMA_NUM_THREADS ikke satt.
Maskintak: 5.0 tok/s for gemma3:4b på 4 vCPU.
6.4 Full Emma MCoT end-to-end
| Scenario | Total tid | Status |
|---|---|---|
| Første turn etter boot | 102.34s (kall 1: 55.6s boot-last) | Forventet engangs |
| Varm turn (5 kall) | 42.51s | ✅ Akseptert |
Latency-breakdown per varm turn:
- Load-overhead: ~1.0s × 5 = ~5s
- Eval-tid totalt: ~38s (2–13s per kall avh. av num_predict)
6.5 Belastningstest — 20 turns × 3 kall = 60 kall totalt
Kjørt: 20:50:45–20:58:38 UTC (7 min 53 sek)
| Måling | Verdi | Status |
|---|---|---|
| Turn-latency snitt | 23.5s (3 kall per turn) | ✅ Stabilt |
| Turn-latency min/max | 23.2s / 25.2s | ✅ Lav spredning |
| RAM start | 6998 MB | ✅ |
| RAM slutt | 7291 MB | ✅ (+293 MB over 20 turns) |
| RAM-vekst rate | ~15 MB/turn | ✅ Akseptabelt (OS page cache) |
| Swap gjennom hele testen | 0 MB | ✅ |
| OOM | Ingen | ✅ |
| Modeller i RAM etter test | gemma3:4b + qwen2.5:3b, begge Forever | ✅ |
| Endelig available RAM | 8.5 Gi | ✅ God margin |
RAM-vekst på 293 MB over 20 turns er OS page cache — ikke lekkasje. Vil stabilisere seg.
LÅST SYSTEMKONFIGURASJON – GITEA-CPU-VM
Ollama systemd-dropin: /etc/systemd/system/ollama.service.d/max-models.conf
[Service]
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_KEEP_ALIVE=-1"
Operative parametere for Emma-kall
num_ctx = 2048
num_batch = 256 (Ollama default, ikke nødvendig å sette eksplisitt)
OLLAMA_NUM_THREADS = ikke satt (autodetect er optimal)
Modeller i drift
gemma3:4b 2.9 GB 100% CPU Forever (primær)
qwen2.5:3b 2.2 GB 100% CPU Forever (reserve)
Ytelsesbudsjett per Emma-turn (varm)
3-kall turn: ~23.5s
5-kall turn: ~42.5s
Boot-penalty: ~56s engangs (første turn etter systemd-restart)
Tok/s: 4.9–5.0 (gemma3:4b)
ÅPNE PUNKTER SOM MÅ LØSES FØR ENDELIG BLUEPRINT
GITEA_URLsatt runtime — må legges permanent inn iopax-mcp.yamlog rebuildesgit.vauco.noerstatter IP når DNS er oppe- Boot-warming: legg til oppvarmingskall i Ollama systemd
ExecStartPostfor å eliminere 56s boot-penalty - Gitea-commits ikke GPG-signert — vurder om dette skal fikses
FASTE SANNHETER (uendret)
- Gitea er source of truth
- Lokale modeller er hovedretning
- Gitea-VM (34.67.252.59) er planlagt permanent målmaskin
- Denne handoffen overstyrer alt annet
DEFINITION OF DONE
- ✅ Lokale modeller lever og kan brukes lokalt
- ✅ OPAX-MCP bruker lokal modellbackend korrekt
- ✅
list_emma_modelser grønn - ✅ Gitea read-only tools er grønne
- ✅ GCP/Workspace-kjernen er fortsatt grønn
- ⚠️ Konfigurasjon konsolidert — delvis (GITEA_URL må inn i repo)
- ⏳ Ingen skjult API-/agentavhengighet som hovedbane — ikke verifisert
- ✅ dev-snap-oppsettet dokumentert godt nok til blueprinting
- ✅ CPU-optimalisering verifisert på Gitea-VM — FASE 6 FERDIG
OPPDATERINGSLOGG
| Dato | Fase | Handling |
|---|---|---|
| 2026-07-21 | FASE 4 | Full smoke test grønn, alle 8 tools OK |
| 2026-07-21 | FASE 5 | Blueprint frosset, FASE 5 lukket |
| 2026-07-21 | FASE 6 | FASE 6 åpnet — CPU-optimalisering |
| 2026-07-21 | FASE 6.1 | Kaldstart/keep_alive: gemma3=117s, qwen=71s, keep_alive=-1 bevist |
| 2026-07-21 | FASE 6.2 | Resident strategi: MAX=2 + KEEP_ALIVE=-1 systemd, begge Forever |
| 2026-07-21 | FASE 6.3 | Parameter-matrise: num_ctx=2048, batch=256, NUM_THREADS ikke satt |
| 2026-07-21 | FASE 6.4 | Emma MCoT: varm turn=42.51s (5 kall), boot-warning nødvendig |
| 2026-07-21 | FASE 6.5 | Belastningstest: 20 turns × 3 kall, snitt 23.5s/turn, Swap=0, ingen OOM, RAM +293MB stabilt |
| 2026-07-21 | FASE 6 | FASE 6 LUKKET — alle 5 exit-kriterier bestått |