架构师机器学习操作 (MLOps) 指南

MLOps 是机器学习操作的缩写,是一组实践和工具,旨在满足工程师构建模型并将其投入生产的特定需求。一些组织从一些自主开发的工具开始,这些工具在每次实验后对数据集进行版本控制,并在每个训练周期后对检查点模型进行版本控制。另一方面,许多组织选择采用具有实验跟踪、协作功能、模型服务功能甚至用于处理数据和训练模型的管道功能的正式工具。

若要为组织做出最佳选择,应了解业界领先的 MLOps 工具提供的所有功能。如果你走本土路线,你应该明白你正在放弃的能力。对于需要快速行动且可能没有时间评估新工具的小型团队来说,自主开发的方法很好。如果选择实施第三方工具,则需要选择与组织的工程工作流最匹配的工具。这可能很棘手,因为当今的顶级工具在方法和功能上有很大差异。无论您选择哪种方式,您都需要能够处理大量数据并以高性能方式提供训练集的数据基础架构。检查点模型和版本控制大型数据集需要可扩展的容量,如果您使用昂贵的 GPU,您将需要高性能的基础设施来充分利用您的投资。

在这篇文章中,我将介绍一个功能列表,架构师无论选择哪种方法或工具,都应该考虑该列表。此功能列表来自我对当今三家顶级 MLOps 供应商 KubeFlow、MLflow 和 MLRun 的研究和实验。对于选择从自主开发解决方案开始的组织,我将介绍一个可以扩展和执行的数据基础架构。(剧透警报 - 您在这里需要的只是 MinIO。当谈到第三方工具时,我注意到我研究的供应商有一种模式。对于选择采用 MLOps 工具的组织,我将介绍此模式,并将其与现代数据湖参考体系结构联系起来。

在深入探讨功能和基础结构要求之前,让我们更好地了解 MLOps 的重要性。为此,将模型创建与传统应用程序开发进行比较会很有帮助。

模型与应用的区别

传统的应用程序开发,例如实现向应用程序添加新功能的新微服务,从查看规范开始。首先设计新的数据结构或对现有数据结构的更改。编码开始后,数据的设计不应更改。然后实现服务,编码是此过程中的主要活动。单元测试和端到端测试也进行了编码。这些测试证明代码没有错误,并且正确地实现了规范。在部署整个应用程序之前,它们可以由 CI/CD 管道自动运行。

创建模型和训练它是不同的。第一步是了解原始数据和所需的预测。机器学习工程师确实需要编写一些代码来实现他们的神经网络或设置算法,但编码并不是主要活动。主要活动是重复实验。在实验过程中,数据的设计、模型的设计和使用的参数都会发生变化。每次试验后,都会创建指标,以显示模型在训练时的表现。此外,还会生成指标,以确定模型性能,以针对验证集和测试集。这些指标用于证明模型的质量。每次试验后都应保存模型,每次更改数据集时,也应保存数据集。一旦模型准备好合并到应用程序中,就必须对其进行打包和部署。

总而言之,MLOps 之于机器学习,就像 DevOps 之于传统软件开发一样。两者都是一组旨在改善工程团队(开发或 ML)和 IT 运营 (Ops) 团队之间协作的实践和原则。目标是使用自动化来简化开发生命周期,从规划和开发到部署和运营。这些方法的主要好处之一是持续改进。

让我们更深入地了解 MLOps,并查看要考虑的特定功能。

要考虑的 10 个 MLOps 功能

实验跟踪和协作是与 MLOps 最相关的功能,但当今更现代的 MLOps 工具可以执行更多功能。例如,有些可以为您的实验提供运行时环境。其他人可以在模型准备好集成到应用程序后打包和部署模型。

下面是当今 MLOps 工具中发现的功能的超集。此列表还包括其他需要考虑的事项,例如支持和数据集成。

1 . 来自主要参与者的支持 - MLOps 技术和功能在不断发展。您需要一个由主要参与者(分别为 Google、Databricks 或麦肯锡公司支持 Kubeflow、MLflow 和 MLRun)支持的工具,以确保持续开发和改进。举个具体的例子,今天许多流行的工具都是在大型语言模型();LLMs因此,许多公司正在添加新功能来支持生成式 AI。

2 . 现代数据湖集成 - 试验会生成大量结构化和非结构化数据。与现代数据湖(或数据湖仓一体)完美集成的 MLOps 工具将非结构化数据存储在数据湖中(直接称为 MinIO),结构化数据将进入数据仓库。不幸的是,许多 MLOps 工具在产生现代数据湖的开放表格式之前就已经存在,因此大多数工具都会为其结构化数据提供单独的解决方案。这通常是数据基础架构需要支持的开源关系数据库。关于非结构化数据(数据集和模型检查点),自 2014 年以来,业内所有主要工具都使用 MinIO。

3 . 实验跟踪 - MLOps 工具最重要的功能可能是跟踪每个实验的数据集、模型、超参数和指标。实验跟踪还应该促进可重复性 - 如果在五年前的实验中获得了理想的结果,而之后的实验降低了模型的性能,那么您应该能够使用 MLOps 工具返回并获取确切的超参数,以及用于产生理想结果的数据集特征。

4 . 促进协作 - MLOps 工具的一个重要组件是用于显示每个实验结果的门户或 UI。所有团队成员都应该可以访问此门户,以便他们可以看到彼此的实验并提出建议。一些 MLOps 工具具有花哨的图形功能,允许创建自定义图形来比较实验结果。

5 . 模型打包 - 此功能打包模型,以便可以从其他编程环境(通常作为微服务)访问模型。这是一个很好的功能。经过训练的模型只不过是一个序列化对象。许多组织可能已经弄清楚了这一点。

6 . 模型服务 - 将模型打包为服务后,此功能将允许将包含模型的服务自动部署到组织的正式环境中。如果您拥有能够跨环境管理所有软件资产的成熟 CI/CD 管道,则不需要此功能。

7 . 模型注册表 - 模型注册表提供 MLOps 工具当前管理的所有模型的视图。毕竟,创建生产级模型是所有 MLOps 的目标。此视图应显示已部署到生产环境的模型以及从未投入生产的模型。应以这样一种方式标记已投入生产的模型,以便您还可以确定它们部署到的应用程序或服务的版本。

8 . 无服务器函数 - 某些工具提供允许对代码进行批注的功能,以便可以将函数或模块部署为容器化服务,以便在群集中运行试验。如果您决定使用此功能,请确保您的所有工程师都熟悉此技术。这可能是一个学习曲线 - 具有DevOps背景的工程师将更容易,而以前学习机器学习的工程师几乎没有编码经验。

9 . 数据管道功能 - 某些 MLOps 工具旨在提供完整的端到端功能,并具有特定于构建数据管道以检索、处理和存储干净数据的功能。管道通常被指定为有向无环图 (DAG) - 某些工具还具有调度功能。当与无服务器函数结合使用时,它可以成为开发和运行数据管道的强大低代码解决方案。如果您已经在使用管道或工作流工具,则不需要此功能。

10 . 训练管道功能 - 这类似于数据管道,但训练管道会从数据管道中断的位置开始。训练管道允许您调用数据访问代码,将数据发送到训练逻辑,并注释数据工件和模型,以便自动保存它们。与数据管道类似,此功能可以与无服务器函数结合使用,以创建 DAG 和计划实验。如果您已经在使用分布式训练工具,那么您可能不需要此功能。可以从训练管道开始分布式训练,但这可能太复杂了。

MLOps 和存储

在了解了传统应用程序开发和机器学习之间的差异之后,应该很清楚,要想在机器学习方面取得成功,您需要某种形式的 MLOps 以及能够实现性能和可扩展容量的数据基础架构。

如果你需要快速启动一个项目,并且没有时间评估正式的 MLOps 工具,那么自主开发的解决方案是很好的选择。如果您采用这种方法,好消息是您的数据基础架构只需要 MinIO。MinIO 与 S3 兼容,因此如果您从其他工具开始并使用 S3 接口访问您的数据集,那么您的代码就可以工作了。如果您刚开始,那么您可以使用我们的 Python SDK,它也与 S3 兼容。考虑使用 MinIO 的企业版,它具有缓存功能,可以大大加快训练集的数据访问速度。查看 AI 建立在对象存储上的真正原因,我们将深入探讨 MinIO 如何以及为什么用于支持 MLOps。选择自主开发解决方案的组织仍应熟悉上述十个功能。您最终可能会超出自主开发的解决方案,最有效的方法是采用 MLOps 工具。

对于拥有多个 AI/ML 团队创建不同类型的模型的大型组织来说,采用第三方 MLOps 工具是最佳方法。具有最多功能的 MLOps 工具不一定是最好的工具。查看上面的功能,并记下您需要的功能、当前作为现有 CI/CD 管道一部分的功能,最后,您不需要的功能,这将帮助您找到最合适的功能。MLOps 工具对大 PB 级对象存储有着浓厚的兴趣。其中许多会在每次实验中自动对数据集进行版本控制,并在每个时期后自动检查模型。同样,MinIO 可以提供帮助,因为容量不是问题。与自主开发的解决方案类似,请考虑使用 MinIO 的企业版。缓存功能在为存储桶配置后自动工作,因此即使 MLOps 工具不请求使用缓存,MinIO 也会自动缓存经常访问的对象,如训练集。

未来的愿望清单

目前市场上的许多 MLOps 工具都使用开源关系数据库来存储模型训练期间生成的结构化数据,这些数据通常是指标和超参数。不幸的是,这将是一个需要组织支持的新数据库。此外,如果组织正在向新式数据湖(或数据湖仓一体)迁移,则不需要额外的关系数据库。对于主要的 MLOps 供应商来说,最好考虑使用基于 OTF 的数据仓库来存储他们的结构化数据。

所有主要的 MLOps 供应商都在后台使用 MinIO 来存储非结构化数据。遗憾的是,这通常部署为一个单独的小型实例,该实例作为 MLOps 工具的整体大型安装的一部分进行安装。此外,它通常是 MinIO 的旧版本,这违背了我们始终运行最新和最好的精神。对于现有的 MinIO 客户,最好允许 MLOps 工具使用现有安装中的存储桶。对于不熟悉 MinIO 的客户,MLOps 工具应支持最新版本的 MinIO。安装后,MinIO 还可以用于组织内 MLOps 资源以外的用途,即任何需要对象存储优势的地方。

结论

在这篇文章中,我通过调查 MLOps 功能和支持这些功能所需的数据基础结构,介绍了 MLOps 的架构师指南。在较高级别上,组织可以构建自行开发的解决方案,也可以部署第三方解决方案。无论选择哪个方向,了解当今行业中可用的所有功能都很重要。自主开发的解决方案允许您快速启动项目,但您可能很快就会超出您的解决方案。了解你的特定需求以及 MLOps 将如何与现有 CI/CD 管道配合使用也很重要。许多 MLOps 工具功能丰富,包含你可能永远不会使用的功能,或者你已作为 CI/CD 管道的一部分拥有的功能。

若要成功实现 MLOps,需要一个可以支持它的数据基础结构。在这篇文章中,我为那些选择自主开发解决方案的人提供了一个简单的解决方案,并描述了对第三方工具的期望及其所需的资源。

最后,我列出了一份愿望清单,希望进一步开发 MLOps 工具,帮助他们更好地与现代数据湖集成。

有关使用现代数据湖支持 AI/ML 工作负载的详细信息,请查看现代数据湖中的 AI/ML。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/789644.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis的优缺点及适用场景?

目录 一、什么是Mybatis? 二、Mybatis框架的特点 三、Mybatis框架的优点? 四、MyBatis 框架的缺点? 五、MyBatis 框架适用场合? 六、代码示例 1. 配置文件 mybatis-config.xml 2. 映射文件 UserMapper.xml 3. Java 代码…

了解劳动准备差距:人力资源专业人员的战略

劳动准备差距是一个紧迫的问题,在全球人事部门回应,谈论未开发的潜力和错过的机会。想象一下,人才和需求之间的悬崖之间有一座桥,这促使雇主思考:我们是否为员工提供了足够的设备来应对未来的考验? 这种不…

kali安装vulhub遇到的问题及解决方法(docker及docker镜像源更换)

kali安装vulhub: 提示:项目地址 https://github.com/vulhub/vulhub 项目安装: git clone https://github.com/vulhub/vulhub.git 安装docker 提示:普通用户请使用sudo: 首先安装 https 协议、CA 证书 apt-get in…

【昆工主办|7月昆明】第三届绿色建筑、土木工程与智慧城市国际会议(GBCESC 2024)

随着全球城市化进程的加速,绿色建筑、土木工程与智慧城市等议题逐渐成为了行业内外关注的焦点。在这一背景下,第三届绿色建筑、土木工程与智慧城市国际会议(GBCESC 2024)的召开,无疑将为相关领域的研究者、学者及从业者…

如何保障生物制药中试验网和办公网之间的跨网安全文件交换数据?

在针对数据化大环境下,生物制药企业的数据安全尤为关键,尤其是试验网与办公网之间的数据交换。这些数据不仅包含新药品研发成果、临床试验数据,还有健康医疗数据等,都是企业的核心竞争力和商业秘密 。因此,安全地进行跨…

flask模块化、封装使用缓存cache(flask_caching)

1.安装flask_caching库 pip install flask_caching 2.创建utils Python 软件包以及cache_helper.py 2.1cache_helper.py代码 from flask_caching import Cachecache Cache()class CacheHelper:def __init__(self, app, config):cache.init_app(app, config)staticmethoddef…

你明白C++中的多态吗?(暑假提升-多态专题)

内不欺己,外不欺人。———孔子 有趣的多态 1、前言2、概念3、多态定义与产生条件4、多态的重要组成成员-(虚函数)5、虚函数的重写(覆盖)6、辅助关键字override与final(了解即可)7、重载,重定义(隐藏),重写(覆盖)8、抽象类9、多态的原理9、1、…

微信定时推送LeetCode每日一题,再也不怕没人喊你刷题了

前段时间发过一篇关于微信机器人开发的文章,讲述了如何快速开发一个微信机器人,本篇文章就来实现一个最近开发的一个功能案例,在这个案例中会遇到了各种问题,可以帮助大家减少自己去踩坑的时间。通过此案例也可以帮助你去扩想一些…

HarmonyOS Next应用开发之系统概述

一、鸿蒙系统概述 鸿蒙系统可以分为华为鸿蒙系统(HUAWEI HarmonyOS)和开源鸿蒙系统(OpenHarmony),华为鸿蒙系统是基于OpenHarmony基础之上开发的商业版操作系统。他们二者的关系可以用下图来表示: 1.1、…

Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。 本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,…

CentOS7 安装 git 命令

通过yum源install下载的git版本比较低,不推荐此方式安装。 官网下载最新版git源码:Git 1. 解压安装包 tar -xzvf git-2.45.2.tar.gz 2. 安装相关依赖 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils…

如何用Vue3和Plotly.js创建交互式表格?

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Plotly.js 动态生成 HTML 表格 应用场景介绍 在数据分析和可视化领域,经常需要以表格的形式展示数据。Plotly.js 是一款功能强大的 JavaScript 库,不仅可以创建交互式图表,…

【源码+文档+调试讲解】文物管理系统

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

前端与嵌入式开发通信之QWebChannel(Qt)

前端与嵌入式开发通信之QWebChannel 最近开发中需要用到和c开发的操作台进行通信的的需求,就找到了这个技术,记录一下 首先需要安装导入 qwebchannel npm i qwebchannel import { QWebChannel } from "qwebchannel"; 初始化qwebchannel并封…

嵌入式音频处理技术的现在发展及未来的方向

嵌入式音频处理技术:从音频流媒体到声音识别 嵌入式音频处理技术的迅猛发展正在改变我们的生活方式,从音频流媒体到声音识别,这个领域为人们的生活和工作带来了巨大的影响。本文将探讨嵌入式音频处理技术的最新趋势和应用,以及提…

安防管理平台LntonCVS视频汇聚融合云平台智慧火电厂安全生产管理应用方案

中国的电力产业作为国民经济发展的重要能源支柱,被视为国民经济的基础产业之一。目前,我国主要依赖火力发电,主要燃料包括煤炭、石油和天然气等,通过燃烧转化为动能,再转变为电能输送至全国各地。火力发电量占全国发电…

告别混乱,可道云企业网盘个人标签,让文件管理更轻松

在信息爆炸的时代,你是不是常常觉得自己的大脑就像一台过载的处理器,各种文件、资料、想法在脑海中“打架”,让你焦头烂额? 别担心,可道云企业网盘个人标签功能来拯救你的“大脑内存”了! 我们需要告别无…

tensorflow之欠拟合与过拟合,正则化缓解

过拟合泛化性弱 欠拟合解决方法: 增加输入特征项 增加网络参数 减少正则化参数 过拟合的解决方法: 数据清洗 增大训练集 采用正则化 增大正则化参数 正则化缓解过拟合 正则化在损失函数中引入模型复杂度指标,利用给w增加权重,…

如何分析软件测试中发现的Bug!

假如你是一名软件测试工程师,每天面对的就是那些“刁钻”的Bug,它们像是隐藏在黑暗中的敌人,时不时跳出来给你一个“惊喜”。那么,如何才能有效地分析和处理这些Bug,让你的测试工作变得高效且有趣呢?今天我…

AWS-WAF-Log S3存放,通过Athena查看

1.创建好waf-cdn 并且设置好规则和log存储方式为s3 2. Amazon Athena 服务 使用 (注意s3桶位置相同得区域) https://docs.aws.amazon.com/zh_cn/athena/latest/ug/waf-logs.html#waf-example-count-matched-ip-addresses 官方文档参考,建一个分区查询表…