# 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/<nom>/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`
