跳转到主要内容

Kubeflow Pipelines的Tekton编译器

项目描述

PyPI PyPI - Downloads PyPI - License

Kubeflow Pipelines的Tekton SDK

Kubeflow Pipelines SDK 允许数据科学家定义端到端的机器学习和数据处理流程。Kubeflow Pipelines SDK 编译器的输出是用于 Argo 的 YAML。

kfp-tekton SDK 扩展了 Kubeflow Pipelines SDK 的 CompilerClient,以生成 Tekton YAML,并随后使用 Tekton 支持的 Kubeflow Pipelines 引擎上传和运行流程。

目录

SDK 包概述

kfp-tekton SDK 是 Kubeflow Pipelines SDK 的扩展,增加了 TektonCompilerTektonClient

  • kfp_tekton.compiler 包含用于将管道 Python DSL 编译成 Tekton PipelineRun YAML 规范的类和方法。此包中的方法包括但不限于以下内容

    • kfp_tekton.compiler.TektonCompiler.compile 将您的 Python DSL 代码编译成单个静态配置(YAML 格式),Kubeflow Pipelines 服务可以处理该配置。Kubeflow Pipelines 服务将静态配置转换为执行所需的一组 Kubernetes 资源。
  • kfp_tekton.TektonClient 包含 Kubeflow Pipelines API 的 Python 客户端库。此包中的方法包括但不限于以下内容

    • kfp_tekton.TektonClient.upload_pipeline 将本地文件上传到 Kubeflow Pipelines 创建新的流程。
    • kfp_tekton.TektonClient.create_experiment 创建流程 实验 并返回实验对象。
    • kfp_tekton.TektonClient.run_pipeline 运行流程并返回运行对象。
    • kfp_tekton.TektonClient.create_run_from_pipeline_func 编译流程函数并将其提交到 Kubeflow Pipelines 执行。
    • kfp_tekton.TektonClient.create_run_from_pipeline_package 在 Kubeflow Pipelines 上运行本地流程包。

项目先决条件

  • Python: 3.8 或更高版本。对于 Python 3.12,请确保不要设置 SETUPTOOLS_USE_DISTUTILS 标志,因为它已被 弃用
  • Tekton: v0.53.2 或更高版本
  • Tekton CLI: 0.30.1
  • Kubeflow Pipelines: 带有 Tekton 后端的 KFP

按照 安装项目先决条件 的说明进行操作,并注意一些重要的注意事项。

安装

您可以从 PyPi 安装 kfp-tekton 编译器的最新版本。我们建议首先创建一个 Python 虚拟环境

python3 -m venv .venv
source .venv/bin/activate

pip install kfp-tekton

或者,您也可以通过克隆仓库 https://github.com/kubeflow/kfp-tekton 从源安装 kfp-tekton 编译器的最新版本

  1. 克隆 kfp-tekton 仓库

    git clone https://github.com/kubeflow/kfp-tekton.git
    cd kfp-tekton
    
  2. 使用 Conda 或 Python 虚拟环境设置 Python 环境

    python3 -m venv .venv
    source .venv/bin/activate
    
  3. 构建编译器

    pip install -e sdk/python
    
  4. 运行编译器测试(可选)

    pip install pytest
    make test
    

编译 Kubeflow Pipelines DSL 脚本

kfp-tekton Python 包附带 dsl-compile-tekton 命令行可执行文件,该文件在安装 kfp-tekton Python 包后应在您的终端 shell 环境中可用。

如果您克隆了 kfp-tekton 项目,可以在 samples 文件夹或 sdk/python/tests/compiler/testdata 文件夹下找到示例流水线。

dsl-compile-tekton \
    --py sdk/python/tests/compiler/testdata/parallel_join.py \
    --output pipeline.yaml

注意:如果 KFP DSL 脚本中包含调用 kfp_tekton.compiler.TektonCompiler.compile() 函数的 __main__ 方法

if __name__ == "__main__":
    from kfp_tekton.compiler import TektonCompiler
    TektonCompiler().compile(pipeline_func, "pipeline.yaml")

