diff --git a/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md b/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md index 4e834a2..5e6408c 100644 --- a/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md +++ b/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md @@ -7,64 +7,25 @@ Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal L --- -## FREMDRIFT – OPPDATERT 2026-07-21 23:16 CEST +## FREMDRIFT – OPPDATERT 2026-07-21 23:45 CEST ### ✅ FASE 0–5 — FERDIG ### ✅ FASE 6 – CPU-optimalisering — FERDIG -### ✅ FASE 6-TILLEGG – Boot-warming — FERDIG 2026-07-21 23:16 CEST +### ✅ FASE 6-TILLEGG – Boot-warming — FERDIG +### ✅ DNS – NS-bytte utført — FERDIG 2026-07-21 23:44 CEST --- ## LÅST SYSTEMKONFIGURASJON – GITEA-CPU-VM (komplett) -### Systemd-dropins: `/etc/systemd/system/ollama.service.d/` - +### Systemd-dropins ``` -override.conf — OLLAMA_HOST=0.0.0.0:11434 (eksisterende, ikke rørt) +override.conf — OLLAMA_HOST=0.0.0.0:11434 max-models.conf — MAX_LOADED_MODELS=2 + KEEP_ALIVE=-1 warmup.conf — ExecStartPost=/usr/local/bin/ollama-warmup.sh ``` -**max-models.conf:** -```ini -[Service] -Environment="OLLAMA_MAX_LOADED_MODELS=2" -Environment="OLLAMA_KEEP_ALIVE=-1" -``` - -**warmup.conf:** -```ini -[Service] -ExecStartPost=/usr/local/bin/ollama-warmup.sh -``` - -**`/usr/local/bin/ollama-warmup.sh`:** -```bash -#!/bin/bash -sleep 10 -curl -s http://localhost:11434/api/generate \ - -H 'Content-Type: application/json' \ - -d '{"model":"gemma3:4b","prompt":"warmup","stream":false,"keep_alive":-1,"options":{"num_predict":1}}' \ - > /dev/null -curl -s http://localhost:11434/api/generate \ - -H 'Content-Type: application/json' \ - -d '{"model":"qwen2.5:3b","prompt":"warmup","stream":false,"keep_alive":-1,"options":{"num_predict":1}}' \ - > /dev/null -``` - -### Verifisert etter restart 2026-07-21 21:11 UTC - -``` -NAME SIZE PROCESSOR CONTEXT UNTIL -gemma3:4b 2.9 GB 100% CPU 4096 Forever -qwen2.5:3b 2.2 GB 100% CPU 4096 Forever -Mem: 15Gi | 6.8Gi used | 8.9Gi available | Swap: 0B -``` - -Merk: `warmup.conf` bruker eget skript — ikke inline JSON i ExecStartPost. Direkte inline førte til 400-feil p.g.a. systemd-escaping av anførselstegn. - ### Operative parametere for Emma-kall - ``` num_ctx = 2048 num_batch = 256 (Ollama default) @@ -72,67 +33,62 @@ OLLAMA_NUM_THREADS = ikke satt (autodetect) ``` ### Ytelsesbudsjett per Emma-turn (varm) - ``` 3-kall turn: ~23.5s 5-kall turn: ~42.5s -Boot-penalty: ~0s etter restart (warmup-skript laster begge modeller automatisk) +Boot-penalty: ~0s (warmup-skript) Tok/s: 4.9–5.0 (gemma3:4b) ``` --- -## FASE 6 – KOMPLETT RESULTATOVERSIKT +## DNS – FULLFØRT 2026-07-21 -### 6.1 Kaldstart / keep_alive baseline -| Modell | Kaldstart | Varm | Tok/s | +### NS-bytte +Proisp nameservere byttet fra `ns01/ns02.proisp.no` til Google Cloud DNS: +``` +ns-cloud-a1.googledomains.com +ns-cloud-a2.googledomains.com +ns-cloud-a3.googledomains.com +ns-cloud-a4.googledomains.com +``` +Byttet gjort: **2026-07-21 23:44 CEST** +Propagringstid `.no`: opp til 24 timer + +### Cloud DNS-sone `vaucono` — komplett tilstand + +| Record | Type | Verdi | Status | |---|---|---|---| -| gemma3:4b | 117.69s | ~1.0s | 4.9–5.0 | -| qwen2.5:3b | 71.13s | ~1.0s | 6.4 | +| `vauco.no.` | A | `34.98.77.173` (LB) | ✅ | +| `www.vauco.no.` | A | `34.98.77.173` (LB) | ✅ | +| `opax.vauco.no.` | A | `34.98.77.173` (LB) | ✅ | +| `git.vauco.no.` | A | `34.67.252.59` (gitea-cpu-vm) | ✅ | +| `vauco.no.` | MX | Alle 5 Google MX | ✅ | +| `vauco.no.` | TXT | SPF `v=spf1 include:_spf.google.com ~all` | ✅ | +| `google._domainkey.vauco.no.` | TXT | DKIM-nøkkel | ✅ | +| `_dmarc.vauco.no.` | TXT | DMARC quarantine | ✅ | -### 6.2 Resident modell-strategi -Låst: MAX=2 + KEEP_ALIVE=-1 systemd. MAX=1 gir 20–54s ekstra per Emma-turn. +### E-post +Alle 4 lag (MX, SPF, DKIM, DMARC) var identiske mellom Proisp og Cloud DNS før bytte. `chris.christiansen@vauco.no` er upPåvirket. -### 6.3 Parameter-matrise -| num_ctx | num_batch | tok/s | Delta | -|---|---|---|---| -| 1024 | 256 | 4.9 | baseline | -| **2048** | **256** | **5.0** | **+0.1 ✅** | -| 4096 | 256 | 4.3 | -14% ⚠️ | - -Threads: ingen målbar forskjell på 4 vCPU — ikke satt. - -### 6.4 Emma MCoT end-to-end -| Scenario | Tid | -|---|---| -| Første turn etter boot (uten warmup) | 102.34s | -| **Varm turn (5 kall)** | **42.51s ✅** | - -### 6.5 Belastningstest (20 turns × 3 kall) -| Måling | Verdi | -|---|---| -| Snitt per turn | 23.5s | -| Min/max | 23.2s / 25.2s | -| Swap | 0 MB hele testen | -| OOM | Ingen | -| RAM-vekst | +293 MB (OS page cache) | - -### 6-tillegg Boot-warming -- Rotproblem: `ExecStartPost` med inline JSON → systemd-escaping → 400-feil -- Løsning: dedikert skript `/usr/local/bin/ollama-warmup.sh` -- Resultat: begge modeller Forever innen ~3 min etter `systemctl restart ollama` +### Verifisering etter propagering +```bash +# Når git.vauco.no → 34.67.252.59 = propagert +curl -s "https://dns.google/resolve?name=git.vauco.no&type=A" \ + | python3 -c "import json,sys; d=json.load(sys.stdin); ans=d.get('Answer'); print(ans[0]['data'] if ans else 'IKKE PROPAGERT')" +``` --- -## Å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 +## ÅPNE PUNKTER SOM MÅ LØSES +1. `GITEA_URL` satt runtime — **må legges permanent inn i `opax-mcp.yaml` og rebuildes** ← NESTE +2. `git.vauco.no` propagering verifiseres — sjekk i morgen tidlig 3. Gitea-commits ikke GPG-signert — vurder ## FASTE SANNHETER (uendret) - Gitea er source of truth - Lokale modeller er hovedretning -- Gitea-VM (34.67.252.59) er planlagt permanent målmaskin +- Gitea-VM (34.67.252.59) er permanent målmaskin - Denne handoffen overstyrer alt annet ## DEFINITION OF DONE @@ -144,18 +100,16 @@ Threads: ingen målbar forskjell på 4 vCPU — ikke satt. - ⚠️ 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 — FERDIG -- ✅ Boot-warming verifisert — begge modeller Forever etter restart +- ✅ CPU-optimalisering verifisert på Gitea-VM +- ✅ Boot-warming verifisert +- ✅ DNS migrert til Google Cloud DNS — NS-bytte utført +- ⏳ `git.vauco.no` live — venter på propagering ## OPPDATERINGSLOGG | Dato | Fase | Handling | |---|---|---| -| 2026-07-21 | FASE 4 | Full smoke test grønn, alle 8 tools OK | +| 2026-07-21 | FASE 4 | Full smoke test grønn | | 2026-07-21 | FASE 5 | Blueprint frosset | -| 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 | -| 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) | -| 2026-07-21 | FASE 6.5 | Belastningstest: 20 turns, 23.5s/turn, Swap=0, ingen OOM | -| 2026-07-21 | FASE 6 | FASE 6 LUKKET — alle 5 exit-kriterier bestått | -| 2026-07-21 | Boot-warming | ollama-warmup.sh verifisert: begge modeller Forever etter restart, Swap=0 | +| 2026-07-21 | FASE 6.1–6.5 | CPU-optimalisering fullført | +| 2026-07-21 | Boot-warming | ollama-warmup.sh verifisert | +| 2026-07-21 | DNS | Cloud DNS-sone komplett verifisert, NS-bytte hos Proisp utført 23:44 CEST |