【翻译】开源机器学习流水线工具调研(MLOps)(中)

简介: 实施数据科学项目不是一件简单的任务。至少,数据分析工作流程必须定期运行,以产生最新的结果。比如,一份上周数据的报告,或者由于概念发生变化而重新训练机器学习模型。在某些情况下,这类工作流的输出需要作为API公开,例如,一个经过训练的机器学习模型,通过点击REST端点来生成预测结果。这就需要开发实践允许工作流(也称为pipeline)是可重现、可重复,并且可以很容易地部署。近年来,涌现了大量开源工作流管理工具。由于有太多的选择,团队很难选择最适合他们需求的工具,本文回顾了13种开源工作流管理工具。

Flyte

评估部分 分数 评价
易用性 2 API是干净的。任务是用带有少量装饰器的Python函数定义的。
开发实践 NA 工作流不能在本地执行,只能在Kubernetes中执行。不支持增量构建。
调试 NA 没有调试工具。
测试 NA 不支持集成测试。不支持管道测试。
部署 2 运行在Kubernetes上,支持调度。不清楚是否有可能将工作流公开为API端点
编程语言 1 支持一些与SQL兼容的系统,比如Hive和Presto。也支持Spark。不支持R/Julia,
可维护性 1 API是干净的,但文档仍在进行中,只有几个代码示例。
Jupyter notebooks 支持 NA 不支持交互式开发,也不支持以编程方式执行notebooks。

资料

Kale

评估部分 分数 评价
易用性 3 在Kale中部署管道只需要向Jupyter notebook单元添加标签。
开发实践 1 工作流可以本地执行。不支持增量构建。
调试 NA 没有调试工具。
测试 NA 不支持集成测试。不支持管道测试。
部署 2 批量处理的部署是无缝的,一旦您标注了您的笔记本,您就可以将工作流提交到Kubernetes集群。但是,不支持对API端点重新使用特性工程代码。
编程语言 NA 仅支持Python。
可维护性 NA 管道必须在单个笔记本文件中声明,这可能会导致很多麻烦,因为单元格副作用难以跟踪。 在解决版本控制冲突时,让多人编辑同一个文件会导致很多麻烦。 最后,您编写的代码不是执行的代码(它们使用 jinja 生成 Kubeflow 代码),这可能会导致调试问题。
Jupyter notebooks 支持 2 Kale是一个notebook优先的框架。您可以交互式地开发管道,而notebook本身也成为管道,但是,它在执行之前已经经历了一些预处理步骤。

资料

Kedro

评估部分 分数 评价
易用性 1 管道使用Python API定义,其中每个任务都是一个函数。虽然工作流API是干净的,但一些额外的模块具有复杂的API。此外,它是非常固执的,并期望您的项目遵循一个特定的文件夹布局,其中包括几个特定kedro的配置文件。
开发实践 1 工作流可以本地执行。不支持增量构建。
调试 2 支持调试节点和管道,尽管API看起来很复杂
测试 2 支持在执行时测试任务(钩子),但是,与调试API类似,它看起来很复杂。
部署 2 支持部署到 Kubernetes(Argo 和 Kubeflow)、Prefect 和 AWS Batch。 目前尚不清楚是否可以将批处理管道转换为在线 API。
编程语言 NA 仅支持Python。
可维护性 1 期望您的项目具有特定的文件夹布局和配置文件。对于简单的项目来说,这是一种限制和过度的做法。
Jupyter notebooks 支持 1 您可以启动Jupyter notebook并将定义的函数导出为kedro节点(任务),但由于导出的代码必须是一个函数,所以交互性受到限制。不支持以编程方式执行notebooks。

资料

Kubeflow pipelines

评估部分 分数 评价
易用性 1 工作流是用高度复杂的Python API编写的(这就是Kale存在的原因)。
开发实践 NA 无法在本地运行工作流,因为它是一个仅支持 Kubernetes 的框架。 也不支持增量构建。
调试 NA 没有调试工具。
Testing NA 不支持集成测试。不支持管道测试。
部署 2 批处理部署很简单,因为 Kubeflow 与 Kubernetes 紧密集成。不清楚我们是否可以组合training和serving管道,以便为API端点重用特性工程代码。
编程语言 NA 仅限Python。
可维护性 1 代码很难阅读,而且包含太多的细节,请参见示例. 将相同的参数(项目、群集名称、区域)传递给所有任务。文档已过时。
Jupyter notebooks 支持 NA 不支持交互式开发,也不支持以编程方式执行notebooks

