d2ab662146
Nutzer-Fund (Screenshots 03.07.): drei UI-Diskrepanzen im Modell-Manager. 1) Augen (VL-8B) hatten ttl 300 + fehlten im Warmup — standen also entgegen dem UI-Versprechen NICHT immer bereit. Jetzt ttl 0 (Box live + Snapshot) und Warmup-Default "fast vision". 2) Warn-Text beschrieb das alte Verdraengungs-Verhalten (seit persistent-Fix falsch) — jetzt: Set bleibt geladen, bei Ueberlauf scheitert das grosse Modell. 3) "Reserviert" als Vorsichts-Schaetzung/Obergrenze gekennzeichnet (68,8 GB Schaetzer vs. 25 GB real — Schaetzer-Umbau ist eigener Faden). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.8 KiB
Bash
42 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# Lädt das warme "brains"-Set nach einem llama-swap-(Re)Start vor, damit die ERSTE
|
|
# Anfrage nicht kalt ist (llama-swap lädt sonst lazy bei Bedarf).
|
|
# Eingehängt als ExecStartPost=-/usr/local/bin/llama-swap-warmup.sh in llama-swap.
|
|
#
|
|
# `fast` = das Agent-Hirn (Qwen3.6-35B-A3B), `vision` = die Augen (Qwen3-VL-8B, ttl 0 seit
|
|
# 03.07. — gehört zum UI-Versprechen „Immer-bereit-Set"), `embed` = das Embedding-Modell
|
|
# (Qwen3-Embedding-0.6B, für Mem0/Gedächtnis). Alle in der brains-Gruppe (persistent), werden
|
|
# aber NICHT automatisch zusammen geladen — jedes Modell einzeln anstoßen, sonst bleibt es kalt.
|
|
# Embedding läuft im --embedding-Modus → anderer Endpunkt (/v1/embeddings, nicht chat).
|
|
# Selbst-detachend: blockiert den Service-Start nicht.
|
|
# NACH ÄNDERUNG: sudo cp deploy/warmup.sh /usr/local/bin/llama-swap-warmup.sh (root-Kopie!)
|
|
set -u
|
|
URL="${MC_LLAMA_SWAP_URL:-http://127.0.0.1:8080}"
|
|
BRAINS="${MC_WARMUP_MODELS:-fast vision}"
|
|
EMBEDS="${MC_WARMUP_EMBED:-embed}"
|
|
|
|
if [ "${1:-}" != "--inner" ]; then
|
|
setsid "$0" --inner >/dev/null 2>&1 &
|
|
exit 0
|
|
fi
|
|
|
|
# --- ab hier im entkoppelten Hintergrundprozess ---
|
|
for _ in $(seq 1 60); do # auf llama-swap warten (max ~120s)
|
|
curl -sf "$URL/v1/models" >/dev/null 2>&1 && break
|
|
sleep 2
|
|
done
|
|
|
|
for m in $BRAINS; do # Chat-Hirne über /v1/chat/completions
|
|
curl -s -m 180 -X POST "$URL/v1/chat/completions" \
|
|
-H 'Content-Type: application/json' \
|
|
-d "{\"model\":\"$m\",\"max_tokens\":1,\"messages\":[{\"role\":\"user\",\"content\":\"ping\"}]}" \
|
|
>/dev/null 2>&1 || true
|
|
done
|
|
|
|
for m in $EMBEDS; do # Embedding-Modelle über /v1/embeddings
|
|
curl -s -m 120 -X POST "$URL/v1/embeddings" \
|
|
-H 'Content-Type: application/json' \
|
|
-d "{\"model\":\"$m\",\"input\":\"ping\"}" \
|
|
>/dev/null 2>&1 || true
|
|
done
|