GCP Kubeflow 和 GCP 云作曲家有啥区别?
Posted
技术标签:
【中文标题】GCP Kubeflow 和 GCP 云作曲家有啥区别?【英文标题】:What is the difference between GCP Kubeflow and GCP cloud composer?GCP Kubeflow 和 GCP 云作曲家有什么区别? 【发布时间】:2020-06-28 07:15:13 【问题描述】:我正在学习 GCP,遇到了 Kuberflow 和 Google Cloud Composer。 据我了解,两者似乎都用于编排工作流程,使用户能够在 GCP 中安排和监控管道。 我能弄清楚的唯一区别是 Kuberflow 部署和监控机器学习模型。我对么?在那种情况下,既然机器学习模型也是对象,我们不能使用 Cloud Composer 来编排它们吗?在管理机器学习模型方面,Kubeflow 有何帮助,比 Cloud Composer 更好??
谢谢
【问题讨论】:
【参考方案1】: Kubeflow 是一个用于开发和部署机器学习 (ML) 系统的平台。 Its components 专注于创建旨在构建 ML 系统的工作流。 Cloud Composer 提供基础架构来运行Apache Airflow worflows。它的组件称为Airflow Operators,工作流是这些称为 DAG 的算子之间的连接。这两个服务都在 Kubernetes 上运行,但它们基于不同的编程框架;因此,您是对的,Kuberflow 部署和监控机器学习模型。请参阅下面的问题答案:
-
在这种情况下,既然机器学习模型也是对象,我们不能使用 Cloud Composer 来编排它们吗?
您需要找到满足您需求的运算符,或创建具有创建模型所需结构的自定义运算符,请参阅this example。即使可以执行,这也可能比使用 Kubeflow 更困难。
-
在管理机器学习模型方面,Kubeflow 比 Cloud Composer 有什么帮助??
Kubeflow 隐藏了复杂性,因为它专注于机器学习模型。专门用于机器学习的框架使这些事情变得比使用 Cloud Composer 更容易,在这种情况下,Cloud Composer 可以被视为通用工具(专注于链接 Airflow Operators 支持的现有服务)。
【讨论】:
【参考方案2】:直接来自kubeflow.org
Kubeflow 项目致力于部署机器 Kubernetes 上的学习 (ML) 工作流简单、可移植且可扩展。 我们的目标不是重新创建其他服务,而是提供一个 为 ML 部署同类最佳开源系统的直接方法 到不同的基础设施。无论你在哪里运行 Kubernetes,你 应该能够运行 Kubeflow。
正如您所见,它是由许多软件组成的套件,这些软件在 ML 模型的生命周期中非常有用。它带有 tensorflow、jupiter 等。 现在,当谈到 Kubeflow 时,真正的交易是“在 Kubernetis 集群上轻松大规模地部署 ML 模型”。
但是,在 GCP 上,您已经是云、数据实验室、云构建等方面的 ML 套件。因此,如果您不需要“可移植性”因素,我不知道创建 kubernetis 集群的效率会有多高。
Cloud Composer 是真正意义上的工作流编排。它是 Apache Airflow 的“托管”版本,非常适合任何变化很大的“简单”工作流,因为您可以通过可视化 UI 和 python 对其进行更改。
它也是自动化基础设施操作的理想选择:
【讨论】:
【参考方案3】:Kubeflow 和 Kubeflow 管道
Kubeflow 与 Kubeflow Pipelines 并不完全相同。 Kubeflow 项目主要开发用于分布式 ML 训练(TFJob、PyTorchJob)的 Kubernetes 算子。另一方面,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 有数据传递的概念。每个组件都有输入和输出,并且管道将它们连接到数据传递图中。 Cloud Composer/Apache Airflow 并没有真正的数据传递(Airflow 具有全局变量存储和 XCom,但它与显式数据传递不同)并且管道是任务依赖图而不是主要的数据依赖图(KFP 也可以有任务依赖项,但通常不需要)。 KFP 支持执行缓存功能,可跳过执行之前已执行的任务。 KFP 将管道运行产生的所有工件记录在 ML 元数据数据库中。 KFP 具有实验性适配器,允许将 Airflow 运算符用作组件。 KFP 拥有庞大且快速增长的定制组件生态系统。【讨论】:
以上是关于GCP Kubeflow 和 GCP 云作曲家有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用专门用于 GCP 的 TFX SDK 实现 Kubeflow“运行参数”?