OSVauco/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md
chris 4b35e97710
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 21:00:07 +00:00

148 lines
5.1 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:58 CEST
### ✅ FASE 05 — 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.95.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 2054s 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 (213s per kall avh. av num_predict)
### 6.5 Belastningstest — 20 turns × 3 kall = 60 kall totalt
Kjørt: 20:50:4520: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`
```ini
[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.95.0 (gemma3:4b)
```
---
## ÅPNE PUNKTER SOM MÅ LØSES FØR ENDELIG BLUEPRINT
1. `GITEA_URL` satt runtime — **må legges permanent inn i `opax-mcp.yaml` og rebuildes**
2. `git.vauco.no` erstatter IP når DNS er oppe
3. **Boot-warming:** legg til oppvarmingskall i Ollama systemd `ExecStartPost` for å eliminere 56s boot-penalty
4. 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_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 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** |