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。