Hub 文档

Spaces 开发模式:在 Spaces 中实现无缝开发

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Spaces 开发模式:在 Spaces 中实现无缝开发

此功能仍处于 Beta 阶段。
Spaces 开发模式是 PRO 和 Enterprise Hub 订阅的一部分。

Spaces 开发模式

Spaces 开发模式是一项简化应用程序调试并加速 Spaces 迭代的功能。

每当您提交对 Space 仓库的更改时,底层 Docker 镜像会重建,然后会配置一个新的虚拟机来托管新的容器。

开发模式允许您通过覆盖 Docker 镜像来更快地更新您的 Space。

开发模式 Docker 镜像将您的应用程序作为子进程启动,允许您在不停止 Space 容器本身的情况下重新启动它。它还会在后台启动一个 VS Code 服务器和一个 SSH 服务器,供您连接到 Space。

连接到运行中的 Space 的能力解锁了多种用例

  • 您可以更改应用程序代码,而无需每次都重新构建 Space
  • 您可以调试运行中的应用程序并实时监控资源

总而言之,它通过跳过 Docker 镜像重建阶段,大大加快了 Spaces 的开发和实验速度。

界面

一旦在您的 Space 上启用开发模式,您应该会看到如下所示的模态框。

screenshot of the dev mode controls interface.

当您更改代码时,应用程序不会自动重新启动。为了使您的更改出现在 Space 中,您需要使用 `Refresh` 按钮来重新启动应用程序。

如果您正在使用 Gradio SDK,或者您的应用程序是基于 Python 的,请注意,依赖项不会自动安装。您需要手动从 VS Code 或 SSH 运行 `pip install`。

SSH 连接和 VS Code

开发模式允许您使用 SSH 连接到 Space 的 Docker 容器。

连接说明在开发模式控制模态框中列出。

您需要将您机器的 SSH 公钥添加到您的用户帐户才能使用 SSH 连接到 Space。请查看通过 SSH 使用 Git 文档以获取更详细的说明。

您还可以使用本地安装的 VS Code 连接到 Space 容器。为此,您需要安装 SSH Remote 扩展。

持久化更改

在启用开发模式时所做的更改不会自动持久化到 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.

启用开发模式

您可以从网页界面在您的 Space 上启用开发模式。

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.

限制

开发模式目前不适用于静态 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 指令。有关 CMD 指令的更多详细信息,请查看 Docker 文档

当基础镜像基于 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 server): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python

Javascript 应用程序示例 (Express.js HTTP server): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript

反馈

您可以直接在 HF Hub 上分享您对 Spaces 开发模式的反馈:https://huggingface.co/spaces/dev-mode-explorers/README/discussions

< > 在 GitHub 上更新