211 lines
5.6 KiB
Markdown
211 lines
5.6 KiB
Markdown
# 🎙️ 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)
|
|
|
|
```dockerfile
|
|
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)
|
|
|
|
```bash
|
|
# 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 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 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)
|
|
|
|
- [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
|
|
|
|
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
|