【翻译】开源机器学习流水线工具调研(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。

资料

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
543 1
|
机器学习/深度学习 人工智能 PyTorch
DeepSeek开源周第四弹之一!DualPipe:训练V3/R1的双向流水线并行技术,计算与训练完全重叠,训练效率提升200%
DeepSeek 开源的 DualPipe 技术通过双向流水线并行设计,显著提升大规模深度学习模型的训练效率,优化计算与通信重叠,降低内存峰值需求,适用于推理加速、多模态数据处理等场景。
1180 1
DeepSeek开源周第四弹之一!DualPipe:训练V3/R1的双向流水线并行技术,计算与训练完全重叠,训练效率提升200%
|
机器学习/深度学习 人工智能 PyTorch
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
546 1
|
机器学习/深度学习 数据采集 人工智能
容器化机器学习流水线:构建可复用的AI工作流
本文介绍了如何构建容器化的机器学习流水线,以提高AI模型开发和部署的效率与可重复性。首先,我们探讨了机器学习流水线的概念及其优势,包括自动化任务、确保一致性、简化协作和实现CI/CD。接着,详细说明了使用Kubeflow Pipelines在Kubernetes上构建流水线的步骤,涵盖安装、定义流水线、构建组件镜像及上传运行。容器化流水线不仅提升了环境一致性和可移植性,还通过资源隔离和扩展性支持更大规模的数据处理。
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
919 8
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
489 2
|
机器学习/深度学习 边缘计算 TensorFlow
Python机器学习工具与库的现状,并展望其未来的发展趋势
【6月更文挑战第13天】本文探讨了Python在机器学习中的核心地位,重点介绍了Scikit-learn、TensorFlow、PyTorch等主流库的现状。未来发展趋势包括自动化、智能化的工具,增强可解释性和可信赖性的模型,跨领域融合创新,以及云端与边缘计算的结合。这些进展将降低机器学习门槛,推动技术在各领域的广泛应用。
357 3
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
存储 机器学习/深度学习 人工智能
基于Megatron-Core的稀疏大模型训练工具:阿里云MoE大模型最佳实践
随着大模型技术的不断发展,模型结构和参数量级快速演化。大模型技术的应用层出不穷。大模型展现惊人效果,但训练和推理成本高,一直是巨大挑战。模型稀疏化能降低计算和存储消耗。近期以Mixtral为代表的MoE(多专家混合)大模型证明了稀疏MoE技术能大幅降低计算量、提升推理速度,模型效果甚至超过同规模稠密模型。阿里云PAI和NVIDIA团队深入合作,基于Megatron-Core MoE框架,解决了MoE大模型训练落地时会遇到的可拓展性、易用性、功能性以及收敛精度等核心问题,在下游任务上取得了很好的模型效果。
|
机器学习/深度学习 数据采集 分布式计算
机器学习流水线的六个步骤
【5月更文挑战第30天】机器学习应用通过构建流水线实现,简化大数据需求和学习任务的处理,使用户能专注核心任务而非基础设施。