license: mit
title: AI Studio
sdk: docker
emoji: 🌍
colorFrom: red
colorTo: blue
AI Studio
Studio d’entraînement IA multi-utilisateurs avec serveur principal Node.js déployable sur Hugging Face Space, interface web, workers GPU connectés via ngrok, token Hugging Face, recherche de modèles/datasets et suivi matériel en temps réel.
Architecture
- Serveur principal : Node.js + Express + Socket.IO.
- Base locale : SQLite dans
data/ai-studio.sqlite. - Interface : HTML/CSS/JS dans
public/. - Workers GPU : Python dans
worker/. - Connexion worker : le worker expose un serveur HTTP local, ngrok le rend public, puis l’URL ngrok est enregistrée dans l’interface.
- Header ngrok : les requêtes du Space vers les workers incluent
ngrok-skip-browser-warning: true. - Isolation : chaque utilisateur possède ses machines, ses jobs, ses logs et son token HF. Les GPU ne sont pas partagés entre utilisateurs.
Fonctionnalités
- Création de compte et connexion utilisateur.
- Génération de tokens utilisateur et worker.
- Ajout d’une machine GPU avec URL ngrok.
- Suivi matériel :
- GPU,
- VRAM utilisée/libre/totale,
- RAM,
- CPU,
- disque,
- température GPU si disponible.
- Recherche Hugging Face :
- modèles,
- datasets.
- Enregistrement du token HF dans l’interface.
- Lancement d’entraînement depuis l’interface.
- Paramètres :
- modèle,
- dataset,
- tâche,
- epochs,
- batch size,
- learning rate,
- max sequence length,
- LoRA rank/alpha,
- gradient accumulation,
- warmup ratio,
- weight decay,
- logging steps.
- Push du modèle entraîné vers Hugging Face.
- Logs en direct et arrêt de job.
Installation du serveur
Sur ton Hugging Face Space Node.js ou en local :
npm install
npm start
Le serveur écoute par défaut sur le port 7860, compatible Hugging Face Spaces.
Variables optionnelles :
PORT=7860
DB_PATH=./data/ai-studio.sqlite
Utilisation de l’interface
- Ouvre le Space.
- Crée un compte ou connecte-toi.
- Enregistre ton token Hugging Face dans la section Token Hugging Face.
- Recherche un modèle ou un dataset Hugging Face.
- Ajoute une machine GPU avec son URL ngrok.
- Lance un worker sur la machine GPU avec le worker token généré.
- Lance un job d’entraînement depuis l’interface.
Worker GPU
Le worker tourne sur Google Colab, RunPod, Lambda Labs, une machine personnelle, etc.
Installation Python
pip install -r worker/requirements.txt
Pour Google Colab, installe aussi ngrok :
pip install pyngrok
Exemple Google Colab
!pip install -q pyngrok psutil pynvml torch transformers datasets peft accelerate evaluate scikit-learn numpy
from pyngrok import ngrok
public_url = ngrok.connect(8765).public_url
print(public_url)
Copie l’URL affichée dans l’interface AI Studio, puis lance le worker :
python worker.py \
--server-url https://ton-space.hf.space \
--worker-token TON_WORKER_TOKEN \
--ngrok-url https://xxxx-xxxx.ngrok-free.app \
--port 8765
Le serveur Space appellera cette URL ngrok avec :
ngrok-skip-browser-warning: true
Entraînement supporté
Le worker supporte un fine-tuning LoRA/PEFT avec Hugging Face pour :
text-generationinstruction-tuningtext-classification
Exemples de modèles :
HuggingFaceTB/SmolLM2-135M-Instruct
Qwen/Qwen2.5-0.5B-Instruct
Exemples de datasets :
mao-hq/Mao-K12-Chat
tatsu-lab/alpaca
stanfordnlp/imdb
Sécurité
- Les mots de passe sont hashés avec PBKDF2.
- Les tokens utilisateur et worker sont hashés dans SQLite.
- Le token HF est stocké côté serveur et envoyé uniquement au worker lors d’un job.
- Un worker ne peut écrire que dans les jobs de son propriétaire.
- Un utilisateur ne voit que ses machines, ses jobs et ses logs.
- Une machine GPU exécute un seul job à la fois.
Structure
.
├── package.json
├── server.js
├── public
│ ├── index.html
│ ├── style.css
│ └── app.js
├── worker
│ ├── worker.py
│ ├── train_hf.py
│ └── requirements.txt
├── Notebook
│ ├── Colab_AI_Studio_Worker.ipynb
│ └── README.md
└── README.md
Notebook Google Colab
Le notebook Notebook/Colab_AI_Studio_Worker.ipynb permet de lancer rapidement un worker GPU sur Google Colab :
- ouvrir le notebook dans Colab,
- remplacer
SERVER_URLetWORKER_TOKEN, - exécuter les cellules dans l’ordre,
- copier l’URL ngrok si nécessaire,
- vérifier dans l’interface AI Studio que la machine est
online.
Notes importantes
- Le token HF doit avoir les droits nécessaires pour lire les modèles/datasets gated et pousser vers le repository cible.
- Si tu actives Pousser le modèle vers Hugging Face, renseigne un repository de sortie valide, par exemple
ton-user/mon-modele-finetune. - ngrok peut changer d’URL à chaque redémarrage sauf si tu utilises un domaine/statique ngrok. Mets à jour l’URL dans l’interface si elle change.
- Ce projet est une base fonctionnelle. Pour une utilisation publique, ajoute HTTPS, rate limiting, permissions avancées, sauvegardes DB et monitoring.