Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Spaces Dev Mode:在 Spaces 中实现无缝开发

此功能仍处于 Beta 阶段。
Spaces Dev Mode 是 PRO 和企业版 Hub 订阅的一部分。

Spaces Dev Mode

Spaces Dev Mode 是一项旨在简化应用程序调试并加快 Spaces 迭代速度的功能。

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

Dev Mode 允许您通过覆盖 Docker 镜像来更快地更新 Space。

Dev Mode Docker 镜像将您的应用程序作为子进程启动,允许您在不停止 Space 容器本身的情况下重启它。它还在后台启动 VS Code 服务器和 SSH 服务器,以便您连接到 Space。

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

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

总的来说,它通过跳过 Docker 镜像重建阶段,使 Spaces 的开发和实验速度更快。

界面

一旦在您的 Space 上启用了 Dev Mode,您应该会看到如下所示的模态框。

screenshot of the dev mode controls interface.

当您更改代码时,应用程序不会自动重启。为了使您的更改在 Space 中生效,您需要使用“刷新”按钮来重启应用程序。

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

SSH 连接和 VS Code

Dev Mode 允许您使用 SSH 连接到您的 Space 的 Docker 容器。

连接说明列在 Dev Mode 控制模态框中。

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

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

持久化更改

当 Dev Mode 启用时,您所做的更改不会自动持久化到 Space 仓库。默认情况下,当 Dev Mode 被禁用或 Space 进入休眠状态时,这些更改将被丢弃。
如果您希望持久化在 Dev Mode 启用时所做的更改,您需要从 Space 容器内部(使用 VS Code 或 SSH)使用 `git`。例如
# 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.

启用 Dev Mode

您可以从 Web 界面在您的 Space 上启用 Dev Mode。

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.

局限性

Dev Mode 目前不适用于静态 Spaces。Docker Spaces 也有一些额外的要求。

Docker Spaces

Docker Spaces 支持 Dev Mode。但是,您的 Space 需要遵守以下规则,Dev Mode 才能正常工作。

  1. 必须安装以下软件包
  • `bash`(建立 SSH 连接所必需)
  • `curl`、`wget` 和 `procps`(VS Code 服务器进程所必需)
  • `git` 和 `git-lfs`,以便能够从您的 Dev Mode 环境提交和推送更改
  1. 您的应用程序代码必须位于 `/app` 文件夹中,Dev Mode 守护程序才能检测到更改。

  2. `/app` 文件夹必须由 uid 为 `1000` 的用户拥有,以便您能够更改代码。

  3. Dockerfile 必须包含用于启动的 `CMD` 指令。有关更多详细信息,请查看 Docker 关于 `CMD` 指令的文档

当基础镜像基于 Debian(例如,ubuntu)时,Dev Mode 工作良好。

更为特殊的 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

反馈

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

< > 在 GitHub 上更新