... 然后,可以通过在命令行 shell 中使用 python3 可执行文件运行 DSL 脚本来编译流水线,在同一目录下生成 Tekton YAML 文件 pipeline.yaml

python3 pipeline.py

大数据传递工作空间配置

当在 KFP 中定义 大数据文件 时,Tekton 将创建一个工作区,以便在相同流水线中运行的作业之间共享这些大数据文件。默认情况下,工作区是一个具有 2Gi 存储的读写多 PVC,使用 kfp-csi-s3 存储类将工件推送到 S3。但您可以使用以下环境变量更改这些配置

export DEFAULT_ACCESSMODES=ReadWriteMany
export DEFAULT_STORAGE_SIZE=2Gi
export DEFAULT_STORAGE_CLASS=kfp-csi-s3

要使用云提供商卷传递大数据,建议在 Tekton 和 Argo 运行时都使用 基于卷的数据传递方法

如果您想更改输入和输出复制工件图像,请修改以下环境变量

export TEKTON_BASH_STEP_IMAGE=busybox  # input and output copy artifact images
export TEKTON_COPY_RESULTS_STEP_IMAGE=library/bash # output copy results images
export CONDITION_IMAGE_NAME=python:3.9.17-alpine3.18 # condition task default image name

在 Tekton 集群上运行编译后的流程

在上一步编译 sdk/python/tests/compiler/testdata/parallel_join.py DSL 脚本后,我们需要将生成的 Tekton YAML 部署到 Kubeflow Pipeline 引擎。

您可以直接使用预编译的文件和 KFP-Tekton SDK 运行流水线。有关更多详细信息,请参阅 KFP-Tekton 用户指南 SDK 文档

experiment = kfp_tekton.TektonClient.create_experiment(name=EXPERIMENT_NAME, namespace=KUBEFLOW_PROFILE_NAME)
run = client.run_pipeline(experiment.id, 'parallal-join-pipeline', 'pipeline.yaml')

您也可以使用 kubectl 在 Tekton 集群上直接部署。Tekton 服务器将自动启动流水线运行。然后我们可以使用 tkn CLI 跟踪日志。

kubectl apply -f pipeline.yaml

tkn pipelinerun logs --last --follow

一旦 Tekton 流水线开始运行,日志应该开始流式传输

Waiting for logs to be available...

[gcs-download : main] With which he yoketh your rebellious necks Razeth your cities and subverts your towns And in a moment makes them desolate

[gcs-download-2 : main] I find thou art no less than fame hath bruited And more than may be gatherd by thy shape Let my presumption not provoke thy wrath

[echo : main] Text 1: With which he yoketh your rebellious necks Razeth your cities and subverts your towns And in a moment makes them desolate
[echo : main]
[echo : main] Text 2: I find thou art no less than fame hath bruited And more than may be gatherd by thy shape Let my presumption not provoke thy wrath
[echo : main]

可用功能列表

要了解每个功能的实现方式和当前状态,请访问 FEATURES 文档。

Python Kubernetes 客户端辅助函数列表

KFP Tekton 提供了一组常见的 Kubernetes 客户端辅助函数,以简化创建某些 Kubernetes 资源的过程。有关更多详细信息,请访问 K8S_CLIENT_HELPER 文档。

测试流程

我们正在对在 Kubeflow Pipelines 存储库中找到的 80 多个流水线进行编译器测试,特别是 KFP 编译器 testdata 文件夹中的流水线、KFP 核心样本和第三方贡献的样本。

目前由 kfp-tekton 编译器支持的 Kubeflow Pipelines 样本的报告卡可以在 此处 找到。如果您正在处理一个启用缺失功能的 PR,请确保您的代码更改提高了成功编译的 KFP 流水线样本数量。

故障排除

  • 当您遇到与 ServiceAccount 相关的权限问题时,请参阅 “Service Account and RBAC” 文档

  • 当您尝试使用 Python 的 venv 时遇到错误 bad interpreter: No such file or director,请从 .venv 目录中删除当前虚拟环境,并使用 virtualenv .venv 创建一个新的虚拟环境

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

kfp-tekton-1.9.3.tar.gz (81.1 kB 查看哈希)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面