From 470c69881cbc9f5d67c86fd4e73b548ed832d98a Mon Sep 17 00:00:00 2001 From: ALI YESILKAYA Date: Sat, 20 Jun 2026 13:25:50 +0200 Subject: [PATCH] =?UTF-8?q?chore(gpu-01):=20retire=20les=20serveurs=20llam?= =?UTF-8?q?a=20CPU=20system/monitor/dev=20(inutilis=C3=A9s)=20(#31)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trois instances llama-server CPU manuelles (hors Ansible) tournaient sur gpu-01 sans servir : déjà orphelines de LiteLLM (alias absents de config.yaml, d'où le bruit "Invalid model name"). Suppression complète : gpu-01 (opérationnel, déjà fait) : - systemctl disable --now + rm des units llama-server-{system,monitor,dev} - ports firewall 1235/1236/1237 fermés Repo : - monitoring : scrape jobs (values.yaml) + alertes LlamaServer{System,Monitor}Down (alerts-ai.yaml) retirés → plus de "target down"/alertes fantômes ; panneaux de statut dashboard-infrastructure recyclés (system→llama-embed, monitor supprimé). - docs admin/ + hermes-skills (souls funk-ai/brain, SKILL agent-delegation) mises à jour : inventaire modèles, profils Hermès system/monitor sans backend (à repointer sur qwen3-8b), litellm, ops, monitoring. Les profils Hermès system/monitor existent toujours mais sans backend dédié. Dashboards Grafana dashboard-ai (panneaux graphiques CPU) laissés tels quels (cosmétique, séries vides, aucune alerte). Co-authored-by: Claude Opus 4.8 --- admin/ia/alertmanager-webhook.md | 8 ++- admin/ia/hermes-souls.md | 8 +-- admin/ia/hermes.md | 22 ++++---- admin/ia/litellm.md | 28 ++++------ admin/ia/llama_server.md | 52 ++++++++----------- admin/index_knowledge.py | 4 +- admin/k8s/monitoring.md | 15 ++---- admin/ops/ansible.md | 2 +- admin/ops/cluster.md | 2 +- admin/ops/systeme.md | 4 +- ansible/roles/llama_server/README.md | 15 ++++-- hermes-skills/funk/agent-delegation/SKILL.md | 5 +- hermes-skills/souls/brain.md | 4 +- hermes-skills/souls/funk-ai.md | 10 ++-- k8s/infra/monitoring/alerts/alerts-ai.yaml | 18 ------- .../dashboards/dashboard-infrastructure.yaml | 24 ++------- k8s/infra/monitoring/values.yaml | 16 ------ 17 files changed, 90 insertions(+), 147 deletions(-) diff --git a/admin/ia/alertmanager-webhook.md b/admin/ia/alertmanager-webhook.md index 06ad409..99b7e87 100644 --- a/admin/ia/alertmanager-webhook.md +++ b/admin/ia/alertmanager-webhook.md @@ -23,15 +23,19 @@ ask-agent monitor "Alertes Prometheus reçues à HH:MM:SS : ..." │ POST http://127.0.0.1:4000/v1/chat/completions ▼ LiteLLM Proxy (:4000) - │ modèle : qwen3-1.7b-monitor + │ modèle : qwen3-1.7b-monitor ⚠️ backend retiré le 2026-06-20 ▼ -llama-server-monitor (gpu-01:1237, CPU 14 threads) +(ex-llama-server-monitor gpu-01:1237 — SUPPRIMÉ) │ Répond dans les logs du service ▼ journalctl -u alertmanager-webhook "ask-agent response: SERVICE SAIN — aucune action requise" ``` +> ⚠️ **2026-06-20** : le serveur CPU `monitor` (:1237) a été supprimé. Le résumé d'alerte par +> `ask-agent monitor` ne fonctionne donc plus tel quel — pour le réactiver, ajouter dans LiteLLM +> un alias `qwen3-1.7b-monitor` (ou changer l'agent du webhook) pointant sur `qwen3-8b` (GPU). + **Point clé** : le webhook répond HTTP 200 immédiatement, avant d'appeler `ask-agent`. `ask-agent` tourne en arrière-plan (~20-60s) — AlertManager ne reste pas bloqué en attente. diff --git a/admin/ia/hermes-souls.md b/admin/ia/hermes-souls.md index 07ffeb3..26eab60 100644 --- a/admin/ia/hermes-souls.md +++ b/admin/ia/hermes-souls.md @@ -23,8 +23,8 @@ Déployés sur storage-01 : | Profil | Modèle | Vitesse | Coût | Rôle | |---|---|---|---|---| | `funk-ai` | Qwen3-8B GPU (:1234) | ~35 tok/s | gratuit | Agent principal — orchestration, réponses générales, délégation | -| `monitor` | Qwen3-1.7B CPU (:1237) | ~21 tok/s | gratuit | Surveillance — logs, métriques, alertes Prometheus | -| `system` | Qwen3-1.7B CPU (:1236) | ~21 tok/s | gratuit | Utilitaire — résumés, commandes, calculs, formatage | +| `monitor` | ⚠️ backend retiré 2026-06-20 (ex-CPU :1237) | — | gratuit | Surveillance — logs, métriques, alertes Prometheus (repointer sur qwen3-8b) | +| `system` | ⚠️ backend retiré 2026-06-20 (ex-CPU :1236) | — | gratuit | Utilitaire — résumés, commandes, calculs, formatage (repointer sur qwen3-8b) | | `brain` | Claude Sonnet 4.6 (API) | ~60 tok/s | **facturé** | Analyse avancée — architecture, incidents critiques, trade-offs | --- @@ -74,7 +74,7 @@ Concis, technique, actif. Montre les commandes avant les résultats. En françai ## monitor — Agent de surveillance -**Modèle** : Qwen3-1.7B Q4_K_M — CPU 14 threads — port 1237 +**Modèle** : ⚠️ backend retiré le 2026-06-20 (ex-Qwen3-1.7B CPU port 1237) — repointer l'alias LiteLLM sur `qwen3-8b` pour réactiver ### Identité @@ -113,7 +113,7 @@ Pas de commandes shell. Pas d'architecture. Analyse uniquement le texte fourni. ## system — Agent utilitaire -**Modèle** : Qwen3-1.7B Q4_K_M — CPU 14 threads — port 1236 +**Modèle** : ⚠️ backend retiré le 2026-06-20 (ex-Qwen3-1.7B CPU port 1236) — repointer l'alias LiteLLM sur `qwen3-8b` pour réactiver ### Identité diff --git a/admin/ia/hermes.md b/admin/ia/hermes.md index cf05da6..8e8b75c 100644 --- a/admin/ia/hermes.md +++ b/admin/ia/hermes.md @@ -14,10 +14,9 @@ Les données persistantes sont dans `/srv/data/hermes` (NVMe bind-mount depuis 2 ``` Profils Hermes → LiteLLM Proxy (:4000) → llama-server / API Anthropic ├── qwen3-8b → gpu-01:1234 (GPU RX 6700XT) - ├── qwen3-1.7b-system → gpu-01:1236 (CPU 14 threads) - ├── qwen3-1.7b-monitor → gpu-01:1237 (CPU 14 threads) ├── claude-sonnet-4-6 → api.anthropic.com └── claude-opus-4-7 → api.anthropic.com + # qwen3-1.7b-system/-monitor (CPU :1236/:1237) RETIRÉS le 2026-06-20 Depuis Hermes (TUI ou ask-agent) : funk-ai (principal) ──┐ @@ -34,11 +33,15 @@ Depuis Hermes (TUI ou ask-agent) : |---|---|---|---| | `funk-ai` ◆ | `funk-ai` | qwen3-8b (GPU, ~35 tok/s) | Principal — par défaut | | `brain` | `brain` | claude-sonnet-4-6 (API) | Analyse complexe — facturé | -| `system` | `system` | qwen3-1.7b-system (CPU, ~21 tok/s) | Traitement texte rapide | -| `monitor` | `monitor` | qwen3-1.7b-monitor (CPU, ~21 tok/s) | Évaluation état services | +| `system` | `system` | ⚠️ backend retiré (ex-qwen3-1.7b CPU) | Traitement texte rapide — à repointer sur qwen3-8b | +| `monitor` | `monitor` | ⚠️ backend retiré (ex-qwen3-1.7b CPU) | Évaluation état services — à repointer sur qwen3-8b | `◆` = profil actif par défaut +> **2026-06-20** : les serveurs CPU `system` (:1236), `monitor` (:1237) et `dev` (:1235) ont été +> supprimés (inutilisés). Les profils existent toujours mais leur alias LiteLLM n'a plus de +> backend → repointer sur `qwen3-8b` (GPU) pour les réactiver. Cf. `admin/ia/llama_server.md`. + ```bash # Lancer un profil (nouvelle session TUI) funk-ai # Qwen3-8B GPU @@ -263,20 +266,19 @@ ask-agent (/usr/local/bin/ask-agent) │ POST http://127.0.0.1:4000/v1/chat/completions ▼ LiteLLM Proxy (:4000) - ├── ask-agent system → qwen3-1.7b-system (CPU :1236) - ├── ask-agent monitor → qwen3-1.7b-monitor (CPU :1237) ├── ask-agent brain → claude-sonnet-4-6 (API Anthropic) └── ask-agent funk-ai → qwen3-8b (GPU :1234) + # ask-agent system/monitor : backend CPU retiré le 2026-06-20 (repointer sur qwen3-8b) ``` ### Agents disponibles | Agent | Modèle | Usage idéal | |---|---|---| -| `system` | Qwen3-1.7B CPU (:1236) | Traitement texte : résumés, formatage, parsing, calculs Linux | -| `monitor` | Qwen3-1.7B CPU (:1237) | Évaluation santé : logs systemd, métriques, état des services | | `brain` | Claude Sonnet 4.6 (API) | Raisonnement complexe, architecture — facturé | | `funk-ai` | Qwen3-8B GPU (:1234) | Tâches générales (agent principal lui-même) | +| `system` ⚠️ | backend retiré 2026-06-20 | Ex-Qwen3-1.7B CPU — repointer l'alias sur qwen3-8b pour réactiver | +| `monitor` ⚠️ | backend retiré 2026-06-20 | Ex-Qwen3-1.7B CPU — repointer l'alias sur qwen3-8b pour réactiver | ### system vs monitor @@ -383,7 +385,7 @@ sudo systemctl restart hermes-dashboard Modèle GGUF potentiellement corrompu (signe d'erreur disque). ```bash -ssh g01 "sudo systemctl status llama-server-system" +ssh g01 "sudo systemctl status llama-server" ssh g01 "md5sum /mnt/models/" ``` @@ -392,7 +394,7 @@ ssh g01 "md5sum /mnt/models/" LiteLLM ou llama-server ne répond pas. ```bash ssh s01 "curl -s http://localhost:4000/health -H 'Authorization: Bearer lm-studio'" -ssh g01 "systemctl status llama-server-system llama-server-monitor" +ssh g01 "systemctl status llama-server llama-embed" ``` ### Le skill n'est pas chargé diff --git a/admin/ia/litellm.md b/admin/ia/litellm.md index 73c7263..f46a55b 100644 --- a/admin/ia/litellm.md +++ b/admin/ia/litellm.md @@ -14,8 +14,6 @@ Hermes / ask-agent / Open WebUI / n8n LiteLLM Proxy ├── hermes-default → qwen3-8b → llama-server gpu-01 :1234 (GPU) ├── qwen3-8b → llama-server gpu-01 :1234 (GPU, gratuit) - ├── qwen3-1.7b-system → llama-server gpu-01 :1236 (CPU 14 threads, gratuit) - ├── qwen3-1.7b-monitor → llama-server gpu-01 :1237 (CPU 14 threads, gratuit) ├── claude-sonnet-4-6 → api.anthropic.com (cloud, payant) └── claude-opus-4-7 → api.anthropic.com (cloud, payant) ``` @@ -40,13 +38,13 @@ sudo journalctl -u litellm -n 50 |---|---|---| | `hermes-default` | qwen3-8b sur gpu-01 :1234 (GPU) | Gratuit | | `qwen3-8b` | llama-server gpu-01 :1234 (ROCm 7.x) | Gratuit | -| `qwen3-1.7b-system` | llama-server gpu-01 :1236 (CPU, 14 threads) | Gratuit | -| `qwen3-1.7b-monitor` | llama-server gpu-01 :1237 (CPU, 14 threads) | Gratuit | | `claude-sonnet-4-6` | Anthropic API | ~$3/$15 par million tokens in/out | | `claude-opus-4-7` | Anthropic API | Plus cher, meilleur raisonnement | -> `qwen3-1.7b-system` et `qwen3-1.7b-monitor` sont utilisés par `ask-agent system` et -> `ask-agent monitor` — voir [hermes.md](hermes.md). +> **Alias CPU retirés (2026-06-20)** : `qwen3-1.7b-system` et `qwen3-1.7b-monitor` (serveurs CPU +> gpu-01 :1236/:1237) ont été supprimés avec leurs serveurs. Ils étaient déjà absents de +> `/etc/litellm/config.yaml` (d'où le bruit `Invalid model name` historique). `ask-agent system` +> et `ask-agent monitor` n'ont donc plus de backend — repointer sur `qwen3-8b` pour les réactiver. > ⚠️ **Qwen3 = modèle « thinking »** : il raisonne avant de répondre. Avec un `max_tokens` > faible, il peut renvoyer un `content` **vide** (budget épuisé en `reasoning_content`) ou @@ -111,19 +109,15 @@ elle vient du vault Ansible (`vault_anthropic_api_key`). Jamais en clair dans co --- -## ⚠️ Gap IaC — modèles CPU absents du template Ansible +## Modèles servis (2026-06-20) -`ansible/roles/litellm/templates/config.yaml.j2` n'inclut que 4 modèles : -`hermes-default`, `qwen3-8b`, `claude-sonnet-4-6`, `claude-opus-4-7`. +`ansible/roles/litellm/templates/config.yaml.j2` et `/etc/litellm/config.yaml` exposent +4 modèles : `hermes-default`, `qwen3-8b`, `claude-sonnet-4-6`, `claude-opus-4-7`. -Les entrées `qwen3-1.7b-system` (:1236) et `qwen3-1.7b-monitor` (:1237) ont été ajoutées -**manuellement** dans `/etc/litellm/config.yaml` sur storage-01. - -Un `make apply-storage` sur un hôte vierge ne déploierait PAS les routes CPU nécessaires -à `ask-agent system` et `ask-agent monitor`. - -**Axe d'amélioration** : ajouter les 2 entrées CPU dans `config.yaml.j2` avec des variables -dans `defaults/main.yml` (`litellm_cpu_system_url`, `litellm_cpu_monitor_url`). +Les anciennes entrées CPU `qwen3-1.7b-system` (:1236) et `qwen3-1.7b-monitor` (:1237) ont été +**retirées** avec leurs serveurs (cf. `admin/ia/llama_server.md`). Elles étaient déjà absentes +du fichier live → `ask-agent system`/`monitor` n'avaient déjà plus de route. Pour les réactiver, +ajouter un alias pointant sur `qwen3-8b` (GPU) plutôt que de recréer des serveurs CPU. --- diff --git a/admin/ia/llama_server.md b/admin/ia/llama_server.md index c75f0f6..adfecd8 100644 --- a/admin/ia/llama_server.md +++ b/admin/ia/llama_server.md @@ -1,26 +1,28 @@ # llama-server — Inférence LLM (gpu-01) -llama-server (llama.cpp compilé with ROCm 7.x) tourne en **quatre instances systemd** sur **gpu-01** (`192.168.10.20`). +llama-server (llama.cpp compilé with ROCm 7.x) tourne en **deux instances systemd** sur **gpu-01** (`192.168.10.20`). API 100% compatible OpenAI — remplace LM Studio pour l'inférence. --- -## Quatre instances +## Deux instances | Service systemd | Port | Modèle | Backend | Usage | |---|---|---|---|---| | `llama-server` | 1234 | Qwen3-8B Q4_K_M | GPU (RX 6700XT) | Inférence principale — Hermes + LiteLLM | -| `llama-server-system` | 1236 | Qwen3-1.7B Q4_K_M | CPU | Profil Hermes `system` (tâches légères) | -| `llama-server-monitor` | 1237 | Qwen3-1.7B Q4_K_M | CPU | Profil Hermes `monitor` (supervision) | -| `llama-embed` | 1238 | nomic-embed-text-v1.5 f16 | GPU | Embeddings dédiés (mémoire STT, dim 768) | +| `llama-embed` | 1238 | nomic-embed-text-v1.5 f16 | CPU | Embeddings dédiés (mémoire STT + RAG funk-docs, dim 768) | -Les instances CPU (`system`, `monitor`) partagent le même binaire mais des configs distinctes. Les modèles sont sur NFS monté depuis storage-01 (`/mnt/models`). -> `llama-embed` (`:1238`) est **géré par Ansible** (rôle `llama_server`, `llama_embed_enabled`) — -> contrairement aux instances CPU (gap IaC, voir plus bas). Sert un modèle d'embedding **dédié** -> (`nomic-embed-text`, dim 768), bien plus discriminant que Qwen3-8B réutilisé. Partage le GPU -> avec `:1234` (~300 Mo VRAM). +> **Instances CPU retirées (2026-06-20)** : `llama-server-system` (:1236), `llama-server-monitor` +> (:1237) et `llama-server-dev` (:1235) — services **manuels** inutilisés (déjà orphelins de +> LiteLLM) — ont été supprimés. Les profils Hermès `system`/`monitor` n'ont plus de backend dédié. + +> `llama-embed` (`:1238`) est **géré par Ansible** (rôle `llama_server`, `llama_embed_enabled`). +> Sert un modèle d'embedding **dédié** (`nomic-embed-text`, dim 768), bien plus discriminant que +> Qwen3-8B réutilisé. Tourne en **CPU** (`--n-gpu-layers 0`) pour ne pas entrer en contention GPU +> avec `:1234` (la contention causait une latence bimodale 16 ms/9-12 s → `docs=0` du STT, cf. +> `admin/incidents-llm-gpu.md`). --- @@ -32,17 +34,9 @@ sudo systemctl status llama-server sudo systemctl restart llama-server sudo journalctl -u llama-server -f -# Instance CPU — profil system -sudo systemctl status llama-server-system -sudo systemctl restart llama-server-system -sudo journalctl -u llama-server-system -f +# (instances CPU system/monitor/dev retirées le 2026-06-20) -# Instance CPU — profil monitor -sudo systemctl status llama-server-monitor -sudo systemctl restart llama-server-monitor -sudo journalctl -u llama-server-monitor -f - -# Instance GPU — embeddings dédiés (nomic-embed-text :1238) +# Instance CPU — embeddings dédiés (nomic-embed-text :1238) sudo systemctl status llama-embed sudo systemctl restart llama-embed sudo journalctl -u llama-embed -f @@ -131,9 +125,8 @@ curl http://192.168.10.20:1234/v1/chat/completions \ "max_tokens": 50 }' -# Test instances CPU -curl -s http://192.168.10.20:1236/v1/models | jq '.data[].id' -curl -s http://192.168.10.20:1237/v1/models | jq '.data[].id' +# Test instance embed (CPU) +curl -s http://192.168.10.20:1238/v1/models | jq '.data[].id' ``` --- @@ -162,7 +155,7 @@ curl -s http://192.168.10.20:1234/metrics | grep -E \ | `llamacpp:kv_cache_usage_ratio` | Occupation KV cache (0–1) | | `llamacpp:kv_cache_tokens` | Tokens actuellement en KV cache | -Ces métriques sont scrapées par Prometheus via les jobs `llama-server-gpu`, `llama-server-system`, `llama-server-monitor` définis dans `k8s/infra/monitoring/values.yaml`. +Ces métriques sont scrapées par Prometheus via le job `llama-server-gpu` défini dans `k8s/infra/monitoring/values.yaml` (jobs `llama-server-system`/`-monitor` retirés le 2026-06-20). --- @@ -205,12 +198,11 @@ sudo systemctl restart llama-server --- -## ⚠️ Gap IaC — instances CPU non couvertes par Ansible +## Instances CPU retirées (2026-06-20) Le rôle `ansible/roles/llama_server/` déploie l'instance **GPU** (`llama-server.service` :1234) et l'instance **embeddings** (`llama-embed` :1238, activée par `llama_embed_enabled`). -Les instances CPU (`llama-server-system` :1236 et `llama-server-monitor` :1237) ont été créées **manuellement** et ne sont pas encore dans le code Ansible. -Conséquence : un `make apply-gpu` complet sur un hôte vierge ne déploierait PAS les instances CPU. +Les anciennes instances CPU **manuelles** `llama-server-system` (:1236), `llama-server-monitor` (:1237) et `llama-server-dev` (:1235) ont été **supprimées** : inutilisées et déjà orphelines de LiteLLM (aucun alias dans `/etc/litellm/config.yaml`). Suppression = `systemctl disable --now` + `rm` des units + ports firewall 1235/1236/1237 fermés + scrape/alertes Prometheus retirés. Pour réactiver un profil `system`/`monitor`, repointer son alias LiteLLM sur `qwen3-8b` (GPU). **Axe d'amélioration** : étendre le rôle `llama_server` pour déployer aussi les 2 instances CPU via une boucle (`with_items` ou `loop` Ansible), avec des variables dédiées dans `host_vars/gpu-01/vars.yml`. @@ -227,6 +219,6 @@ Conséquence : un `make apply-gpu` complet sur un hôte vierge ne déploierait P | pooling mean obligatoire | Sans `--pooling mean`, l'endpoint `/v1/embeddings` retourne erreur 400 | | Qwen3 = modèle « thinking » | Par défaut Qwen3 raisonne avant de répondre → consomme le budget `max_tokens` en `reasoning_content` (`content` vide) ou réfléchit longtemps (timeout). Ajouter **`/no_think`** au prompt système pour le désactiver. STT le fait (`STT_DISABLE_THINKING`) ; à considérer pour tout consommateur de Qwen3 à `max_tokens` faible (ask-agent, profils Hermes). | | Gemma 4 interdit | Crash ROCm sur prompts >800 tokens | -| Modèles sur NFS | `/mnt/models` monté depuis storage-01 (NFS) — si NFS down, les 3 services échouent au démarrage | -| 3 services indépendants | Chaque instance a son propre service systemd — redémarrer l'un n'affecte pas les autres | -| Instances CPU hors Ansible | llama-server-system et llama-server-monitor créés manuellement — voir section Gap IaC ci-dessus | +| Modèles sur NFS | `/mnt/models` monté depuis storage-01 (NFS) — si NFS down, les services échouent au démarrage | +| 2 services indépendants | `llama-server` (:1234 GPU) et `llama-embed` (:1238 CPU) ont chacun leur service systemd | +| Instances CPU retirées | llama-server-system/-monitor/-dev supprimés le 2026-06-20 (inutilisés) — voir section dédiée ci-dessus | diff --git a/admin/index_knowledge.py b/admin/index_knowledge.py index 4200824..b8a0751 100644 --- a/admin/index_knowledge.py +++ b/admin/index_knowledge.py @@ -37,7 +37,7 @@ KNOWLEDGE = [ { "category": "litellm", "tags": ["litellm", "config", "modèles", "anthropic"], - "text": "LiteLLM config /etc/litellm/config.yaml expose: hermes-default (alias switchable), qwen3-8b (gpu-01:1234 GPU), qwen3-1.7b-system (gpu-01:1236 CPU), qwen3-1.7b-monitor (gpu-01:1237 CPU), claude-sonnet-4-6 (API Anthropic), claude-opus-4-7 (API Anthropic). ANTHROPIC_API_KEY dans l'environnement systemd via vault Ansible.", + "text": "LiteLLM config /etc/litellm/config.yaml expose: hermes-default (alias switchable), qwen3-8b (gpu-01:1234 GPU), claude-sonnet-4-6 (API Anthropic), claude-opus-4-7 (API Anthropic). Les alias CPU qwen3-1.7b-system/-monitor ont été retirés le 2026-06-20 avec leurs serveurs. ANTHROPIC_API_KEY dans l'environnement systemd via vault Ansible.", }, { "category": "hermes", @@ -77,7 +77,7 @@ KNOWLEDGE = [ { "category": "gpu", "tags": ["modèles", "qwen", "gemma", "performance"], - "text": "Modèle actif gpu-01: Qwen3-8B Q4_K_M (~60 tok/s génération, ~300 tok/s prefill, ROCm 7.x natif). Contexte 32768 tokens (VRAM: ~5GB modèle + ~4GB KV cache = ~9GB sur 12GB). Alias API: qwen3-8b. Instances CPU: qwen3-1.7b-system sur :1236 et qwen3-1.7b-monitor sur :1237 (~21 tok/s CPU). Ne pas utiliser Gemma 4: crash ROCm >800 tokens. Dimension embeddings: 3584.", + "text": "Modèle actif gpu-01: Qwen3-8B Q4_K_M (~60 tok/s génération, ~300 tok/s prefill, ROCm 7.x natif). Contexte 32768 tokens (VRAM: ~5GB modèle + ~4GB KV cache = ~9GB sur 12GB). Alias API: qwen3-8b. Instance embed: nomic-embed-text sur :1238 (CPU, dim 768) pour mémoire STT + RAG funk-docs. Les anciennes instances CPU qwen3-1.7b-system (:1236), qwen3-1.7b-monitor (:1237) et dev (:1235) ont été RETIRÉES le 2026-06-20 (inutilisées). Ne pas utiliser Gemma 4: crash ROCm >800 tokens.", }, { "category": "postgresql", diff --git a/admin/k8s/monitoring.md b/admin/k8s/monitoring.md index ebb6f19..d544313 100644 --- a/admin/k8s/monitoring.md +++ b/admin/k8s/monitoring.md @@ -31,9 +31,8 @@ Prometheus (k8s, namespace monitoring) ├── scrape storage-01:9100 → métriques système storage-01 (job=storage-01) ├── scrape gpu-01:9100 → métriques système + ROCm gpu-01 (job=gpu-01-node) │ └── textfile_collector → rocm_gpu_temperature/utilization/vram (rocm_scraper.timer) - ├── scrape gpu-01:1234 → llama-server GPU Qwen3-8B (job=llama-server-gpu) - ├── scrape gpu-01:1236 → llama-server CPU system (job=llama-server-system) - └── scrape gpu-01:1237 → llama-server CPU monitor (job=llama-server-monitor) + └── scrape gpu-01:1234 → llama-server GPU Qwen3-8B (job=llama-server-gpu) + # scrape :1236/:1237 (CPU system/monitor) retirés le 2026-06-20 (serveurs supprimés) ↓ AlertManager ├── receiver "null" → alerte Watchdog (heartbeat interne — silencé) @@ -117,8 +116,6 @@ Déclenchent AlertManager → webhook storage-01:9093 → profil `monitor` Herme | Alerte | Seuil | Sévérité | |---|---|---| | `LlamaServerGPUDown` | `up{job="llama-server-gpu"} == 0` pendant 2 min | critical | -| `LlamaServerSystemDown` | `up{job="llama-server-system"} == 0` pendant 2 min | warning | -| `LlamaServerMonitorDown` | `up{job="llama-server-monitor"} == 0` pendant 2 min | warning | | `GPUTemperatureHigh` | Temp GPU > 80°C pendant 5 min | warning | | `GPUTemperatureCritical` | Temp GPU > 90°C pendant 2 min | critical | | `GPUVRAMAlmostFull` | VRAM > 95% pendant 5 min | warning | @@ -221,11 +218,9 @@ llama.cpp expose ses métriques sur `/metrics` — activé via `--metrics` dans # Métriques GPU (Qwen3-8B) curl -s http://192.168.10.20:1234/metrics | grep llamacpp -# Métriques CPU system -curl -s http://192.168.10.20:1236/metrics | grep llamacpp - -# Métriques CPU monitor -curl -s http://192.168.10.20:1237/metrics | grep llamacpp +# Métriques embed (nomic, CPU) +curl -s http://192.168.10.20:1238/metrics | grep llamacpp +# (serveurs CPU :1236/:1237 retirés le 2026-06-20) ``` --- diff --git a/admin/ops/ansible.md b/admin/ops/ansible.md index 8964ff0..63d6bd7 100644 --- a/admin/ops/ansible.md +++ b/admin/ops/ansible.md @@ -38,7 +38,7 @@ Chaque rôle a un `README.md` détaillé dans `ansible/roles//` (variables, | `common` | `common` | Paquets de base, sécurité, NTP | | `rocm` | `rocm` | Stack GPU AMD (ROCm 7.x, `HSA_OVERRIDE_GFX_VERSION=10.3.0`) | | `nfs_client` | `nfs_client` | Montage `/mnt/models` depuis storage-01 | -| `llama_server` | `llama_server` | llama-server **GPU `:1234` uniquement** — ⚠️ les instances CPU `:1236`/`:1237` (system/monitor) sont des services créés à la main sur gpu-01, hors IaC | +| `llama_server` | `llama_server` | llama-server **GPU `:1234`** + embed **CPU `:1238`** (nomic). Les ex-instances CPU `:1235`/`:1236`/`:1237` (dev/system/monitor) ont été supprimées le 2026-06-20 | | `node_exporter` | `node_exporter` | Métriques Prometheus (+ rocm power) | > ⚠️ Le rôle `lm_studio` existe encore dans `ansible/roles/` mais n'est référencé par **aucun** playbook (remplacé par `llama_server` en mai 2026). Candidat à la suppression. diff --git a/admin/ops/cluster.md b/admin/ops/cluster.md index 5742c73..0dfd6e6 100644 --- a/admin/ops/cluster.md +++ b/admin/ops/cluster.md @@ -74,7 +74,7 @@ Ordre de démarrage : storage-01 déjà up → gpu-01 (WOL) → compute-01/02/03 Vérifie dans l'ordre : - Services storage-01 : postgresql-16, qdrant, litellm, hermes-agent - Santé : PostgreSQL (connexion réelle), Qdrant (collections), LiteLLM (modèles), Hermes, NFS export -- gpu-01 : ping, NFS /mnt/models, llama-server GPU (:1234), embeddings, llama-server CPU (:1236/:1237) +- gpu-01 : ping, NFS /mnt/models, llama-server GPU (:1234), embed nomic CPU (:1238) - Cluster k8s : ping compute-01/02/03, kubectl get nodes Ready ### `funk-start [--k8s]` diff --git a/admin/ops/systeme.md b/admin/ops/systeme.md index 1e2abb1..3102dac 100644 --- a/admin/ops/systeme.md +++ b/admin/ops/systeme.md @@ -36,8 +36,8 @@ sudo systemctl list-units --type=service --state=running | gpu-01 | `chronyd` | NTP | | gpu-01 | `sshd` | SSH | | gpu-01 | `llama-server` | Inférence GPU — Qwen3-8B via ROCm 7.x (port 1234) | -| gpu-01 | `llama-server-system` | Inférence CPU — Qwen3-1.7B (port 1236, 14 threads) | -| gpu-01 | `llama-server-monitor` | Inférence CPU — Qwen3-1.7B (port 1237, 14 threads) | +| gpu-01 | `llama-embed` | Embeddings nomic-embed-text CPU (port 1238, dim 768) | +| gpu-01 | `llama-embed-heartbeat` | Sonde de vivacité du slot embed :1238 | --- diff --git a/ansible/roles/llama_server/README.md b/ansible/roles/llama_server/README.md index d5af199..61e79ac 100644 --- a/ansible/roles/llama_server/README.md +++ b/ansible/roles/llama_server/README.md @@ -69,17 +69,22 @@ Compile llama.cpp (backend HIP/ROCm) et déploie le service **llama-server GPU** | `llama_embed_model_alias` | `nomic-embed-text` | — | | `llama_embed_n_gpu_layers` | `0` (CPU — évite la contention GPU avec `:1234`) | — | -## ⚠️ Gap IaC — instances CPU hors Ansible +## Instances CPU retirées (2026-06-20) -Le rôle ne gère que l'instance **GPU** (`llama-server.service`). Les services suivants existent sur gpu-01 mais ont été créés **à la main** (non reproductibles par `make apply-gpu`) : +Trois serveurs llama CPU **manuels** (hors Ansible) tournaient sur gpu-01 et ont été +**supprimés** (stop + disable + `rm` des units + ports firewall fermés) car inutilisés — +ils n'étaient même plus routés par LiteLLM (alias absents de `/etc/litellm/config.yaml`) : -| Service | Port | Modèle | Usage | +| Service (supprimé) | Port | Modèle | Ex-usage | |---|---|---|---| | `llama-server-system.service` | 1236 | Qwen3-1.7B CPU | profil `system` | | `llama-server-monitor.service` | 1237 | Qwen3-1.7B CPU | profil `monitor` | -| `llama-server-dev.service` | — | (non documenté, présent dans /etc/systemd/system) | ? | +| `llama-server-dev.service` | 1235 | Qwen3-4B CPU | profil `dev` | -**À faire** : templatiser ces instances dans le rôle (liste d'instances avec port/modèle/threads) pour qu'une réinstallation de gpu-01 restaure les 3 serveurs. +> Le rôle ne gère désormais **que** l'instance GPU (`llama-server.service`, `:1234`) et +> l'embed CPU (`llama-embed.service`, `:1238`). Les profils Hermès `system`/`monitor` +> n'ont plus de backend dédié — repointer leurs alias LiteLLM sur `qwen3-8b` (GPU) si on +> veut les réactiver. ## Caveats diff --git a/hermes-skills/funk/agent-delegation/SKILL.md b/hermes-skills/funk/agent-delegation/SKILL.md index f861e5b..2e8c64d 100644 --- a/hermes-skills/funk/agent-delegation/SKILL.md +++ b/hermes-skills/funk/agent-delegation/SKILL.md @@ -87,11 +87,12 @@ terminal: ask-agent system "est-ce que cette utilisation disque est préoccupant | Agent | Modèle | Usage | |---|---|---| -| `system` | Qwen3-1.7B CPU (:1236) | Calculs, formatage, résumés courts, questions Linux | -| `monitor` | Qwen3-1.7B CPU (:1237) | Analyse logs, métriques, santé système | | `brain` | Claude Sonnet 4.6 API | Raisonnement complexe, architecture | | `funk-ai` | Qwen3-8B GPU (:1234) | Toi-même — rarement utile | +> Agents `system` et `monitor` retirés le 2026-06-20 (serveurs CPU :1236/:1237 supprimés). +> Pour les réactiver, repointer leur alias LiteLLM sur `qwen3-8b`. + --- ## Syntaxe complète diff --git a/hermes-skills/souls/brain.md b/hermes-skills/souls/brain.md index e09473f..a573b3a 100644 --- a/hermes-skills/souls/brain.md +++ b/hermes-skills/souls/brain.md @@ -19,8 +19,8 @@ qui nécessitent un raisonnement approfondi. ### Stack IA -- **llama-server** (gpu-01) — llama.cpp compilé ROCm 7.x, 4 instances : GPU :1234, CPU :1236/:1237, embeddings nomic-embed-text :1238 -- **Modèles** : Qwen3-8B Q4_K_M (GPU), Qwen3-1.7B Q4_K_M (CPU ×2) +- **llama-server** (gpu-01) — llama.cpp compilé ROCm 7.x, 2 instances : GPU :1234 (chat), CPU :1238 (embed nomic-embed-text). Serveurs CPU :1235/:1236/:1237 retirés le 2026-06-20. +- **Modèles** : Qwen3-8B Q4_K_M (GPU), nomic-embed-text (CPU, embeddings dim 768) - **LiteLLM** (storage-01:4000) — proxy multi-modèles + Claude API - **Hermes Agent** — 4 profils : funk-ai (principal), brain (toi), system, monitor - **Qdrant** (storage-01:6333) — base vectorielle RAG, collection `funk-docs` diff --git a/hermes-skills/souls/funk-ai.md b/hermes-skills/souls/funk-ai.md index d8e5994..88de3e7 100644 --- a/hermes-skills/souls/funk-ai.md +++ b/hermes-skills/souls/funk-ai.md @@ -37,8 +37,9 @@ ssh hermes@192.168.10.20 # clé ed25519 dans ~/.ssh/ | Service | Port | Modèle | |---|---|---| | llama-server | :1234 | Qwen3-8B Q4_K_M — GPU RX 6700XT (~35 tok/s) | -| llama-server-system | :1236 | Qwen3-1.7B Q4_K_M — CPU 14 threads (~21 tok/s) | -| llama-server-monitor | :1237 | Qwen3-1.7B Q4_K_M — CPU 14 threads (~21 tok/s) | +| llama-embed | :1238 | nomic-embed-text — CPU (embeddings dim 768) | + +> Les serveurs CPU `system` (:1236), `monitor` (:1237) et `dev` (:1235) ont été retirés le 2026-06-20. ### Cluster Kubernetes @@ -77,10 +78,11 @@ Terminal: ask-agent monitor "logs litellm : — erreurs ?" | Agent | Modèle | Quand l'appeler | |---|---|---| -| `system` | Qwen3-1.7B CPU :1236 | Résumer, expliquer, formater, calculer, question Linux | -| `monitor` | Qwen3-1.7B CPU :1237 | Analyser logs, métriques, état des services | | `brain` | Claude Sonnet API | Architecture complexe, décisions critiques — facturé | +> Agents `system`/`monitor` désactivés depuis le 2026-06-20 (serveurs CPU retirés) — pour les +> réactiver, repointer leur alias LiteLLM sur `qwen3-8b`. + ### 2. rag-query — documentation du cluster Interroge la base vectorielle Qdrant (collection `funk-docs`) indexée depuis `admin/`. diff --git a/k8s/infra/monitoring/alerts/alerts-ai.yaml b/k8s/infra/monitoring/alerts/alerts-ai.yaml index 5f3530b..7698b20 100644 --- a/k8s/infra/monitoring/alerts/alerts-ai.yaml +++ b/k8s/infra/monitoring/alerts/alerts-ai.yaml @@ -21,24 +21,6 @@ spec: summary: "llama-server GPU (Qwen3-8B) inaccessible" description: "Le serveur LLM GPU sur gpu-01:1234 ne répond plus depuis 2 min. Inférence GPU unavailable." - - alert: LlamaServerSystemDown - expr: up{job="llama-server-system"} == 0 - for: 2m - labels: - severity: warning - annotations: - summary: "llama-server CPU system (Qwen3-1.7B) inaccessible" - description: "Le serveur LLM CPU system sur gpu-01:1236 ne répond plus. Profil Hermes system degraded." - - - alert: LlamaServerMonitorDown - expr: up{job="llama-server-monitor"} == 0 - for: 2m - labels: - severity: warning - annotations: - summary: "llama-server CPU monitor (Qwen3-1.7B) inaccessible" - description: "Le serveur LLM CPU monitor sur gpu-01:1237 ne répond plus. Profil Hermes monitor degraded." - # --- GPU temperature (ROCm via textfile_collector) --- - alert: GPUTemperatureHigh expr: rocm_gpu_temperature_celsius > 80 diff --git a/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml b/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml index 1c4dc0f..52f39e2 100644 --- a/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml +++ b/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml @@ -1413,33 +1413,15 @@ data: "color": {"mode": "thresholds"}, "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]}, "unit": "none", - "mappings": [{"type": "value", "options": {"1": {"text": "llama-server system", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}] + "mappings": [{"type": "value", "options": {"1": {"text": "llama-embed nomic", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}] }, "overrides": [] }, "gridPos": {"h": 3, "w": 6, "x": 6, "y": 61}, "id": 61, "options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"}, - "title": "llama-server CPU system (:1236)", - "targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"llama-server-system.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}], - "type": "stat" - }, - { - "datasource": {"type": "prometheus", "uid": "${datasource}"}, - "fieldConfig": { - "defaults": { - "color": {"mode": "thresholds"}, - "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]}, - "unit": "none", - "mappings": [{"type": "value", "options": {"1": {"text": "llama-server monitor", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}] - }, - "overrides": [] - }, - "gridPos": {"h": 3, "w": 6, "x": 12, "y": 61}, - "id": 62, - "options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"}, - "title": "llama-server CPU monitor (:1237)", - "targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"llama-server-monitor.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}], + "title": "llama-embed nomic (:1238)", + "targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"llama-embed.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}], "type": "stat" }, { diff --git a/k8s/infra/monitoring/values.yaml b/k8s/infra/monitoring/values.yaml index 2d06485..60ddb20 100644 --- a/k8s/infra/monitoring/values.yaml +++ b/k8s/infra/monitoring/values.yaml @@ -81,22 +81,6 @@ prometheus: model: qwen3-8b type: gpu - - job_name: llama-server-system - static_configs: - - targets: ['192.168.10.20:1236'] - labels: - instance: gpu-01 - model: qwen3-1.7b-system - type: cpu - - - job_name: llama-server-monitor - static_configs: - - targets: ['192.168.10.20:1237'] - labels: - instance: gpu-01 - model: qwen3-1.7b-monitor - type: cpu - alertmanager: ingress: enabled: true