Hub 文件
Spaces 開發模式:Spaces 中的無縫開發
並獲得增強的文件體驗
開始使用
Spaces 開發模式:Spaces 中的無縫開發
Spaces 開發模式是 PRO 或 Team & Enterprise 方案的一部分。
Spaces 開發模式
Spaces 開發模式是一項旨在簡化應用程式偵錯並加速 Spaces 迭代的功能。
每當您向 Space 儲存庫提交變更時,底層的 Docker 映像檔都會被重建,隨後會配置一個新的虛擬機器來託管新的容器。
開發模式允許您透過覆寫 Docker 映像檔來更快地更新您的 Space。
開發模式的 Docker 映像檔會將您的應用程式作為子程序啟動,讓您無需停止 Space 容器本身即可重新啟動它。它還會在背景啟動 SSH 伺服器(供本機編輯器和終端機使用)以及 VS Code 伺服器(供產品內的 VS Code Web 使用),以便您連接到該 Space。
連接到執行中 Space 的能力解鎖了多種使用情境:
- 您可以在無需每次都重建 Space 的情況下更改應用程式代碼。
- 您可以對執行中的應用程式進行偵錯並即時監控資源。
總體而言,它透過跳過 Docker 映像檔重建階段,使 Spaces 的開發和實驗速度快得多。
介面
一旦在您的 Space 上啟用開發模式,您應該會看到類似以下的彈出視窗。

當您更改程式碼時,應用程式不會自動重新啟動。為了讓您的更改出現在 Space 中,您需要使用 Refresh(重新整理)按鈕來重新啟動應用程式。
連線
開發模式將執行中的 Space 公開為標準 SSH 主機。VS Code 和任何其他編輯器都可以透過該 SSH 端點進行連接。
SSH
一旦開發模式執行,請使用以下方式連接:
ssh <space-subdomain>@ssh.hf.space
子網域會顯示在開發模式控制彈出視窗中。您也可以透過程式方式取得它。
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若開發模式尚未執行,請傳遞 --auto 以在不提示的情況下啟用它。請參閱 hf spaces ssh CLI 參考以取得完整的選項列表。
您需要將機器的 SSH 公開金鑰新增至您的使用者帳戶,才能使用 SSH 連接到該 Space。請查看 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 push如果您的 Space 中有未提交或未推送的變更,彈出視窗將顯示警告。

啟用開發模式
您可以透過 Web 介面或 API 在您的 Space 上啟用開發模式。
透過 API
您可以透過程式方式切換開發模式。
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}
{
"enabled": true
}透過 Web 介面



您也可以在建立 Space 時啟用開發模式。

限制
開發模式目前不適用於靜態(Static)Spaces。Docker Spaces 也有一些額外的要求。
Docker Spaces
Docker Spaces 支援開發模式。但是,您的 Space 需要遵守以下規則,開發模式才能正常運作。
- 必須安裝以下套件:
bash(建立 SSH 連線所需)curl、wget和procps(VS Code 伺服器程序所需)git和git-lfs(以便能夠從您的開發模式環境提交和推送變更)
您的應用程式代碼必須位於
/app資料夾中,開發模式守護程序才能偵測到變更。/app資料夾必須由 UID 為1000的使用者擁有,以允許您對代碼進行更改。Dockerfile 必須包含用於啟動的
CMD指令。請參閱 Docker 文件中關於CMD指令的詳細資訊。
當基礎映像檔是 Debian(例如 ubuntu)時,開發模式運作良好。
尚未測試過較特殊的 Linux 發行版(例如 alpine),並不保證開發模式能在其上運作。
相容 Dockerfile 的範例
這是一個與 Spaces 開發模式相容的 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"]在此組織中有幾個開發模式相容 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
意見回饋
您可以直接在 HF Hub 上分享您對於 Spaces 開發模式的意見回饋: https://huggingface.co/spaces/dev-mode-explorers/README/discussions
在 GitHub 上更新