Kubeflow 和 Argo 的综合比较

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: MLOps 通过自动化可重复的任务来帮助简化 ML 生命周期。它还提供了帮助数据科学团队与其他团队有效协作、沟通和协调的最佳实践。机器学习管道是 MLOps 中的一个关键概念。理想情况下,一旦机器学习模型投入生产,就会构建一个可以根据需要重新训练模型的系统,并且可以进一步开发该系统,而不是依赖临时工作流。许多公司的一个重要问题是找到最合适的平台来管理他们的自动化工作流程。一些人正在寻找为 ML/MLOps 构建的特定工具,例如:Kubeflow,而另一些人则在寻找更通用的编排器,例如:Argo 或 Airflow,它们可以适用于机器学习工作流。

Kubeflow 的组件

Kubeflow 是一个免费的开源 ML 平台,允许您使用 ML 管道来编排在 Kubernetes 上运行的复杂工作流。该方案基于谷歌部署 TensorFlow 模型的方法,即TensorFlow Extended。构成 Kubeflow 的逻辑组件包括:

  • Kubeflow Pipelines:使您能够基于 Docker 容器构建和部署可移植、可扩展的机器学习工作流。它包括一个用于管理作业的用户界面、一个用于安排多步骤 ML 工作流的引擎、一个用于定义和操作管道的 SDK,以及用于通过 SDK 与系统交互的 Notebooks 。
  • KFServing:在 Kubernetes 上启用无服务器推理。它还为 PyTorch、TensorFlow、scikit-learn 和 XGBoost 等 ML 框架提供高性能和高度抽象的接口。
  • 多租户:简化用户操作以允许用户仅查看和编辑其配置中的 Kubeflow 组件和模型制品。这个 Kubeflow 的多用户隔离下的关键概念包括身份验证、授权、管理员、用户和配置文件。
  • 训练算子(Operators):使您能够通过算子训练 ML 模型。例如,它提供了在 Kubernetes 上运行 TensorFlow 模型训练的 TensorFlow 训练(TFJob)、用于 Pytorch 模型训练的 PyTorchJob 等。
  • Notebooks:Kubeflow 部署提供用于管理和生成 Jupyter notebooks 的服务。每个 Kubeflow 部署可以包含多个 notebook 服务,每个 notebook 服务可以包含多个 notebook 。

Argo 的组件

Argo 是一个开源的容器原生工作流引擎,用于在 Kubernetes 上编排并行作业。它是由 Intuit 的子公司 Applatex 创建的。 Argo 可以一次处理数以万计的工作流程,每个工作流程有 1,000 个步骤。这些逐步过程具有依赖性,被称为有向无环图。 Argo 工作流程的主要组成部分讨论如下:

  • 工作流:这是 Argo 中最重要的组件。它有两个主要功能:第一个是定义要执行的工作流,第二个是存储工作流的状态。
  • 模板:模板有两大类,即模板定义和模板调用器。模板定义定义了要完成的工作,通常在一个容器中。此类别下的模板类型包括 Script、Containers、Resource 和 Suspend。资源模板用于在集群上创建、应用、替换、删除或修补资源。暂停模板用于在特定的持续时间内停止执行。模板调用器用于调用或调用其他模板并提供执行控制。此类别下的模板类型包括 Step 模板,它允许您在一系列步骤中定义任务,以及 DAG 模板,它允许您将任务定义为依赖关系图。
  • 工作流执行器:这是一种执行容器的方法。它符合特定的接口,使 Argo 能够执行某些操作,例如:收集制品、管理容器生命周期、监控 pod 日志等。
  • 制品存储库:这是存储制品的地方。请记住,制品是由容器保存的文件。

Kubeflow 和 Argo 之间的相似之处

Kubeflow 和 Argo 有一些共同点,尽管它们是为不同的目的而构建的。在本节中,我们将看看这两个平台之间的相似之处。

  • 这两个平台都具有管道编排功能,并且它们对管道采取了一些类似的方法。在这两个平台中,管道步骤本质上是运行的独立容器,并且数据流在管道配置中定义。
  • 构建 CI/CD 系统的 DevOps 工程师将非常熟悉在两者中定义管道。通过这两者,您可以使用 YAML 定义管道。然而,Kubeflow 还允许您使用 Python 接口来定义除 YAML 之外的任务。
  • Kubeflow 和 Argo 都是开源软件。因此,任何人都可以从任何地方轻松访问它们。
  • 这两个平台都需要 Kubernetes,如果您已经精通 k8s,那么您将有更好的时间采用它们。

