# Spaces 上的 ZenML

[ZenML](https://github.com/zenml-io/zenml) 是一个可扩展的开源 MLOps 框架，用于创建可移植、可直接投入生产的 MLOps 流水线。它专为数据科学家、机器学习工程师和 MLOps 开发者设计，支持他们在从开发到生产的全流程中高效协作。

ZenML 提供简洁灵活的语法，不依赖特定的云环境或工具，并针对机器学习工作流设计了相应的接口和抽象。借助 ZenML，您可以将所有常用工具集中在一处，从而定制符合自身特定需求的工作流。

ZenML Hugging Face Space 允许您通过几次点击即可快速部署 ZenML 的已部署版本。只需几分钟，您就可以部署好默认的 ZenML 仪表板，并准备好从本地机器连接。

在下面的章节中，您将学习如何部署自己的 ZenML 实例，并使用它直接在 Hub 上查看和管理您的机器学习管道。Hugging Face Spaces 上的 ZenML 是一个**完全托管在 Hub 上、使用 Docker 运行的自包含应用程序**。下图展示了完整的流程。

![ZenML on Hugging Face Spaces -- default deployment](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/zenml/hf_spaces_chart.png)

访问 [ZenML 文档](https://docs.zenml.io/) 以了解其功能以及如何开始通过您的 Hugging Face Spaces 部署来运行机器学习流水线。您可以查看 [一些小型示例](https://github.com/zenml-io/zenml/tree/main/examples) 来快速上手 ZenML 流水线，或者从 [ZenML Projects 仓库](https://github.com/zenml-io/zenml-projects) 中挑选一些更复杂的生产级项目。ZenML 开箱即用地集成了许多您喜爱的工具，[当然也包括 Hugging Face](https://zenml.io/integrations/huggingface)！如果您想使用其他工具，我们具备可扩展性，您可以轻松将其与您的自定义工具或工作流集成。

## ⚡️ 在 Spaces 上部署 ZenML

只需几次点击，即可在 Spaces 上部署 ZenML：

    

要配置您的 ZenML 应用，您需要指定三个主要组件：Owner（即您的个人账户或组织）、Space 名称以及 Visibility（位于页面稍下方）。请注意，如果您希望从本地机器连接到 ZenML 服务器，则必须将 space 的可见性设置为 'Public'。

![Choose the ZenML Docker template](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/zenml/choose_space.png)

您可以在此处选择更高配置的机器来运行您的服务器。选择付费 CPU 实例的优势在于它不受自动关机策略的限制，因此只要您保持其运行，它就会一直在线。为了利用持久化的 CPU，您可能需要创建并配置一个 MySQL 数据库以进行连接（参见下文）。

要自定义您的 Space 外观（例如标题、表情符号和颜色），请前往“Files and Versions”并修改 README.md 文件中的元数据。有关 Spaces 配置参数的完整信息，请参阅 Hugging Face [文档参考指南](https://huggingface.co/docs/hub/spaces-config-reference)。

创建您的 Space 后，您会注意到屏幕上显示“Building”状态以及日志。当状态切换为“Running”时，您的 Space 即可使用。如果未显示 ZenML 登录界面，请尝试刷新页面。

在您的 Space 右上角，您会看到一个带有三个点的按钮，点击它会弹出一个菜单，其中包含“嵌入此 Space”选项。（有关此功能的更多详细信息，请参阅 [Hugging Face 文档](https://huggingface.co/docs/hub/spaces-embed)。）复制屏幕上现在显示的框中的“直接 URL”。它应该类似于：`https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space`。打开该 URL，并使用我们的默认登录凭据访问仪表板（用户名：'default'，密码：（留空））。

## 从本地机器连接到您的 ZenML Server

当您的 ZenML 服务器启动并运行后，即可从本地机器连接到它。为此，您需要获取您的 Space 的“Direct URL”（见上文）。

> [!WARNING]
> 只有当 Space 的可见性设置为“Public”时，您的 Space URL 才会在本地机器上可用并可用于连接。

您可以使用“Direct URL”通过以下 CLI 命令从本地机器连接到您的 ZenML 服务器（在已安装 ZenML 并使用自定义 URL 替换占位符之后）：

```shell
zenml connect --url '<YOUR_HF_SPACES_DIRECT_URL>' --username='default' --password=''
```

您还可以在浏览器中使用 Direct URL，将 ZenML 仪表盘作为全屏应用程序使用（即不使用 Hugging Face Spaces 的外层包装）。

> [!WARNING]
> The ZenML dashboard will currently not work when viewed from within the Hugging Face  webpage (i.e. wrapped in the main `https://huggingface.co/...` website). This is on account of a limitation in how cookies are handled between ZenML and Hugging Face. You **must** view the dashboard from the 'Direct URL' (see above).

## 额外配置选项

默认情况下，ZenML 应用程序将配置为使用 SQLite 非持久化数据库。如果您想使用持久化数据库，可以通过修改 Space 根目录中的 `Dockerfile` 来进行配置。有关可更改的各种参数的完整详细信息，请参阅我们关于使用 Docker 部署时配置 ZenML 的[参考文档](https://docs.zenml.io/getting-started/deploying-zenml/docker#zenml-server-configuration-options)。

> [!TIP]
> 如果您仅将该空间用于测试和实验，则无需对配置进行任何更改。所有功能均可开箱即用。

您也可以按照[我们的文档](https://docs.zenml.io/getting-started/deploying-zenml/docker#zenml-server-configuration-options)中所述，将外部密钥后端与您的 Hugging Face Spaces 配合使用。请务必使用 Hugging Face 内置的“Repository secrets”功能，来配置您在`Dockerfile`配置中需要使用的任何密钥。[请参阅文档](https://huggingface.co/docs/hub/spaces-sdks-docker#secret-management)了解有关如何设置此功能的更多详细信息。

> [!WARNING]
> 如果您希望将云密钥后端与 ZenML 一起用于密钥管理，则必须在仪表板上的 ZenML Server 上采取以下**最低限度的安全措施**：
>
> - 更改您启动时获得的 `default` 账户的密码。您可以通过 Dashboard 或 CLI 完成此操作。 - 创建一个带有密码的新用户账户，并为其分配 `admin` 角色。同样可以通过 Dashboard（通过“邀请”新用户）或 CLI 完成此操作。 - 按照上述说明，使用新的用户账户和密码重新连接到服务器，并将此新用户账户作为您的工作账户。
>
> 这是因为 Hugging Face Spaces 部署流程创建的默认用户没有分配密码，而且该 Space 是公开可访问的（因为该 Space 是公开的），*如果没有这一步，任何人都可能访问您的密钥*。要更改密码，请点击 Dashboard 右上角的按钮进入 Settings 页面，然后点击 'Update Password'。

## 在 HF Spaces 上升级您的 ZenML Server

默认空间会自动使用 ZenML 的最新版本。如果您想更新版本，只需在空间的 设置 选项卡中选择 Factory reboot 选项即可。请注意，此操作会清除空间内的所有数据，因此如果您未使用 MySQL 持久化数据库（如上所述），您将丢失空间内 ZenML 部署中的所有数据。您还可以通过更新 `Dockerfile` 顶部的 `FROM` 导入语句，将空间配置为使用更早的版本。

## 后续步骤

作为下一步，请查看我们的 [ZenML MLOps 入门指南](https://docs.zenml.io/starter-guide/pipelines)，这是一系列简短的实用页面，介绍如何快速上手。或者，查看 [我们的 `quickstart` 示例](https://github.com/zenml-io/zenml/tree/main/examples/quickstart)，这是一个涵盖 ZenML 众多功能的完整端到端示例。

## 🤗 反馈与支持

如果您在使用 Hugging Face Spaces 上的 ZenML 服务器时遇到问题，可以单击空间顶部的“Open Logs”按钮查看日志。这将为您提供有关服务器运行情况的更多上下文信息。

如果您有其他建议，或者需要针对任何未正常工作的问题提供特定支持，请[加入 ZenML Slack 社区](https://zenml.io/slack-invite/)，我们很乐意为您提供帮助！

