Hub documentation

Modo de desenvolvimento do Spaces: desenvolvimento sem atritos em Spaces

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Modo de desenvolvimento do Spaces: desenvolvimento sem atritos em Spaces

O Modo de Desenvolvimento do Spaces faz parte dos planos PRO ou Team & Enterprise.

Spaces Modo de Desenvolvimento

O Dev Mode do Spaces é um recurso que facilita o depuramento do seu aplicativo e torna a iteração em Spaces mais rápida.

Sempre que você faz commit de algumas alterações no repositório do seu Space, a imagem Docker subjacente é reconstruída e, em seguida, uma nova máquina virtual é provisionada para hospedar o novo container.

O Modo de Desenvolvimento permite que você atualize seu Space muito mais rapidamente, substituindo a imagem Docker.

A imagem Docker do Dev Mode inicia sua aplicação como um sub-processo, permitindo que você a reinicie sem parar o próprio contêiner do Space. Ela também inicia um servidor SSH (para editores e terminais locais) e um servidor VS Code (para o VS Code Web no produto) em segundo plano, para que você possa se conectar ao Space.

A capacidade de se conectar ao Space em execução libera vários casos de uso:

  • Você pode fazer alterações no código do aplicativo sem que o Space precise ser reconstruído a cada vez
  • Você pode depurar um aplicativo em execução e monitorar recursos ao vivo

No geral, isso torna o desenvolvimento e a experimentação com Spaces muito mais rápidos, pois elimina a fase de reconstrução da imagem Docker.

Interface

Quando o Modo de Desenvolvimento é ativado no seu Space, você deve ver um modal como o seguinte.

screenshot of the dev mode controls interface.

O aplicativo não reinicia automaticamente quando você altera o código. Para que suas alterações apareçam no Space, você precisa usar o botão Refresh, que reiniciará o aplicativo.

Se você estiver usando o Gradio SDK ou se sua aplicação for baseada em Python, observe que os requisitos não são instalados automaticamente. Você precisará executar manualmente o `pip install` a partir do VS Code ou do SSH.

Conectando

O Dev Mode expõe o Space em execução como um host SSH padrão. O VS Code e qualquer outro editor se conectam por meio desse mesmo endpoint SSH.

SSH

Quando o Dev Mode estiver em execução, conecte-se com:

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

O subdomínio é exibido na janela de controles do Modo de Desenvolvimento. Você também pode obtê-lo programaticamente:

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

O CLI do Hugging Face pode resolver o subdomínio e abrir a sessão para você:

# 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

Pass --auto para habilitar o Dev Mode sem solicitar confirmação, caso ele ainda não esteja em execução. Consulte a referência da CLI hf spaces ssh para a lista completa de opções.

Você precisará adicionar a chave pública SSH da sua máquina em sua conta de usuário para poder se conectar ao Space usando SSH. Consulte a documentação de Git over SSH para instruções mais detalhadas.

VS Code

Você também pode usar uma instalação local do VS Code para se conectar ao contêiner do Space. Para isso, instale a extensão Remote - SSH e conecte-se ao mesmo host <space-subdomain>@ssh.hf.space.

Persistindo alterações

As alterações que você faz quando o Modo de Desenvolvimento está ativado não são persistidas automaticamente no repositório do Space. Por padrão, elas serão descartadas quando o Modo de Desenvolvimento for desativado ou quando o Space entrar em modo de espera.
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

O modal exibirá um aviso se você tiver alterações não commitadas ou não pushadas no Space:

screenshot of the dev mode controls interface.

Ativando o Modo de Desenvolvimento

Você pode ativar o Dev Mode no seu Space pela interface web ou pela API.

Via a API

Você pode alternar o Modo de Desenvolvimento programaticamente:

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

{
  "enabled": true
}

Pela 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.

Você também pode criar um Space com o modo de desenvolvimento ativado:

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

Limitações

O Dev Mode não está disponível no momento para Spaces estáticos. Spaces Docker também possuem alguns requisitos adicionais.

Espaços do Docker

O Dev Mode é suportado para Spaces do Docker. No entanto, seu Space precisa estar em conformidade com as seguintes regras para que o Dev Mode funcione corretamente.

  1. Os seguintes pacotes devem ser instalados:
  • bash (necessário para estabelecer conexões SSH)
  • curl, wget e procps (necessários pelo processo do servidor do VS Code)
  • git e git-lfs para poder commitar e enviar alterações do seu ambiente de Dev Mode
  1. O código da sua aplicação deve estar localizado na pasta /app para que o daemon do Dev Mode consiga detectar alterações.

  2. A pasta /app deve ser propriedade do usuário com uid 1000 para permitir que você faça alterações no código.

  3. O Dockerfile deve conter uma instrução CMD para inicialização. Consulte a documentação do Docker sobre a instrução CMD para mais detalhes.

O Dev Mode funciona bem quando a imagem base é baseada em debian (por exemplo, ubuntu).

Distribuições Linux mais exóticas (por exemplo, alpine) não são testadas e o Dev Mode não é garantido para funcionar nelas.

Exemplo de Dockerfiles compatíveis

Este é um exemplo de um Dockerfile compatível com o Spaces Dev Mode.

Ele instala os pacotes necessários com apt-get, além de alguns extras para conveniência do desenvolvedor (a saber: top, vim e nano). Em seguida, ele inicia uma aplicação NodeJS a partir de /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"]

Existem vários exemplos de Spaces Docker compatíveis com o Dev Mode nesta organização. Sinta-se à vontade para duplicá-los no seu namespace!

Exemplo de aplicativo Python (servidor HTTP FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

Exemplo de aplicativo JavaScript (servidor HTTP Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

Feedback

Você pode compartilhar seu feedback sobre o Spaces Dev Mode diretamente no HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions

Update on GitHub