2024 年 Google 代码之夏

2024 年 Google 代码之夏

Kubeflow 社区很高兴宣布我们已被选中,成为 2024 年 Google 代码之夏的参与组织之一。此页面旨在帮助您参与 Kubeflow 组织的 2024 年 GSoC 项目。

如何参与 Kubeflow GSoC?

请访问2024 年 Google 代码之夏并注册成为学生。接下来,查看下方的项目,决定您感兴趣的项目。请注意,您必须通过 GSoC 网站提交您的提案,且您的提案必须被选中才能参与。

贡献者申请于 2024 年 3 月 18 日开放,并于 2024 年 4 月 2 日截止。更多信息,请参阅 GSoC 网站和/或联系 GSoC 组织者。请仅就项目相关事宜联系导师,不要联系项目本身。

Slack

加入 Kubeflow Slack

不要私下联系导师,相反,请在 #gsoc-participants 频道中发起一个讨论串,以便其他人也能看到回复。请善待我们的导师,并请先搜索,看看您的问题是否已被回答。

会议

您可能希望参加负责您所选项目的组的下一次社区会议,请参阅下面的日历获取更多信息。

如果我的提案未被选中怎么办?

请理解,不是每个人都能被选中参加 Google 代码之夏 (GSoC),每个项目都有许多潜在候选人。

然而,我们仍然鼓励您参与 Kubeflow 项目!开始的方法包括参加您希望贡献的组件的工作组会议,以及阅读我们的贡献指南

2024 年 GSoC 项目想法

项目 1:Kubeflow Notebooks 2.0

Kubeflow Notebooks 是 Kubeflow 中广泛使用的组件,它允许数据科学家和 ML 工程师在 Kubernetes 集群上运行基于 Web 的 IDE(JupyterLab、VSCode、RStudio)。

目前正在努力创建 Kubeflow Notebooks 的下一个主要版本。

主要想法是改变 Kubeflow Notebook CRD,使其不再只是 Kubernetes PodSpec 的封装。

这一基础性改变使用户能够

  • 在生成后更新现有 Notebook,根据其管理员定义的选项,更改其“pod 配置”(CPU/GPU/RAM)、“存储卷”(存储)和“镜像”(已安装的软件包)。
  • 让终端用户生成 Notebook 更不易混淆。Pod 配置不再与 PodSpec 的特定部分(例如容忍度、请求、限制)相关,而是成为用户友好名称(例如“大型 GPU Notebook - A100 - 128GB”)的下拉列表,类似于云上的“实例类型”。
  • 让管理员对工作区如何生成拥有更多控制权,以及提供给用户的“选项”的生命周期。例如,管理员现在可以将现有镜像/Pod 配置“重定向”到新的配置,但延迟这些更新的应用直到下一次 Pod 重启(在此期间,界面会向用户显示更改待定的警告)。
  • 支持新的基于 Web 的 IDE,而无需进行特定的集成。集群管理员可以为其内部应用定义自定义的“kind”,或者甚至为现有应用(例如 Jupyter 和 VSCode)创建“变体”,包含其组织内特定团队所需的软件包和 Pod 大小。

您将是这一更大努力的一部分,并参与一项或多项代码交付成果

所需技能:Kubernetes 控制器 (Golang - Kubebuilder) 和/或 Web 开发 (JS - Angular, Python - Flask)

难度:中等/高

时长:350 小时

导师:Mathew Wicks, Kimonas Sitorchos, Julius von Kohout

组件:Notebooks



项目 2:无根 Kubeflow 容器镜像 (Istio Ambient Mesh)

Kubeflow 使用 Istio 作为服务网格,默认情况下,其 init 容器需要“根级别”网络权限。我们希望减少运行 Kubeflow 所需的特权容器数量,因此正在研究使用 Istio CNI,最终是 Istio Ambient mesh。

您将参与测试和研究这些更改的影响,并帮助推进集成工作。

更多信息请参见提案:https://github.com/kubeflow/manifests/blob/master/proposals/20200913-rootlessKubeflow.md

所需技能:Istio, Kubernetes, YAML

难度:中等

时长:175 小时

导师:Kimonas Sitorchos, Julius von Kohout

组件:Notebooks



项目 3:分类和整理 Kubeflow GitHub Issue 和 PR

Kubeflow 项目需要帮助来分类、整理并突出 https://github.com/kubeflow/kubeflow GitHub 仓库中的重要 Issue/PRs。目前有大约 200 个开放的 Issue 和 200 个开放的 PR,此外,还有许多因时间流逝而失效的 Issue/PRs(因不活跃而自动关闭)。

具体来说,您的目标将是

所需技能:GitHub, Kubernetes, YAML, Python, GO, JS

难度:中等

时长:175 小时

导师:Mathew Wicks, Kimonas Sitorchos, Julius von Kohout

组件:Notebooks/General



项目 4:为 Katib 实现 LLM 调优 API

