Kubeflow v1.7 通过增强的 UI、Katib 调优 API 和新的训练框架简化 Kubernetes 原生 MLOps
Kubeflow v1.7 用户正在利用他们的 Python 知识来构建无缝工作流,无需 Kubernetes CLI 命令,也无需为每次迭代构建容器镜像。通过多个组件中新的 UI,开发者可以将配置参数与日志关联起来,从而快速分析结果。当结合 Kubeflow 的 Python 化工作流和 Kubernetes 的操作效率时,这些增强功能为模型开发者节省了大量的时间和繁琐工作。
本次发布包含数百项新的提交,以下各节详细介绍了主要功能。您还将找到关于平台依赖项、变更日志、重大变更、生态系统合作伙伴、新的安全团队以及 Kubeflow 向 CNCF 过渡的更新信息。我们鼓励活跃用户为我们的下一次发布做出贡献,并在文末提供了加入社区的链接。
选定和重点交付
Katib
Katib 包含对 UI 和 SDK 的新增强功能。新的 Katib UI 提供了简化的细粒度配置和日志关联。此外,还增加了排序和过滤功能,使您可以更有条理地查看大量实验。这些功能最大限度地减少了手动使用低级命令来定位日志并将其与超参数实验配置关联的必要性。这简化了深入性能分析和模型参数后续迭代的过程。
在 1.7 版本中,Katib SDK 提供了新功能,包括一个调优 API 和从 Katib 数据库检索试运行指标的能力。模型开发者或数据科学家可以执行调优 API 来启动超参数实验,而无需了解底层系统,例如 Kubernetes、Docker。它会自动将用户训练脚本转换为 Katib 实验。Katib 变更日志详细介绍了包括这些 SDK 和 UI 主要功能在内的 100 多项更新和错误修复
- 缩小 Katib RBAC 规则 (#2091)
- 支持 Postgres 作为 Katib DB (#1921)
- [SDK] 在 Katib SDK 中创建调优 API (#1951)
- [SDK] 从 Katib DB 获取试运行指标 (#2050)
- Katib 配置中增加更多建议容器字段 (#2000)
- Katib UI:启用分页/排序/过滤 (#2017 和 #2040)
- Katib UI:添加授权机制 (#1983)
训练操作器
Kubeflow 统一分布式训练操作器的增强功能包括用于细粒度资源缩放(处理器、内存、存储)的配置选项。它现在包括对 Pytorch Elastic 工作负载的 HPA 支持,用户可以在 Job Spec 中指定目标指标/利用率。这用于根据需求自动扩缩 Pytorch Job,同时确保用户配置的弹性策略。这些增强功能显著简化了用户工作流,减少了操作上的繁琐和成本。Job Spec 是灵活的,支持多种调度程序类型:Kubernetes、Volcano、Custom。1.7 版本训练操作器的主要功能包括
- PodGroup 增强 (#1574)
- 与其他训练框架集成 - Paddlepaddle (#520)
- Pytorch Elastic 训练的增强功能 (#1645, #1626)
- 支持协同调度插件 (#1722)
- [SDK] 创建统一训练客户端 (#1719)
流水线 (Pipelines)
在 Kubeflow 1.7 中,流水线工作组 (KFP) 继续致力于 KFP v2,并发布了最新的 2.0.0-alpha.7 版本。此版本包括以下主要增强功能
- 流水线作为组件:流水线本身可以作为其他流水线中的组件使用,就像您在流水线中使用任何其他单步组件一样。(#8179, #8204, #8209, #8220)
- 子 DAG 可视化,允许流水线用户深入查看其流水线的子图组件。(#8326)
- 杂项错误和漏洞修复。
模型开发者认可 Kubeflow 流水线中节省时间的 Python 化工作流,这些工作流通过无需为预生产实验生成新镜像来加速迭代。Kubeflow 1.7 中的新 V2 UI 和 SDK 为每个流水线步骤提供了有价值的详细信息。这简化了迭代过程中参数、元数据和工件的关联和分析。
Kubeflow Web 应用(Notebooks、Volumes、TensorBoards)和控制器
Kubeflow 1.7 提供了新的 Web 应用增强功能,这些功能向终端用户暴露更多信息并改善了他们的 UI 交互。
一项有价值的新交付是所有主要表格都具有过滤 #6754 和排序 #6742 功能,并且可以一次性显示所有命名空间的对象 #6778。这使得终端用户可以更有效地浏览他们的工具和应用(Notebooks、TensorBoards、Volumes 等)。
此外,1.7 版本更新了 Notebooks 表单页面 #6826,并为 Kubeflow 管理的不同类型的工具提供了专用页面 #6769 #6788。这些详细页面允许用户查看日志、事件和配置 yaml,并且它们之间相互链接(例如,通过笔记本详情页面转到卷详情页面)。以前,这些功能只能通过 Kubernetes API 获得,这要求用户具有更高的权限并对 Kubernetes CLI 命令有更深入的了解。通过这些新功能,用户可以以更简单、更有条理和更安全的方式访问关键的 Kubeflow 资源信息。
其他值得注意的功能是对 PodDefaults 用户故事的小改进。除了定义 sidecar 和 init containers 等更多用例 #6749 之外,Kubeflow 的 TensorBoard 堆栈现在与 PodDefaults 集成 #6874 #6924。这些增强功能使得用户可以重用现有的 PodDefaults,从而从 Notebook 和 TensorBoard 服务器获得 S3 访问权限。
平台依赖项、重大变更、附加组件
Kubeflow 1.7 包含数百项提交。Kubeflow 发布过程包括 Kubeflow 工作组和 Kubeflow 分发版的多次测试。Kubeflow 的配置选项提供了高度的灵活性。在考虑了所有测试选项后,1.7 发布团队将一致测试和文档的关键依赖项缩小到以下内容。
| K8s | Istio | KNative | Kustomize | Cert Mgr | DEX | Argo | Tekton | Oidc-authservice |
| 1.25 / 1.24 | 1.16 | 1.8.1 | 3.2 或 5.0 | 1.10.1 | 2.31.2 | 3.3.8 | 1.5 | e236439
|
另一个有价值的平台增强功能是支持额外的处理器架构,包括 IBM 的 Power (#6684)。这项工作为添加其他处理器类型奠定了基础。
1.7 文档包括来自 Manifest 工作组的整体安装说明,以及每个 Kubeflow 工作组的详细功能回顾。大多数工作组已将其变更日志细分为突出核心功能、UI 增强、杂项更新、错误修复和重大变更的子部分。
工作组变更日志(包括重大变更)
社区继续努力确定核心组件和附加组件。附加组件的显著增强包括与 KServe 的 v.10 版本的持续集成,以及 BentoML 提供的新服务选项。BentoML 团队在 1.7 版本中为 Kubeflow 社区提供了巨大的支持,并且他们的文档非常优秀。有关 BentoML 的详细信息可在此处获取。
下一步是什么
自从 宣布 Google 将 Kubeflow 捐赠给 CNCF 以来,社区的活跃度持续大幅增长。社区定期举行会议,审查 CNCF 尽职调查所需的检查项的进展情况(会议记录)。
在 1.7 发布周期中,社区成立了一个安全团队,致力于提高 Kubeflow 组件及其依赖项的安全配置文件。安全团队已完成了这三项交付
未来,安全团队将努力制定持续政策并修复安全问题。例如,修复 CVE 是一项持续的维护要求,这项功能目前由 Kubeflow 分发商作为增值交付提供。一些分发商和终端用户正在努力修复上游项目中的 CVE,安全团队正在寻求关于定义和交付这些工作以及期望的帮助。
Kubeflow 团队正在努力与 Ray 和 MLflow 社区进行集成。Ray 集成进展已更接近用户测试,用户可以在此跟踪 issue 中找到更多信息。MLflow 集成正在进行中,其集成在此处跟踪。
如何开始使用 1.7
要试用 Kubeflow 1.7,我们推荐我们的安装页面,您可以在其中选择 Kubeflow 分发版。对于更高级的用户,我们推荐 manifests 安装指南。
加入社区
我们要感谢所有为 Kubeflow 1.7 做出贡献的人,特别是 Dominik Fleischmann,他担任了 v1.7 发布经理。正如您所见,Kubeflow 社区充满活力且多元化,为世界各地的组织解决了现实问题。
想帮忙吗?Kubeflow 社区工作组举行公开会议,并一直在寻找更多的志愿者和用户来释放机器学习的潜力。如果您有兴趣成为 Kubeflow 的贡献者,请随时查看以下资源。我们期待与您合作!
- 访问我们的Kubeflow 网站或Kubeflow GitHub 页面
- 加入 Kubeflow Slack 频道
- 加入 kubeflow-discuss 邮件列表
- 参加每周社区会议