mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 10:04:42 +02:00
Le grounding RAG du STT ratait par intermittence (docs=0 → réponses génériques) parce que l'instance d'embedding :1238 partait à froid après une pause : la 1ʳᵉ requête mettait 5-8 s et dépassait le timeout 4 s du STT-server (recall + RAG doc). llama-embed-heartbeat : service systemd local sur gpu-01 qui envoie un petit embed à :1238 toutes les 20 s → le slot reste résident/chaud → la 1ʳᵉ vraie requête est rapide → docs>0 fiable. Pendant du llm-heartbeat (slot chat :1234), pour le slot embed. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.3 KiB
Django/Jinja
31 lines
1.3 KiB
Django/Jinja
#!/usr/bin/env bash
|
|
# llama-embed-heartbeat — garde chaud le slot d'embedding nomic (:1238).
|
|
#
|
|
# Le piège (cf. admin/ia/stt.md) : l'instance d'embedding part à froid après une pause
|
|
# (slot GPU inactif) → la 1ʳᵉ requête est lente (5-8 s) et dépasse le timeout du STT-server
|
|
# (4 s) → recall mémoire vide ET RAG documentaire raté (`docs=0`) → réponses non ancrées.
|
|
#
|
|
# Un petit embed périodique (modèle minuscule, ~10-50 ms GPU) garde le slot résident → la
|
|
# 1ʳᵉ vraie requête tombe sur un slot chaud. Pendant logique au `llm-heartbeat` (rôle litellm)
|
|
# qui garde chaud le slot de CHAT. Logge les échecs → sert aussi de sonde de l'instance embed.
|
|
set -u
|
|
|
|
URL="http://127.0.0.1:{{ llama_embed_port }}/v1/embeddings"
|
|
MODEL="{{ llama_embed_model_alias }}"
|
|
INTERVAL="{{ llama_embed_heartbeat_interval }}"
|
|
TIMEOUT="{{ llama_embed_heartbeat_timeout }}"
|
|
|
|
payload="{\"model\":\"${MODEL}\",\"input\":\"ping\"}"
|
|
|
|
fails=0
|
|
while true; do
|
|
code=$(curl -s -m "$TIMEOUT" -o /dev/null -w '%{http_code}' \
|
|
"$URL" -H 'Content-Type: application/json' -d "$payload" 2>/dev/null || echo "000")
|
|
if [ "$code" = "200" ]; then
|
|
fails=0
|
|
else
|
|
fails=$((fails + 1))
|
|
echo "embed-heartbeat: KO (HTTP ${code}) — ${fails} échec(s) consécutif(s)"
|
|
fi
|
|
sleep "$INTERVAL"
|
|
done
|