Kubeflow 2024/3/19版本的文档
此专栏用来展示相关的内容翻译,重点关注本地部署,关于运营商的方案,请自行查阅
文档地址https://www.kubeflow.org/docs/
开始编辑时间:2024/3/27;最后编辑时间2024/3/27
Kubeflow文档1:介绍与架构
介绍
Kubeflow介绍
Kubeflow项目致力于在Kubernetes上简化、可移植和扩展机器学习(ML)工作流的部署。我们的目标不是重新创建其他服务,而是为ML部署最佳开源系统提供直观的方式,以适应不同的基础设施。只要您在运行Kubernetes,您就应该能够运行Kubeflow。
下图显示了主要的Kubeflow组件,涵盖了在Kubernetes上每个ML生命周期步骤的过程。
什么是kubeflow
Kubeflow是用于Kubernetes的机器学习工具包。
要使用Kubeflow,基本工作流程如下:
- 下载并运行Kubeflow部署二进制文件。
- 自定义生成的配置文件。
- 运行指定的脚本将您的容器部署到您的特定环境中。
您可以调整配置以选择用于ML工作流每个阶段的平台和服务:
- 数据准备
- 模型训练
- 预测服务
- 服务管理
您可以选择在本地、本地设备上,或者云环境中部署您的Kubernetes工作负载。
kubeflow的任务
我们的目标是尽可能简化机器学习(ML)模型的扩展和部署到生产环境中,通过让 Kubernetes 发挥其优势:
- 在多样化的基础设施上进行简单、可重复、可移植的部署(例如,在笔记本上进行实验,然后移动到本地集群或云端)
- 部署和管理松耦合的微服务
- 根据需求进行扩展 由于 ML 从业者使用各种各样的工具,其中一个关键目标是根据用户需求(在合理范围内)定制堆栈,并让系统处理"无聊的事情"。虽然我们已经开始使用一套狭窄的技术,但我们正在与许多不同的项目合作,以包含更多的工具。
最终,我们希望拥有一组简单的清单,让您能够在任何已经运行 Kubernetes 的地方轻松使用 ML 堆栈,并且可以根据部署的集群自动配置。
历史
Kubeflow起初是将Google内部运行TensorFlow的方式开源化的一种方式,基于一个名为TensorFlow Extended的流水线。它最初只是一种在Kubernetes上运行TensorFlow作业的简单方式,但现已扩展为一个多架构、多云的框架,用于运行端到端的机器学习工作流程。
路线图
Kubeflow的未来路线图,参考Kubeflow roadmap.
下面的组件也有路线图:
架构
架构章节的内容过时了,但是官方还没有更新,我会在更新后及时更新博客内容
Kubeflow架构一览
Kubeflow 是一个用于开发和部署机器学习系统的平台。对于想要构建和测试机器学习流水线的数据科学家来说,Kubeflow 是一个很好的选择。同时,对于机器学习工程师和运维团队来说,Kubeflow 也适用于将机器学习系统部署到各种环境中,包括开发、测试和生产级别的服务。
概念一览
Kubeflow是针对Kubernetes的机器学习工具包。
以下图表显示了Kubeflow作为一个平台,用于在Kubernetes上安排机器学习系统的组件:
Kubeflow基于Kubernetes构建,用于部署、扩展和管理复杂系统。使用Kubeflow配置界面(见下文),您可以指定工作流程所需的ML工具。然后,您可以将工作流程部署到各种云端、本地和本地平台上,用于实验和生产用途。
介绍ML工作流
当您开发和部署机器学习系统时,机器学习工作流通常包括几个阶段。开发机器学习系统是一个迭代过程。您需要评估机器学习工作流的各个阶段的输出,并在必要时对模型和参数进行更改,以确保模型能够产生您需要的结果。
为简单起见,以下图表显示了工作流阶段的顺序。工作流的末端箭头指向回流,表示这个过程的迭代性质。
在机器学习工作流程中,有两个主要阶段:实验阶段和生产阶段。
实验阶段的详细步骤如下:
- 确定要让机器学习系统解决的问题。
- 收集和分析训练机器学习模型所需的数据。
- 选择一个机器学习框架和算法,并编写模型的初始版本。
- 对数据进行实验,并训练模型。
- 调整模型的超参数,以确保处理最有效率并获得最准确的结果。
生产阶段的详细步骤如下:
- 将数据转换成训练系统所需的格式。为了确保模型在训练和预测过程中行为一致,转换过程在实验阶段和生产阶段必须相同。
- 训练机器学习模型。
- 将模型提供给在线预测或批处理运行。
- 监控模型的性能,并将结果反馈到调整或重新训练模型的过程中。
ML工作流中的Kubeflow组件
下面的图将Kubeflow添加到工作流中,显示了在每个阶段哪些Kubeflow组件是有用的:
Kubeflow包含用于生成和管理Jupyter笔记本的服务。使用笔记本进行交互式数据科学和实验机器学习工作流程。
Kubeflow Pipelines是一个基于Docker容器构建、部署和管理多步骤机器学习工作流程的平台。
Kubeflow提供了几个组件,您可以使用这些组件在多个平台上构建机器学习训练、超参数调整和模型服务工作负载。
特定ML工作流的例子
以下图表展示了一个简单的特定机器学习工作流程示例,您可以使用它来训练并提供一个在MNIST数据集上训练的模型:
Kubeflow接口
本节介绍了可用于与Kubeflow交互以及在Kubeflow上构建和运行ML工作流的接口
Kubeflow用户接口 (UI)
如下所示:
UI 提供了一个中央仪表板,您可以使用它来访问您的 Kubeflow 部署的组件。
Kubeflow APIs和SDKs
Kubeflow提供了各种组件的API和Python SDK参考文档,包括以下内容:
- Pipelines reference docs:涵盖Kubeflow Pipelines API和SDK,包括Kubeflow Pipelines领域特定语言(DSL)的文档。
- Fairing reference docs:涵盖Kubeflow Fairing SDK的文档。