5.6 KiB
5.6 KiB
🎙️ 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.
1. Architecture générale
[Utilisateur navigateur]
↓
[Open WebUI — port 3000]
↓
[Ollama — Mistral Medium]
↓ (Tools/Functions)
┌────┴────┬──────────┐
[AudioCraft] [ComfyUI] [Code]
port 7860 port 8188
2. Pile logicielle
| Couche | Technologie | Rôle | Port |
|---|---|---|---|
| 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 |
3. Image Docker de base
Nom cible : nicoboy/studio-ai:latest
Contenu de l'image (sans les modèles)
FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04
# Python 3.11
RUN add-apt-repository ppa:deadsnakes/ppa && \
apt-get install -y python3.11 python3.11-venv python3.11-distutils
# Dépendances système
RUN apt-get install -y \
ffmpeg libsndfile1 sox \
git wget curl nano screen \
nodejs npm
# pip pour Python 3.11
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
# Frameworks IA
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
# Open WebUI
RUN python3.11 -m pip install open-webui
# Ollama
RUN curl -fsSL https://ollama.ai/install.sh | sh
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
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)
# 1. Télécharger les modèles Ollama
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
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
7. Configuration Open WebUI (partie délicate — à faire ensemble)
⚠️ Cette section sera configurée manuellement après déploiement.
7.1 Connexion Ollama
- URL :
http://localhost:11434 - Modèles : Mistral (chat), CodeLlama (code)
7.2 Tools à créer (Functions Open WebUI)
generate_audio(prompt, duration, type)→ appelle AudioCraft port 7860generate_image(prompt, steps, width, height)→ appelle ComfyUI port 8188generate_code(prompt, language)→ appelle CodeLlama via Ollama
7.3 System Prompt de l'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
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)
- 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
# 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
- Python 3.11 obligatoire — Open WebUI refuse Python 3.10
- Ne pas inclure les modèles dans l'image — trop lourds, dans le provisioning script
- L'image doit être sur DockerHub public pour que Vast.ai puisse la télécharger
- CUDA 12.1 — compatible A4000 et RTX 4060 Ti
- Tester le build avec
docker build -t nicoboy/studio-ai .avant de pusher