zenml-io/zenml · 上手攻略
- 仓库:zenml-io/zenml
- 链接:https://github.com/zenml-io/zenml
- 分类:ai
- 作者:Jay
- 更新:2026-07-15
这是什么
ZenML 是一个面向 ML/AI 工程师的统一 AI 平台,核心价值主张是:一次编写,随处运行——用 Python 装饰器定义管道(pipelines)和步骤(steps),ZenML 自动处理容器化、追踪、部署和基础设施抽象,让你无需改动代码即可在本地、Kubernetes、云端之间切换。
ZenML 的定位介于实验追踪工具(MLflow、W&B)和完整 AI 平台(Kubeflow、AWS SageMaker)之间——它是开源的、对框架中立的企业级 MLOps 框架,专为既需要实验灵活性又需要生产级可靠性的团队设计。
解决什么问题
- 实验管理与生产脱节:数据科学家在笔记本上跑实验,生产靠工程师重写一遍代码部署。ZenML 让两者使用同一套 pipeline 定义。
- 框架绑定:用 PyTorch 写的训练流程,想切换到 JAX 或换一套基础设施,改动成本极高。ZenML 通过 Stack(栈)抽象解耦了代码和基础设施。
- Agent 工作流缺少标准化:AI Agent 的开发、评估、部署缺乏统一框架。ZenML 从 2024 年起明确支持 Agent 场景,包括 RAG pipelines、Agent outer loop 评估等。
- 工具碎片化:MLflow 追踪实验、Weave 做 LLM 可观测性、Kubeflow 做编排——三套系统三套维护成本。ZenML 试图提供统一入口。
核心概念
| 概念 | 说明 |
|---|---|
| Step | Python 函数加 @step 装饰器,代表管道中的一个计算单元 |
| Pipeline | Python 函数加 @pipeline 装饰器,串联多个 Step |
| Artifact | Step 之间的数据传递对象,ZenML 自动版本化和存储 |
| Stack | 基础设施组合:orchestrator(编排器)+ artifact store( artifact 存储)+ deployer(部署器)+ ... |
| Snapshot | 管道的不可变快照,包含代码、配置和容器镜像,可参数化复用 |
| Deployment | 将管道发布为 HTTP 实时服务 |
快速安装
Python 版本:支持 Python 3.10 ~ 3.14。
# 仅安装客户端(连接远程服务器用)
pip install zenml
# 本地开发:客户端 + 本地服务器 + Web Dashboard
pip install 'zenml[server]'
# Jupyter 环境
pip install 'zenml[jupyter]'
# 验证安装
zenml version
本地启动 Dashboard:
zenml login --local
# 然后访问 http://localhost:8080
Docker 方式:
# 仅 CLI 环境
docker run -it zenmldocker/zenml /bin/bash
# 带服务器
docker run -it -d -p 8080:8080 zenmldocker/zenml-server
核心用法
编写第一个管道
创建 run.py:
from zenml import step, pipeline
@step
def basic_step() -> str:
"""返回问候语的简单步骤"""
return "Hello World!"
@pipeline
def basic_pipeline() -> str:
"""串联步骤的管道"""
greeting = basic_step()
return greeting
if __name__ == "__main__":
basic_pipeline()
运行:
python run.py
ZenML 会自动追踪执行、存储 artifact,结果可在 CLI 或 Dashboard 查看。
创建快照(可选但推荐)
快照是管道的不可变版本,包含代码、配置和容器镜像,可被参数化触发:
zenml pipeline snapshot create run.basic_pipeline --name my_snapshot
部署为实时服务
# 直接部署(ZenML 自动创建隐式快照)
zenml pipeline deploy run.basic_pipeline --name my_deployment
# 或从快照部署
zenml pipeline snapshot deploy my_snapshot --deployment my_deployment
连接到远程基础设施
部署远程 ZenML 服务器(自托管或 ZenML Pro 托管):
zenml login
zenml project set <PROJECT_NAME>
配置远程 Stack
# 使用部署向导创建云端 Stack
zenml stack register <STACK_NAME> \
--deployer <DEPLOYER_NAME> \
--orchestrator <ORCHESTRATOR_NAME> \
--artifact-store <ARTIFACT_STORE_NAME>
# 切换 Stack
zenml stack set <REMOTE_STACK_NAME>
# 现在运行管道自动在云基础设施上执行
python run.py
ZenML 处理容器构建、编排执行和 artifact 追踪的全部细节。
LLM / Agent 场景(ZenML 的重要扩展方向)
ZenML 提供了针对 AI Agent 的专门支持:
# Agent outer loop 评估示例
# 来自 github.com/zenml-io/zenml/tree/main/examples/agent_outer_loop
# LLM RAG Pipeline 示例
# 来自 github.com/zenml-io/zenml-projects/tree/main/llm-complete-guide
# Agent 部署示例
# 来自 github.com/zenml-io/zenml/tree/main/examples/deploying_agent
ZenML 还提供了 MCP Server(Model Context Protocol),允许通过自然语言查询管道、触发部署:
# 从 zenml-io/mcp-zenml 下载 .dxt 文件
# 导入到 Claude Desktop / Cursor 等 MCP 兼容客户端
# 配置 ZenML 服务器 URL 和 API Key
# 即可用自然语言操作 ML 基础设施
ZenML VS Code 插件
在编辑器内管理管道:
# 从 VS Code Marketplace 安装 "ZenML.zenml-vscode"
# 支持管道运行、Dashboard 内嵌查看
典型适用场景
| 场景 | 说明 |
|---|---|
| 团队需要管理多个 ML 模型 | 特征工程、训练、评估、部署全流程统一管理,artifact 版本化 |
| 快速从实验到生产 | notebook 里的实验代码加两个装饰器就能部署,无需重写 |
| LLMOps / Agent 编排 | RAG 管道、Agent outer loop 评估、多阶段 Agent 工作流 |
| 多云/混合基础设施 | 一套代码切换 AWS/GCP/Azure,无需改业务逻辑 |
| 企业级合规需求 | 开源自托管,无厂商锁定,完整流水线可见可控 |
坑与注意
| 坑 | 说明 |
|---|---|
| 学习曲线存在 | Stack、Connector、Snapshot 等抽象概念需要一定时间理解,不是"下载即上手" |
| 远程部署有一定运维成本 | 需要维护 ZenML Server(Kubernetes 或 Docker),比纯本地使用复杂 |
| 轻量用户可能觉得太重 | 如果只是跑一个一次性训练脚本,ZenML 带来的价值有限 |
| 版本迭代快 | 2024-2025 年间 API 有变化,某些旧教程可能过时 |
| 中文资料少 | 主要文档和社区讨论为英文,中文资料有限 |
| 不能完全替代数据管道工具 | ZenML 管理 ML/AI 工作流,不是通用数据 ETL 工具,需要与 dbt、Airflow 等配合 |
| Python 专属 | 不支持 R、Julia 等其他语言 |
与同类对比
| 竞品 | 定位 | 与 ZenML 的核心区别 |
|---|---|---|
| MLflow | 实验追踪 + 模型管理 | ZenML 是端到端编排平台,MLflow 主要做追踪和注册;ZenML 覆盖更深层的 pipeline 编排和部署 |
| Kubeflow Pipelines | Kubernetes 原生 ML 管道 | Kubeflow 更偏向 K8s 专家;ZenML 屏蔽了 K8s 细节,Python 优先 |
| Airflow / Prefect | 通用工作流编排 | Airflow/Prefect 是通用 ETL,不是 ML 原生;ZenML 在 pipeline 层面做了 ML 语义抽象 |
| LangChain / LangGraph | LLM 应用开发 | ZenML 是 MLOps 平台,LangChain 是应用开发框架;可以配合使用 |
| AWS SageMaker Pipelines | 云厂商 ML 平台 | 厂商锁定;ZenML 开源、框架中立,可切换云厂商 |
| Weights & Biases (Weave) | LLM 可观测性 | Weave 专注 LLM tracing;ZenML 是端到端生命周期管理 |
核心差异:ZenML 的核心差异是"写一次跑所有地方"的 pipeline 抽象 + Stack 解耦 + 端到端可观测性,尤其在 Agent/LLM 场景的扩展是其与老牌 MLOps 工具的明显分水岭。
一句话推荐结论
如果你的团队同时跑传统 ML 模型和 AI Agent,需要一套能把实验代码直接变成生产服务的统一平台,ZenML 是目前开源生态里最完整的方案之一——从 pip install 到本地 Dashboard 再到 Kubernetes 部署,三步搞定。
信息来源:GitHub 仓库 README / ZenML 官方文档(installation.md / hello-world.md);pip 命令和代码示例基于官方文档原文,未运行代码验证;Python 版本支持范围基于官方文档。