Kubeflow Pipelines的Tekton编译器
项目描述
Kubeflow Pipelines的Tekton SDK
Kubeflow Pipelines SDK 允许数据科学家定义端到端的机器学习和数据处理流程。Kubeflow Pipelines SDK 编译器的输出是用于 Argo 的 YAML。
kfp-tekton
SDK 扩展了 Kubeflow Pipelines SDK 的 Compiler
和 Client
,以生成 Tekton YAML,并随后使用 Tekton 支持的 Kubeflow Pipelines 引擎上传和运行流程。
目录
- SDK 包概述
- 项目先决条件
- 安装
- 编译 Kubeflow Pipelines DSL 脚本
- 大数据传递工作空间配置
- 在 Tekton 集群上运行编译后的流程
- 可用功能列表
- Python Kubernetes 客户端辅助函数列表
- 测试流程
- 故障排除
SDK 包概述
kfp-tekton
SDK 是 Kubeflow Pipelines SDK 的扩展,增加了 TektonCompiler
和 TektonClient
。
-
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
编译器的最新版本
-
克隆
kfp-tekton
仓库git clone https://github.com/kubeflow/kfp-tekton.git cd kfp-tekton
-
使用 Conda 或 Python 虚拟环境设置 Python 环境
python3 -m venv .venv source .venv/bin/activate
-
构建编译器
pip install -e sdk/python
-
运行编译器测试(可选)
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
创建一个新的虚拟环境
项目详情
kfp-tekton-1.9.3.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1a0e30520e348d40340da94d35ffb30ae626358302af036c163abda9939d96b9 |
|
MD5 | 1f4ed3cfdd95063a645f120fea4cd801 |
|
BLAKE2b-256 | 1c2e952f7a95c44f1a3a514277ffa488c0c951cbf32f3b851c4cf78c145b4b07 |