Hub documentation

Modo de desarrollo de Spaces: desarrollo sin interrupciones en Spaces

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Modo de desarrollo de Spaces: desarrollo sin interrupciones en Spaces

El modo de desarrollo de Spaces forma parte de los planes PRO o Team & Enterprise.

Modo de desarrollo de Spaces

Spaces Dev Mode es una función que facilita la depuración de tu aplicación y agiliza la iteración en Spaces.

Cada vez que envías cambios a tu repositorio de Space, la imagen de Docker subyacente se reconstruye y, a continuación, se aprovisiona una nueva máquina virtual para alojar el nuevo contenedor.

El modo de desarrollo te permite actualizar tu Space mucho más rápido al reemplazar la imagen de Docker.

La imagen de Docker de Dev Mode inicia tu aplicación como un subproceso, lo que te permite reiniciarla sin detener el contenedor del Space. También inicia un servidor SSH (para editores y terminales locales) y un servidor de VS Code (para VS Code Web dentro del producto) en segundo plano, para que puedas conectarte al Space.

La capacidad de conectarse al Space en ejecución habilita varios casos de uso:

  • Puedes realizar cambios en el código de la aplicación sin que el Space se reconstruya cada vez
  • Puedes depurar una aplicación en ejecución y monitorear los recursos en tiempo real

En general, agiliza el desarrollo y la experimentación con Spaces al omitir la fase de reconstrucción de la imagen de Docker.

Interfaz

Una vez que el modo de desarrollo esté habilitado en tu Space, deberías ver un modal como el siguiente.

screenshot of the dev mode controls interface.

La aplicación no se reinicia automáticamente cuando se modifica el código. Para que los cambios se reflejen en el Space, es necesario usar el botón Refresh, que reiniciará la aplicación.

Si estás usando el SDK de Gradio o tu aplicación está basada en Python, ten en cuenta que los requisitos no se instalan automáticamente. Deberás ejecutar pip install manualmente desde VS Code o SSH.

Conexión

Dev Mode expone el Space en ejecución como un host SSH estándar. VS Code y cualquier otro editor se conectan a través de ese mismo punto final SSH.

SSH

Una vez que el modo Dev esté en ejecución, conéctate con:

ssh <space-subdomain>@ssh.hf.space

El subdominio se muestra en el modal de controles de modo de desarrollo. También puede obtenerlo de forma programática:

from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)

La CLI de Hugging Face puede resolver el subdominio y abrir la sesión por ti:

# 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

Pasa --auto para habilitar el modo Dev sin solicitar confirmación si no está en ejecución. Consulta la referencia de la CLI hf spaces ssh para la lista completa de opciones.

Deberás añadir la clave pública SSH de tu máquina a tu cuenta de usuario para poder conectar al Space mediante SSH. Consulta la documentación de Git over SSH para obtener instrucciones más detalladas.

VS Code

También puedes usar una instalación local de VS Code para conectarte al contenedor del Space. Para ello, instala la extensión Remote - SSH y conéctate al mismo host <space-subdomain>@ssh.hf.space.

Persistir cambios

Los cambios que realices cuando el modo de desarrollo está habilitado no se guardan automáticamente en el repositorio del Space. De forma predeterminada, se descartarán cuando el modo de desarrollo se deshabilite o cuando el Space entre en modo de suspensión.
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

El modal mostrará una advertencia si tienes cambios sin confirmar o sin enviar en el Space:

screenshot of the dev mode controls interface.

Activar el modo de desarrollo

Puedes activar el modo de desarrollo en tu Space desde la interfaz web o a través de la API.

A través de la API

Puede alternar el modo de desarrollo de forma programática:

POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}

{
  "enabled": true
}

A través de la interfaz 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.

También puedes crear un Space con el modo de desarrollo habilitado:

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

Limitaciones

Dev Mode no está disponible actualmente para Spaces estáticos. Los Spaces de Docker también tienen algunos requisitos adicionales.

Espacios de Docker

El modo de desarrollo se admite para los Espacios de Docker. Sin embargo, tu Espacio debe cumplir con las siguientes reglas para que el modo de desarrollo funcione correctamente.

  1. Deben instalarse los siguientes paquetes:
  • bash (necesario para establecer conexiones SSH)
  • curl, wget y procps (requeridos por el proceso del servidor de VS Code)
  • git y git-lfs para poder confirmar y enviar cambios desde tu entorno de Dev Mode
  1. El código de su aplicación debe estar ubicado en la carpeta /app para que el daemon de Dev Mode pueda detectar los cambios.

  2. La carpeta /app debe pertenecer al usuario con uid 1000 para permitirte realizar cambios en el código.

  3. El Dockerfile debe contener una instrucción CMD para el inicio. Consulta la documentación de Docker sobre la instrucción CMD para obtener más detalles.

Dev Mode funciona bien cuando la imagen base es de tipo debian (por ejemplo, ubuntu).

Las distribuciones de Linux más exóticas (por ejemplo, alpine) no se prueban y no se garantiza que el modo de desarrollo funcione en ellas.

Ejemplo de Dockerfiles compatibles

Este es un ejemplo de un Dockerfile compatible con el modo de desarrollo de Spaces.

Instala los paquetes necesarios con apt-get, junto con algunos más para la comodidad del desarrollador (específicamente: top, vim y nano). A continuación, inicia una aplicación de NodeJS desde /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"]

Hay varios ejemplos de Docker Spaces compatibles con Dev Mode en esta organización. ¡No dudes en duplicarlos en tu espacio de nombres!

Ejemplo de aplicación en Python (servidor HTTP de FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

Ejemplo de aplicación en JavaScript (servidor HTTP de Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

Comentarios

Puedes compartir tu opinión sobre Spaces Dev Mode directamente en HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions

Update on GitHub