Kubeflow 和 Argo 的区别

这两个平台都起源于大型科技公司,Kubeflow 起源于 Google,Argo 起源于 Intuit。

Kubeflow 是 Kubernetes 的端到端 MLOps 平台,而 Argo 是 Kubernetes 的工作流引擎。 这意味着 Argo 纯粹是一个用于任何类型的 DAG(例如 CI/CD)的管道编排平台。 虽然它可用于编排 ML 管道,但它不提供其他特定于 ML 的功能,例如实验跟踪或超参数优化。 另一方面,Kubeflow 试图在单个平台下捕获整个模型生命周期,这意味着它具有上述功能和许多其他功能。

网络异常,图片无法展示
|

Kubeflow 管道构成 Kubeflow 的一部分,可以编排像 Argo 这样的任务。 换句话说,Argo 可以看作是 Kubeflow 的一部分。 从更好的角度来看,Argo 和 MLflow 的组合可以提供与 Kubeflow 更具可比性的功能集。 比较平台的功能,我们可以开始在脑海中进行一些特征数学运算(当然,这并不详尽):

MLflow + Argo = Kubeflow
Kubeflow - Kubeflow Pipelines = MLflow
Kubeflow Pipelines = Argo
复制代码

总结

更全面的功能集总是很诱人。 当这两种解决方案都是开源的时,采用具有更多功能的解决方案可能是合乎逻辑的,尤其是当它们共享 Kubernetes 作为核心依赖项时。 然而,功能也带来了复杂性。

假设您已经在使用 Argo(或任何其他工作流编排器),并且您正在寻求实现一两个机器学习管道。 在这种情况下,合乎逻辑的选择是继续使用您选择的协调器。 此外,如果您有其他一些您喜欢使用的 ML 工具,那么坚持使用这些工具并添加 Argo 可能是有意义的。

但是,如果您正在寻找一个能够集中所有内容并随着您的团队成长而产生收益的综合平台,那么 Kubeflow 可能是一个更好的选择。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes Cloud Native 开发工具
Argo与Flux在云原生GitOps实践上的能力对比与分析
随着云原生技术的普及和落地,越来越多的云原生应用被部署到生产环境中,由于云原生应用通常都是基于云的分布式部署模式,且每个应用可能是由多个功能组件互相调用来一起提供完整的服务的,每个组件都有自己独立的迭代流程和计划。在这种情况下,功能组件越多,意味着应用的发布管理越复杂,如果没有一个好的方案或者系统来管理复杂应用的发布上线的话,业务面临的风险也是非常大的。开源社区在复杂应用发布管理方面逐渐开始发力,
4602 1
Argo与Flux在云原生GitOps实践上的能力对比与分析
|
4月前
|
存储 弹性计算 运维
如何使用Argo Workflows编排基因计算工作流?
为了高效、准确地整合和分析大量基因计算数据,工作流的自动化编排成为了一项关键技术,而容器化、灵活、易用的工作流引擎Argo Workflows在其中脱颖而出,成为串联基因计算各个环节的得力助手。
|
4月前
|
机器学习/深度学习 分布式计算 Kubernetes
YAML焦虑再见:PythonSDK助力大规模Argo Workflows构建
Hera优雅的对接Python生态体系与Argo Workflows框架,将繁琐复杂的工作流设计转化为直观简明的创作体验。它不仅为大规模任务编排开创了一条免受YAML复杂性困扰的通途,还为数据工程师铺设了平滑的桥梁,让他们能够借助熟悉的Python语言,无缝构造和优化机器学习工作流。
|
6月前
|
Prometheus Kubernetes 监控
|
运维 Kubernetes Cloud Native
|
运维 Kubernetes Cloud Native
|
域名解析 运维 Kubernetes
SREWorks云原生数智运维工程实践-Kubernetes资源编排之一:Pod YAML篇(下)
SREWorks云原生数智运维工程实践-Kubernetes资源编排之一:Pod YAML篇
174 0
|
Prometheus Kubernetes Cloud Native
Kubernetes Argo Rollouts 高级的部署能力
Kubernetes Argo Rollouts 高级的部署能力
575 1
|
存储 JSON Kubernetes
一起做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Overview 篇
一起做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Overview 篇
194 0
一起做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Overview 篇
|
运维 监控 开发工具
Tekton实践篇-Tekton和Argocd的梦幻联动
Tekton实践篇-Tekton和Argocd的梦幻联动
Tekton实践篇-Tekton和Argocd的梦幻联动