OSVauco/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md
chris a50834eb1e
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
chore: update docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md via opax-mcp
2026-07-21 20:49:04 +00:00

165 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 05 — 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:
1. ✅ Kaldstart / keep_alive baseline — FERDIG
2. ✅ Resident modell-strategi — FERDIG
3. ✅ Parameter-matrise — FERDIG
4. ✅ Full Emma MCoT end-to-end — FERDIG 2026-07-21
5. ⏳ 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 59s × 46 kall = 2054s 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.84.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: 213s (avh. av num_predict)
Boot-kaldstart (1 gang): ~56s ekstra første turn
```
**Konklusjoner:**
1. **42.51s per varm turn er akseptabelt** for asynkron/agent-bruk — ikke interaktiv chat
2. **Boot-warming er nødvendig** — legg inn oppvarmingskall i Ollama-oppstartskript etter systemd start
3. **load_s ~1.0s per kall er fast overhead** på CPU — ikke reduserbar med parameterjustering
4. **Ingen RAM-degradering** — 6.8 GB used, Swap=0 etter full sekvens
5. **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_URL` satt runtime — **må legges permanent inn i `opax-mcp.yaml` og rebuildes**
- `git.vauco.no` er 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_models` er 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 |