OSVauco/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md
chris 64333bf620
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:43:04 +00:00

175 lines
6.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:41 CEST
### ✅ FASE 0 Lås situasjonen — FERDIG
- Handoff opprettet som eget dokument
- dev-snap/GPU-VM er aktiv verifikasjonsbase
- Gitea er eneste source of truth
- Lokal LLM-bane er primær retning
### ✅ FASE 1 Lokale modeller lever — FERDIG
- Ollama kjører på Gitea-CPU-VM (34.67.252.59:11434)
- Modeller tilgjengelig via MCP: `gemma3:4b`, `qwen2.5:3b`
- Modeller på dev-snap localhost: `qwen2.5:7b`, `gemma3:4b`, `llama3.2`, `nomic-embed-text`
- `list_emma_models` via MCP: GRØNN ✅
### ✅ FASE 2 MCP peker korrekt til lokal modellsti — FERDIG
- `OLLAMA_BASE_URL` peker til Gitea-CPU-VM Ollama
- `OSVAUCO_AGENT_URL` fikset til kanonisk URL (commit a171a58)
- opax-mcp revisjon: opax-mcp-00122-m4n
### ✅ FASE 3 Gitea read-only grønn — FERDIG
- Alle 4 read-only tools GRØNNE
- `get_connector_status`: `gitea_status: online`
### ✅ FASE 4 Hel kjede samtidig grønn — FERDIG 2026-07-21 20:57 CEST
- Full smoke test: alle 8 tools grønne samtidig
### ✅ FASE 5 Frys blueprint på dev-snap — FERDIG
- Blueprint dokumentert i `docs/BLUEPRINT-DEV-SNAP.md`
### ⏳ FASE 6 CPU-optimalisering før permanent migrering — PÅGÅR
Bekreftede regler (låst etter testing):
- `OLLAMA_KEEP_ALIVE=-1` ✅ BEVIST og satt på systemd-nivå
- `OLLAMA_MAX_LOADED_MODELS=2` ✅ LÅST
- `num_ctx=2048`, `num_batch=256` ✅ LÅST
- `OLLAMA_NUM_THREADS` skal IKKE settes — Ollama autodetect er optimal
- `qwen2.5:7b` er ikke baseline-kandidat på gitea-cpu-vm
- CPU-optimalisering utføres direkte på gitea-cpu-vm
Testrekkefølge:
1. ✅ Kaldstart / keep_alive baseline — FERDIG 2026-07-21
2. ✅ Resident modell-strategi (1 vs 2 modeller) — FERDIG 2026-07-21
3. ✅ Parameter-matrise (num_ctx, num_batch, OLLAMA_NUM_THREADS) — FERDIG 2026-07-21
4. ⏳ Full Emma MCoT end-to-end
5. ⏳ Belastningstest med samtidig Gitea + agent-last
Exit-kriterium:
- ✅ keep_alive-strategi bevist effektiv
- ✅ resident modellvalg låst: MAX_LOADED_MODELS=2, begge Forever
- ✅ optimal parameterkombinasjon dokumentert
- ⏳ full Emma-loop latency akseptert
- ⏳ 2-timers belastningstest bestått uten OOM og uten swap
---
## FASE 6.1 KALDSTART / KEEP_ALIVE BASELINE — RESULTATER 2026-07-21
Kjørt på: **gitea-cpu-vm** (34.67.252.59) — ekte CPU, ingen GPU
| Test | Modell | load_s | tok/s | Status |
|---|---|---|---|---|
| 1.1 Ekte kaldstart | gemma3:4b | **117.69s** | 4.9 | ✅ |
| 1.2 Ekte kaldstart | qwen2.5:3b | **71.13s** | 6.4 | ✅ |
| 1.3 keep_alive=-1 load | gemma3:4b | 76.93s | 5.9 | ✅ |
| 1.4 UNTIL=Forever | gemma3:4b | Forever ✅ | — | ✅ |
| 1.5 Varme kall ×5 | gemma3:4b | ~1.0s load | ~5 | ✅ |
**Konklusjoner:** keep_alive=-1 eliminerer 117s kaldstart fra kall 2+. Varme kall ~2s/kall = 812s per Emma-turn.
---
## FASE 6.2 RESIDENT MODELL-STRATEGI — RESULTATER 2026-07-21
| Test | Konfigurasjon | Resultat | Status |
|---|---|---|---|
| 2.1 Begge uten MAX-begrensning | Default | Begge i RAM, Swap=0 | ✅ |
| 2.3 Bytte med MAX=1 | MAX_LOADED_MODELS=1 | gemma3 reload 9.31s / qwen 5.6s | ✅ |
| 2.4 Begge med MAX=2 | MAX=2 + KEEP_ALIVE=-1 | Begge Forever, 6.8 GB, Swap=0 | ✅ |
**✅ LÅST:** `OLLAMA_MAX_LOADED_MODELS=2` + `OLLAMA_KEEP_ALIVE=-1` i systemd.
Begrunnelse: MAX=1 gir 2054s ekstra latency per Emma-turn. MAX=2 gir 0s bytte-overhead, trygg RAM-margin.
---
## FASE 6.3 PARAMETER-MATRISE — RESULTATER 2026-07-21
Kjørt på: **gitea-cpu-vm** (34.67.252.59) — gemma3:4b, 3 kjøringer per rad, snitt tok/s
VCPU: 4
### num_ctx / num_batch
| Rad | num_ctx | num_batch | avg tok/s | Delta |
|---|---|---|---|---|
| 3.1 | 1024 | 256 | 4.9 | baseline |
| 3.2 | **2048** | **256** | **5.0** | +0.1 ✅ VINNER |
| 3.3 | 4096 | 256 | 4.3 | -0.7 ⚠️ |
| 3.4 | 2048 | 128 | 4.9 | -0.1 |
| 3.5 | 2048 | 512 | 4.8 | -0.2 |
### num_threads
| threads | tok/s | Delta |
|---|---|---|
| 2 | 4.9 | — |
| 3 | 4.9 | 0 |
| 4 | 4.8 | -0.1 |
### ✅ PARAMETERKONFIGURASJON LÅST
```
num_ctx = 2048 (default for Emma-turns)
num_batch = 256 (Ollama default, ikke nødvendig å sette eksplisitt)
OLLAMA_NUM_THREADS = ikke satt (Ollama autodetect er optimal på 4 vCPU)
```
**Konklusjoner:**
1. `num_ctx=2048` er beste balanse mellom kontekstlengde og ytelse
2. `num_ctx=4096` er -14% tregere — bruk kun eksplisitt ved lange samtaler
3. `num_batch` gjør ingen målbar forskjell på CPU — 256 er fin default
4. `OLLAMA_NUM_THREADS` gjør ingen målbar forskjell — skal ikke settes
5. Maskinens tak for gemma3:4b er stabilt **4.95.0 tok/s**
### Tilstand før Fase 6.4
```
NAME SIZE PROCESSOR CONTEXT UNTIL
gemma3:4b 2.8 GB 100% CPU 2048 Forever
qwen2.5:3b 2.2 GB 100% CPU 4096 Forever
Mem: 15Gi total | 6.7Gi used | 8.9Gi available | Swap: 0B
```
---
## ÅPNE PUNKTER SOM MÅ LØSES FØR BLUEPRINT
- `GITEA_URL` satt runtime via `gcloud run services update`**må også legges permanent inn i `opax-mcp.yaml` i repo og rebuildes**
- `git.vauco.no` er planlagt som permanent domene for Gitea — erstatter IP når DNS er oppe
- Gitea-commits er ikke GPG-signert — vurder om dette skal fikses
## FASTE SANNHETER (uendret)
- Gitea er source of truth
- Lokale modeller er hovedretning
- dev-snap/GPU-VM er nåværende verifikasjonsflate
- 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 — FASE 5 FERDIG
- ⏳ CPU-optimalisering verifisert på Gitea-VM — FASE 6 pågå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 neste |
| 2026-07-21 | FASE 6.1 | Kaldstart/keep_alive: gemma3=117s, qwen=71s, varme kall ~2s, keep_alive=-1 bevist effektiv |
| 2026-07-21 | FASE 6.2 | Resident strategi låst: MAX=2 + KEEP_ALIVE=-1 systemd, begge Forever, RAM OK |
| 2026-07-21 | FASE 6.3 | Parameter-matrise låst: num_ctx=2048, num_batch=256 (default), OLLAMA_NUM_THREADS ikke satt. Maskintak: 5.0 tok/s |