Fix: Brain-Budget nutzt echte Dateigroesse fuer Footprint (statt Namens-Schaetzung)
_foot() rechnet Gewichte aus size_bytes (genau) + kalibrierten KV-Anteil; Params werden aus der Dateigroesse abgeleitet, wenn der Name keine Groesse hergibt (z.B. Qwen3-Coder-Next, 46GB -> ~84B). Damit ist das groesste on-demand-Modell im Budget realistisch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -93,7 +93,7 @@ def hermes_brain_info() -> dict:
|
|||||||
# größte on-demand-Modell daneben lädt? (Brain muss immer resident sein.)
|
# größte on-demand-Modell daneben lädt? (Brain muss immer resident sein.)
|
||||||
budget = None
|
budget = None
|
||||||
try:
|
try:
|
||||||
from services.fit import estimate_memory_gb
|
from services.fit import QUANT_BYTES_PER_PARAM, estimate_memory_gb
|
||||||
groups = llamaswap.list_groups()
|
groups = llamaswap.list_groups()
|
||||||
persist = set()
|
persist = set()
|
||||||
for g in groups.values():
|
for g in groups.values():
|
||||||
@@ -101,9 +101,22 @@ def hermes_brain_info() -> dict:
|
|||||||
persist.update(g.get("members") or [])
|
persist.update(g.get("members") or [])
|
||||||
|
|
||||||
def _foot(m: dict) -> float:
|
def _foot(m: dict) -> float:
|
||||||
|
"""Loaded-Footprint: echte Dateigröße als Gewichte (genauer als Namens-
|
||||||
|
Schätzung) + kalibrierter KV-Anteil. Params aus Größe ableiten, falls der
|
||||||
|
Name keine Größe hergibt (z.B. 'Qwen3-Coder-Next')."""
|
||||||
caps = m.get("capabilities") or {}
|
caps = m.get("capabilities") or {}
|
||||||
return estimate_memory_gb(float(caps.get("params_b") or 7.0),
|
quant = m.get("quant") or "Q4_K_M"
|
||||||
m.get("quant") or "Q4_K_M", int(m.get("ctx") or 32768))
|
ctx = int(m.get("ctx") or 32768)
|
||||||
|
bpp = QUANT_BYTES_PER_PARAM.get(quant.upper(), 0.55)
|
||||||
|
sz = m.get("size_bytes")
|
||||||
|
if sz:
|
||||||
|
weights = sz / (1024 ** 3)
|
||||||
|
pb = float(caps.get("params_b") or 0) or (weights / bpp)
|
||||||
|
else:
|
||||||
|
pb = float(caps.get("params_b") or 7.0)
|
||||||
|
weights = pb * bpp
|
||||||
|
kv = estimate_memory_gb(pb, quant, ctx) - pb * bpp
|
||||||
|
return weights + max(kv, 0.0)
|
||||||
|
|
||||||
cur_name = cur["name"] if cur else None
|
cur_name = cur["name"] if cur else None
|
||||||
brain_ctx = int((cur.get("ctx") if cur else None) or 32768)
|
brain_ctx = int((cur.get("ctx") if cur else None) or 32768)
|
||||||
|
|||||||
Reference in New Issue
Block a user