diff --git a/ARCHITECTURE-STUDIO-AI.md b/ARCHITECTURE-STUDIO-AI.md index 0bcb5e0..3273c36 100644 --- a/ARCHITECTURE-STUDIO-AI.md +++ b/ARCHITECTURE-STUDIO-AI.md @@ -1,9 +1,5 @@ # 🎙️ Studio IA Multimodal — Architecture & Spécifications - -## Contexte du projet - -Studio IA accessible à des utilisateurs novices via navigateur web. -Interface unifiée pour la génération audio, image, et code, pilotée par un chatbot Mistral. +## Version 2026 — État de l'art --- @@ -16,195 +12,252 @@ Interface unifiée pour la génération audio, image, et code, pilotée par un c ↓ [Ollama — Mistral Medium] ↓ (Tools/Functions) - ┌────┴────┬──────────┐ -[AudioCraft] [ComfyUI] [Code] - port 7860 port 8188 + ┌────┴────┬──────────┬──────────┐ +[Audio] [Voix] [Foley] [Image] +port 7860 port 7861 port 7862 port 8188 ``` --- -## 2. Pile logicielle +## 2. Pile logicielle — État de l'art 2026 -| Couche | Technologie | Rôle | Port | +### 🎵 Génération Musicale +| Modèle | Forces | VRAM | Vitesse | |---|---|---|---| -| Interface | Open WebUI | Chat unifié, gestion users | 3000 | -| LLM | Ollama + Mistral | Chat + orchestration outils | 11434 | -| Audio | AudioCraft (Meta) | MusicGen + AudioGen | 7860 | -| Image | ComfyUI | Stable Diffusion / Flux.1 | 8188 | -| Code | Ollama + CodeLlama | Génération de code | 11434 | -| Reverse proxy | Caddy | Routage + HTTPS | 80/443 | +| **Heart Mula** (Jan 2026) ⭐ | Morceaux 6 min, structure complète, qualité Suno | 12-16 Go | Lente | +| **ACE-Step 1.5** | Ultra-rapide, cohérence harmonique, idéal novices | 8-12 Go | Très rapide | +| ~~MusicGen (Meta)~~ | Boucles 30s seulement — dépassé | 8 Go | Rapide | + +> **Choix recommandé :** ACE-Step 1.5 pour les novices (rapidité), Heart Mula pour la qualité maximale --- -## 3. Image Docker de base +### 🎤 Voix Off (TTS) +| Modèle | Forces | VRAM | +|---|---|---| +| **Zonos-v0.1** (Zyphra) ⭐ | 44kHz natif, tags émotion, clone voix 10s | 8-12 Go | +| **IndexTTS-2** ⭐ | Contrôle milliseconde de durée, sync animation | 8 Go | + +> **Choix recommandé :** Les deux sont complémentaires et indispensables +> - Zonos pour la narration et les voix expressives +> - IndexTTS-2 pour la sync animation et le lip-sync + +--- + +### 🔊 Bruitages & Foley +| Modèle | Forces | VRAM | +|---|---|---| +| **HunyuanVideo-Foley** ⭐ | Analyse vidéo → son synchronisé, révolutionnaire | 12-16 Go | +| ~~AudioGen (Meta)~~ | Texte seulement, pas de sync vidéo — dépassé | 8 Go | + +> **Choix recommandé :** HunyuanVideo-Foley uniquement — Meta est dépassé sur ce segment + +--- + +### 🖼️ Génération Image +| Modèle | Forces | VRAM | +|---|---|---| +| **Flux.1** | Meilleure qualité actuelle | 12-16 Go | +| **SDXL** | Rapide, bon écosystème LoRA | 8-12 Go | + +--- + +### 💬 Chat & Code +| Modèle | Forces | VRAM | +|---|---|---| +| **Mistral Medium** (Ollama) | Chat général, orchestration outils | 8-12 Go | +| **CodeLlama** (Ollama) | Génération de code | 8 Go | + +--- + +## 3. Ports & Services + +| Service | Port | Technologie | +|---|---|---| +| Open WebUI | 3000 | Interface unifiée | +| Ollama | 11434 | LLM (Mistral + CodeLlama) | +| Musique | 7860 | ACE-Step 1.5 + Heart Mula via ComfyUI | +| Voix Off | 7861 | Zonos-v0.1 + IndexTTS-2 | +| Foley | 7862 | HunyuanVideo-Foley | +| Images | 8188 | ComfyUI (Flux.1 + SDXL) | + +--- + +## 4. Image Docker de base **Nom cible :** `nicoboy/studio-ai:latest` -### Contenu de l'image (sans les modèles) +### Dockerfile (à construire avec Gemini) ```dockerfile FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 +ENV DEBIAN_FRONTEND=noninteractive +ENV PYTHONUNBUFFERED=1 + # Python 3.11 -RUN add-apt-repository ppa:deadsnakes/ppa && \ - apt-get install -y python3.11 python3.11-venv python3.11-distutils +RUN apt-get update && \ + apt-get install -y software-properties-common && \ + add-apt-repository ppa:deadsnakes/ppa && \ + apt-get update && \ + apt-get install -y \ + python3.11 \ + python3.11-venv \ + python3.11-distutils \ + python3.11-dev # Dépendances système RUN apt-get install -y \ ffmpeg libsndfile1 sox \ git wget curl nano screen \ - nodejs npm + nodejs npm \ + libgl1 libglib2.0-0 # pip pour Python 3.11 RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 +RUN python3.11 -m pip install --upgrade pip -# Frameworks IA +# PyTorch CUDA 12.1 RUN python3.11 -m pip install \ - torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 - -# AudioCraft -RUN python3.11 -m pip install \ - git+https://github.com/facebookresearch/audiocraft.git \ - gradio scipy soundfile + torch torchvision torchaudio \ + --index-url https://download.pytorch.org/whl/cu121 # Open WebUI RUN python3.11 -m pip install open-webui # Ollama RUN curl -fsSL https://ollama.ai/install.sh | sh + +# Dépendances audio communes +RUN python3.11 -m pip install \ + gradio \ + fastapi \ + uvicorn \ + scipy \ + soundfile \ + transformers \ + accelerate \ + diffusers + +# ComfyUI dépendances +RUN python3.11 -m pip install \ + einops \ + kornia \ + spandrel + +WORKDIR /root ``` -### Ce qui N'est PAS dans l'image (téléchargé au 1er lancement) -- Modèles Ollama (Mistral, CodeLlama) → ~8 Go -- Modèles AudioCraft (MusicGen, AudioGen) → ~4 Go -- Modèles ComfyUI (SDXL, Flux.1) → ~7 Go -- **Total modèles : ~20 Go** +### ⚠️ Points critiques pour Gemini +1. **Python 3.11 obligatoire** — Open WebUI refuse Python 3.10 +2. **Ne pas inclure les modèles** — trop lourds, téléchargés via provisioning script +3. **Image sur DockerHub public** — nécessaire pour Vast.ai +4. **CUDA 12.1** — compatible A4000 et RTX 4060 Ti +5. **Tester** : `docker build -t nicoboy/studio-ai .` puis `docker push nicoboy/studio-ai:latest` --- -## 4. Taille estimée - -| Élément | Taille | -|---|---| -| Image Docker (frameworks seuls) | ~15-20 Go | -| Modèles (téléchargés au lancement) | ~20 Go | -| Données utilisateurs | ~5 Go | -| **Total disque recommandé** | **50-60 Go minimum** | - -> ⚠️ 130 Go de disque = confortable pour tout faire tourner. - ---- - -## 5. Template Vast.ai cible - -| Paramètre | Valeur | -|---|---| -| Image | `nicoboy/studio-ai:latest` | -| GPU | RTX A4000 / RTX 4060 Ti (16 Go VRAM) | -| Disk | 130 Go | -| Ports | 3000, 7860, 8188, 11434 | -| Launch mode | `Jupyter + SSH` | -| PROVISIONING_SCRIPT | URL Gitea → télécharge les modèles | -| PORTAL_CONFIG | OpenWebUI:3000, AudioCraft:7860, ComfyUI:8188 | - ---- - -## 6. Provisioning Script (logique au 1er lancement) +## 5. Provisioning Script (1er lancement ~30-45 min) ```bash -# 1. Télécharger les modèles Ollama +#!/bin/bash +set -eo pipefail + +# --- MUSIQUE --- +# ACE-Step 1.5 +pip install ace-step +# Heart Mula via ComfyUI (custom node) +git clone https://github.com/[repo]/heart-mula /root/ComfyUI/custom_nodes/heart-mula + +# --- VOIX OFF --- +# Zonos +pip install zonos +# IndexTTS-2 +git clone https://github.com/index-tts/indextts /root/indextts +pip install -r /root/indextts/requirements.txt + +# --- FOLEY --- +# HunyuanVideo-Foley +git clone https://github.com/Tencent/HunyuanVideo-Foley /root/hunyuan-foley +pip install -r /root/hunyuan-foley/requirements.txt + +# --- IMAGES --- +git clone https://github.com/comfyanonymous/ComfyUI /root/ComfyUI +pip install -r /root/ComfyUI/requirements.txt +# Télécharger Flux.1 +wget -P /root/ComfyUI/models/checkpoints/ [URL_FLUX1] + +# --- LLM --- +ollama serve & +sleep 5 ollama pull mistral ollama pull codellama -# 2. Télécharger les modèles AudioCraft -# (fait automatiquement au 1er appel Python) - -# 3. Installer ComfyUI + modèles SD/Flux -git clone https://github.com/comfyanonymous/ComfyUI /root/ComfyUI -cd /root/ComfyUI && pip install -r requirements.txt -wget -P /root/ComfyUI/models/checkpoints/ [URL_MODELE_SDXL] - -# 4. Lancer les services -screen -dmS ollama ollama serve +# --- LANCEMENT DES SERVICES --- screen -dmS openwebui open-webui serve --port 3000 -screen -dmS audiocraft python /root/audiocraft-api/server.py -screen -dmS comfyui python /root/ComfyUI/main.py --listen 0.0.0.0 --port 8188 +screen -dmS ollama ollama serve +screen -dmS audio python3.11 /root/audio-api/server.py +screen -dmS comfyui python3.11 /root/ComfyUI/main.py --listen 0.0.0.0 --port 8188 + +env >> /etc/environment +echo "✅ Studio IA prêt !" ``` --- -## 7. Configuration Open WebUI (partie délicate — à faire ensemble) +## 6. Configuration Open WebUI (à faire avec Claude) -> ⚠️ Cette section sera configurée manuellement après déploiement. +> Cette partie sera traitée après le build Docker. -### 7.1 Connexion Ollama -- URL : `http://localhost:11434` -- Modèles : Mistral (chat), CodeLlama (code) +### 6.1 Tools à créer +- `generate_music(prompt, duration, model)` → ACE-Step ou Heart Mula +- `generate_voice(text, emotion, duration)` → Zonos ou IndexTTS-2 +- `generate_foley(video_path, prompt)` → HunyuanVideo-Foley +- `generate_image(prompt, width, height)` → ComfyUI/Flux.1 +- `generate_code(prompt, language)` → CodeLlama -### 7.2 Tools à créer (Functions Open WebUI) -- `generate_audio(prompt, duration, type)` → appelle AudioCraft port 7860 -- `generate_image(prompt, steps, width, height)` → appelle ComfyUI port 8188 -- `generate_code(prompt, language)` → appelle CodeLlama via Ollama - -### 7.3 System Prompt de l'assistant +### 6.2 System Prompt assistant ``` -Tu es un assistant créatif expert. -Tu as accès aux outils suivants : -- generate_audio : pour créer musique et bruitages -- generate_image : pour créer des images -- generate_code : pour écrire du code +Tu es un assistant créatif expert en production multimédia. +Tu guides les novices et utilises les outils appropriés : +- generate_music : composition musicale complète +- generate_voice : voix off avec émotion contrôlée +- generate_foley : bruitages synchronisés avec vidéo +- generate_image : génération d'images +- generate_code : écriture de code -Quand un utilisateur fait une demande créative, -tu l'aides à préciser sa demande puis tu utilises -l'outil approprié. -``` - -### 7.4 Modèle JSON Open WebUI (à importer) -> À générer une fois l'instance stable. - ---- - -## 8. Étapes de construction (ordre) - -- [x] Définir l'architecture -- [ ] **Construire l'image Docker** ← Gemini -- [ ] Pousser sur DockerHub (`nicoboy/studio-ai`) -- [ ] Mettre à jour le template Vast.ai avec la nouvelle image -- [ ] Écrire le provisioning script final -- [ ] **Configurer Open WebUI** ← Claude -- [ ] **Créer les Tools AudioCraft + ComfyUI** ← Claude -- [ ] **Rédiger les System Prompts** ← Claude -- [ ] Tests utilisateur - ---- - -## 9. Commandes utiles - -```bash -# Vérifier les services qui tournent -screen -ls - -# Voir les logs d'un service -screen -r openwebui -screen -r audiocraft -screen -r comfyui - -# Vérifier GPU -nvidia-smi - -# Vérifier les modèles Ollama -ollama list - -# Tester AudioCraft API -curl http://localhost:7860 +Tu poses des questions précises avant de générer, +et tu proposes des ajustements après chaque création. ``` --- -## 10. Points d'attention pour Gemini +## 7. Estimation disque production -1. **Python 3.11 obligatoire** — Open WebUI refuse Python 3.10 -2. **Ne pas inclure les modèles dans l'image** — trop lourds, dans le provisioning script -3. **L'image doit être sur DockerHub public** pour que Vast.ai puisse la télécharger -4. **CUDA 12.1** — compatible A4000 et RTX 4060 Ti -5. **Tester le build** avec `docker build -t nicoboy/studio-ai .` avant de pusher +| Élément | Taille | +|---|---| +| Image Docker | ~15 Go | +| Modèles LLM (Mistral + CodeLlama) | ~12 Go | +| Modèles Audio (ACE-Step, Heart Mula, Zonos, IndexTTS-2) | ~15 Go | +| HunyuanVideo-Foley | ~8 Go | +| ComfyUI + Flux.1 | ~15 Go | +| Données utilisateurs + outputs | ~10 Go | +| **Total** | **~75 Go** | + +> ✅ 130 Go = confortable +> ⚠️ Si on ajoute SDXL + LoRA : prévoir 200 Go + +--- + +## 8. Checklist projet + +- [x] Architecture définie +- [x] État de l'art 2026 intégré +- [ ] **Dockerfile → Gemini** +- [ ] Build + push DockerHub +- [ ] Mise à jour template Vast.ai +- [ ] Provisioning script final +- [ ] **Configuration Open WebUI → Claude** +- [ ] **Tools AudioCraft/Foley/TTS → Claude** +- [ ] **System Prompts → Claude** +- [ ] Tests utilisateur \ No newline at end of file