readme
This commit is contained in:
118
README.md
118
README.md
@ -1,3 +1,117 @@
|
||||
# Studio-IA-Modulaire
|
||||
# 🎙️ Feuille de Route : Studio IA Multimodal v3 (2026)
|
||||
|
||||
deploiement de modeles ad hoc sur vast.ai
|
||||
**Architecture :** Micro-services isolés via Docker Compose sur VM Vast.ai.
|
||||
**Objectif :** Modularité totale, isolation des dépendances et orchestration par LLM.
|
||||
|
||||
---
|
||||
|
||||
## 🧱 Principe des couches
|
||||
|
||||
```
|
||||
VM Vast.ai (Ubuntu 22.04 bare) ← Système hôte, Docker Engine
|
||||
└── NVIDIA Container Toolkit ← Pont GPU → containers
|
||||
├── container open-webui FROM python:3.11-slim
|
||||
├── container ollama FROM ollama/ollama:latest
|
||||
├── container ace-step FROM nvcr.io/nvidia/pytorch:26.01-py3
|
||||
├── container heart-mula FROM nvcr.io/nvidia/pytorch:25.08-py3 *
|
||||
├── container zonos FROM nvcr.io/nvidia/pytorch:26.01-py3
|
||||
├── container indextts FROM nvcr.io/nvidia/pytorch:26.01-py3
|
||||
├── container hunyuan-foley FROM nvcr.io/nvidia/pytorch:25.08-py3 *
|
||||
└── container comfyui FROM nvcr.io/nvidia/pytorch:26.01-py3
|
||||
```
|
||||
|
||||
> `*` Version NGC différente si le modèle l'exige — chaque container est indépendant.
|
||||
|
||||
### Règles d'image de base
|
||||
|
||||
| Niveau | Image | Raison |
|
||||
|---|---|---|
|
||||
| **VM hôte** | Ubuntu 22.04 bare | Docker Engine + drivers NVIDIA |
|
||||
| **Services GPU** | `nvcr.io/nvidia/pytorch:XX.XX-py3` | CUDA + PyTorch + cuDNN pré-validés par NVIDIA |
|
||||
| **Services sans GPU** | `python:3.11-slim` | Léger, inutile d'embarquer CUDA |
|
||||
|
||||
> La version NGC (`26.01`, `25.08`...) peut différer par service selon les besoins de compatibilité.
|
||||
> C'est précisément l'avantage des microservices : chaque container est une décision indépendante.
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 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. |
|
||||
Reference in New Issue
Block a user