Pré-requis serveur¶
Sizing recommandé pour faire tourner Myeline avec une expérience interactive (réponse RAG sous 5 s perçus).
À retenir
Une seule requête RAG sature 2-4 cœurs pendant 0,5-2 s pour l'embedding + 4-8 cœurs pendant 5-30 s pour la synthèse locale. 8 cœurs est le plancher pratique ; 4 cœurs ne tient pas sous usage interactif.
TL;DR par profil¶
| Profil | vCPU | RAM | Disque | GPU | Notes |
|---|---|---|---|---|---|
| Démo / 1 utilisateur | 8 | 16 GB | 50 GB SSD | – | Embedding CPU local |
| Souverain ≤ 20 utilisateurs | 16 | 32 GB | 200 GB NVMe | – | Mistral-Nemo CPU = 15-40 s/requête |
| Souverain ≤ 200 utilisateurs | 24 | 64 GB | 500 GB NVMe | RTX 4090 24 GB ou L40S | GPU fortement recommandé |
| Souverain large / Llama 70B | 32 | 128 GB | 1 TB NVMe | 2× L40S 48 GB | Llama 3.1 70B Q4 ou Mixtral 8×7B |
| Souverain-hybride ≤ 100 utilisateurs | 8 | 16 GB | 100 GB SSD | – | Synthèse déportée API BYOK, embedding local |
Détail des consommations¶
CPU¶
| Charge | Demande |
|---|---|
| Web + worker (idle) | 1-2 cœurs |
| Embedding (bge-m3 CPU) | 2-4 cœurs à 100 % pendant 0,5-2 s par requête |
| ChromaDB HNSW search | 1-2 cœurs pendant ~100 ms |
| Synthèse API externe (souverain-hybride) | 0 (réseau-bound) |
| Synthèse LLM Ollama CPU | 4-8 cœurs à 100 % pendant 5-30 s |
| MariaDB | 1 cœur (2+ en pic) |
| Cron (la plupart < 30 s) | bursts only |
Single-user reality : même un serveur idle sature 4 cœurs pendant la durée de la requête (embedding + HNSW + synthèse en chaîne).
Multi-user reality : avec 8 cœurs vous gérez confortablement 1-2 requêtes simultanées actives, au-delà ça queue. Pour 4+ utilisateurs simultanés actifs, prévoyez 16+ cœurs.
Mémoire (idle, sans LLM local)¶
| Composant | RAM |
|---|---|
web (gunicorn 9 workers) |
~1,5 GB |
worker (RQ) |
~200 MB |
cron (supercronic) |
~50 MB |
mariadb (InnoDB buffer) |
~1-1,5 GB |
redis |
~100 MB |
ollama avec bge-m3 chargé |
~700 MB |
| ChromaDB hot index (HNSW) | 200-800 MB |
| Total idle | ~4 GB |
| Headroom peak / pulls / backups | +50 % |
| Recommandé minimum | 8 GB |
Mémoire (souverain — LLM local)¶
Ajouter le modèle Ollama choisi :
| Modèle local | Quantif. | RAM résident | Notes |
|---|---|---|---|
mistral-nemo (12 B) |
Q4_K_M | ~7 GB | Défaut. Décent, CPU lent |
mistral-nemo |
Q8 | ~13 GB | Meilleure qualité |
mixtral-8x7b |
Q4 | ~26 GB | CPU ≥ 30 s/réponse, GPU recommandé |
llama3.1:70b |
Q4 | ~40 GB | Top-tier local, GPU obligatoire |
Avec GPU les modèles vivent en VRAM, pas en RAM système ; les chiffres ci-dessus restent grossièrement valables pour le budget mémoire global, mais la latence s'améliore de 5-20× selon la carte.
Disque¶
| Usage | Taille | Notes |
|---|---|---|
| OS + images containers | 5-10 GB | Image Python slim ~600 MB ; les modèles Ollama dominent |
| Modèles Ollama | bge-m3 600 MB · mistral-nemo Q4 7 GB | Stockés dans data/ollama/ |
| ChromaDB | ~10 KB / chunk indexé | 100 k chunks ≈ 1 GB ; croît linéairement |
| MariaDB | 100 MB → 5 GB | Audit log + conversations dominent |
| Uploads | non borné | Plafonné par les plans (max_file_size) |
| Backups (rétention 30 j) | 2-5× la donnée live | backup_databases cron |
| Logs | ~10 MB / jour | Rotation par Docker / journald |
NVMe vs SSD SATA : meilleur p99 pour ChromaDB (HNSW seeks) et MariaDB.
Réseau¶
- Outbound (souverain-hybride uniquement) — provider IA + Brevo
- GHCR : ~10 Mbps soutenu, plus pendant les image pulls.
- Inbound : 100 Mbps confortable pour quelques dizaines d'utilisateurs simultanés.
- Latence vers le provider IA (Mistral Paris/Frankfurt, Anthropic / OpenAI / Gemini US) : viser < 100 ms.
- En souverain pur : aucun trafic sortant (air-gap).
Référence hardware¶
| Profil | Hardware type | Spec | Ordre de prix |
|---|---|---|---|
| Démo / Souverain ≤ 20 users (CPU only) | VPS ou bare-metal | 8-16 vCores / 32 GB / 200 GB NVMe | 20-50 €/mois |
| Souverain ≤ 200 users + GPU | Bare-metal | Xeon + RTX 4090 24 GB / 64 GB / 1 TB NVMe | 250-400 €/mois |
| Souverain large / Llama 70B | Bare-metal | 2× L40S 48 GB / 128 GB / 1 TB NVMe | 800-1500 €/mois |
| Souverain-hybride ≤ 100 users | VPS | 8 vCores / 16 GB / 100 GB NVMe | 20-40 €/mois |
Pratique
En souverain pur, le coût hardware est dominé par le GPU (si requis). En souverain-hybride, l'embedding tient sur un petit VPS — la facture LLM passe directement chez votre provider IA.
OS et runtime¶
- Linux : Rocky / AlmaLinux 9, Debian 12, Ubuntu 22.04 LTS+
- Containers : Podman 4.6+ rootless recommandé, Docker
fonctionne aussi (
docker-composev2) - systemd : requis pour Podman pods unit-managed (sovereign)
- Python 3.11+ si vous tournez hors containers (path officiel : containers)
- SELinux Enforcing : OK — le compose file labellise les volumes
avec
:z - GPU (souverain avec GPU) : NVIDIA drivers 535+, NVIDIA Container Toolkit installé ; Ollama auto-détecte