Hub documentation

Spaces Dev Mode: Spaces에서 원활한 개발

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces Dev Mode: Spaces에서 원활한 개발

Spaces Dev Mode는 PRO 또는 Team & Enterprise 플랜의 일부입니다.

Spaces 개발 모드

Spaces Dev Mode는 애플리케이션 디버깅을 용이하게 하고 Spaces의 반복 개발 속도를 높이는 기능입니다.

Space 저장소에 변경 사항을 커밋할 때마다 기본 Docker 이미지가 다시 빌드되고, 새 컨테이너를 호스팅할 새 가상 머신이 프로비저닝됩니다.

Dev Mode를 사용하면 Docker 이미지를 오버라이드하여 Space를 훨씬 더 빠르게 업데이트할 수 있습니다.

Dev Mode Docker 이미지는 애플리케이션을 서브 프로세스로 시작하여 Space 컨테이너 자체를 중지하지 않고도 애플리케이션을 재시작할 수 있도록 합니다. 또한 로컬 에디터 및 터미널을 위한 SSH 서버와 제품 내 VS Code Web을 위한 VS Code 서버를 백그라운드에서 시작하여 Space에 연결할 수 있습니다.

실행 중인 Space에 연결할 수 있는 기능은 여러 사용 사례를 가능하게 합니다:

  • Space가 매번 다시 빌드되지 않고 앱 코드를 수정할 수 있습니다
  • 실행 중인 애플리케이션을 디버깅하고 리소스를 실시간으로 모니터링할 수 있습니다

전반적으로 Docker 이미지 재빌드 단계를 생략함으로써 Spaces 개발 및 실험 속도를 크게 높여 줍니다.

인터페이스

Space에서 Dev Mode가 활성화되면 다음과 같은 모달이 표시됩니다.

screenshot of the dev mode controls interface.

코드를 변경해도 애플리케이션이 자동으로 재시작되지 않습니다. 변경 사항을 Space에 반영하려면 앱을 재시작하는 Refresh 버튼을 사용해야 합니다.

Gradio SDK를 사용 중이거나 Python 기반의 애플리케이션을 개발 중이라면, 요구 사항(requirements)이 자동으로 설치되지 않는다는 점에 유의하세요. VS Code 또는 SSH에서 pip install을 수동으로 실행해야 합니다.

연결

Dev Mode는 실행 중인 Space를 표준 SSH 호스트로 노출합니다. VS Code를 비롯한 기타 편집기는 동일한 SSH 엔드포인트를 통해 연결됩니다.

SSH

Dev Mode가 실행되면 다음으로 연결합니다:

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

Dev Mode 컨트롤 모달에 서브도메인이 표시됩니다. 프로그래매틱으로 가져올 수도 있습니다:

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

Hugging Face CLI는 서브도메인을 해석하고 세션을 대신 열 수 있습니다:

# 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

Dev Mode가 이미 실행 중이 아니라면 프롬프트 없이 활성화하려면 --auto를 전달하세요. 전체 옵션 목록은 hf spaces ssh CLI 참조를 확인하세요.

SSH를 통해 Space에 연결하려면 사용자 계정에 해당 머신의 SSH 공개 키를 추가해야 합니다. 자세한 지침은 Git over SSH 문서를 참고하세요.

VS Code

VS Code의 로컬 설치 버전으로도 Space 컨테이너에 연결할 수 있습니다. 이를 위해 Remote - SSH 확장 기능을 설치하고 동일한 <space-subdomain>@ssh.hf.space 호스트에 연결하세요.

변경 사항 유지

Dev Mode가 활성화된 상태에서 수행한 변경 사항은 Space 저장소에 자동으로 저장되지 않습니다. 기본적으로 Dev Mode가 비활성화되거나 Space가 sleep 상태로 전환되면 변경 사항이 삭제됩니다.
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

Space에 커밋되지 않거나 푸시되지 않은 변경 사항이 있으면 모달에 경고가 표시됩니다:

screenshot of the dev mode controls interface.

Dev Mode 활성화

웹 인터페이스 또는 API를 통해 Space에서 Dev Mode를 활성화할 수 있습니다.

API를 통해

Dev Mode를 프로그래매틱으로 전환할 수 있습니다:

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

{
  "enabled": true
}

웹 인터페이스를 통해

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.

dev mode가 활성화된 Space를 생성할 수도 있습니다:

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

한계

Dev Mode는 현재 정적 Spaces에서 사용할 수 없습니다. Docker Spaces에는 추가적인 요구 사항이 있습니다.

Docker Spaces

Dev Mode은 Docker Spaces에서 지원됩니다. 그러나 Dev Mode가 정상적으로 작동하려면 Space가 다음 규칙을 준수해야 합니다.

  1. 다음 패키지가 설치되어 있어야 합니다:
  • bash (SSH 연결을 설정하는 데 필요합니다)
  • curl, wget 및 procps (VS Code 서버 프로세스에 필요합니다)
  • Dev Mode 환경에서 변경 사항을 커밋하고 푸시할 수 있도록 git 및 git-lfs
  1. Dev Mode 데몬이 변경 사항을 감지하려면 애플리케이션 코드가 /app 폴더에 위치해야 합니다.

  2. 코드를 수정할 수 있도록 /app 폴더는 uid가 1000인 사용자가 소유해야 합니다.

  3. Dockerfile에는 시작을 위한 CMD 명령이 포함되어야 합니다. CMD 명령에 대한 자세한 내용은 Docker 문서를 참고하세요.

Dev Mode는 기본 이미지가 debian 기반(예: ubuntu)인 경우 잘 작동합니다.

alpine과 같은 더 이색적인 Linux 배포판은 테스트되지 않았으며, 이러한 배포판에서 Dev Mode가 정상적으로 작동하는 것이 보장되지 않습니다.

호환되는 Dockerfile의 예시

Spaces Dev Mode와 호환되는 Dockerfile의 예시입니다.

apt-get를 사용하여 필요한 패키지를 설치하며, 개발 편의를 위한 몇 가지 추가 패키지(구체적으로 top, vim, nano)도 함께 설치합니다. 이후 /app에서 NodeJS 애플리케이션을 시작합니다.

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"]

이 조직에는 Dev Mode와 호환되는 Docker Spaces의 여러 예제가 있습니다. 원하시는 경우, 해당 예제를 자신의 namespace로 복제해 보세요!

Python 앱 예시 (FastAPI HTTP 서버): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

JavaScript 앱 예시 (Express.js HTTP 서버): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

피드백

Spaces Dev Mode에 대한 피드백은 HF Hub에서 직접 공유할 수 있습니다: https://huggingface.co/spaces/dev-mode-explorers/README/discussions

Update on GitHub