架构师机器学习操作 (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。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手-前端生态

文章目录 新手的前端生态一、概念的理解1、脚手架2、组件 二、基础知识1、HTML2、css3、JavaScript一、基础语法1、javaScript的引入2、认识输出语句3、学会处理报错 二、变量1、如何使用变量 2、变量的命名规范3、推荐的变量命名法4、变量默认值5、变量常见的错误6、变量声明提…

Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用

目录 开始 Prometheus 介绍 基本原理 组件介绍 下文部署组件的工作方式 Prometheus 生态安装(Mac) 安装 prometheus 安装 grafana 安装 node_exporter Prometheus 生态安装(Docker) 安装 prometheus 安装 Grafana 安装…

人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解。在机器学习和深度学习领域,模型的训练目标是找到一组参数,使得模型能够从训练数据中学习到有用的模式&am…

设计模式总结(设计模式的原则及分类)

1.什么是设计模式? 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结…

【ACM 独立出版,高录用EI稳检索】2024年大数据与数字化管理国际学术会议 (ICBDDM 2024,8月16-18)

2024年大数据与数字化管理国际学术会议 (ICBDDM 2024),将于2024年8月16-18日在中国上海召开。 “大数据与数字化管理”作为会议主题,旨在聚焦这一跨学科领域中最新的理论研究、技术进展、实践案例和未来趋势。本主题探讨的研究方向涵盖了大数据的收集、…

使用uni-app和Golang开发影音类小程序

在数字化时代,影音内容已成为人们日常生活中不可或缺的一部分。个人开发者如何快速构建一个功能丰富、性能优越的影音类小程序?本文将介绍如何使用uni-app前端框架和Golang后端语言来实现这一目标。 项目概述 本项目旨在开发一个个人影音类小程序&#…

最新Qt6的下载与成功安装详细介绍

引言 Qt6 是一款强大的跨平台应用程序开发框架,支持多种编程语言,最常用的是C。Qt6带来了许多改进和新功能,包括对C17的支持、增强的QML和UI技术、新的图形架构,以及构建系统方面的革新。本文将指导你如何在Windows平台上下载和安…

Webpack看这篇就够了

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

PostgreSQL安装/卸载(CentOS、Windows)

说明:PostgreSQL与MySQL一样,是一款开源免费的数据库技术,官方口号:The World’s Most Advanced Open Source Relational Database.(世界上最先进的开源关系数据库),本文介绍如何在Windows、Cen…

一款好用的特殊字符处理工具

跟mybatis代码的时候,偶然发现的一款特殊字符处理工具java.lang.StringTokenizer。平常,我们看到的mybatis mapper.xml里面各种换行各种缩进,但日志文件里面的sql都是整整齐齐的。没有换行符,缩进等。就是利用该工具做的格式化处理…

Java设计模式的7个设计原则

Java设计模式的7个设计原则是面向对象设计领域中的重要指导方针,它们旨在提高软件系统的可维护性、可扩展性、可复用性和灵活性。以下是这7个设计原则的详细解释: 1. 开闭原则(Open-Closed Principle, OCP) 定义:一个…

git常用命令及git分支

git常用命令及git分支 git常用命令设置用户签名初始化本地库查看本地库状态将文件添加到暂存区提交到本地库查看历史记录版本穿梭 git分支什么是分支分支的好处分支的操作查看分支创建分支切换分支删除分支合并分支合并冲突 git常用命令 设置用户签名 //设置用户签名 git con…

axios 下载大文件时,展示下载进度的组件封装——js技能提升

之前面试的时候,有遇到一个问题:就是下载大文件的时候,如何得知下载进度,当时的回复是没有处理过。。。 现在想到了。axios中本身就有一个下载进度的方法,可以直接拿来使用。 下面记录一下处理步骤: 参考…

超市管理系统 需求分析与设计 UML 方向

一、项目介绍 1.1项目背景 随着经济一体化和电子商务的迅速发展,网络传播信息的速度打破了传统信息传递的模式,互联网的高速发展和计算机应用在各个高校进展迅速,更多信息化产品的突飞猛进,让现代的管理模式也发生了巨大的变化&…

技术成神之路:设计模式(七)状态模式

1.介绍 状态模式(State Pattern)是一种行为设计模式,它允许一个对象在其内部状态改变时改变其行为。这个模式将状态的相关行为封装在独立的状态类中,并将不同状态之间的转换逻辑分离开来。 2.主要作用 状态模式的主要作用是让一个…

开始Linux之路

人生得一知己足矣,斯世当以同怀视之。——鲁迅 Linux操作系统简单操作指令 1、ls指令2、pwd命令3、cd指令4、mkdir指令(重要)5、whoami命令6、创建一个普通用户7、重新认识指令8、which指令9、alias命令10、touch指令11、rmdir指令 及 rm指令(重要)12、man指令(重要…

数据结构进阶:使用链表实现栈和队列详解与示例(C, C#, C++)

文章目录 1、 栈与队列简介栈(Stack)队列(Queue) 2、使用链表实现栈C语言实现C#语言实现C语言实现 3、使用链表实现队列C语言实现C#语言实现C语言实现 4、链表实现栈和队列的性能分析时间复杂度空间复杂度性能特点与其他实现的比较…

轻量级自适用商城卡密发卡源码(可运营)

一款全开源非常好看的发卡源码。轻量级自适应个人自助发卡简介,这是一款二次开发的发卡平台源码修复原版bug,删除无用的代码。所有文件全部解密,只保留后台版权信息内容。大家放心使用,可以用于商业运营。轻量级自适应个人自助发卡。 源码下…

WSL-Ubuntu20.04训练环境配置

1.YOLOv8训练环境配置 训练环境配置的话就仍然以YOLOv8为例,来说明如何配置深度学习训练环境。这部分内容比较简单,主要是安装miniAnaconda以及安装torch和torchvision. 首先是miniAnaconda的安装(参考官网的教程Miniconda — Anaconda ),执行…

车载视频监控管理方案:无人驾驶出租车安全出行的保障

近日,无人驾驶出租车“萝卜快跑”在武汉开放载人测试成为热门话题。随着科技的飞速发展,无人驾驶技术已逐渐从概念走向现实,特别是在出租车行业中,无人驾驶出租车的推出将为公众提供更为安全、便捷、高效的出行服务。 视频监控技…