--- 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 : ```bash npm install npm start ``` Le serveur écoute par défaut sur le port `7860`, compatible Hugging Face Spaces. Variables optionnelles : ```bash PORT=7860 DB_PATH=./data/ai-studio.sqlite ``` ## Utilisation de l’interface 1. Ouvre le Space. 2. Crée un compte ou connecte-toi. 3. Enregistre ton token Hugging Face dans la section **Token Hugging Face**. 4. Recherche un modèle ou un dataset Hugging Face. 5. Ajoute une machine GPU avec son URL ngrok. 6. Lance un worker sur la machine GPU avec le worker token généré. 7. 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 ```bash pip install -r worker/requirements.txt ``` Pour Google Colab, installe aussi ngrok : ```bash pip install pyngrok ``` ### Exemple Google Colab ```python !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 : ```bash 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 : ```http ngrok-skip-browser-warning: true ``` ## Entraînement supporté Le worker supporte un fine-tuning LoRA/PEFT avec Hugging Face pour : - `text-generation` - `instruction-tuning` - `text-classification` Exemples de modèles : ```text HuggingFaceTB/SmolLM2-135M-Instruct Qwen/Qwen2.5-0.5B-Instruct ``` Exemples de datasets : ```text 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 ```text . ├── 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 : 1. ouvrir le notebook dans Colab, 2. remplacer `SERVER_URL` et `WORKER_TOKEN`, 3. exécuter les cellules dans l’ordre, 4. copier l’URL ngrok si nécessaire, 5. 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.