94 lines
5.1 KiB
Markdown
94 lines
5.1 KiB
Markdown
# Lokale Inferenz begrenzen
|
|
|
|
Die Workstation verwendet `hermes-local` als stabilen API-Modellnamen. Das
|
|
Routineprofil lädt Qwen3.5-9B IQ4_XS (Unsloth-Revision
|
|
`3885219b6810b007914f3a7950a8d1b469d598a5`), das große Profil weiterhin das
|
|
vorhandene Qwen3.8-27B. Die tatsächliche Auswahl steht in
|
|
`~/.config/hermes-stack-maintenance/llama.env`.
|
|
|
|
`hermes-stack-model routine`, `fallback` bzw. `large` schaltet explizit um
|
|
und beendet dabei laufende Gateway-Anfragen. Beide Dateien bleiben erhalten.
|
|
Es wird nur ein Hauptmodell gleichzeitig geladen. Die lokalen profilspezifischen
|
|
Konfigurationen `llama-routine.env` und `llama-large.env` enthalten absolute
|
|
Modellpfade. `scripts/prepare-workstation.py` prüft bzw. lädt die fest versionierten
|
|
Modelldateien und erzeugt fehlende Profile. Die vollständige Neuinstallation ist
|
|
in [NEW_WORKSTATION.md](NEW_WORKSTATION.md) beschrieben. Der normale Installer
|
|
allein lädt keine Gewichte und erzeugt diese Profile nicht.
|
|
|
|
Die alten Aliasse `qwen38-27b-local` und `qwen36-27b-local` bleiben als
|
|
Kompatibilitätsnamen für bestehende Sitzungen erreichbar. Sie bezeichnen dann
|
|
ebenfalls das aktiv ausgewählte Modell; die tatsächliche Modelldatei zeigt
|
|
`/props.model_path`. Neue Sitzungen und entbundene Cronjobs verwenden `hermes-local`.
|
|
|
|
## Kontextgröße und Kompression
|
|
|
|
Das Routineprofil verwendet `--ctx-size 65536`, das bisherige 4B-Profil
|
|
(`fallback`) und das große Profil jeweils 65536. Der Modellschalter setzt
|
|
`model.context_length` und `compression.threshold_tokens` zusammen mit dem
|
|
Modell: 65536/24000 für alle drei Profile. Er sichert
|
|
beide Konfigurationen und stellt bei einem Wechsel-Fehler beide wieder her.
|
|
Legacy-Profile ohne `LLAMA_CONTEXT_TOKENS` werden als 64K behandelt; eigene
|
|
Profile müssen diese Metadaten passend zu `--ctx-size` setzen.
|
|
|
|
Die CPU-Kompression bleibt bei `threshold: 0.5` und der absoluten Schwelle
|
|
von 24.000 Tokens. `target_ratio: 0.2`,
|
|
Schutz der ersten drei und letzten zehn Nachrichten sowie die bestehenden
|
|
Zeitbudgets bleiben erhalten. Die Schwelle ist ein Auslöser, keine harte
|
|
Obergrenze für einzelne Nachrichten oder Werkzeugergebnisse.
|
|
|
|
Für eine bestehende Installation genügt nach Abschluss laufender Aufträge:
|
|
|
|
```bash
|
|
hermes-stack-model routine # 9B, 64K
|
|
hermes-stack-model fallback # 4B, 64K inklusive Kompressionsschwelle
|
|
```
|
|
|
|
Der Modellschalter startet Hauptmodell und Gateway kontrolliert neu. Bereits
|
|
laufende Anfragen werden beendet; CPU-Kompression läuft unverändert weiter.
|
|
Die aktuellen Messungen und der Rückweg stehen in [QWEN9B_TRIAL.md](QWEN9B_TRIAL.md).
|
|
|
|
## Drei Schutzebenen
|
|
|
|
- Der Runner setzt `--n-predict 2048` als Serverstandard. Das ist kein harter
|
|
Schutz gegen abweichende Clientparameter.
|
|
- In Hermes bekommt der lokale Custom-Provider `extra_body.max_tokens: 2048`,
|
|
`t_max_predict_ms: 540000` und ein Request-Timeout von 600 Sekunden. Der native
|
|
Generierungszeitgeber von llama.cpp prüft nur bei Zeilenumbrüchen und ersetzt
|
|
deshalb keine unabhängige Überwachung. `agent.run_budget_seconds: 1800` begrenzt
|
|
einen ganzen Auftrag einschließlich mehrerer Modellaufrufe und Wiederholungen.
|
|
- `hermes-stack-llama-watchdog.timer` prüft alle 15 Sekunden `/slots`. Bleibt
|
|
dieselbe Anfrage 600 Sekunden beobachtet aktiv oder überschreitet sie 2048
|
|
Tokens, startet die Überwachung den Hauptmodellserver neu. Dieses letzte
|
|
Auffangnetz hat eine Verzögerung von bis zu einem Prüfintervall nach erstmaliger
|
|
Beobachtung. Die Tokenzahl kann zwischen zwei Prüfungen überschritten werden.
|
|
|
|
Der Watchdog startet keine absichtlich gestoppten Dienste. Einzelne fehlgeschlagene
|
|
Proben führen nicht zum Neustart; erst 600 Sekunden zusammenhängende Fehler bei
|
|
demselben aktiven Server. Wartung, Modellwechsel und Updater verwenden dieselbe
|
|
Sperre. Neustarts haben mindestens 600 Sekunden Abstand. Ein Bootwechsel setzt
|
|
monotone Zeitstempel zurück. Der Status speichert keine Prompts oder Antworten;
|
|
Diagnosen stehen ausschließlich im lokalen Journal, ohne Chatbenachrichtigung.
|
|
|
|
Die Grenzen stehen in `config.env` (Watchdog), `llama.env` (Serverstandard) und
|
|
`~/.hermes/config.yaml` (Hermes). Bei Änderungen diese Werte gemeinsam pflegen.
|
|
Grenzen gelten pro Hauptmodell; das CPU-Kompressionsmodell bleibt getrennt.
|
|
|
|
## Prüfung und Rücknahme
|
|
|
|
```
|
|
systemctl --user status hermes-stack-llama-watchdog.timer
|
|
journalctl --user -u hermes-stack-llama-watchdog.service
|
|
cat ~/.local/state/hermes-stack-maintenance/llama-watchdog.json
|
|
```
|
|
|
|
Die Bereitstellung sichert vorherige Konfigurationen unter
|
|
`~/.local/state/hermes-stack-maintenance/inference-limits-*`. Ein Rückwechsel
|
|
auf `large` behält die Schutzmaßnahmen bei. Zum vollständigen Rückbau Timer
|
|
deaktivieren, die gesicherten Konfigurationen wiederherstellen und Modellserver
|
|
sowie Gateway neu starten. Cronjob-Modellbindungen sind über `hermes cron edit
|
|
JOB_ID --model MODELL --provider custom` wiederherstellbar.
|
|
|
|
Quellen: [llama.cpp Serverparameter](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md),
|
|
[Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B),
|
|
[verwendete GGUF-Dateien](https://huggingface.co/unsloth/Qwen3.5-9B-GGUF/tree/3885219b6810b007914f3a7950a8d1b469d598a5).
|