Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
5.8 KiB
5.8 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:47 CEST
✅ FASE 0–5 — FERDIG (se tidligere logg)
⏳ FASE 6 – CPU-optimalisering — PÅGÅR
Låste parametere:
OLLAMA_KEEP_ALIVE=-1✅OLLAMA_MAX_LOADED_MODELS=2✅num_ctx=2048,num_batch=256✅OLLAMA_NUM_THREADS= ikke satt ✅
Testrekkefølge:
- ✅ Kaldstart / keep_alive baseline — FERDIG
- ✅ Resident modell-strategi — FERDIG
- ✅ Parameter-matrise — FERDIG
- ✅ Full Emma MCoT end-to-end — FERDIG 2026-07-21
- ⏳ Belastningstest med samtidig Gitea + agent-last
Exit-kriterium:
- ✅ keep_alive-strategi bevist effektiv
- ✅ resident modellvalg låst
- ✅ optimal parameterkombinasjon dokumentert
- ✅ full Emma-loop latency akseptert: 42.51s per varm turn (5 kall)
- ⏳ 2-timers belastningstest bestått uten OOM og uten swap
FASE 6.1 – KALDSTART / KEEP_ALIVE BASELINE — FERDIG
| Test | Modell | load_s | tok/s | Status |
|---|---|---|---|---|
| 1.1 Kaldstart | gemma3:4b | 117.69s | 4.9 | ✅ |
| 1.2 Kaldstart | qwen2.5:3b | 71.13s | 6.4 | ✅ |
| 1.5 Varme kall ×5 | gemma3:4b | ~1.0s | ~5 | ✅ |
Konklusjon: keep_alive=-1 eliminerer 117s kaldstart fra kall 2+.
FASE 6.2 – RESIDENT MODELL-STRATEGI — FERDIG
| Konfigurasjon | Resultat |
|---|---|
| MAX=1 | Bytte 5–9s × 4–6 kall = 20–54s ekstra per turn |
| MAX=2 + KEEP_ALIVE=-1 | 0s bytte, begge Forever, 6.8 GB, Swap=0 |
Låst: OLLAMA_MAX_LOADED_MODELS=2 + OLLAMA_KEEP_ALIVE=-1 i systemd.
FASE 6.3 – PARAMETER-MATRISE — FERDIG
| num_ctx | num_batch | avg tok/s | Delta |
|---|---|---|---|
| 1024 | 256 | 4.9 | baseline |
| 2048 | 256 | 5.0 | +0.1 ✅ VINNER |
| 4096 | 256 | 4.3 | -14% ⚠️ |
| 2048 | 128 | 4.9 | -0.1 |
| 2048 | 512 | 4.8 | -0.2 |
Threads (2/3/4 vCPU): alle 4.8–4.9 tok/s — ingen forskjell, ikke sett.
Låst: num_ctx=2048, num_batch=256 (default), OLLAMA_NUM_THREADS ikke satt.
FASE 6.4 – FULL EMMA MCOT END-TO-END — FERDIG 2026-07-21
Kjørt på: gitea-cpu-vm (34.67.252.59) — gemma3:4b, 5 sekvensielle kall (simulert Emma MCoT)
Test 4a — første turn etter systemd-restart (kaldstart kall 1)
| Kall | load_s | eval_s | Type |
|---|---|---|---|
| 1 | 55.6s | 1.95s | embed (boot-kaldstart) |
| 2 | 1.06s | 6.5s | think |
| 3 | 1.0s | 6.3s | choose_action |
| 4 | 1.01s | 7.23s | choose_action |
| 5 | 1.06s | 13.0s | execute_action |
| Total | 102.34s |
Rotårsak kall 1: modellen ikke i RAM etter systemd-restart — engangs boot-kostnad.
Test 4b — varm turn (modell allerede i RAM, UNTIL=Forever)
| Kall | load_s | eval_s | Type |
|---|---|---|---|
| 1 | 1.03s | 1.96s | embed |
| 2 | 1.06s | 6.18s | think |
| 3 | 1.01s | 6.15s | choose_action |
| 4 | 1.01s | 6.5s | choose_action |
| 5 | 1.07s | 13.08s | execute_action |
| Total | 42.51s ✅ |
✅ EMMA MCOT LATENCY LÅST
Varm Emma-turn (5 kall): 42.51s
Load-overhead per kall: ~1.0s (uunngåelig på CPU)
Eval-tid per kall: 2–13s (avh. av num_predict)
Boot-kaldstart (1 gang): ~56s ekstra første turn
Konklusjoner:
- 42.51s per varm turn er akseptabelt for asynkron/agent-bruk — ikke interaktiv chat
- Boot-warming er nødvendig — legg inn oppvarmingskall i Ollama-oppstartskript etter systemd start
- load_s ~1.0s per kall er fast overhead på CPU — ikke reduserbar med parameterjustering
- Ingen RAM-degradering — 6.8 GB used, Swap=0 etter full sekvens
- qwen2.5:3b ble ikke testet i MCoT — Emma bruker primært gemma3:4b; qwen2.5:3b er reserve
RAM etter Fase 6.4
NAME SIZE PROCESSOR UNTIL
gemma3:4b 2.9 GB 100% CPU Forever
qwen2.5:3b 2.2 GB 100% CPU Forever
Mem: 15Gi | 6.8Gi used | 8.8Gi available | Swap: 0B
ÅPNE PUNKTER SOM MÅ LØSES FØR BLUEPRINT
GITEA_URLsatt runtime — må legges permanent inn iopax-mcp.yamlog rebuildesgit.vauco.noer planlagt permanent domene for Gitea — erstatter IP når DNS er oppe- Gitea-commits er ikke GPG-signert — vurder om dette skal fikses
- Boot-warming: legg til oppvarmingskall i Ollama systemd ExecStartPost eller egen service
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.5 gjenstår
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, num_batch=256, NUM_THREADS ikke satt |
| 2026-07-21 | FASE 6.4 | Emma MCoT end-to-end: varm turn=42.51s (5 kall), boot-warming nødvendig, RAM OK |