Actualiser ARCHITECTURE-STUDIO-AI.md
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user