资讯动态

在 Kubeflow Pipelines 上运行 Kedro 管道:kedro-kubeflow 插件与部署实践解析

发布时间:2026/9/15 10:14:45 来源:尧图企业网站定制
在 Kubeflow Pipelines 上运行 Kedro 管道kedro-kubeflow 插件与部署实践解析【免费下载链接】kedroKedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, maintainable, and modular.项目地址: https://gitcode.com/GitHub_Trending/ke/kedroKubeflow Pipelines 是面向机器学习工作流的端到端E2E编排工具能够将 Kedro 管道以容器化的方式部署、扩缩容并管理在任意 Kubernetes 集群上。本篇指南以 Kedro 官方文档 kubeflow.md 为主体结合仓库内分布式部署与节点分组方法论讲解 Kubeflow Pipelines 的适用场景、kedro-kubeflow插件的接入方式以及将 Kedro 管道迁移到该平台前需要掌握的技术准备。读完本文你将理解为什么要在 Kubernetes 上选择 Kubeflow Pipelines并掌握“容器化 → 转换平台原语 → 参数化运行 → 节点分组”这一完整的部署思路。Kubeflow Pipelines 是什么Kubeflow Pipelines 是一个端到端E2E的编排工具用于在Docker 容器内部署、扩展和管理机器学习系统。它允许你调度schedule与对比compare运行可以对管道进行定时调度并对多次运行的结果进行横向对比生成详细的运行报告每次运行都会产出可供检查的详细报告便于排查问题与审计。在 Kedro 的部署体系里Kubeflow Pipelines 属于分布式部署的一种目标平台。Kedro 官方文档在 部署总览 中给出的决策流程是如果管道无法在单机运行就进入分布式部署指南distributed.md而 Kubeflow Pipelines 正是其中列出的可选平台之一与 Airflow、Amazon SageMaker、Dask、Databricks、Prefect、Vertex AI 并列。为什么要使用 Kubeflow Pipelines官方文档给出了三个核心理由云无关cloud-agnostic它可以在任何 Kubernetes 集群上运行不绑定特定云厂商便于在不同基础设施之间迁移面向机器学习工作流定制Kubeflow 针对模型部署model deployment、实验跟踪experiment tracking和超参数调优hyperparameter tuning做了专门适配比通用工作流引擎更贴合 ML 场景组件与管道可复用你可以复用现成的组件components和管道pipelines来快速拼装端到端解决方案避免重复建设。值得注意的是Google Cloud 的 Vertex AI Pipelines 正是“以全托管方式提供 Kubeflow Pipelines 功能”的服务对应文档见 vertexai.md。如果你的团队更倾向托管的无运维方案可以沿同一思路迁移。kedro-kubeflow插件把 Kedro 管道搬到 Kubeflow在 Kedro 生态中将 Kedro 管道运行到 Kubeflow Pipelines 上的官方推荐方式是使用由GetInData | Part of Xebia开发的kedro-kubeflow插件。该插件的详细用法、命令清单与配置项以插件自身的 GitHub 仓库和 ReadTheDocs 文档为准官方文档 kubeflow.md 中给出了这两个外部入口。从 Kedro 的插件体系看kedro-kubeflow属于社区维护插件。在 plugins.md 的社区插件列表中它的定位被描述为由 GetInData 开发允许你使用 Kubeflow Pipelines 在 Kubernetes 集群上运行和调度管道。这与 Kedro 的插件扩展机制一脉相承Kedro 的扩展机制构建在pluggy之上通过pyproject.toml中的entry_points向 CLI 注入命令例如[project.entry-points.kedro.project_commands]插件安装后即可通过kedro plugin-name command的形式调用。kedro-kubeflow同样遵循这一约定为 Kedro 项目注入面向 Kubeflow 的编译与提交命令安装后即可在项目目录中使用。部署方法论迁移到 Kubeflow 前的四条准备路径虽然kedro-kubeflow封装了大量细节但理解 Kedro 官方推荐的分布式部署方法论distributed.md仍然必要它决定了插件生成的管道是否符合平台预期1. 容器化整个管道分布式部署的第一步是把整个项目或管道容器化。官方推荐使用 Docker并建议先用pip-compile将项目依赖锁定到requirements.txt参见 dependencies.mdpip-compile --output-fileproject_root/requirements.txt --input-fileproject_root/requirements.txtKubeflow Pipelines 以容器为执行单元因此一个依赖完整、可复现的镜像通常借助kedro-docker插件构建是所有后续步骤的前提。2. 把 Kedro 管道转换为平台原语Kedro 管道是由nodes构成的 DAG其结构非常适合语义化地翻译成各平台的任务模型每个 node 映射为平台上的一个任务task在 Kubeflow 语境下即一个 operator依赖关系与Pipeline.node_dependencies保持一致。为此需要编写一个转换脚本并注意两点将所有 catalog 条目保存到远程位置保证各容器能共享数据为每个 node 起一个程序员友好的名字并在管道中使用tags简化后续筛选。3. 参数化运行一个 node 通常对应一个计算单元可用最基本的kedro run加参数来驱动kedro run --nodesnode_name官方建议优先用 names、tags 和自定义 flags 来切换不同行为而不是为每种行为改代码同时所有 job/task/operator 应使用同一版本的代码即同一个 Docker 镜像。4. 可选创建 starter如果经常向类似环境或平台部署可以构建自己的 Kedro starter把第 2 步写好的部署脚本固化下来复用。节点分组让 Kubeflow 任务结构更高效部署到 Kubeflow 这类分布式平台时任务粒度直接影响资源利用与调度开销。Kedro 提供了三种分组手段详见 nodes_grouping.md分组方式命令示例适用场景按管道pipelineskedro run --pipelinespipeline_name项目已按逻辑拆分成多个管道可独立或顺序执行按标签tagskedro run --tagsyour_tag_name需要运行不隶属于同一管道的特定节点按命名空间namespaceskedro run --namespacesnamespace1,namespace2在管道内做逻辑分组同时保持清晰的依赖关系其中命名空间在部署场景中尤其有价值kedro-airflow等插件支持--group-by namespace把同一命名空间下的节点合并为单个任务从而减少任务数量、保持逻辑相关节点同批执行。Kedro 管道中基于命名空间的节点分组天然可以作为 Kubeflow 任务划分的依据——同一命名空间的节点往往共享中间数据、适合放进同一个 Kubeflow 步骤。源码佐证Kedro 运行器与插件如何支撑平台部署从源码层面看Kedro 的管道执行与部署能力由运行器体系支撑。AbstractRunner是 Kedro 所有Pipeline运行器的基类见 runner.py其run()方法接收pipeline、catalog、hook_manager与run_id负责按依赖关系执行节点并写回结果。SequentialRunner、ParallelRunner、ThreadRunner都是它的实现类似地kedro-kubeflow这类插件在把节点映射为 Kubeflow 步骤时每个步骤内部仍会通过 Kedro 的KedroSession加载项目上下文并执行kedro run语义的运行AbstractRunner定义的执行契约因此成为插件与内核之间稳定的衔接层。另外一个与分布式部署强相关的技术约束是当每个 node 被放到独立的容器/步骤中执行时MemoryDataset无法作为节点间中间结果的存储因为每一步都运行在独立进程中。这与 Airflow 部署文档airflow.md中反复强调的注意事项完全一致——所有节点间传递的数据集都必须注册在DataCatalog中并落到持久化存储如对象存储、共享文件系统节点才能访问前序节点的产出。因此在把 Kedro 管道交给kedro-kubeflow之前请务必检查 catalog 中是否存在仅存在于内存的中间数据集并将其改写为带远程路径的持久化数据集。小结将 Kedro 管道部署到 Kubeflow Pipelines 的完整路径可归纳为先用kedro-kubeflow插件GetInData | Part of Xebia完成管道到 Kubeflow 步骤的转换再遵循官方分布式部署方法论——容器化项目、持久化 catalog 数据、参数化kedro run并借助命名空间合理划分任务粒度。Kubeflow Pipelines 的云无关特性、对 ML 工作流模型部署、实验跟踪、超参调优的专门支持以及组件/管道复用能力使它成为在 Kubernetes 集群上规模化运行 Kedro 管道的可靠选择。插件的最新用法与命令细节请以kedro-kubeflow插件自身的仓库与文档为准。【免费下载链接】kedroKedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, maintainable, and modular.项目地址: https://gitcode.com/GitHub_Trending/ke/kedro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价