资料

Luigi

评估部分 分数 评论
易用性 3 要熟悉API才能开始使用,但是它没有其他API那么复杂。它有一套一致的概念:任务、目标和参数。任务(定义为Python类)的结构基本相同。
开发实践 1 可以在本地运行工作流。不支持增量构建(一旦执行任务,即使输入文件发生更改,再次运行它也没有效果)。
调试 NA 没有调试工具
测试 1 虽然不是专门为这个目的设计的,但是回调可以用于集成测试。不支持检查管道来测试其属性/定义。
部署 2 部署到中央监控工具非常简单。可伸缩性有限,没有内置的调度程序。只有批处理,不转换为API端点。
编程语言 2 支持一些SQL后端。
可维护性 1 要求将工作流定义为单个类对于协作和代码组织是有问题的。此外,由于任务不是无状态的(由于实例变量的存在),它可能会导致隐藏的bug。
Jupyter notebooks 支持 NA 不支持交互式开发。不支持以编程方式执行notebooks。

资料

Metaflow

评估部分 分数 评价
易用性 3 开发工作流是使用 Python 类定义的,decorator可用于多种任务,例如在执行任务之前重试任务或安装依赖项。
开发实践 2 工作流可以在本地执行,可以从失败的任务中恢复执行。不支持增量构建。
调试 1 如果工作流失败,您可以检查数据来确定是什么出错了。尽管如此,您只能在工作流失败后进行调试,不支持启动交互式的事后调试会话,并且您必须使用print语句进行调试,这并不理想。
测试 2 可以导入工作流以检查其定义和属性。 虽然没有明确提及,但似乎没有任何限制,您可以将此测试工具与 pytest等测试框架一起使用。
部署 1 Metaflow 带有一个内置的 AWS 工具 来执行工作流,也可以调度使用 AWS Step Functions的工作流程。然而,Netflix使用了一个内部(封闭源代码)DAG调度器。没有部署到其他云的选项。工作流似乎可以作为api公开,但不清楚这是否是开源包的一部分。
编程语言 1 它支持R工作流,尽管它是一个使用Python库作为后端的独立工具,但你不能在同一个工作流中混合使用R和Python。不支持SQL。
可维护性 1 要求将工作流定义为单个类对于协作和代码组织是有问题的。此外,由于任务不是无状态的(由于实例变量的存在),它可能会导致隐藏的bug。
Jupyter notebooks 支持 NA 不支持交互式开发。不支持以编程方式执行notebooks。

资料

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
机器学习/深度学习 人工智能 监控
AutoTrain:Hugging Face 开源的无代码模型训练平台
AutoTrain 是 Hugging Face 推出的开源无代码模型训练平台,旨在简化最先进模型的训练过程。用户无需编写代码,只需上传数据即可创建、微调和部署自己的 AI 模型。AutoTrain 支持多种机器学习任务,并提供自动化最佳实践,包括超参数调整、模型验证和分布式训练。
189 4
AutoTrain:Hugging Face 开源的无代码模型训练平台
|
2月前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
80 8
|
3月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
74 2
|
3月前
|
JSON 测试技术 API
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
|
4月前
|
机器学习/深度学习 人工智能 算法
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
120 1
|
5月前
|
机器学习/深度学习 资源调度 分布式计算
阿里PAI-ChatLearn:大规模 Alignment高效训练框架正式开源
PAI-ChatLearn现已全面开源,助力用户快速、高效的Alignment训练体验。借助ChatLearn,用户可全身心投入于模型设计与效果优化,无需分心于底层技术细节。ChatLearn将承担起资源调度、数据传输、参数同步、分布式运行管理以及确保系统高效稳定运作的重任,为用户提供一站式解决方案。
|
5月前
|
机器学习/深度学习 存储 缓存
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
|
5月前
|
机器学习/深度学习 存储 缓存
模型遇见知识图谱问题之参与阿里云机器学习团队的开源社区的问题如何解决
模型遇见知识图谱问题之参与阿里云机器学习团队的开源社区的问题如何解决
|
5月前
|
机器学习/深度学习 数据采集 物联网
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
196 0
|
5月前
|
机器学习/深度学习 人机交互 API
【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战
【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战
464 0