Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
6.8 KiB
6.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: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_modelsvia MCP: GRØNN ✅
✅ FASE 2 – MCP peker korrekt til lokal modellsti — FERDIG
OLLAMA_BASE_URLpeker til Gitea-CPU-VM OllamaOSVAUCO_AGENT_URLfikset 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ÅSTnum_ctx=2048,num_batch=256✅ LÅSTOLLAMA_NUM_THREADSskal IKKE settes — Ollama autodetect er optimalqwen2.5:7ber ikke baseline-kandidat på gitea-cpu-vm- CPU-optimalisering utføres direkte på gitea-cpu-vm
Testrekkefølge:
- ✅ Kaldstart / keep_alive baseline — FERDIG 2026-07-21
- ✅ Resident modell-strategi (1 vs 2 modeller) — FERDIG 2026-07-21
- ✅ Parameter-matrise (num_ctx, num_batch, OLLAMA_NUM_THREADS) — FERDIG 2026-07-21
- ⏳ Full Emma MCoT end-to-end
- ⏳ 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 = 8–12s 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 20–54s 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:
num_ctx=2048er beste balanse mellom kontekstlengde og ytelsenum_ctx=4096er -14% tregere — bruk kun eksplisitt ved lange samtalernum_batchgjør ingen målbar forskjell på CPU — 256 er fin defaultOLLAMA_NUM_THREADSgjør ingen målbar forskjell — skal ikke settes- Maskinens tak for gemma3:4b er stabilt 4.9–5.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_URLsatt runtime viagcloud run services update— må også legges permanent inn iopax-mcp.yamli repo og rebuildesgit.vauco.noer 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_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 — 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 |