Hub documentation
Spaces Dev Mode: Spacesでのシームレスな開発
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を有効にすると、次のようなモーダルが表示されるはずです。

コードを変更しても、アプリケーションは自動的に再起動されません。変更をSpaceに反映するには、アプリを再起動するRefreshボタンを使用する必要があります。
接続
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_ed25519Dev Mode がまだ実行されていない場合に、プロンプトなしで有効にするには --auto を渡します。すべてのオプションについては、hf spaces ssh CLI リファレンスを参照してください。
SSH を使用して Space に接続するには、ユーザーアカウントにマシンの SSH 公開鍵を追加する必要があります。 より詳細な手順については、Git over SSHのドキュメントを参照してください。
VS Code
VS Codeのローカルインストール版を使用して、Spaceのコンテナに接続することもできます。そのためには、Remote - SSH拡張機能をインストールし、同じ<space-subdomain>@ssh.hf.spaceホストに接続してください。
変更の永続化
# 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 pushSpaceに未コミットまたは未プッシュの変更がある場合、モーダルに警告が表示されます:

開発モードの有効化
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インターフェース経由



devモードを有効にしてSpaceを作成することもできます:

制限事項
Dev Mode は現在、静的な Spaces では利用できません。Docker Spaces には追加の要件もあります。
Docker Spaces
Dev ModeはDocker Spacesでサポートされています。ただし、Dev Modeが正しく動作するには、Spaceが以下のルールに準拠している必要があります。
- 以下のパッケージをインストールする必要があります:
bash(SSH接続を確立するために必要)curl、wget、procps(VS Code サーバープロセスに必要)- Dev Mode 環境から変更をコミットおよびプッシュできるように、
gitとgit-lfs
Dev Mode デーモンが変更を検出できるようにするには、アプリケーションコードを
/appフォルダに配置する必要があります。コードの変更を許可するために、
/appフォルダーは uid が1000のユーザーによって所有されている必要があります。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