# 2026-05-13 — Stabilisation multi-modèles + profils Hermes finalisés ## Résumé Stabilisation de l'architecture multi-modèles sur gpu-01. Résolution des OOM kills, ajustement des ressources CPU/RAM pour les instances system et monitor. Profils Hermes testés et fonctionnels. Architecture finale : 2 instances Qwen3-1.7B sur 14 CPUs chacune pour des réponses rapides (<3s). --- ## Blocages résolus ### OOM kill instances CPU à 6 GB **Symptôme** : `llama-server-system` tué par l'OOM killer en boucle (restart counter >45). ``` llama-server-system.service: A process of this unit has been killed by the OOM killer. ``` **Cause** : Qwen3-1.7B avec `--ctx-size 65536` consomme ~6.2 GB (modèle + KV cache). Le `MemoryMax=6G` était trop juste. **Fix** : `MemoryMax=8G` puis passage à 14 CPUs (voir section suivante). --- ### --cache-type-k q8_0 crash llama-server GPU **Symptôme** : segfault en boucle dès le démarrage du service GPU. ``` Process 24687 (llama-server) dumped core. Stack: _ZNK13llama_context5n_ctxEv → load_model ``` **Cause** : La version compilée de llama-server ne supporte pas le flag `--cache-type-k q8_0`. Crash immédiat dans la phase d'allocation du KV cache. **Fix** : Retrait du flag. GPU reste à `--ctx-size 32768` sans quantification KV. **À retenir** : Ne pas utiliser `--cache-type-k` sur ce build llama.cpp. --- ### Qwen2.5-14B OOM avec MemoryMax 14 GB **Tentative** : Utiliser Qwen2.5-14B sur CPU avec 14 GB RAM pour avoir un meilleur modèle. **Cause du fail** : Qwen2.5-14B a `head_dim=256` (vs 128 pour les autres). Le KV cache à 65536 tokens = **24 GB** seul. Même à 32768 tokens : 12 GB KV + 8.8 GB modèle = 21 GB. Incompatible avec 14 GB MemoryMax quelle que soit la configuration. **Fix** : Retour sur Qwen3-1.7B — modèle ultra-léger (1.1 GB), KV cache à 32768 = ~3.5 GB. Total ~4.8 GB, largement dans 14 GB. --- ## Architecture finale gpu-01 ### Ressources CPU (5950X 16c/32t) | Zone | CPUs logiques | Cœurs physiques | Usage | |---|---|---|---| | system | 0-6, 16-22 | 0-6 (× 2 threads) | llama-server-system | | monitor | 7-13, 23-29 | 7-13 (× 2 threads) | llama-server-monitor | | libre | 14-15, 30-31 | 14-15 | OS + GPU coordination | ### Services | Service | Port | Modèle | CPUs | RAM | Vitesse | |---|---|---|---|---|---| | `llama-server` | 1234 | Qwen3-8B GPU | — | VRAM 12G | ~35 tok/s | | `llama-server-system` | 1236 | Qwen3-1.7B | 14 (0-6,16-22) | 6G | ~21 tok/s | | `llama-server-monitor` | 1237 | Qwen3-1.7B | 14 (7-13,23-29) | 6G | ~21 tok/s | ### Profil dev supprimé `llama-server-dev` (port 1235, Qwen2.5-7B) supprimé. Ses ressources redistribuées. `qwen2.5-7b-dev` retiré de LiteLLM. Profil Hermes `dev` gardé mais inutilisé. --- ## Profils Hermes ### Tableau final | Profil | Alias | Modèle | Usage | |---|---|---|---| | `funk-ai` ◆ | `funk-ai` | qwen3-8b (GPU) | Principal, par défaut | | `brain` | `brain` | claude-sonnet-4-6 | Analyse complexe / coûteux | | `system` | `system` | qwen3-1.7b-system | Appels rapides depuis funk-ai/brain | | `monitor` | `monitor` | qwen3-1.7b-monitor | Appels rapides depuis funk-ai/brain | ### Changer de profil Pas de changement à chaud dans le TUI — ouvrir une nouvelle session : ```bash funk-ai # TUI avec Qwen3-8B GPU (défaut) brain # TUI avec Claude Sonnet system # TUI avec Qwen3-1.7B (appels rapides) monitor # TUI avec Qwen3-1.7B (appels rapides) ``` ### context_length override Hermes exige 64k context minimum. Les modèles CPU reportent 32768 via `/v1/models`. Override dans chaque `profiles//config.yaml` : ```yaml model: context_length: 65536 # bypass la vérification Hermes ``` --- ## LiteLLM config finale ```yaml # GPU hermes-default / qwen3-8b → http://192.168.10.20:1234/v1 # CPU qwen3-1.7b-system → http://192.168.10.20:1236/v1 qwen3-1.7b-monitor → http://192.168.10.20:1237/v1 # Cloud claude-sonnet-4-6 / claude-opus-4-7 → api.anthropic.com ``` --- ## État final - `funk-ai` : opérationnel, profil par défaut ✅ - `brain` : opérationnel (Claude API) ✅ - `system` : Qwen3-1.7B 14 CPUs, ~21 tok/s ✅ - `monitor` : Qwen3-1.7B 14 CPUs, ~21 tok/s ✅ ## Prochaines étapes - Tester les appels inter-profils (funk-ai → system/monitor via tool calls) - Commit git initial du repo - Route statique Freebox `192.168.10.0/24` → `192.168.1.200`