docs: mise à jour documentation monitoring + llama-server + réseau

- monitoring.md : refonte complète — architecture corrigée (ROCm via
  textfile_collector port 9100, plus de port 9101), dashboards Grafana
  (funk-k8s1, funk-inf1, funk-ai01) avec URLs directes et workflow
  GitOps, tableaux de règles d'alertes par catégorie, commandes admin
  Prometheus/AlertManager, structure fichiers annotée
- llama_server.md : mis à jour Qwen3-8B (depuis Qwen2.5-14B), ajout
  des 3 instances systemd (GPU 1234 + CPU system 1236 + CPU monitor
  1237), section Métriques Prometheus avec flag --metrics obligatoire
  et liste des métriques llamacpp réelles, performances mises à jour
- reseau.md : ajout ports 9100 (node_exporter) et 9093 (alertmanager
  webhook) dans la table nftables, note sur l'ordre des règles
  (insert avant drop, pas add)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-05-13 23:10:56 +02:00
parent 630bdee1a2
commit 7db7aa2e9d
3 changed files with 358 additions and 123 deletions

View file

@ -1,30 +1,52 @@
# llama-server — Inférence LLM (gpu-01)
llama-server (llama.cpp compilé with ROCm 7.x) tourne en service systemd sur **gpu-01** (`192.168.10.20:1234`).
llama-server (llama.cpp compilé with ROCm 7.x) tourne en **trois instances systemd** sur **gpu-01** (`192.168.10.20`).
API 100% compatible OpenAI — remplace LM Studio pour l'inférence.
---
## Trois 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) |
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`).
---
## Service systemd
```bash
# Depuis gpu-01
# Instance GPU (principale)
sudo systemctl status llama-server
sudo systemctl restart llama-server
sudo journalctl -u llama-server -f
sudo journalctl -u llama-server -n 50
# Instance CPU — profil system
sudo systemctl status llama-server-system
sudo systemctl restart llama-server-system
sudo journalctl -u llama-server-system -f
# Instance CPU — profil monitor
sudo systemctl status llama-server-monitor
sudo systemctl restart llama-server-monitor
sudo journalctl -u llama-server-monitor -f
```
---
## Modèle actuel
## Modèle actuel (GPU)
| Paramètre | Valeur |
|---|---|
| Modèle | Qwen2.5-14B-Instruct Q4_K_M |
| Alias API | `qwen2.5-14b-instruct` |
| Chemin | `/mnt/models/bartowski/Qwen2.5-14B-Instruct-GGUF/Qwen2.5-14B-Instruct-Q4_K_M.gguf` |
| Contexte | 16384 tokens (limité par VRAM — voir ci-dessous) |
| Modèle | Qwen3-8B Q4_K_M |
| Alias API | `qwen3-8b` |
| Chemin | `/mnt/models/bartowski/Qwen3-8B-GGUF/Qwen3-8B-Q4_K_M.gguf` |
| Contexte | 32768 tokens |
| GPU offload | 99 layers (tout sur GPU) |
| Parallélisme | 1 slot (requis pour Hermes — voir bug parallel) |
| Embeddings | activés (`--embeddings --pooling mean`) |
@ -33,12 +55,9 @@ sudo journalctl -u llama-server -n 50
| Élément | VRAM |
|---|---|
| Modèle Q4_K_M 14B | ~8 GB |
| KV cache à 16384 ctx | ~3 GB |
| **Total** | **~11 GB** ✅ |
À 32768 tokens de contexte, le KV cache monte à ~6 GB → total ~14 GB → segfault.
**Ne pas augmenter `llama_ctx_size` au-delà de 16384 pour le 14B.**
| Modèle Q4_K_M 8B | ~5 GB |
| KV cache à 32768 ctx | ~4 GB |
| **Total** | **~9 GB** ✅ |
---
@ -52,20 +71,20 @@ Le flag `--pooling mean` est obligatoire pour les LLM causaux (sinon : erreur 40
# Test embeddings depuis storage-01
curl -s -X POST http://192.168.10.20:1234/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model":"qwen2.5-14b-instruct","input":["test"]}' | jq '.data[0].embedding | length'
# → 5120 (dimension Qwen2.5-14B)
-d '{"model":"qwen3-8b","input":["test"]}' | jq '.data[0].embedding | length'
# → 3584 (dimension Qwen3-8B)
```
---
## Performances (RX 6700XT, ROCm 7.x)
| Métrique | Qwen2.5-7B | Qwen2.5-14B |
| Métrique | Qwen3-1.7B (CPU) | Qwen3-8B (GPU) |
|---|---|---|
| Prefill | ~400 tok/s | ~200 tok/s |
| Génération | ~70 tok/s | ~35 tok/s |
| TTFT Hermes (15k tokens) | ~35s | ~75s |
| VRAM modèle | ~4 GB | ~8 GB |
| Prefill | ~50 tok/s | ~300 tok/s |
| Génération | ~15 tok/s | ~60 tok/s |
| TTFT Hermes (15k tokens) | ~300s | ~50s |
| VRAM modèle | — (CPU only) | ~5 GB |
---
@ -75,25 +94,57 @@ curl -s -X POST http://192.168.10.20:1234/v1/embeddings \
# Depuis storage-01 ou n'importe quelle machine du LAN cluster
curl -s http://192.168.10.20:1234/v1/models | jq '.data[].id'
# Test inférence rapide
# Test inférence rapide (GPU)
curl http://192.168.10.20:1234/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-14b-instruct",
"model": "qwen3-8b",
"messages": [{"role": "user", "content": "Dis bonjour"}],
"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'
```
---
## Métriques Prometheus
Le flag `--metrics` est requis dans le service systemd pour activer l'endpoint `/metrics`.
Sans lui, llama-server retourne `501 Not Implemented`.
```bash
# Vérifier que les métriques sont disponibles
curl -s http://192.168.10.20:1234/metrics | grep llamacpp
# Métriques clés exposées
curl -s http://192.168.10.20:1234/metrics | grep -E \
"llamacpp:prompt_tokens_total|llamacpp:tokens_predicted_total|llamacpp:requests_deferred|llamacpp:kv_cache_usage_ratio"
```
| Métrique | Description |
|---|---|
| `llamacpp:prompt_tokens_total` | Tokens de prompt traités (cumul) |
| `llamacpp:tokens_predicted_total` | Tokens générés (cumul) |
| `llamacpp:prompt_tokens_seconds` | Débit prefill (tok/s) |
| `llamacpp:predicted_tokens_seconds` | Débit génération (tok/s) |
| `llamacpp:requests_deferred` | Requêtes en file d'attente (backpressure) |
| `llamacpp:kv_cache_usage_ratio` | Occupation KV cache (01) |
| `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`.
---
## Changer de modèle
1. Modifier `host_vars/gpu-01/vars.yml` :
```yaml
llama_model_path: "/mnt/models/bartowski/NouveauModele.gguf"
llama_model_alias: "nouveau-alias"
llama_ctx_size: 16384 # ajuster selon VRAM disponible
llama_ctx_size: 32768 # ajuster selon VRAM disponible
```
2. Redéployer :
@ -132,8 +183,9 @@ sudo systemctl restart llama-server
|---|---|
| GPU non officiel | RX 6700XT (gfx1031) — `HSA_OVERRIDE_GFX_VERSION=10.3.0` dans le service |
| ROCm version | 7.2.3 — libs dans `/opt/rocm` |
| VRAM limite | 14B + 16k ctx = ~11 GB — ne pas dépasser 16384 tokens |
| --metrics obligatoire | Sans ce flag, `/metrics` retourne `501 Not Implemented` — Prometheus ne scrappe rien |
| parallel=1 obligatoire | `--parallel 4` divise le ctx en slots → contexte insuffisant pour Hermes |
| pooling mean obligatoire | sans `--pooling mean` l'endpoint `/v1/embeddings` retourne erreur 400 |
| pooling mean obligatoire | Sans `--pooling mean`, l'endpoint `/v1/embeddings` retourne erreur 400 |
| Gemma 4 interdit | Crash ROCm sur prompts >800 tokens |
| Modèles sur NFS | `/mnt/models` monté depuis storage-01 (NFS) |
| 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 |