Actualiser ARCHITECTURE-STUDIO-AI.md
This commit is contained in:
@ -1,9 +1,5 @@
|
|||||||
# 🎙️ Studio IA Multimodal — Architecture & Spécifications
|
# 🎙️ Studio IA Multimodal — Architecture & Spécifications
|
||||||
|
## Version 2026 — État de l'art
|
||||||
## 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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -16,195 +12,252 @@ Interface unifiée pour la génération audio, image, et code, pilotée par un c
|
|||||||
↓
|
↓
|
||||||
[Ollama — Mistral Medium]
|
[Ollama — Mistral Medium]
|
||||||
↓ (Tools/Functions)
|
↓ (Tools/Functions)
|
||||||
┌────┴────┬──────────┐
|
┌────┴────┬──────────┬──────────┐
|
||||||
[AudioCraft] [ComfyUI] [Code]
|
[Audio] [Voix] [Foley] [Image]
|
||||||
port 7860 port 8188
|
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 |
|
| **Heart Mula** (Jan 2026) ⭐ | Morceaux 6 min, structure complète, qualité Suno | 12-16 Go | Lente |
|
||||||
| LLM | Ollama + Mistral | Chat + orchestration outils | 11434 |
|
| **ACE-Step 1.5** | Ultra-rapide, cohérence harmonique, idéal novices | 8-12 Go | Très rapide |
|
||||||
| Audio | AudioCraft (Meta) | MusicGen + AudioGen | 7860 |
|
| ~~MusicGen (Meta)~~ | Boucles 30s seulement — dépassé | 8 Go | Rapide |
|
||||||
| Image | ComfyUI | Stable Diffusion / Flux.1 | 8188 |
|
|
||||||
| Code | Ollama + CodeLlama | Génération de code | 11434 |
|
> **Choix recommandé :** ACE-Step 1.5 pour les novices (rapidité), Heart Mula pour la qualité maximale
|
||||||
| Reverse proxy | Caddy | Routage + HTTPS | 80/443 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 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`
|
**Nom cible :** `nicoboy/studio-ai:latest`
|
||||||
|
|
||||||
### Contenu de l'image (sans les modèles)
|
### Dockerfile (à construire avec Gemini)
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04
|
FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
# Python 3.11
|
# Python 3.11
|
||||||
RUN add-apt-repository ppa:deadsnakes/ppa && \
|
RUN apt-get update && \
|
||||||
apt-get install -y python3.11 python3.11-venv python3.11-distutils
|
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
|
# Dépendances système
|
||||||
RUN apt-get install -y \
|
RUN apt-get install -y \
|
||||||
ffmpeg libsndfile1 sox \
|
ffmpeg libsndfile1 sox \
|
||||||
git wget curl nano screen \
|
git wget curl nano screen \
|
||||||
nodejs npm
|
nodejs npm \
|
||||||
|
libgl1 libglib2.0-0
|
||||||
|
|
||||||
# pip pour Python 3.11
|
# pip pour Python 3.11
|
||||||
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.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 \
|
RUN python3.11 -m pip install \
|
||||||
torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
|
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
|
|
||||||
|
|
||||||
# Open WebUI
|
# Open WebUI
|
||||||
RUN python3.11 -m pip install open-webui
|
RUN python3.11 -m pip install open-webui
|
||||||
|
|
||||||
# Ollama
|
# Ollama
|
||||||
RUN curl -fsSL https://ollama.ai/install.sh | sh
|
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)
|
### ⚠️ Points critiques pour Gemini
|
||||||
- Modèles Ollama (Mistral, CodeLlama) → ~8 Go
|
1. **Python 3.11 obligatoire** — Open WebUI refuse Python 3.10
|
||||||
- Modèles AudioCraft (MusicGen, AudioGen) → ~4 Go
|
2. **Ne pas inclure les modèles** — trop lourds, téléchargés via provisioning script
|
||||||
- Modèles ComfyUI (SDXL, Flux.1) → ~7 Go
|
3. **Image sur DockerHub public** — nécessaire pour Vast.ai
|
||||||
- **Total modèles : ~20 Go**
|
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
|
## 5. Provisioning Script (1er lancement ~30-45 min)
|
||||||
|
|
||||||
| É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)
|
|
||||||
|
|
||||||
```bash
|
```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 mistral
|
||||||
ollama pull codellama
|
ollama pull codellama
|
||||||
|
|
||||||
# 2. Télécharger les modèles AudioCraft
|
# --- LANCEMENT DES SERVICES ---
|
||||||
# (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
|
|
||||||
screen -dmS openwebui open-webui serve --port 3000
|
screen -dmS openwebui open-webui serve --port 3000
|
||||||
screen -dmS audiocraft python /root/audiocraft-api/server.py
|
screen -dmS ollama ollama serve
|
||||||
screen -dmS comfyui python /root/ComfyUI/main.py --listen 0.0.0.0 --port 8188
|
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
|
### 6.1 Tools à créer
|
||||||
- URL : `http://localhost:11434`
|
- `generate_music(prompt, duration, model)` → ACE-Step ou Heart Mula
|
||||||
- Modèles : Mistral (chat), CodeLlama (code)
|
- `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)
|
### 6.2 System Prompt assistant
|
||||||
- `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
|
|
||||||
```
|
```
|
||||||
Tu es un assistant créatif expert.
|
Tu es un assistant créatif expert en production multimédia.
|
||||||
Tu as accès aux outils suivants :
|
Tu guides les novices et utilises les outils appropriés :
|
||||||
- generate_audio : pour créer musique et bruitages
|
- generate_music : composition musicale complète
|
||||||
- generate_image : pour créer des images
|
- generate_voice : voix off avec émotion contrôlée
|
||||||
- generate_code : pour écrire du code
|
- 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 poses des questions précises avant de générer,
|
||||||
tu l'aides à préciser sa demande puis tu utilises
|
et tu proposes des ajustements après chaque création.
|
||||||
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
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 10. Points d'attention pour Gemini
|
## 7. Estimation disque production
|
||||||
|
|
||||||
1. **Python 3.11 obligatoire** — Open WebUI refuse Python 3.10
|
| Élément | Taille |
|
||||||
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
|
| Image Docker | ~15 Go |
|
||||||
4. **CUDA 12.1** — compatible A4000 et RTX 4060 Ti
|
| Modèles LLM (Mistral + CodeLlama) | ~12 Go |
|
||||||
5. **Tester le build** avec `docker build -t nicoboy/studio-ai .` avant de pusher
|
| 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
|
||||||
Reference in New Issue
Block a user