Record verified router rollout and execute actual smoke probes
This commit is contained in:
@@ -12,6 +12,9 @@ Athena ist die lokale Inferenzmaschine. Der Docker-Stack stellt
|
|||||||
Qwen über eine kleine OpenAI-kompatible Router-API bereit und übernimmt lokale
|
Qwen über eine kleine OpenAI-kompatible Router-API bereit und übernimmt lokale
|
||||||
Bild- und Sprachausgabe. **Hermes, OpenClaw und die Fach-MCPs laufen auf Unraid.**
|
Bild- und Sprachausgabe. **Hermes, OpenClaw und die Fach-MCPs laufen auf Unraid.**
|
||||||
|
|
||||||
|
Die [Router-Korrekturen vom 20. September](docs/ROUTER_AUDIT_20260920.md)
|
||||||
|
dokumentieren den ausgerollten Stand, reduzierte Statuslatenzen und Tests.
|
||||||
|
|
||||||
## Aktueller Aufbau
|
## Aktueller Aufbau
|
||||||
|
|
||||||
### Athena
|
### Athena
|
||||||
|
|||||||
+13
-10
@@ -62,16 +62,19 @@ Spezialworkern bedeutet nicht automatisch einen zu entfernenden Testrest.
|
|||||||
|
|
||||||
## Git und reproduzierbarer Stand
|
## Git und reproduzierbarer Stand
|
||||||
|
|
||||||
Der laufende Stack liegt unter `/opt/mike-ai/stack`. Sein Git-HEAD ist weiterhin
|
Der laufende Stack liegt unter `/opt/mike-ai/stack`. Beim Router-Audit am
|
||||||
`276df0e` und damit älter als Doggo; `compose.yaml`, Dashboard und
|
20. September wurde er auf den veröffentlichten Quellstand synchronisiert.
|
||||||
`services/athena-realtime-voice/` liegen dort als Live-Änderungen. Die am
|
Die Funktionsänderungen sind in Commit `6071b1a` enthalten; anschließende
|
||||||
20. September geprüften Hashes von Compose, Dashboard, Dashboard-Test und
|
Dokumentationskorrekturen ändern keine Container. Die früheren Live-Anpassungen
|
||||||
Voice-Bridge stimmen bytegenau mit diesem veröffentlichten Repository-Stand
|
an Compose, Dashboard und Voice-Bridge wurden bytegenau verglichen und in einem
|
||||||
überein. Ein frischer Clone liefert damit den Quellcode
|
lokalen Sicherungscommit erhalten. Controller und Router wurden gezielt ersetzt;
|
||||||
und die Compose-Definitionen; er liefert weder lokale Secrets noch
|
Medium und Gateway behielten ihre ursprünglichen Startzeiten.
|
||||||
Modellgewichte oder persistente Nutzerdaten. Vor einem Deploy ist die
|
Messwerte, Prüfungen und Rückfallstand stehen im
|
||||||
Live-Konfiguration zu sichern und mit dem Checkout abzugleichen, statt den
|
[Router-Audit](ROUTER_AUDIT_20260920.md).
|
||||||
laufenden Host blind zurückzusetzen.
|
|
||||||
|
Ein frischer Clone enthält Quellcode und Compose-Definitionen, aber keine
|
||||||
|
lokalen Secrets, Modellgewichte oder persistenten Nutzerdaten. Lokale
|
||||||
|
Konfiguration vor jedem Deploy sichern; keinen laufenden Host blind zurücksetzen.
|
||||||
|
|
||||||
Die Applio-UI hat einen eigenen Checkout `/opt/mike-ai/Mikes-Applio-UI`.
|
Die Applio-UI hat einen eigenen Checkout `/opt/mike-ai/Mikes-Applio-UI`.
|
||||||
Sein Git-HEAD `3a06139` ist älter als Doggo `eadbc15`. Die laufende
|
Sein Git-HEAD `3a06139` ist älter als Doggo `eadbc15`. Die laufende
|
||||||
|
|||||||
+3
-2
@@ -57,8 +57,9 @@ Die geprüften Quell- und Compose-Dateien liegen im Git; ein frischer Clone
|
|||||||
enthält jedoch keine Secrets, Modellgewichte, Trainingsdaten oder sonstigen
|
enthält jedoch keine Secrets, Modellgewichte, Trainingsdaten oder sonstigen
|
||||||
persistenten Nutzerdaten. Die lokalen `/etc/mike-ai`-Werte und die
|
persistenten Nutzerdaten. Die lokalen `/etc/mike-ai`-Werte und die
|
||||||
Backup-Archive bleiben daher für eine vollständige Wiederherstellung nötig.
|
Backup-Archive bleiben daher für eine vollständige Wiederherstellung nötig.
|
||||||
Die alten Live-Checkouts zeigen zudem ältere Commits als Doggo, obwohl die
|
Der Athena-Stack wurde beim Router-Audit am 20. September mit dem
|
||||||
geprüften Quelldateien inhaltlich übereinstimmen; siehe [Live-Stand](LIVE_STATE.md).
|
veröffentlichten Git-Stand synchronisiert; der separate Applio-Checkout bleibt
|
||||||
|
unverändert. Siehe [Live-Stand](LIVE_STATE.md).
|
||||||
Vor einem Restore sind
|
Vor einem Restore sind
|
||||||
Archivinhalt, Aktualität und Kompatibilität der zugehörigen Restore-Skripte
|
Archivinhalt, Aktualität und Kompatibilität der zugehörigen Restore-Skripte
|
||||||
zu prüfen. Bestehende lokale Änderungen niemals blind überschreiben.
|
zu prüfen. Bestehende lokale Änderungen niemals blind überschreiben.
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
# Router-Korrekturen vom 20. September 2026
|
||||||
|
|
||||||
|
Die Funktionsänderungen aus Commit `6071b1a` wurden auf Athena ausgerollt.
|
||||||
|
Nur Profile Controller und Router wurden neu erstellt. Medium, Qwen3-TTS,
|
||||||
|
Gateway, Netzwerk, Kernel und NVIDIA-Treiber blieben unverändert.
|
||||||
|
|
||||||
|
## Änderungen
|
||||||
|
|
||||||
|
- Die Modusanzeige liest einen gemeinsamen Controller-Snapshot statt 16
|
||||||
|
identischer HTTP-Abfragen. Der Controller liest die Containerliste einmal
|
||||||
|
statt separat für alle acht Spezialdienste. Eine erstmalige Video-UI-Abfrage
|
||||||
|
kann zusätzliche Docker-Exec-Aufrufe erfordern; deren Fehler sind isoliert.
|
||||||
|
- `/profiles/status` liefert den aktiven Textprofilnamen unabhängig von den
|
||||||
|
Spezialworkern. Fehlende optionale Container erscheinen als `missing` und in
|
||||||
|
`worker_errors`, ohne den gesamten Status auf HTTP 503 zu setzen.
|
||||||
|
- Chat-Completions und andere profilbezogene Requests begrenzen die Wartezeit
|
||||||
|
auf den GPU-Koordinator mit `CHAT_WAIT_TIMEOUT` (Standard 300 Sekunden).
|
||||||
|
Bei Überschreitung folgt HTTP 503 mit `model_wait_timeout`. Das Zeitlimit
|
||||||
|
für einen anschließend gestarteten Profilwechsel bleibt `SWITCH_TIMEOUT`;
|
||||||
|
es handelt sich nicht um ein Gesamtzeitlimit für die Generierung.
|
||||||
|
- Der Chat-Pfad verwendet die bereits geprüfte Readiness-Antwort der Profilwahl
|
||||||
|
weiter. Bildvalidierung läuft vor dem GPU-Lock. Ultra lehnt Bilder vor einem
|
||||||
|
Profilwechsel mit HTTP 400 ab und meldet im nativen Katalog nur Texteingaben.
|
||||||
|
- Die Profilmatrix generiert nun auch die Vision-Fähigkeit des Routerregisters.
|
||||||
|
- Bereits laufende TTS-Container werden nicht erneut gestartet. Fehlende
|
||||||
|
Profilcontainer werden vor dem Stoppen anderer Dienste erkannt.
|
||||||
|
- Startup-Recovery akzeptiert denselben geprüften kleinen MTP-Kontextaufschlag
|
||||||
|
wie normale Profilwechsel und vermeidet damit unnötige Wiederherstellung.
|
||||||
|
- `manage.sh validate` und `manage.sh deploy` führen die schnellen, GPU-freien
|
||||||
|
Releaseprüfungen aus. `dev/check.sh --integration` ergänzt lokale Mock-Tests.
|
||||||
|
- Der Smoke-Test übergibt sein Python-Prüfprogramm jetzt mit `docker exec -i`
|
||||||
|
tatsächlich an den Container; ohne `-i` wurde der Here-Document-Inhalt nicht
|
||||||
|
ausgeführt. Die überholte Netzwerk-Testannahme wurde auf Dashboard und
|
||||||
|
Portainer begrenzt; der bestehende WebRTC-Namespace bleibt erhalten.
|
||||||
|
|
||||||
|
## Messung auf Athena
|
||||||
|
|
||||||
|
Je drei aufeinanderfolgende lesende Abfragen im Routercontainer, vor und nach
|
||||||
|
dem Deployment, keine parallele Chat-Anfrage während der Statusmessung:
|
||||||
|
|
||||||
|
| Endpunkt | Vorher (ms) | Nachher (ms) |
|
||||||
|
|---|---|---|
|
||||||
|
| `/status` | 708,97 / 799,55 / 742,91 | 52,02 / 52,47 / 52,70 |
|
||||||
|
| `/ready` | 42,67 / 40,80 / 42,71 | 10,62 / 12,75 / 9,76 |
|
||||||
|
|
||||||
|
Der Median von `/status` sank um rund 93 Prozent (Faktor 14,2).
|
||||||
|
Das belegt weniger Verwaltungsaufwand; es ist kein Benchmark für die
|
||||||
|
Token-Generierung oder die Leistung der GPUs.
|
||||||
|
|
||||||
|
## Prüfung
|
||||||
|
|
||||||
|
- 86 Python-Unit-Tests lokal erfolgreich, außerdem auf Athena erfolgreich.
|
||||||
|
- 68 lokale Integrationsprüfungen mit Mock-Modell-, Bild- und Sprachservern
|
||||||
|
erfolgreich, einschließlich Streaming und konkurrierender Profilanfragen.
|
||||||
|
- Profilmatrix und Compose-Konfiguration geprüft.
|
||||||
|
- Nach dem Deployment: Router und Controller gesund, `/health` und `/ready`
|
||||||
|
erfolgreich, keine Workerfehler, korrektes Ultra-Modellangebot.
|
||||||
|
- Ein echter Chat im bereits geladenen Medium-Profil antwortete mit `OK`
|
||||||
|
(zwei Ausgabetokens bei einem Limit von acht).
|
||||||
|
- Medium läuft weiter mit seinem Startzeitpunkt vom 19. September,
|
||||||
|
19:41:46 UTC; Gateway unverändert seit 17. September, 09:05:07 UTC.
|
||||||
|
- Im geprüften Kerneljournal ab 20. September, 19:00 Uhr Ortszeit keine neuen
|
||||||
|
Kernel-Panic-, OOM-Kill- oder NVIDIA-Xid-Meldungen.
|
||||||
|
|
||||||
|
Keine GPU-Stresstests, Profilwechsel-Benchmarks, Treiberänderungen oder
|
||||||
|
vollständige Wiederherstellung wurden ausgeführt. Bildmodell-Haltezeiten,
|
||||||
|
zusätzliche Parallelität und größere GPU-Speicherbudgets wurden nicht verändert.
|
||||||
|
|
||||||
|
## Rückfall und Git-Stand
|
||||||
|
|
||||||
|
Vorherige Live-Anpassungen wurden bytegenau mit dem veröffentlichten Quellstand
|
||||||
|
verglichen und in `safety/pre-router-audit-20260920` lokal gesichert. Der
|
||||||
|
kanonische Checkout `/opt/mike-ai/stack` wurde auf den veröffentlichten Commit
|
||||||
|
umgestellt; die frühere Abweichung von Live-Dateien und Git-HEAD ist damit für
|
||||||
|
diesen Checkout behoben. Der separate Applio-UI-Checkout wurde nicht verändert.
|
||||||
|
|
||||||
|
Unter `/opt/mike-ai/safety/router-audit-20260920` liegen die geschützte
|
||||||
|
Quell-/Konfigurationssicherung, Image-IDs und das begrenzte Deploymentskript.
|
||||||
|
Die alten Router-/Controller-Images haben zusätzliche Rollback-Tags. Diese
|
||||||
|
Sicherung auf der Systemplatte ersetzt kein externes Backup.
|
||||||
|
|
||||||
|
## Noch offene Betriebsfragen
|
||||||
|
|
||||||
|
- Die externe Restic-Konfiguration fehlt weiterhin. Ziel und Zugang müssen
|
||||||
|
festgelegt werden; ein aktiver Timer allein ist kein funktionierendes Backup.
|
||||||
|
- `/data` war zu 93 Prozent belegt (rund 63 GiB verfügbar). Es wurden keine
|
||||||
|
Modelle oder Nutzerdaten gelöscht. Zusätzliche Modellkopien und größere
|
||||||
|
Benchmarks sollten erst nach einer gezielten Speicherprüfung erfolgen.
|
||||||
|
- Für weitere Inferenzoptimierung sind repräsentative Messungen von
|
||||||
|
Modellladezeiten, Cache-Treffern und Zeit bis zum ersten Token nötig.
|
||||||
|
Die bewährten GPU-Parameter blieben aus Gründen der Fernwartbarkeit erhalten.
|
||||||
+1
-1
@@ -67,7 +67,7 @@ for legacy in \
|
|||||||
done
|
done
|
||||||
pass "OpenWebUI, alte Hermes-Dienste und migrierte MCPs sind entfernt"
|
pass "OpenWebUI, alte Hermes-Dienste und migrierte MCPs sind entfernt"
|
||||||
|
|
||||||
docker exec mike-ai-router python - <<'PY' >/dev/null
|
docker exec -i mike-ai-router python - <<'PY' >/dev/null
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|||||||
Reference in New Issue
Block a user