Hub 文件

Spaces 開發模式:Spaces 中的無縫開發

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Spaces 開發模式:Spaces 中的無縫開發

Spaces 開發模式是 PROTeam & Enterprise 方案的一部分。

Spaces 開發模式

Spaces 開發模式是一項旨在簡化應用程式偵錯並加速 Spaces 迭代的功能。

每當您向 Space 儲存庫提交變更時,底層的 Docker 映像檔都會被重建,隨後會配置一個新的虛擬機器來託管新的容器。

開發模式允許您透過覆寫 Docker 映像檔來更快地更新您的 Space。

開發模式的 Docker 映像檔會將您的應用程式作為子程序啟動,讓您無需停止 Space 容器本身即可重新啟動它。它還會在背景啟動 SSH 伺服器(供本機編輯器和終端機使用)以及 VS Code 伺服器(供產品內的 VS Code Web 使用),以便您連接到該 Space。

連接到執行中 Space 的能力解鎖了多種使用情境:

  • 您可以在無需每次都重建 Space 的情況下更改應用程式代碼。
  • 您可以對執行中的應用程式進行偵錯並即時監控資源。

總體而言,它透過跳過 Docker 映像檔重建階段,使 Spaces 的開發和實驗速度快得多。

介面

一旦在您的 Space 上啟用開發模式,您應該會看到類似以下的彈出視窗。

screenshot of the dev mode controls interface.

當您更改程式碼時,應用程式不會自動重新啟動。為了讓您的更改出現在 Space 中,您需要使用 Refresh(重新整理)按鈕來重新啟動應用程式。

如果您使用的是 Gradio SDK,或者您的應用程式是基於 Python 的,請注意需求(requirements)不會自動安裝。您需要從 VS Code 或 SSH 手動執行 `pip install`。

連線

開發模式將執行中的 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 主機。

保存變更

當啟用開發模式時,您所做的更改不會自動保存到 Space 儲存庫。預設情況下,當停用開發模式或 Space 進入休眠時,這些變更將被捨棄。
如果您希望保存啟用開發模式期間所做的更改,則需要從 Space 容器內部使用 `git`(使用 VS Code 或 SSH)。例如:
# 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 上啟用開發模式。

透過 API

您可以透過程式方式切換開發模式。

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.

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

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

限制

開發模式目前不適用於靜態(Static)Spaces。Docker Spaces 也有一些額外的要求。

Docker Spaces

Docker Spaces 支援開發模式。但是,您的 Space 需要遵守以下規則,開發模式才能正常運作。

  1. 必須安裝以下套件:
  • bash(建立 SSH 連線所需)
  • curlwgetprocps(VS Code 伺服器程序所需)
  • gitgit-lfs(以便能夠從您的開發模式環境提交和推送變更)
  1. 您的應用程式代碼必須位於 /app 資料夾中,開發模式守護程序才能偵測到變更。

  2. /app 資料夾必須由 UID 為 1000 的使用者擁有,以允許您對代碼進行更改。

  3. Dockerfile 必須包含用於啟動的 CMD 指令。請參閱 Docker 文件中關於 CMD 指令的詳細資訊。

當基礎映像檔是 Debian(例如 ubuntu)時,開發模式運作良好。

尚未測試過較特殊的 Linux 發行版(例如 alpine),並不保證開發模式能在其上運作。

相容 Dockerfile 的範例

這是一個與 Spaces 開發模式相容的 Dockerfile 範例。

它使用 apt-get 安裝必要的套件,以及一些為了開發便利而安裝的套件(即:topvimnano)。然後,它會啟動一個來自 /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 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.