Actualiser ARCHITECTURE-STUDIO-AI.md

This commit is contained in:
2026-02-24 09:18:43 +00:00
parent c27b74d75c
commit fef41695ab

View File

@ -1,263 +1,426 @@
# 🎙️ Studio IA Multimodal — Architecture & Spécifications # 🎙️ Studio IA Multimodal — Architecture & Spécifications
## Version 2026 — État de l'art ## Version 3 — VM Vast.ai + Docker Compose
--- ---
## 1. Architecture générale ## 1. Principe général
Sur Vast.ai, utiliser le mode **VM** (Virtual Machine) au lieu du mode Container.
Cela donne un accès root complet à une vraie machine, avec Docker Engine installé nativement.
Chaque modèle IA tourne dans son propre container Docker, orchestré par Docker Compose.
``` ```
[Utilisateur navigateur] ┌─────────────────────────────────────────────────┐
VM Vast.ai (RTX A4000 16Go / 130Go SSD) │
[Open WebUI — port 3000] │ │
┌─────────────┐ ┌─────────────┐ │
[Ollama — Mistral Medium] │ │ open-webui │ │ ollama │ │
↓ (Tools/Functions) :3000 │ │ :11434 │ │
┌────┴────┬────────────────────┐ └──────┬──────┘ └─────────────┘ │
[Audio] [Voix] [Foley] [Image] │ │ Tools API │
port 7860 port 7861 port 7862 port 8188 │ ┌──────┴──────────────────────────────┐ │
│ │ Docker Network │ │
│ └──────┬──────┬──────┬──────┬─────────┘ │
│ ┌──────┴─┐ ┌──┴───┐ ┌┴─────┐ ┌──────┐ ┌─────┐ │
│ │ace-step│ │heart │ │zonos │ │index │ │huny │ │
│ │ :7860 │ │:7861 │ │:7862 │ │:7863 │ │:7864│ │
│ └────────┘ └──────┘ └──────┘ └──────┘ └─────┘ │
│ ┌──────────────────┐ │
│ │ comfyui │ │
│ │ :8188 │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────┘
``` ```
--- ---
## 2. Pile logicielle — État de l'art 2026 ## 2. Template Vast.ai — Mode VM
### 🎵 Génération Musicale | Paramètre | Valeur |
| Modèle | Forces | VRAM | Vitesse | |---|---|
|---|---|---|---| | **Type** | VM (Virtual Machine) |
| **Heart Mula** (Jan 2026) ⭐ | Morceaux 6 min, structure complète, qualité Suno | 12-16 Go | Lente | | **GPU** | RTX A4000 16 Go |
| **ACE-Step 1.5** | Ultra-rapide, cohérence harmonique, idéal novices | 8-12 Go | Très rapide | | **Disk** | 130 Go minimum (200 Go recommandé) |
| ~~MusicGen (Meta)~~ | Boucles 30s seulement — dépassé | 8 Go | Rapide | | **Launch mode** | VM |
| **OS** | Ubuntu 22.04 |
> **Choix recommandé :** ACE-Step 1.5 pour les novices (rapidité), Heart Mula pour la qualité maximale | **PROVISIONING_SCRIPT** | URL Gitea → installe Docker + lance compose |
--- ---
### 🎤 Voix Off (TTS) ## 3. Structure du dépôt Gitea
| 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 VASTAI-STUDIO-AUDIO/
> - IndexTTS-2 pour la sync animation et le lip-sync ├── docker-compose.yml ← Orchestration principale
├── provisioning_script.sh ← Installation Docker + lancement
├── .env ← Variables (ports, tokens...)
├── services/
│ ├── open-webui/
│ │ └── Dockerfile
│ ├── ace-step/
│ │ ├── Dockerfile
│ │ └── server.py
│ ├── heart-mula/
│ │ ├── Dockerfile
│ │ └── server.py
│ ├── zonos/
│ │ ├── Dockerfile
│ │ └── server.py
│ ├── indextts/
│ │ ├── Dockerfile
│ │ └── server.py
│ ├── hunyuan-foley/
│ │ ├── Dockerfile
│ │ └── server.py
│ └── comfyui/
│ └── Dockerfile
└── models/ ← Scripts de téléchargement
├── download_audio.sh
├── download_tts.sh
└── download_image.sh
```
--- ---
### 🔊 Bruitages & Foley ## 4. docker-compose.yml
| 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 ```yaml
version: '3.8'
networks:
studio-network:
driver: bridge
volumes:
ollama-data:
openwebui-data:
models-audio:
models-image:
models-tts:
outputs:
services:
# ─── INTERFACE & LLM ───────────────────────────
ollama:
image: ollama/ollama:latest
container_name: ollama
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- ollama-data:/root/.ollama
ports:
- "11434:11434"
networks:
- studio-network
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
depends_on:
- ollama
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- ENABLE_SIGNUP=true
volumes:
- openwebui-data:/app/backend/data
ports:
- "3000:8080"
networks:
- studio-network
restart: unless-stopped
# ─── GÉNÉRATION MUSICALE ───────────────────────
ace-step:
build: ./services/ace-step
container_name: ace-step
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- models-audio:/models
- outputs:/outputs
ports:
- "7860:7860"
networks:
- studio-network
restart: unless-stopped
heart-mula:
build: ./services/heart-mula
container_name: heart-mula
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- models-audio:/models
- outputs:/outputs
ports:
- "7861:7861"
networks:
- studio-network
restart: unless-stopped
# ─── VOIX OFF ──────────────────────────────────
zonos:
build: ./services/zonos
container_name: zonos
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- models-tts:/models
- outputs:/outputs
ports:
- "7862:7862"
networks:
- studio-network
restart: unless-stopped
indextts:
build: ./services/indextts
container_name: indextts
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- models-tts:/models
- outputs:/outputs
ports:
- "7863:7863"
networks:
- studio-network
restart: unless-stopped
# ─── FOLEY ─────────────────────────────────────
hunyuan-foley:
build: ./services/hunyuan-foley
container_name: hunyuan-foley
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- models-audio:/models
- outputs:/outputs
ports:
- "7864:7864"
networks:
- studio-network
restart: unless-stopped
# ─── GÉNÉRATION IMAGE ──────────────────────────
comfyui:
build: ./services/comfyui
container_name: comfyui
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- models-image:/root/ComfyUI/models
- outputs:/outputs
ports:
- "8188:8188"
networks:
- studio-network
restart: unless-stopped
```
--- ---
### 🖼️ Génération Image ## 5. Dockerfile type par service
| Modèle | Forces | VRAM |
|---|---|---|
| **Flux.1** | Meilleure qualité actuelle | 12-16 Go |
| **SDXL** | Rapide, bon écosystème LoRA | 8-12 Go |
--- Chaque service a son propre Dockerfile avec ses dépendances exactes.
Exemple pour ACE-Step :
### 💬 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`
### Dockerfile (à construire avec Gemini)
```dockerfile ```dockerfile
FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 # services/ace-step/Dockerfile
FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
# Python 3.11 RUN apt-get update && apt-get install -y \
RUN apt-get update && \ python3.11 python3.11-pip python3.11-venv \
apt-get install -y software-properties-common && \ ffmpeg libsndfile1 git wget
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 \
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 RUN python3.11 -m pip install --upgrade pip
# PyTorch CUDA 12.1 # Dépendances spécifiques ACE-Step
RUN python3.11 -m pip install \ RUN python3.11 -m pip install \
torch torchvision torchaudio \ torch==2.2.0 torchaudio==2.2.0 \
--index-url https://download.pytorch.org/whl/cu121 --index-url https://download.pytorch.org/whl/cu121
# Open WebUI RUN python3.11 -m pip install ace-step gradio fastapi uvicorn
RUN python3.11 -m pip install open-webui
# Ollama COPY server.py /app/server.py
RUN curl -fsSL https://ollama.ai/install.sh | sh WORKDIR /app
# Dépendances audio communes EXPOSE 7860
RUN python3.11 -m pip install \ CMD ["python3.11", "server.py"]
gradio \
fastapi \
uvicorn \
scipy \
soundfile \
transformers \
accelerate \
diffusers
# ComfyUI dépendances
RUN python3.11 -m pip install \
einops \
kornia \
spandrel
WORKDIR /root
``` ```
### ⚠️ Points critiques pour Gemini Même structure pour chaque service, avec les versions exactes requises par chaque modèle.
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`
--- ---
## 5. Provisioning Script (1er lancement ~30-45 min) ## 6. Provisioning Script VM
```bash ```bash
#!/bin/bash #!/bin/bash
# =============================================================
# Studio IA — Provisioning Script VM Vast.ai
# =============================================================
set -eo pipefail set -eo pipefail
# --- MUSIQUE --- echo "🚀 Installation de Docker..."
# ACE-Step 1.5 curl -fsSL https://get.docker.com | bash
pip install ace-step systemctl enable docker
# Heart Mula via ComfyUI (custom node) systemctl start docker
git clone https://github.com/[repo]/heart-mula /root/ComfyUI/custom_nodes/heart-mula
# --- VOIX OFF --- echo "🎮 Installation NVIDIA Container Toolkit..."
# Zonos curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
pip install zonos gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
# IndexTTS-2 curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
git clone https://github.com/index-tts/indextts /root/indextts sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
pip install -r /root/indextts/requirements.txt tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt-get update && apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
# --- FOLEY --- echo "📦 Clonage du dépôt Studio IA..."
# HunyuanVideo-Foley git clone https://git.syoul.fr/nicoboy/VASTAI-STUDIO-AUDIO.git /root/studio-ai
git clone https://github.com/Tencent/HunyuanVideo-Foley /root/hunyuan-foley cd /root/studio-ai
pip install -r /root/hunyuan-foley/requirements.txt
# --- IMAGES --- echo "📥 Téléchargement des modèles..."
git clone https://github.com/comfyanonymous/ComfyUI /root/ComfyUI bash models/download_audio.sh
pip install -r /root/ComfyUI/requirements.txt bash models/download_tts.sh
# Télécharger Flux.1 bash models/download_image.sh
wget -P /root/ComfyUI/models/checkpoints/ [URL_FLUX1]
# --- LLM --- echo "🏗️ Build et lancement des containers..."
ollama serve & docker compose up -d --build
sleep 5
ollama pull mistral
ollama pull codellama
# --- LANCEMENT DES SERVICES --- echo ""
screen -dmS openwebui open-webui serve --port 3000
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 !" echo "✅ Studio IA prêt !"
echo " Open WebUI → http://[IP]:3000"
echo " ComfyUI → http://[IP]:8188"
echo " ACE-Step → http://[IP]:7860"
``` ```
--- ---
## 6. Configuration Open WebUI (à faire avec Claude) ## 7. Modèles — État de l'art 2026
> Cette partie sera traitée après le build Docker. ### 🎵 Musique
| Modèle | VRAM | Qualité | Vitesse |
|---|---|---|---|
| **ACE-Step 1.5** | 8-12 Go | ⭐⭐⭐⭐ | Très rapide |
| **Heart Mula** | 12-16 Go | ⭐⭐⭐⭐⭐ | Lente |
### 6.1 Tools à créer ### 🎤 Voix Off
- `generate_music(prompt, duration, model)` → ACE-Step ou Heart Mula | Modèle | VRAM | Spécialité |
- `generate_voice(text, emotion, duration)` → Zonos ou IndexTTS-2 |---|---|---|
- `generate_foley(video_path, prompt)` → HunyuanVideo-Foley | **Zonos-v0.1** | 8-12 Go | Émotion, clone voix 10s, 44kHz |
- `generate_image(prompt, width, height)` → ComfyUI/Flux.1 | **IndexTTS-2** | 8 Go | Sync animation, contrôle durée ms |
- `generate_code(prompt, language)` → CodeLlama
### 6.2 System Prompt assistant ### 🔊 Foley
``` | Modèle | VRAM | Spécialité |
Tu es un assistant créatif expert en production multimédia. |---|---|---|
Tu guides les novices et utilises les outils appropriés : | **HunyuanVideo-Foley** | 12-16 Go | Analyse vidéo → son synchronisé |
- 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
Tu poses des questions précises avant de générer, ### 🖼️ Image
et tu proposes des ajustements après chaque création. | Modèle | VRAM | Qualité |
``` |---|---|---|
| **Flux.1** | 12-16 Go | ⭐⭐⭐⭐⭐ |
| **SDXL** | 8-12 Go | ⭐⭐⭐⭐ |
--- ---
## 7. Estimation disque production ## 8. Estimation disque
| Élément | Taille | | Élément | Taille |
|---|---| |---|---|
| Image Docker | ~15 Go | | Images Docker (tous services) | ~20 Go |
| Modèles LLM (Mistral + CodeLlama) | ~12 Go | | Modèles LLM (Mistral + CodeLlama) | ~12 Go |
| Modèles Audio (ACE-Step, Heart Mula, Zonos, IndexTTS-2) | ~15 Go | | Modèles Audio (ACE-Step, Heart Mula) | ~10 Go |
| Modèles TTS (Zonos, IndexTTS-2) | ~8 Go |
| HunyuanVideo-Foley | ~8 Go | | HunyuanVideo-Foley | ~8 Go |
| ComfyUI + Flux.1 | ~15 Go | | ComfyUI + Flux.1 + SDXL | ~20 Go |
| Données utilisateurs + outputs | ~10 Go | | Outputs utilisateurs | ~10 Go |
| **Total** | **~75 Go** | | **Total** | **~88 Go** |
> ✅ 130 Go = confortable > **130 Go = juste suffisant**
> ⚠️ Si on ajoute SDXL + LoRA : prévoir 200 Go > ⭐ **200 Go = recommandé pour être à l'aise**
--- ---
## 8. Checklist projet ## 9. Configuration Open WebUI (à faire avec Claude)
- [x] Architecture définie ### 9.1 Connexions à configurer
- Ollama : `http://ollama:11434`
- ACE-Step : `http://ace-step:7860`
- Heart Mula : `http://heart-mula:7861`
- Zonos : `http://zonos:7862`
- IndexTTS : `http://indextts:7863`
- HunyuanVideo : `http://hunyuan-foley:7864`
- ComfyUI : `http://comfyui:8188`
> Sur le réseau Docker interne, les services se parlent par nom de container.
### 9.2 Tools à créer (Functions Open WebUI)
- `generate_music(prompt, duration, model)`
- `generate_voice(text, emotion, speaker_sample)`
- `generate_foley(video_path, prompt)`
- `generate_image(prompt, width, height, model)`
- `generate_code(prompt, language)`
### 9.3 System Prompt
```
Tu es un assistant créatif expert en production multimédia.
Tu disposes des outils suivants :
- generate_music : composition musicale (ACE-Step ou Heart Mula)
- generate_voice : voix off avec contrôle émotionnel (Zonos ou IndexTTS)
- generate_foley : bruitage synchronisé vidéo (HunyuanVideo-Foley)
- generate_image : génération d'images (Flux.1 ou SDXL)
- generate_code : écriture de code (CodeLlama)
Avant chaque génération, tu clarifies la demande.
Après chaque génération, tu proposes des ajustements.
```
---
## 10. Checklist projet
- [x] Architecture définie (VM + Docker Compose)
- [x] État de l'art 2026 intégré - [x] État de l'art 2026 intégré
- [ ] **Dockerfile → Gemini** - [ ] **Dockerfiles × 7 → Gemini**
- [ ] Build + push DockerHub - [ ] **docker-compose.yml final → Gemini**
- [ ] Mise à jour template Vast.ai - [ ] Build + push DockerHub (image par service)
- [ ] Provisioning script final - [ ] Test VM Vast.ai + Docker Compose
- [ ] Scripts téléchargement modèles
- [ ] **Configuration Open WebUI → Claude** - [ ] **Configuration Open WebUI → Claude**
- [ ] **Tools AudioCraft/Foley/TTS → Claude** - [ ] **Tools API (Functions) → Claude**
- [ ] **System Prompts → Claude** - [ ] **System Prompts → Claude**
- [ ] Tests utilisateur - [ ] Tests utilisateur finaux
---
## 11. Avantages de cette architecture
| Critère | Venv unique | VM + Docker Compose |
|---|---|---|
| Isolation dépendances | ⚠️ Partielle | ✅ Totale |
| Conflits de versions | ❌ Fréquents | ✅ Impossibles |
| Mise à jour d'un modèle | ❌ Risqué | ✅ Indépendante |
| Un service plante | ❌ Tout plante | ✅ Les autres continuent |
| Maintenabilité | ❌ Difficile | ✅ Simple |
| Coût Vast.ai | ✅ Une instance | ✅ Une VM |