CNCF Kubeflow 毕业后怎样拆分训练与推理流水线
来源:17golang原创
时间:2026-11-05 13:27:10 170浏览 收藏
Kubeflow 在 CNCF 毕业后,适合把“训练一次模型”和“长期提供推理服务”拆成两条职责清楚的流水线:Kubeflow Pipelines 负责把数据处理、训练和产物记录编排起来,Kubeflow Trainer 负责 Kubernetes 上的分布式训练,KServe 负责把已经约定好的模型版本接成在线推理服务。关键不是把组件全部装在一起,而是用模型产物契约连接训练域和推理域。
官方地址:https://www.kubeflow.org/
CNCF 的官方公告把 Kubeflow 的毕业定义为成熟度和治理能力的里程碑,并列出数据处理、模型训练、微调、推理与模型服务等生命周期能力。下面给出一套便于团队交接的拆分配方;示例是架构说明,不代表已经在某个真实集群执行。
先把训练和推理的组件职责分开
最小可用的分工可以记成一句话:Pipelines 管编排,Trainer 管训练,模型目录管交接,KServe 管服务。数据准备、特征处理、训练任务和离线评估属于训练域;加载模型、伸缩副本、版本路由和请求入口属于推理域。
| 组件或对象 | 适合承担的职责 | 不应顺手承担的职责 |
|---|---|---|
| Kubeflow Pipelines | 编排组件、传递参数与产物、记录运行 | 代替在线服务网关 |
| Kubeflow Trainer | 提交和管理分布式训练资源 | 决定线上流量策略 |
| 模型产物 | 保存版本、格式、指标和依赖约定 | 直接等同于可上线服务 |
| KServe | 加载模型并提供推理服务边界 | 替代训练流水线生成模型 |

训练流水线先固定输入、运行和产物
训练侧先写清三个接口:输入数据是什么、训练运行需要多少资源、输出模型如何被消费。Pipelines 的组件可以把数据处理、训练、评估和登记串成一个可追踪的 DAG;其中训练节点再把具体的分布式任务交给 Trainer。这样改数据处理逻辑时,不必把在线服务的部署规则一起改掉。
训练运行至少应记录数据快照或数据标识、代码版本、超参数、训练框架、资源规格、评估指标和模型输出位置。这里的“记录”是为了让推理侧能准确拿到一个可识别的模型版本,不是让推理服务重新猜测训练过程。
如果只是单机实验,可以先用普通容器任务验证产物契约;当训练需要多节点、GPU 或特定训练框架时,再由 Trainer 表达分布式资源和运行方式。不要把“需要 GPU”误写成“上线就必须采用同一种 GPU 配置”,训练和推理的容量模型通常不同。
用模型产物契约连接两条流水线
训练完成后,交给推理侧的不是一句“训练成功”,而是一组可消费的元数据。推荐把模型目录、模型版本、运行时镜像和必要的预处理约定作为一个发布单元。推理侧只接受满足契约的版本,训练侧则负责生成和登记它。
| 契约字段 | 回答的问题 |
|---|---|
| 模型版本 | 当前请求应加载哪一份不可混淆的模型 |
| 模型格式与目录 | 服务容器从哪里读取、以什么格式读取 |
| 运行时镜像 | 由哪个推理运行时加载,依赖是否匹配 |
| 输入输出约定 | 特征、张量或文本的形状与预处理是否一致 |
| 质量指标 | 上线前要对照哪些离线结果和阈值 |

KServe 只接收合格版本并管理在线边界
推理流水线的入口可以是一个经过审核的模型版本,出口是 KServe 管理的推理服务。服务侧关注模型加载、健康状态、资源副本和请求流量;它不需要知道训练任务是单机完成还是分布式完成。这样做也便于在同一服务边界内安排灰度、回滚或新旧版本对照。
“模型已经产出”与“服务可以接流量”是两个状态。上线前至少要确认模型目录可读、运行时与模型格式匹配、预处理和后处理契约一致,并把离线指标与服务版本一并登记。即使平台支持自动化部署,也应把这些条件做成发布流程中的明确门槛,而不是只看 Pod 是否运行。
对于批量推理、异步任务或离线评分,不必强行套用在线服务的流量模型。可以让训练流水线产出批处理任务所需的模型版本,再由单独的任务编排消费;只有持续接收请求、需要服务伸缩和版本流量管理时,才把 KServe 放在推理域的正面入口。
常见拆分坑点和最小落地顺序
第一,不能把 Kubeflow 毕业理解成所有子项目都自动替你完成治理;毕业是项目成熟度和社区治理信号,具体部署版本、组件状态与企业运维责任仍要单独确认。第二,不能只保存一个模型文件名;没有版本、格式和运行时约定,推理侧无法稳定复现。第三,不能把训练指标当成线上 SLO,在线延迟、吞吐、可用性和资源成本需要另行定义。
建议按下面的顺序推进:先用 Pipelines 固定数据、训练和评估的产物链;再用 Trainer 替换训练节点的资源实现;随后把模型版本、格式和运行时写成契约;最后让 KServe 只消费合格版本,并在服务层补充流量和回滚策略。每次只改变一侧,排障时更容易判断是产物、运行时还是服务配置的问题。
为什么不能让 KServe 直接触发训练?可以通过更高层的发布系统连接两者,但职责上应把训练产物生成与在线服务承载分开,避免一个服务对象同时承担离线计算和长期流量。
Kubeflow Pipelines 和 Trainer 是替代关系吗?不是。Pipelines 更像工作流编排层,Trainer 更像分布式训练执行能力;一个 Pipeline 可以把 Trainer 任务作为其中一个组件。
毕业后是否必须采用整套 Kubeflow?不必须。应按团队已有 Kubernetes、模型格式、训练规模和服务要求选择子项目;先把交接契约写清楚,通常比一次性安装全部组件更容易维护。
参考资料:https://www.cncf.io/announcements/2026/08/17/cncf-announces-kubeflows-graduation-solidifying-the-standard-for-cloud-native-ai-operations/;https://www.kubeflow.org/docs/components/pipelines/overview/;https://www.kubeflow.org/docs/components/trainer/overview/;https://www.kubeflow.org/docs/ecosystem/kserve/introduction/。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
448 收藏
-
490 收藏
-
339 收藏
-
378 收藏
-
328 收藏
-
科技周边 · 业界新闻 | 23小时前 | WEB开发 · PHP · parse_url PHP 8.5 Uri\Rfc3986\Uri URI extension Uri\WhatWg\Url WHATWG URL RFC 3986273 收藏
-
305 收藏
-
356 收藏
-
271 收藏
-
145 收藏
-
463 收藏
-
337 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习