radar: mehrdeutigen Ablenker im Pruefstand entschaerft, Baseline-Cache kennt den Probenstand
Ampel / ampel (push) Failing after 21s
Ampel / ampel (push) Failing after 21s
Der Ablenker "system_speicher" passte zur Platz-Frage besser als die erwartete Antwort (das Live-Hirn waehlte ihn am 23.09.). Weil schon ein Vorteil fuer "bestanden" reicht, haette dieses Rauschen allein einen Kandidaten durchbringen koennen. Aendern sich die Proben, misst baseline() jetzt neu statt alte Werte zu vergleichen. Dazu: uebersprungene Radar-Eintraege zeigen kein "passt nicht" mehr. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
177c9a311c
commit
8d46adfd86
@@ -60,6 +60,9 @@ SERVER_LOG = os.path.join(tempfile.gettempdir(), "pruefstand-server.log")
|
||||
HERMES = os.path.expanduser("~/.local/bin/hermes")
|
||||
|
||||
CTX_STANDARD = 65536
|
||||
# Stand der Proben. Ändern sich Aufgaben oder Werkzeuge, ist eine gecachte Baseline nicht mehr
|
||||
# vergleichbar — baseline() misst dann neu. Bei jeder Änderung an den Proben hochzählen.
|
||||
PRUEFSTAND_VERSION = 2
|
||||
# Flags wie am 17.09. (der Kontext kommt je Kandidat dazu): voller GPU-Offload, Flash-Attention,
|
||||
# kein mmap (--load-mode none, das alte --no-mmap gibt es seit b10936 nicht mehr), ein Slot,
|
||||
# KV-Cache q8_0 wie im Betrieb.
|
||||
@@ -236,7 +239,7 @@ _ABLENKER = {
|
||||
"nerdquiz": ("NerdQuiz", ("frage_holen", "punkte")),
|
||||
"projekt": ("Projekte", ("status", "anlegen")),
|
||||
"modell": ("KI-Modelle", ("auflisten", "laden")),
|
||||
"system": ("Box-System", ("temperatur", "speicher", "prozesse")),
|
||||
"system": ("Box-System", ("temperatur", "arbeitsspeicher", "prozesse")), # nicht „speicher“: klang nach Platte
|
||||
"datei": ("Dateien", ("suchen", "kopieren", "verschieben")),
|
||||
"aufgabe": ("Aufgaben", ("anlegen", "erledigen", "auflisten")),
|
||||
"browser": ("Browser-Tabs", ("auflisten", "schliessen")),
|
||||
@@ -951,7 +954,8 @@ def baseline(rolle: str, cache_pfad: str, *, kennung: str, bild: bool = False, f
|
||||
Rückgabe {"kennung", "zeit", "werte"} oder None, wenn es weder Cache noch Messung gibt."""
|
||||
cache = _lies_json(cache_pfad)
|
||||
eintrag = cache.get(rolle) if isinstance(cache.get(rolle), dict) else None
|
||||
passend = eintrag if eintrag and eintrag.get("kennung") == kennung else None
|
||||
passend = (eintrag if eintrag and eintrag.get("kennung") == kennung
|
||||
and eintrag.get("version") == PRUEFSTAND_VERSION else None)
|
||||
if passend and time.time() - float(passend.get("zeit") or 0) < max_alter_tage * 86400:
|
||||
return passend
|
||||
protokoll(f" Baseline {rolle} wird neu gemessen ({modell or ALIAS[rolle]} über llama-swap)")
|
||||
@@ -962,7 +966,7 @@ def baseline(rolle: str, cache_pfad: str, *, kennung: str, bild: bool = False, f
|
||||
except Exception as e:
|
||||
protokoll(f" Baseline {rolle} nicht messbar: {e}")
|
||||
return passend # lieber einen Monat alt als gar nicht vergleichen
|
||||
neu = {"kennung": kennung, "zeit": time.time(), "werte": werte}
|
||||
neu = {"kennung": kennung, "version": PRUEFSTAND_VERSION, "zeit": time.time(), "werte": werte}
|
||||
cache[rolle] = neu
|
||||
_schreibe_json(cache_pfad, cache)
|
||||
return neu
|
||||
|
||||
Reference in New Issue
Block a user