在 Spaces 上使用 ZenML
ZenML 是一个可扩展的开源 MLOps 框架,用于创建可移植、生产就绪的 MLOps 管道。它专为数据科学家、ML 工程师和 MLOps 开发人员构建,以便在开发到生产过程中进行协作。
ZenML 提供简单灵活的语法,与云和工具无关,并具有面向 ML 工作流的接口/抽象。使用 ZenML,你将在一个地方拥有所有你喜欢的工具,因此你可以定制适合你特定需求的工作流。
ZenML Huggingface Space 允许你只需点击几下即可启动并运行已部署的 ZenML 版本。在几分钟内,你将部署此默认 ZenML 仪表板,并准备好从本地计算机连接到它。
在以下部分中,你将学习部署自己的 ZenML 实例,并直接从 Hub 查看和管理你的机器学习管道。Huggingface Spaces 上的 ZenML 是一个使用 Docker 完全托管在 Hub 上的自包含应用。下图说明了完整过程。

访问 ZenML 文档 了解更多关于其功能以及如何通过 Huggingface Spaces 部署开始运行机器学习管道的信息。你可以查看 一些小型示例 ZenML 管道以开始使用,或在 ZenML Projects 仓库中选择一些更复杂的生产级项目。ZenML 开箱即用地与许多你喜欢的工具集成,当然包括 Huggingface!如果你想使用其他工具,我们构建为可扩展的,你可以轻松地使其与你自定义的工具或工作流一起工作。
⚡️ 在 Spaces 上部署 ZenML
只需点击几下即可在 Spaces 上部署 ZenML:
要设置你的 ZenML 应用,你需要指定三个主要组件:所有者(你的个人账户或组织)、Space 名称和可见性(在页面稍下方)。请注意,如果你希望从本地计算机连接到 ZenML 服务器,Space 可见性需要设置为"Public"。

你可以在此处选择更高级别的机器用于服务器。 选择付费 CPU 实例的优势是它不受自动关闭策略的影响,因此只要你保持它运行,它就会保持运行。为了使用持久化 CPU,你可能需要创建并设置一个 MySQL 数据库来连接(见下文)。
要个性化你的 Space 外观,例如标题、表情符号和颜色,请导航到"Files and Versions"并修改 README.md 文件中的元数据。有关 Spaces 配置参数的完整信息,请参阅 HuggingFace 文档参考指南。
创建 Space 后,你将注意到屏幕上的"Building"状态以及日志。当这切换到"Running"时,你的 Space 就可以使用了。如果 ZenML 登录 UI 不可见,请尝试刷新页面。
在 Space 的右上角,你将看到一个带有三个点的按钮,点击它时,将为你提供一个"Embed this Space"菜单选项。
(有关此功能的更多详细信息,请参阅 HuggingFace 文档。)复制你现在可以在屏幕上看到的框中的"Direct URL"。这应该类似于:
https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space。打开该 URL 并使用我们的默认登录来访问仪表板(用户名:'default',密码:(留空))。
从本地计算机连接到你的 ZenML 服务器
一旦你的 ZenML 服务器启动并运行,你就可以从本地计算机连接到它。为此,你需要获取 Space 的"Direct URL"(见上文)。
只有当 Space 的可见性设置为"Public"时,Space 的 URL 才可用于从本地计算机连接。
你可以使用"Direct URL"通过以下 CLI 命令从本地计算机连接到你的 ZenML 服务器(安装 ZenML 后,使用你的自定义 URL 而不是占位符):
zenml connect --url '<YOUR_HF_SPACES_DIRECT_URL>' --username='default' --password=''
你也可以在浏览器中使用 Direct URL 将 ZenML 仪表板用作全屏应用(即没有 HuggingFace Spaces 包装器)。
当从 Huggingface 网页内查看时(即包装在主 https://huggingface.co/... 网站中),ZenML 仪表板目前无法工作。这是由于 ZenML 和 Huggingface 之间处理 cookie 的方式存在限制。
你必须从"Direct URL"(见上文)查看仪表板。
额外配置选项
默认情况下,ZenML 应用将配置为使用 SQLite 非持久化数据库。如果你想使用持久化数据库,可以通过修改 Space 根目录中的 Dockerfile 来配置。有关你可以更改的各种参数的完整详细信息,请参阅我们关于在使用 Docker 部署时配置 ZenML 的参考文档。
如果你仅将 Space 用于测试和实验,则无需对配置进行任何更改。一切都可以开箱即用。
你也可以将外部密钥后端与 HuggingFace Spaces 一起使用,如我们的文档中所述。你应该确保使用 HuggingFace 内置的"Repository secrets"功能来配置在 Dockerfile 配置中需要使用的任何密钥。有关如何设置此功能的更多详细信息,请参阅文档。
如果你希望将云密钥后端与 ZenML 一起用于密钥管理,你必须在仪表板上的 ZenML 服务器上采取以下最低安全预防措施:
- 更改你在启动时获得的
default账户的密码。你可以从仪表板或通过 CLI 执行此操作。 - 创建一个带密码的新用户账户并为其分配
admin角色。这也可以从仪表板(通过"邀请"新用户)或通过 CLI 完成。 - 使用新用户账户和密码重新连接到服务器,如上所述,并使用此新用户账户作为你的工作账户。
这是因为 HuggingFace Spaces 部署过程创建的默认用户没有分配密码,并且由于 Space 是公开可访问的(因为 Space 是公开的)如果没有此额外步骤,任何人都可能访问你的密钥。要更改密码,请点击仪表板右上角的按 钮导航到设置页面,然后点击"Update Password"。
在 HF Spaces 上升级你的 ZenML 服务器
默认 Space 将自动使用最新版本的 ZenML。如果你想更新版本,只需在 Space 的"Settings"标签页中选择"Factory reboot"选项。请注意,这将清除 Space 中包含的任何数据,因此如果你不使用 MySQL 持久化数据库(如上所述),你将丢失 Space 上 ZenML 部署中包含的任何数据。你也可以通过更新 Dockerfile 最顶部的 FROM 导入语句来配置 Space 使用较早的版本。
下一步
作为下一步,请查看我们的 ZenML MLOps 入门指南,这是一系列关于如何快速入门的简短实用页面。或者,查看我们的 quickstart 示例,这是 ZenML 许多功能的完整端到端示例。
🤗 反馈和支持
如果你在 HuggingFace Spaces 上的 ZenML 服务器遇到问题,可以通过点击 Space 顶部的"Open Logs"按钮查看日志。这将为你提供有关服务器正 在发生的情况的更多上下文。
如果你有任何建议或需要其他任何不工作的事物的特定支持,请加入 ZenML Slack 社区,我们很乐意帮助你!