机器学习任务编排工具比较( 二 )


两种工具都使用Python和DAG定义任务和依赖项 。如果您的团队较小并且需要快速上手 , 请使用Luigi 。如果您的团队规模较大 , 可以使用Airflow , 一旦您掌握了学习曲线 , 就可以从最初的生产力损失中获得更大的动力 。
Luigi 对比 ArgoArgo建立在Kubernetes之上 , 并且每个任务都作为单独的Kubernetes容器运行 。如果您已经在大多数基础架构中使用Kubernetes , 这可能会很方便 , 但如果您没有使用它 , 则会增加复杂性 。Luigi是一个Python库 , 可以与Python包管理工具(如pip和conda)一起安装 。Argo是Kubernetes扩展 , 使用Kubernetes安装 。虽然这两种工具都可以将任务定义为DAG , 但使用Luigi时 , 您将使用Python编写这些定义 , 而使用Argo时 , 您将使用YAML 。
如果您已经对Kubernetes进行了投资 , 并且知道所有任务都是吊舱 , 请使用Argo 。如果要编写DAG定义的开发人员对YAML比对Python更满意 , 则还应该考虑一下 。如果您不是在Kubernetes上运行并且在团队中拥有Python专业知识 , 请使用Luigi 。
Luigi 对比 KubeflowLuigi是用于常规任务编排的基于Python的库 , 而Kubeflow是专门用于机器学习工作流的基于Kubernetes的工具 。Luigi是为协调一般任务而构建的 , 而Kubeflow具有用于实验跟踪 , 超参数优化和为Jupyter笔记本服务的预构建模式 。Kubeflow由两个不同的组件组成:Kubeflow和Kubeflow管道 。后者专注于模型部署和CI / CD , 并且可以独立于主要Kubeflow功能使用 。
如果您需要协调从数据清理到模型部署的各种不同任务 , 请使用Luigi 。如果您已经使用Kubernetes并希望安排常见的机器学习任务(例如实验跟踪和模型训练) , 请使用Kubeflow 。
Luigi 对比 MLFlowLuigi是一个通用的任务编排系统 , 而MLFlow是一个更专业的工具 , 可以帮助管理和跟踪您的机器学习生命周期和实验 。您可以使用Luigi定义常规任务和依赖项(例如训练和部署模型) , 但是可以将MLFlow直接导入到机器学习代码中 , 并使用其助手功能来记录信息(例如您正在使用的参数)并 工件(例如训练有素的模型) 。您还可以将MLFlow用作命令行工具 , 以服务使用通用工具(例如scikit-learn)构建的模型或将其部署到通用平台(例如AzureML或Amazon SageMaker) 。
Airflow 对比 Argo【机器学习任务编排工具比较】Argo和Airflow都允许您将任务定义为DAG , 但是在Airflow中 , 您可以使用Python进行此操作 , 而在Argo中 , 您可以使用YAML 。Argo作为Kubernetes窗格运行每个任务 , 而Airflow则生活在Python生态系统中 。在选择Argo之前 , Canva评估了这两个选项 , 您可以观看此演讲以获取详细的比较和评估 。
如果您想要更成熟的工具并且不关心Kubernetes , 请使用Airflow 。如果您已经对Kubernetes进行了投资 , 并且想要运行以不同堆栈编写的各种任务 , 请使用Argo 。
Airflow 对比 KubeflowAirflow是一个通用的任务编排平台 , 而Kubeflow则特别专注于机器学习任务 , 例如实验跟踪 。两种工具都允许您使用Python定义任务 , 但是Kubeflow在Kubernetes上运行任务 。Kubeflow分为Kubeflow和Kubeflow管道:后一个组件允许您指定DAG , 但它比常规任务更着重于部署和模型服务 。
如果您需要一个成熟的 , 广泛的生态系统来执行各种不同的任务 , 请使用Airflow 。如果您已经使用Kubernetes , 并希望使用更多现成的机器学习解决方案模式 , 请使用Kubeflow 。
Airflow 对比 MLFlowAirflow是一个通用的任务编排平台 , 而MLFlow是专门为优化机器学习生命周期而构建的 。这意味着MLFlow具有运行和跟踪实验以及训练和部署机器学习模型的功能 , 而Airflow具有广泛的用例 , 您可以使用它来运行任何任务集 。Airflow是一组用于管理和计划任务的组件和插件 。MLFlow是一个Python库 , 您可以将其导入到现有的机器学习代码中 , 还可以使用命令行工具来将scikit-learn编写的机器学习模型训练和部署到Amazon SageMaker或AzureML 。
如果您想以一种开明的 , 开箱即用的方式来管理机器学习实验和部署 , 请使用MLFlow 。如果您有更复杂的要求并且想要更好地控制如何管理机器学习生命周期 , 请使用Airflow 。
Argo 对比 KubeflowKubeflow的某些部分(例如Kubeflow管道)建立在Argo之上 , 但是Argo的建立是为了编排任何任务 , 而Kubeflow则专注于特定于机器学习的任务 , 例如实验跟踪 , 超参数调整和模型部署 。Kubeflow管道是Kubeflow的一个独立组件 , 专注于模型部署和CI / CD , 并且可以独立于Kubeflow的其他功能使用 。这两种工具都依赖Kubernetes , 如果您已经采用了它 , 那么可能会让您更感兴趣 。使用Argo , 您可以使用YAML定义任务 , 而Kubeflow允许您使用Python接口 。