最近,我们在 Kubeflow Training Operator 中实现了新的 train Python SDK API,以便轻松地使用预定义的数据集提供者、模型提供者和 HuggingFace trainer 在多个 GPU 上微调 LLM。

为了继续我们在 Kubeflow 中的 LLMOps 路线图,我们希望通过简单的 Python SDK API 为用户提供调优 LLM 超参数的功能。这需要在 Katib Python SDK 中进行适当的更改,以便用户可以设置他们想要为 LLM 优化的模型、数据集和超参数。

所需技能:Kubernetes, YAML, Python

难度:中等

时长:350 小时

导师:Andrey Velichkevich, Johnu George, Yuan (Terry) Tang, Yuki Iwai

组件:Katib



项目 5:为 Training Operator 支持分布式 Jax

开放 Issue:https://github.com/kubeflow/training-operator/issues/1619

我们希望在 Training Operator 中集成 Jax,以使用 Jax ML 框架在 Kubernetes 上运行分布式训练和微调任务。我们需要为 Jax 创建一个新的 Kubernetes 自定义资源(例如 JaxJob),并更新 Training Operator 控制器以支持它。潜在地,我们可以将 Jax 与 Training Operator Python SDK 集成,为数据科学家提供在 Kubernetes 上创建 JaxJob 的简单 API。

所需技能:Kubernetes, Go, YAML, Python

难度:中等

时长:350 小时

导师:Andrey Velichkevich, Johnu George, Yuan (Terry) Tang, Yuki Iwai

组件:Training Operator



项目 6:为 Katib 实现推送式指标收集

开放 Issue:https://github.com/kubeflow/katib/issues/577

Katib 将 Metrics Collector 实现为一个 sidecar 容器,用于在训练完成后从 Trials 中收集训练指标。这个 Metrics Collector 等待训练容器完成,并解析训练日志以获取准确率或损失等适当指标,从而获取超参数调优算法的评估结果。

有时容器 sidecar 方法可能不适用于用户。例如,如果他们的 Trial 资源执行器不支持 sidecar 容器。对于此类用例,我们希望在 Katib Python SDK 中实现一个新的 API,允许用户将其训练脚本中的指标直接推送到 Katib DB。

所需技能:Kubernetes, Go, YAML, Python

难度:中等

时长:175 小时

导师:Andrey Velichkevich, Johnu George, Yuan (Terry) Tang, Yuki Iwai

组件:Katib



项目 7:自动化生成 Kubeflow Python SDK 文档

开放 Issue:https://github.com/kubeflow/katib/issues/2081

Training Operator 和 Katib SDKs 为用户运行的每个公共 API 都提供了有效的 docstring。我们希望从这些 docstring 中为 Kubeflow 用户自动生成文档,这样用户就无需阅读源代码来理解 API 参数了。

所需技能:Python

难度:中等

时长:90 小时

导师:Andrey Velichkevich, Johnu George, Shivay Lamba, Yuan (Terry) Tang, Yuki Iwai

组件:Katib/Training Operator



项目 8:支持 Katib 中各种参数分布,例如对数均匀分布

开放 Issue:https://github.com/kubeflow/katib/pull/2059

我们需要增强 Katib 实验 API,以支持各种参数分布,例如均匀分布、对数均匀分布、q 对数均匀分布,使 Katib 更接近 Hyperopt 等其他超参数调优框架。目前,Katib 仅支持整数、浮点数和分类超参数的均匀分布。

所需技能:Kubernetes, Python, Go, YAML

难度:中等

时长:350 小时

导师:Andrey Velichkevich, Johnu George, Yuan (Terry) Tang, Yuki Iwai

组件:Katib



项目 9:在 Kubeflow Pipelines 中集成 PostgreSQL

开放 Issue:https://github.com/kubeflow/pipelines/issues/9813

Kubeflow Pipelines 必须将管道、实验、运行和工件的信息存储在数据库中。目前,它仅支持 MySQL/MariaDB 数据库。

我们计划支持 PostgreSQL 作为 MySQL/MariaDB 的替代方案,这样用户将能够重用现有的数据库,并且 PostgreSQL 将是支持多个数据库的良好用例。

所需技能:Kubernetes, Python, Go, YAML

难度:中等

时长:175 小时

导师:Ricardo Martinelli, Shivay Lamba

组件:Pipelines



项目 10:增强 KF 模型注册表 Python 客户端,实现从其他注册表无缝导入 ML 模型

我们旨在扩展 KF 模型注册表 Python 客户端的功能,通过实现从各种机器学习注册表无缝导入。虽然 HuggingFace 的导入功能已经实现(可以作为基础),我们寻求集成对 MLFlow 和其他流行注册表格式的支持。

所需技能:Python, ML 模型序列化格式, YAML, Kubernetes/Kubeflow (加分项)

难度:中等

时长:175 小时

导师:Matteo Mortari, Andrea Lamparelli

组件:Model Registry



反馈

此页面有帮助吗?