Hub documentation

Mode développeur Spaces : un développement sans accroc dans Spaces

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.

screenshot of the dev mode controls interface.

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.

Si vous utilisez le SDK Gradio, ou si votre application est basée sur Python, notez que les dépendances ne sont pas installées automatiquement. Vous devrez exécuter manuellement pip install depuis VS Code ou SSH.

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_ed25519

Passez --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

Les modifications apportées lorsque le mode Dev est activé ne sont pas enregistrées automatiquement dans le dépôt de l’espace. Par défaut, elles seront perdues lorsque le mode Dev est désactivé ou lorsque l’espace passe en veille.
If you wish to persist changes made while Dev Mode is enabled, you need to use `git` from inside the Space container (using VS Code or SSH). For example:
# 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 push

La fenêtre modale affichera un avertissement si vous avez des modifications non commitées ou non poussées dans le Space :

screenshot of the dev mode controls interface.

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

screenshot of the dev mode toggle from the contextual menu.
screenshot of the dev mode toggle from the Space settings.
screenshot of the dev mode toggle from the Space logs.

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

screenshot of the dev mode toggle from the Space creation page.

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.

  1. Les paquets suivants doivent être installés :
  • bash (nécessaire pour établir des connexions SSH)
  • curl, wget et procps (nécessaires par le processus du serveur VS Code)
  • git et git-lfs pour pouvoir committer et pousser les modifications depuis votre environnement Dev Mode
  1. Votre code d'application doit être situé dans le dossier /app pour que le démon du mode Dev puisse détecter les modifications.

  2. Le dossier /app doit appartenir à l'utilisateur avec l'uid 1000 pour vous permettre d'apporter des modifications au code.

  3. Le Dockerfile doit contenir une instruction CMD pour le démarrage. Consultez la documentation de Docker sur l’instruction CMD pour 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