ZenML项目实战:如何获取和分析已完成的Pipeline运行数据

ZenML项目实战:如何获取和分析已完成的Pipeline运行数据

zenml zenml 项目地址: https://gitcode.com/gh_mirrors/zen/zenml

前言

在机器学习工作流管理中,Pipeline的运行和监控是至关重要的环节。ZenML作为一个强大的MLOps工具,提供了完善的Pipeline运行数据管理功能。本文将详细介绍如何在ZenML项目中获取和分析已完成的Pipeline运行数据,帮助开发者更好地理解和利用这些信息。

Pipeline运行数据层次结构

在ZenML中,Pipeline运行数据采用层次化结构组织,理解这一结构是有效获取数据的基础:

Pipeline → Runs → Steps → Artifacts

这种1对多的层级关系意味着:

  • 一个Pipeline可以有多次运行(Runs)
  • 每次运行包含多个步骤(Steps)
  • 每个步骤会产生多个工件(Artifacts)

获取Pipeline信息

通过Client获取特定Pipeline

from zenml.client import Client

# 获取名为"first_pipeline"的Pipeline
pipeline_model = Client().get_pipeline("first_pipeline")

列出所有可用Pipeline

当不确定需要哪个Pipeline时,可以先列出所有已注册的Pipeline:

# 使用Python代码列出
pipelines = Client().list_pipelines()

或者使用CLI命令:

zenml pipeline list

获取Run信息

每次Pipeline执行都会产生一个Run记录,包含该次执行的详细信息。

获取Pipeline的所有Runs

# 获取某个Pipeline的所有运行记录
runs = pipeline_model.runs  # 按时间倒序排列

获取最新Run

last_run = pipeline_model.last_run  # 或 pipeline_model.runs[0]
last_successful_run = pipeline_model.last_successful_run  # 最近成功的运行

直接获取特定Run

pipeline_run = Client().get_pipeline_run("first_pipeline-2023_06_20-16_20_13_274466")

Run的关键信息

每个Run对象包含丰富的信息:

status = run.status  # 运行状态:初始化/失败/完成/运行中/缓存
pipeline_config = run.config  # 完整配置信息
pipeline_settings = run.config.settings  # Pipeline级别设置
run_metadata = run.run_metadata  # 组件特定元数据

获取Step信息

Pipeline中的每个步骤都可以单独检查:

# 获取Run中的所有步骤
steps = run.steps

# 通过调用ID获取特定步骤
step = run.steps["first_step"]

Step的关键信息

step_params = step.config.parameters  # 步骤参数
step_settings = step.config.settings  # 步骤级别设置
step_metadata = step.run_metadata  # 步骤特定元数据

获取Artifact信息

Artifact是步骤的输入输出数据,是Pipeline运行的核心产物。

获取步骤输出Artifact

# 通过名称获取输出
output = step.outputs["output_name"]

# 单一输出可直接使用.output属性
output = step.output

# 加载Artifact到内存
my_model = output.load()

直接获取Artifact

# 获取Artifact及其所有版本
artifact = Client().get_artifact('iris_dataset')

# 获取特定版本
output = Client().get_artifact_version('iris_dataset', '2022')

Artifact的关键信息

# 元数据访问
output_metadata = output.run_metadata
storage_size = output_metadata["storage_size"].value

# 可视化展示
output.visualize()  # 在Jupyter中显示

运行期间获取信息

在Pipeline执行过程中,也可以获取历史运行信息:

from zenml import get_step_context

@step
def my_step():
    # 获取当前运行上下文
    current_run = get_step_context().pipeline_run
    
    # 获取同一Pipeline的上次运行
    previous_run = current_run.pipeline.runs[1]

完整示例

以下是一个完整的代码示例,展示如何获取训练步骤产生的模型:

from zenml.client import Client

# 运行Pipeline并获取Run对象
last_run = training_pipeline()
print(last_run.id)

# 获取训练步骤和模型
trainer_step = last_run.steps["svc_trainer"]
model = trainer_step.outputs["trained_model"].load()

总结

通过ZenML提供的丰富API,我们可以方便地获取和分析Pipeline运行的各个层级数据。这种能力对于:

  1. 模型和数据集版本管理
  2. 运行结果复现和调试
  3. 工作流监控和优化
  4. 自动化决策和流程控制

都具有重要价值。掌握这些数据获取技巧,将极大提升您的MLOps实践能力。

zenml zenml 项目地址: https://gitcode.com/gh_mirrors/zen/zenml

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王海高Eudora

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值