Betrieb & Fallen¶
Fallen, die stillschweigend zuschlagen¶
Keine dieser Fallen erzeugt eine Fehlermeldung. Sie erzeugen falsche Ergebnisse, schlechtes Tempo oder tote Dienste — und sehen dabei gesund aus.
1. ollama rm kann llama-swap-Modelle zerstören.
Die Blobs von qwen3-coder:30b, qwen3:4b-instruct-2507-q4_K_M,
laguna-xs-2.1:q8_0 und granite4.1:8b werden von llama-swap als Dateien
gelesen. Vor jedem rm die Digests gegen config.yaml prüfen.
2. Multimodal: Bild VOR Text.
Im OpenAI-content-Array muss image_url vor dem text-Part stehen.
Andersherum echot german-ocr nur den Prompt zurück.
3. Leerer content bei HTTP 200 heißt: Thinking-Budget aufgebraucht.
Die Antwort steckt dann in reasoning_content. Entweder max_tokens erhöhen
oder das Modell mit --reasoning-budget 0 fahren (so bei cleanup).
4. Der Residenten-Preload darf nicht verschwinden.
Er hängt in hooks.on_startup.preload. Ohne ihn laden die Residenten lazy, und
der Sprachpfad ist nach jedem Neustart einen Kaltstart lang taub.
5. Die Grafikkarte ist card1, nicht card0.
Immer mit Platzhalter arbeiten:
6. amd-smi ist auf gfx1151 blind.
Für die GPU-Auslastung radeontop oder
/sys/class/drm/card1/device/gpu_busy_percent, für GTT
/sys/class/drm/card1/device/mem_info_gtt_used.
7. 1670 MHz „Idle-Takt" ist DPM-Nachlauf, kein Fehler. Echtes Idle (600 MHz) stellt sich rund 30 Sekunden nach Lastende ein.
8. Container schreiben als root.
/opt/ai/npu-models und Ähnliches gehören root. Vom Host beschriebene
Verzeichnisse vorher übereignen.
9. btrfs und Datenbanken.
chattr +C auf jedes Volume mit SQLite oder Postgres, bevor es befüllt
wird. Nachträglich wirkungslos.
10. Kernel und linux-firmware sind gepinnt.
Updates nur bewusst, mit Snapper-Snapshot davor — danach die komplette
Hardware-Verifikation
wiederholen.
Verifikation¶
# Backend
curl -s localhost:9292/health # llama-swap: OK
curl -s localhost:9292/v1/models | head -c 300 # Rollenliste
rocminfo | grep -i gfx # gfx1151
vulkaninfo --summary | grep deviceName
# Residenz (löst zugleich den Lazy-Load aus)
curl -s localhost:9292/v1/chat/completions -H 'Content-Type: application/json' \
-d '{"model":"voice-llamacpp","max_tokens":8,"messages":[{"role":"user","content":"OK?"}]}'
# Sprachpfad
docker ps --filter name=wyoming- # beide healthy?
# Infrastruktur
curl -s localhost:9100/metrics | grep -c '^aiserver_' # erwartet 6
curl -s localhost:3000/health # Open WebUI
systemctl list-timers borgmatic.timer # nächster Lauf 20:00
# Speicher
sudo dmesg | grep 'GTT memory ready' # erwartet 98304M
awk '{printf "%.1f GB\n", $1/1073741824}' /sys/class/drm/card1/device/mem_info_gtt_used
Referenzwerte¶
Gemessen in Testrunde 2 (T4/Z2, 31.07.2026). Weicht eine Messung deutlich ab, stimmt etwas nicht.
| Kennzahl | Wert |
|---|---|
| Residenz-Boot (Neustart → voice+embed bereit) | 2,6 s |
| voice idle / unter Doppellast | 0,32 s / 0,72 s |
| Sprachpfad End-to-End (Parakeet + voice-agent) | 634 ms |
| Brain (qwen3.6-MTP) | 89 t/s |
| Brain-Dauerlast 60 min | 83–84 t/s, kein Drift |
| Heavy-Swap kalt | 1,5–24 s je nach Modellgröße |
| Budget-Worst-Case (brain+cleanup+ocr parallel) | 94,9 / 96 GB, voice 0,76 s |
| Langkontext-Prefill 55k / 110k Tokens | 104 s / 289 s |
| Thermik-Plateau Dauerlast | ~72 °C bei ~112 W (Peak 75 °C / 119 W) |
| Idle-Takt (echt, nach 30 s Ruhe) | 600 MHz |
| Parakeet-ASR | WER 7,6 %, 0,12 s je Kommando |
Messwerkzeuge im aiserver-Repo: scripts/bench-t4.py,
scripts/voice-pipeline-bench.sh, scripts/thermal-watch.sh.
Offene Punkte¶
| Thema | Stand |
|---|---|
| Backup-Monitoring-Hook | Defekt seit 15.08.2026, Details |
| Traefik mit DNS-01-Wildcard | Wartet auf die Headscale-Umstellung (RFC-002). Das Docker-Netz proxy existiert bereits |
| Open WebUI auf dem NUC abschalten | Offen, sobald die hiesige Instanz vollständig übernommen hat |
| Sprachpfad in HA umstellen | Wyoming-Endpunkte zeigen noch auf den NUC |
| Kamera-Vision mit echten Frames | Noch nicht erprobt |
gemma4:e4b als Audio-Fallback |
Zu evaluieren, Ollama dafür temporär starten |
Historie¶
| Datum | Ereignis |
|---|---|
| 26.07.2026 | Basis-Setup: BIOS, Ubuntu 26.04, btrfs-Subvolumes, GTT auf 96 GB |
| 29.07.2026 | AI-Stack Phase A — llama-swap als zweites Backend neben Ollama |
| 30.–31.07.2026 | Testrunde 2: Turniere je Rolle, Migration auf llama-swap, Ollama gestoppt, 622 GB freigeräumt |
| 09.08.2026 | Infra-Konservierung: Borgmatic, node_exporter, Open WebUI |
| 14.08.2026 | Backup-Erstlauf auf beide Ziele erfolgreich |