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 Dev Mode

Spaces Dev Modeは、アプリケーションのデバッグを容易にし、Spacesでの反復開発を高速化する機能です。

Space リポジトリに変更をコミットするたびに、基盤となる Docker イメージが再ビルドされ、その後、新しいコンテナをホストするために新しい仮想マシンがプロビジョニングされます。

Dev Modeでは、Dockerイメージを上書きすることで、Spaceをより迅速に更新できます。

Dev Mode の Docker イメージは、アプリケーションをサブプロセスとして起動します。これにより、Space コンテナ自体を停止せずにアプリケーションを再起動できます。また、バックグラウンドで SSH サーバー(ローカルエディターやターミナル用)と VS Code サーバー(製品内蔵の VS Code Web 用)も起動するため、Space に接続できます。

実行中のSpaceに接続できることで、いくつかの使用例が解放されます:

  • Spaceが毎回再ビルドされることなく、アプリコードに変更を加えることができます
  • 実行中のアプリケーションをデバッグし、リソースをライブで監視できます

全体として、Dockerイメージの再ビルドフェーズをスキップすることで、Spacesでの開発と実験を大幅に高速化します。

インターフェース

SpaceでDev Modeを有効にすると、次のようなモーダルが表示されるはずです。

screenshot of the dev mode controls interface.

コードを変更しても、アプリケーションは自動的に再起動されません。変更をSpaceに反映するには、アプリを再起動するRefreshボタンを使用する必要があります。

Gradio SDK を使用している場合、またはアプリケーションが Python ベースの場合は、依存関係が自動的にインストールされない点にご注意ください。 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 がスリープ状態に移行した場合、これらの変更は破棄されます。
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.

開発モードの有効化

Webインターフェースまたは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
}

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.

devモードを有効にして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)の場合に正常に動作します。

より特殊なLinuxディストリビューション(例:alpine)はテストされておらず、それらで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 の例がいくつかあります。 あなたの名前空間で複製してください!

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