登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  科技周边 >  业界新闻

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加载模型并提供推理服务边界替代训练流水线生成模型
Kubeflow Pipelines、Trainer、模型产物与 KServe 的训练域和推理域边界说明图
图1:Kubeflow 训练域与推理域的组件边界说明图,模型产物是两侧的交接点。

训练流水线先固定输入、运行和产物

训练侧先写清三个接口:输入数据是什么、训练运行需要多少资源、输出模型如何被消费。Pipelines 的组件可以把数据处理、训练、评估和登记串成一个可追踪的 DAG;其中训练节点再把具体的分布式任务交给 Trainer。这样改数据处理逻辑时,不必把在线服务的部署规则一起改掉。

训练运行至少应记录数据快照或数据标识、代码版本、超参数、训练框架、资源规格、评估指标和模型输出位置。这里的“记录”是为了让推理侧能准确拿到一个可识别的模型版本,不是让推理服务重新猜测训练过程。

如果只是单机实验,可以先用普通容器任务验证产物契约;当训练需要多节点、GPU 或特定训练框架时,再由 Trainer 表达分布式资源和运行方式。不要把“需要 GPU”误写成“上线就必须采用同一种 GPU 配置”,训练和推理的容量模型通常不同。

用模型产物契约连接两条流水线

训练完成后,交给推理侧的不是一句“训练成功”,而是一组可消费的元数据。推荐把模型目录、模型版本、运行时镜像和必要的预处理约定作为一个发布单元。推理侧只接受满足契约的版本,训练侧则负责生成和登记它。

契约字段回答的问题
模型版本当前请求应加载哪一份不可混淆的模型
模型格式与目录服务容器从哪里读取、以什么格式读取
运行时镜像由哪个推理运行时加载,依赖是否匹配
输入输出约定特征、张量或文本的形状与预处理是否一致
质量指标上线前要对照哪些离线结果和阈值
训练运行、模型目录、模型版本、运行时镜像与 KServe 服务的模型产物契约结构图
图2:模型产物契约结构说明图,展示训练输出如何被推理服务消费。

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/。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>