GCP Kubeflow 和 GCP cloud composer 有什么区别?

What is the difference between GCP Kubeflow and GCP cloud composer?

我正在学习 GCP,遇到了 Kuberflow 和 Google Cloud Composer。
据我了解,似乎两者都用于编排工作流程,使用户能够在 GCP 中调度和监控管道。
我能弄清楚的唯一区别是 Kuberflow 部署和监控机器学习模型。我对么?在那种情况下,由于机器学习模型也是对象,我们不能使用 Cloud Composer 来编排它们吗?在管理机器学习模型方面,Kubeflow 如何提供比 Cloud Composer 更好的帮助??

谢谢

直接取自 kubeflow.org

The Kubeflow project is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Our goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures. Anywhere you are running Kubernetes, you should be able to run Kubeflow.

正如您所见,它是由许多在 ML 模型的生命周期中有用的软件组成的套件。它带有tensorflow、jupiter等。 现在真正的交易,当谈到 Kubeflow 时是 "easy deploy of a ML model at scale on a Kubernetis cluster"。

但是在 GCP 上,您已经在云、数据实验室、云构建等中使用了 ML 套件。所以我不知道如果您不需要 "portability"因素。

Cloud Composer 是处理工作流程编排的真正意义所在。它是 Apache Airflow 的 "managed" 版本,非常适合任何变化很大的 "simple" 工作流程,因为您可以通过视觉 UI 和 python 来更改它。

它也是自动化基础架构操作的理想选择:

  • Kubeflow is a platform for developing and deploying a machine learning (ML) systems. Its components 专注于创建旨在构建 ML 系统的工作流。
  • Cloud Composer 为 运行 Apache Airflow worflows. Its components are known as Airflow Operators 提供基础架构,工作流是这些运算符之间的连接,称为 DAG。

两种服务运行都基于Kubernetes,但它们基于不同的编程框架;因此,你是对的,Kuberflow 部署和监控机器学习模型。请参阅下面的问题答案:

  1. 那么,既然机器学习模型也是对象,我们不能使用 Cloud Composer 来编排它们吗?

您需要找到满足您需求的运算符,或创建具有创建模型所需结构的自定义运算符,请参阅 this example。即使可以执行,这也可能比使用 Kubeflow 更困难。

  1. 在管理机器学习模型方面,Kubeflow 比 Cloud Composer 有何帮助??

Kubeflow 隐藏了复杂性,因为它专注于机器学习模型。专门用于机器学习的框架使这些事情比使用 Cloud Composer 更容易,在这种情况下,Cloud Composer 可以被视为通用工具(专注于链接 Airflow Operators 支持的现有服务)。

Kubeflow 和 Kubeflow 管道

Kubeflow 与 Kubeflow 管道并不完全相同。 Kubeflow 项目主要开发用于分布式 ML 训练的 Kubernetes 操作符(TFJob、PyTorchJob)。另一方面,Pipelines 项目开发了一个系统,用于在 Kubernetes 上创作和 运行 管道。 KFP也有一些示例组件,主要产品是流水线创作SDK和流水线执行引擎

Kubeflow 管道与 Cloud Composer

项目很相似,但也有不同:

  • KFP 使用 Argo 进行执行和编排。 Cloud Composer 使用 Apache Airflow。
  • KFP/Argo 专为在 Kubernetes 上分布式执行而设计。 Cloud Composer/Apache Airflow 更适合单机执行。
  • KFP/Argo 与语言无关——组件可以使用任何语言(组件描述容器化的命令行程序)。 Cloud Composer/Apache Airflow 使用 Python(Airflow 运算符定义为 Python 类)。
  • KFP/Argo有数据传递的概念。每个组件都有输入和输出,pipleine 将它们连接到数据传递图中。 Cloud Composer/Apache Airflow 并没有真正的数据传递(Airflow 有全局变量存储和 XCom,但它与显式数据传递不是一回事)并且管道是一个任务依赖图而不是主要的数据依赖图(KFP 可以也有任务依赖性,但通常不需要它们)。
  • KFP 支持跳过执行之前已经执行过的任务的执行缓存功能。
  • KFP 在 ML 元数据数据库中记录管道运行产生的所有工件。
  • KFP 具有允许使用 Airflow 运算符作为组件的实验性适配器。
  • KFP 拥有庞大且快速发展的自定义组件生态系统。