Hub documentation
Mode développeur Spaces : un développement sans accroc dans Spaces
Mode développeur Spaces : un développement sans accroc dans Spaces
Le mode développeur de Spaces fait partie des plans PRO ou Team & Enterprise.
Mode développeur Spaces
Spaces Dev Mode est une fonctionnalité qui facilite le débogage de votre application et accélère l’itération sur les Spaces.
Chaque fois que vous commitez des modifications dans le dépôt de votre Space, l'image Docker sous-jacente est reconstruite, puis une nouvelle machine virtuelle est provisionnée pour héberger le nouveau conteneur.
Le mode Dev vous permet de mettre à jour votre Space beaucoup plus rapidement en remplaçant l'image Docker.
L’image Docker Dev Mode démarre votre application en tant que sous-processus, ce qui vous permet de la redémarrer sans arrêter le conteneur Space lui-même. Elle démarre également un serveur SSH (pour les éditeurs et terminaux locaux) et un serveur VS Code (pour VS Code Web intégré au produit) en arrière-plan, afin que vous puissiez vous connecter au Space.
La possibilité de se connecter à l'espace en cours d'exécution ouvre la voie à plusieurs cas d'usage :
- Vous pouvez apporter des modifications au code de l'application sans que le Space ne soit reconstruit à chaque fois
- Vous pouvez déboguer une application en cours d’exécution et surveiller les ressources en temps réel
Dans l'ensemble, cela accélère considérablement le développement et l'expérimentation sur Spaces en évitant la phase de reconstruction de l'image Docker.
Interface
Une fois le mode Dev activé sur votre Space, vous devriez voir une modale comme celle-ci.

L'application ne redémarre pas automatiquement lorsque vous modifiez le code. Pour que vos modifications apparaissent dans le Space, vous devez utiliser le bouton Refresh qui relancera l'application.
Connexion
Dev Mode expose l’espace en cours d’exécution en tant qu’hôte SSH standard. VS Code et tout autre éditeur se connectent via ce même point de terminaison SSH.
SSH
Une fois le mode Dev en cours d’exécution, connectez-vous avec :
ssh <space-subdomain>@ssh.hf.space
Le sous-domaine est affiché dans la fenêtre modale des contrôles du mode Dev. Vous pouvez également le récupérer de manière programmatique :
from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)Le CLI Hugging Face peut résoudre le sous-domaine et ouvrir la session pour vous :
# SSH into the Space's Dev Mode container
hf spaces ssh username/my-space
# Print the SSH command instead of running it
hf spaces ssh username/my-space --dry-run
# Use a specific identity file
hf spaces ssh username/my-space -i ~/.ssh/id_ed25519Passez --auto pour activer le mode Dev sans demande si celui-ci n’est pas déjà en cours d’exécution. Consultez la référence CLI de hf spaces ssh pour la liste complète des options.
Vous devez ajouter la clé publique SSH de votre machine à votre compte utilisateur pour pouvoir vous connecter à l’Espace via SSH. Consultez la documentation Git via SSH pour des instructions plus détaillées.
VS Code
Vous pouvez également utiliser une installation locale de VS Code pour vous connecter au conteneur du Space. Pour ce faire, installez l’extension Remote - SSH et connectez-vous à l’hôte <space-subdomain>@ssh.hf.space correspondant.
Persister les modifications
# Add changes and commit them
git add .
git commit -m "Persist changes from Dev Mode"
# Push the commit to persist them in the repo
git pushLa fenêtre modale affichera un avertissement si vous avez des modifications non commitées ou non poussées dans le Space :

Activer le mode développeur
Vous pouvez activer le mode Dev sur votre Space depuis l’interface web ou via l’API.
Via l'API
Vous pouvez activer le mode Dev de manière programmatique :
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}
{
"enabled": true
}Via l'interface web



Vous pouvez également créer un Space avec le mode de développement activé :

Limites
Le mode Dev n'est actuellement pas disponible pour les Spaces statiques. Les Spaces Docker ont également des exigences supplémentaires.
Espaces Docker
Le mode Dev est pris en charge pour les Spaces Docker. Toutefois, votre Space doit respecter les règles suivantes pour que le mode Dev fonctionne correctement.
- Les paquets suivants doivent être installés :
bash(nécessaire pour établir des connexions SSH)curl,wgetetprocps(nécessaires par le processus du serveur VS Code)gitetgit-lfspour pouvoir committer et pousser les modifications depuis votre environnement Dev Mode
Votre code d'application doit être situé dans le dossier
/apppour que le démon du mode Dev puisse détecter les modifications.Le dossier
/appdoit appartenir à l'utilisateur avec l'uid1000pour vous permettre d'apporter des modifications au code.Le Dockerfile doit contenir une instruction
CMDpour le démarrage. Consultez la documentation de Docker sur l’instructionCMDpour plus de détails.
Dev Mode fonctionne bien lorsque l'image de base est basée sur debian (par exemple, ubuntu).
Les distributions Linux plus exotiques (par exemple, alpine) ne sont pas testées et le Dev Mode n'est pas garanti de fonctionner sur celles-ci.
Exemple de Dockerfiles compatibles
Voici un exemple de Dockerfile compatible avec le mode Dev de Spaces.
Il installe les packages requis avec apt-get, ainsi que quelques autres pour le confort des développeurs (à savoir : top, vim et nano).
Il démarre ensuite une application NodeJS depuis /app.
FROM node:19-slim
RUN apt-get update && \
apt-get install -y \
bash \
git git-lfs \
wget curl procps \
htop vim nano && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --link ./ /app
RUN npm i
RUN chown 1000 /app
USER 1000
CMD ["node", "index.js"]Plusieurs exemples de Spaces Docker compatibles avec le Dev Mode sont disponibles dans cette organisation. N'hésitez pas à les dupliquer dans votre espace de noms !
Exemple d’application Python (serveur HTTP FastAPI) : https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
Exemple d’application JavaScript (serveur HTTP Express.js) : https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
Retour
Vous pouvez partager vos retours sur Spaces Dev Mode directement sur le HF Hub : https://huggingface.co/spaces/dev-mode-explorers/README/discussions
Update on GitHub