Kubeflow 团队正式宣布推出 Trainer v2.2 版本。v2.2 版本的发布进一步彰显了团队致力于拓展 Kubeflow Trainer 生态系统的决心——通过对 JAX、XGBoost 和 Flux 的原生支持,更好地满足开发者们的实际需求,同时提升TrainJob的可观测性。
v2.2版本的主要亮点包括:
- 为 JAX 和 XGBoost 的运行环境提供顶级支持,在 Kubernetes 上实现原生分布式训练。这标志着 Trainer 项目的一个重要里程碑:实现了与 Training Operator v1 CRD的全面兼容——PyTorchJob、MPIJob、JAXJob 和 XGBoostJob现已统一归入单一的 TrainJob 抽象之中。
- 增强了训练的可观测性,使得进度和指标能够直接从训练脚本传播到 TrainJob 状态。Hugging Face Transformers 已经与 KubeflowTrainerCallback 集成,以自动实现这一功能。
- Flux 运行时支持,将 HPC 工作负载引入 Kubernetes 并改善了 TrainJob 中的 MPI 启动过程。
- TrainJob activeDeadlineSeconds API,为训练作业提供了明确的超时策略。
- RuntimePatches API,引入了一种更灵活和可扩展的方式,用于从 TrainJobs 自定义运行时配置。
现在,只需一条命令即可安装 Kubeflow Trainer 控制平面及其训练运行环境:

重大变更
本次发布版本引入了一系列架构改进和重大变更,为更具可扩展、模块化的Trainer奠定了基础。升级至Trainer v2.2版本时,建议务必查看以下内容:
将 PodTemplateOverrides 替换为 RuntimePatches API
PodTemplateOverrides 已被 RuntimePatches API 所取代,以支持管理器级别的自定义设置,并避免当多个控制器同时对同一TrainJob进行修改时发生冲突。如果你在TrainJob的配置文件或SDK代码中使用了PodTemplateOverrides,那么需要将其迁移到基于manager-keyed的RuntimePatches结构。
从 Torch MLPolicy API 中移除 numProcPerNode 字段
Torch MLPolicy 中的 numProcPerNode 字段已被删除。现在,每个节点的进程配置直接通过容器资源进行处理,因此任何明确设置 numProcPerNode 的 TrainJob 显式配置或 SDK 调用在升级到 v2.2 版本之前都需要进行更新。
移除弹性策略API
在 Trainer v2.2 版本中,弹性策略 API 已从 MLPolicy 中移除。此版本暂未提供弹性训练功能,开发团队正积致力于重新设计并实现该功能,以供后续版本使用。如果你的 TrainJob 依赖于弹性训练配置,建议暂缓升级,直至相关工作完成。
部分 TrainJob API 字段现在是不可变的
现在,多个TrainJob 规范字段在作业创建后会被强制设为不可变状态。这意味着,在 TrainJob 运行期间,对诸如 .spec.trainer.image 等字段的修改将被立即拒绝,而不再是在 JobSet 控制器级别悄然失败。如果您的工作流依赖于在运行中的 TrainJob 上更新这些字段,那么这些更新将被准入 Webhook 拒绝。请检查您的 TrainJob 更新逻辑,以确保其与我们 v2.2 中的不可变性策略兼容。