Files
mission-control-v2/deploy/warmup.sh
T
Hitonabi b1fa8bea43 Fix: Embedding-Modell (Qwen3-Embedding-0.6B) auch automatisch vorwaermen
Das Embedding-Modell (Alias `embed`, fuer Mem0/Gedaechtnis) ist zwar brains-Member
(persist), aber Pingen von `fast` laedt die anderen Gruppenmitglieder NICHT mit —
es blieb kalt bis zur ersten /v1/embeddings-Anfrage.

- warmup.sh: waermt jetzt zusaetzlich die Embedding-Modelle ueber /v1/embeddings
  (anderer Endpunkt als chat), gesteuert via MC_WARMUP_EMBED (default "embed").
- stack-postcheck.sh: prueft nach jedem Update zusaetzlich, dass das Embedding-Modell
  laedt und einen Vektor liefert (sonst ist Mem0/Gedaechtnis betroffen) -> Job rot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:02:35 +02:00

40 lines
1.7 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), `embed` = das Embedding-Modell (Qwen3-Embedding-0.6B,
# für Mem0/Gedächtnis). Beide sind in der brains-Gruppe (persist), werden aber NICHT automatisch
# zusammen geladen — jedes Modell muss einzeln angestoßen werden, sonst bleibt es kalt.
# Embedding läuft im --embedding-Modus → anderer Endpunkt (/v1/embeddings, nicht chat).
# Selbst-detachend: blockiert den Service-Start nicht.
set -u
URL="${MC_LLAMA_SWAP_URL:-http://127.0.0.1:8080}"
BRAINS="${MC_WARMUP_MODELS:-fast}"
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