Actualiser ARCHITECTURE-STUDIO-AI.md

This commit is contained in:
2026-02-23 17:18:16 +00:00
parent 333ca59363
commit 9249348751

View File

@ -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é.
Tu poses des questions précises avant de générer,
et tu proposes des ajustements après chaque création.
```
### 7.4 Modèle JSON Open WebUI (à importer)
> À générer une fois l'instance stable.
---
## 8. Étapes de construction (ordre)
## 7. Estimation disque production
- [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
| É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
---
## 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
```
---
## 10. Points d'attention pour Gemini
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