diff --git a/20260224-systememicroservice.md b/20260224-systememicroservice.md new file mode 100644 index 0000000..ea467d8 --- /dev/null +++ b/20260224-systememicroservice.md @@ -0,0 +1,87 @@ +# 🎙️ Feuille de Route : Studio IA Multimodal v3 (2026) + +**Architecture :** Micro-services isolés via Docker Compose sur VM Vast.ai. +**Objectif :** Modularité totale, isolation des dépendances et orchestration par LLM. + +--- + +## 🏗️ Phase 1 — Préparation de l'Infrastructure (Le Socle) + +> L'objectif est de préparer le terrain pour que les containers puissent discuter entre eux sur un réseau privé. + +- [ ] **Dépôt Gitea** : Structurer l'arborescence du projet + - `/services` : Un sous-dossier par micro-service (Dockerfile + code API) + - `/models` : Scripts Shell de téléchargement des poids (HuggingFace / CivitAI) + - `/data` : Volumes Docker persistants pour les sorties (`outputs/`) et les données modèles + +- [ ] **Script de Provisioning** : Écrire le `provisioning_script.sh` pour Vast.ai + - Installation automatisée de Docker Engine & NVIDIA Container Toolkit + - Clonage du dépôt Git + - Configuration des permissions et création des dossiers de stockage + +--- + +## 🍳 Phase 2 — Build des Micro-Services (Les Cuisines) + +> Chaque service est construit indépendamment pour garantir une stabilité totale. + +- [ ] **Service Orchestrateur** : Configurer l'image officielle Ollama *(Gestion des LLM)* +- [ ] **Service Interface** : Configurer l'image Open WebUI *(La "Glue" utilisateur)* +- [ ] **Service Audio — ACE-Step** : Créer le Dockerfile + l'API Python (Gradio/FastAPI) +- [ ] **Service Voix — Zonos** : Créer le Dockerfile dédié *(Environnement Python 3.11+)* +- [ ] **Service Image — ComfyUI** : Préparer l'image optimisée pour Flux.1 et SDXL +- [ ] **Service Foley — Hunyuan** : Créer le service spécifique pour le bruitage vidéo synchronisé + +--- + +## 🎼 Phase 3 — Orchestration (Le Chef d'Orchestre) + +> Utilisation de Docker Compose pour lier les services sur une seule machine. + +- [ ] **Fichier `docker-compose.yml`** + - Définir le réseau interne `studio-network` + - Assigner les ressources GPU via `deploy.resources.reservations` + - Mapper les ports : `3000` (public) pour le WebUI, les autres en accès restreint + +- [ ] **Gestion de la VRAM & RAM** + - Implémenter des limites mémoire par container + - Configurer le swap pour éviter les crashs lors des chargements de modèles lourds + +--- + +## 🔌 Phase 4 — Connexion de la "Glue" (Le Câblage) + +> Configuration de l'intelligence centrale pour piloter les outils. + +- [ ] **Configuration Ollama** : Connecter Open WebUI au container LLM via `http://ollama:11434` + +- [ ] **Développement des "Functions"** : Coder les ponts Python internes à Open WebUI vers : + - `http://ace-step:7860` — Musique + - `http://zonos:7862` — Voix + - `http://comfyui:8188` — Image + - `http://hunyuan-foley:7864` — Foley + +- [ ] **System Prompt** : Configurer l'assistant "Studio Manager" pour qu'il route les requêtes vers les bons services + +--- + +## 🚀 Phase 5 — Optimisation & Production + +> Passage à l'échelle et fluidification de l'expérience. + +- [ ] **Téléchargement des modèles** : Finaliser les scripts `download_models.sh` + *(utilisation de `wget -c` pour la reprise sur erreur)* + +- [ ] **Persistance** : Valider le montage des volumes pour que les fichiers générés soient accessibles hors des containers + +- [ ] **Snapshot final** : Une fois la configuration stable, créer un Snapshot Vast.ai pour un déploiement instantané *(Warm Boot)* + +--- + +## 🛠️ Pourquoi cette architecture gagne en 2026 + +| Avantage | Détail technique | +|---|---| +| **Modularité** | Tu veux changer de modèle de voix ? Tu mets à jour 1 seul container sans toucher au reste. | +| **Résilience** | Si le service d'image plante, tu peux toujours chatter et générer de la musique. | +| **Scalabilité** | Demain, tu peux mettre Ollama sur un GPU et ACE-Step sur un autre sans réécrire le code. | \ No newline at end of file