使用 FTI 架构正确构建 ML 系统

使用 FTI 架构正确构建 ML 系统
特征/训练/推理 (FTI) 管道架构

本文介绍了特征/训练/推理 (FTI) 架构,以使用 MLOps 最佳实践构建可扩展且模块化的 ML 系统。Hopsworks 首席执行官 Jim Dowling 提出了该设计 [1]。

我们将首先讨论构建机器学习系统时遇到的问题。然后,我们将研究其他潜在的解决方案及其问题。

最后,我们将介绍特征/训练/推理 (FTI) 设计模式及其优势。我们还将了解在构建 ML 系统时使用特征存储和模型注册表的优势。

构建机器学习系统的问题

构建可用于生产的 ML 系统不仅仅是训练模型。从工程角度来看,训练模型是大多数用例中最简单的步骤。

然而,在确定正确的架构和超参数时,训练模型会变得复杂。这不是一个工程问题,而是一个研究问题。

此时,我们要重点关注如何设计一个可用于生产的架构。训练一个高精度的模型非常有价值,但仅仅通过在静态数据集上进行训练,还远远不能稳健地部署它。我们必须考虑如何:

  • 采集、清理并验证新数据
  • 训练与推理设置
  • 在正确的环境中计算并提供功能
  • 以经济高效的方式为模型提供服务
  • 版本、跟踪和共享数据集和模型
  • 监控您的基础设施和模型
  • 在可扩展的基础架构上部署模型
  • 自动化部署和培训

这些是 ML 或 MLOps 工程师必须考虑的问题类型,而研究或数据科学团队通常负责训练模型。

使用 FTI 架构正确构建 ML 系统
图 1:机器学习系统的组件。图片来自Google Cloud Architecture文档

图 1 显示了 Google Cloud 团队建议的成熟 ML 和 MLOps 系统所需的所有组件。除了 ML 代码外,还有许多活动部件。系统的其余部分包括配置、自动化、数据收集、数据验证、测试和调试、资源管理、模型分析、流程和元数据管理、服务基础设施和监控。重点是,在生产 ML 模型时,我们必须考虑许多组件。

因此,关键问题是:“我们如何将所有这些组件连接到一个单一的同质系统中”?

我们必须创建一个样板来清晰地设计 ML 系统来回答这个问题。

经典软件也有类似的解决方案。例如,如果你缩小范围,大多数软件应用程序可以分为数据库、业务逻辑和 UI 层。每一层都可以根据需要变得尽可能复杂,但从高层次来看,标准软件的架构可以归结为这三个组件。

对于 ML 应用,我们是否有类似的东西?第一步是检查以前的解决方案以及为什么它们不适合构建可扩展的 ML 系统。

先前解决方案的问题

在图 2 中,您可以看到大多数 ML 应用程序中的典型架构。它基于单片批处理架构,将特征创建、模型训练和推理耦合到同一组件中。

通过采用这种方法,您可以快速解决机器学习领域中的一个关键问题:训练-应用偏差。当传递给模型的特征在训练和推理时以不同的方式计算时,就会发生训练-应用偏差。在此架构中,特征是使用相同的代码创建的。因此,训练-应用偏差问题默认得到解决。

此模式在处理小数据时效果很好。管道按计划以批处理模式运行,预测结果由第三方应用程序(例如仪表板)使用。

使用 FTI 架构正确构建 ML 系统
图 2:单片批处理流水线架构

不幸的是,构建单一的批处理系统会引发许多其他问题,例如:

  • 功能不可重复使用(由您的系统或其他系统使用)
  • 如果数据增加,你必须重构整个代码来支持 PySpark 或 Ray
  • 很难用更高效的语言(如 C++、Java 或 Rust)重写预测模块
  • 多个团队很难在特征、训练和预测模块之间共享工作
  • 无法切换到流媒体技术进行实时训练

在图 3 中,我们可以看到实时系统的类似场景。除了我们之前列出的问题之外,此用例还引入了另一个问题。为了进行预测,我们必须通过客户端请求传输整个状态,以便计算特征并将其传递给模型。

考虑为用户计算电影推荐的场景。我们不能只传递用户 ID,还必须传输整个用户状态,包括他们的姓名、年龄、性别、电影历史等。这种方法很容易出错,因为客户端必须了解如何访问此状态,并且它与模型服务紧密耦合。

另一个示例是实现具有 RAG 支持的 LLM。我们在查询中添加的作为上下文的文档代表我们的外部状态。如果我们不将记录存储在向量数据库中,我们就必须将它们与用户查询一起传递。为此,客户端必须知道如何查询和检索文档,这是不可行的。客户端应用程序知道如何访问或计算特征是一种反模式。如果您不了解 RAG 的工作原理,我们将在以后的章节中解释它。

使用 FTI 架构正确构建 ML 系统
图3:无状态实时架构

总结一下,我们的问题是访问特征进行预测,而不是根据客户端的请求传递这些特征。例如,基于我们的第一个用户电影推荐示例,我们如何仅根据用户的 ID 来预测推荐?

记住这些问题,我们很快就会回答它们。

解决方案:FTI 架构

该解决方案基于创建清晰直接的思维导图,任何团队或个人都可以按照该思维导图来计算特征、训练模型和做出预测。

基于任何 ML 系统都需要的这三个关键步骤,该模式被称为 FTI(特征、训练、推理)管道。那么,这与我们之前介绍的有什么不同?

该模式表明,任何 ML 系统都可以归结为这三个管道:特征、训练和推理(类似于传统软件中的数据库、业务逻辑和 UI 层)。

这很强大,因为我们可以清楚地定义每个管道的范围和接口。此外,也更容易理解这三个组件如何交互。

如图 4 所示,我们有特征、训练和推理管道。我们将放大每个管道并了解其范围和接口。

在深入细节之前,必须了解每个管道都是不同的组件,可以在不同的进程或硬件上运行。因此,每个管道都可以使用不同的技术、由不同的团队编写,或以不同的方式扩展。关键思想是设计非常灵活,可以满足团队的需求。它充当了构建架构的思维导图。

使用 FTI 架构正确构建 ML 系统
图 4:特征/训练/推理 (FTI) 管道架构

功能管道

特征管道将数据作为输入,并将特征和标签作为输出,用于训练模型。

特征和标签不是直接传递给模型,而是存储在特征存储中。其职责是存储、版本控制、跟踪和共享特征。

通过将特征保存到特征存储中,我们始终可以掌握特征的状态。因此,我们可以轻松地将特征发送到训练和推理管道。

由于数据是版本化的,我们可以始终确保训练和推理时间特征相匹配。因此,我们避免了训练-应用偏差问题。

训练流程

训练管道将特征存储中的特征和标签作为输入,并输出一个或多个训练模型。

模型存储在模型注册表中。其作用类似于特征存储,但这一次,模型是一等公民。因此,模型注册表将存储、版本控制、跟踪并与推理管道共享模型。

此外,大多数现代模型注册表都支持元数据存储,允许您指定模型训练方式的基本方面。最重要的是用于训练模型的特征、标签及其版本。因此,我们将始终知道模型是在哪些数据上进行训练的。

推理管道

推理管道将特征存储中的特征和标签以及模型注册表中的训练模型作为输入。通过这两者,可以轻松地以批处理或实时模式进行预测。

由于这是一种通用模式,因此您可以自行决定如何处理您的预测。如果是批处理系统,它们可能会存储在数据库中。如果是实时系统,预测将提供给请求它们的客户端。

由于特征、标签和模型都是版本化的,我们可以轻松升级或回滚模型的部署。例如,我们始终知道模型 v1 使用特征 F1、F2 和 F3,而模型 v2 使用 F2、F3 和 F4。因此,我们可以快速更改模型和特征之间的连接。

FTI 架构的优势

总而言之,关于 FTI 管道您必须记住的最重要的事情是它们的接口:

· 特征管道接收数据并输出保存到特征存储的特征和标签。

· 训练管道查询特征存储中的特征和标签,并将模型输出到模型注册表。

· 推理管道使用来自特征存储的特征和来自模型注册表的模型进行预测。

无论您的 ML 系统有多复杂,这些接口都将保持不变。

现在我们更好地理解了该模式的工作原理,我们想强调使用该模式的主要好处:

  • 因为只有三个组件,所以使用起来很直观并且易于理解;
  • 每个组件都可以写入其技术栈,因此我们可以快速调整它们以满足特定需求,例如大数据或流数据。此外,它还允许我们选择最适合该工作的工具;
  • 由于三个组件之间有一个透明的接口,每个组件可以由不同的团队开发(如有必要),从而使开发更易于管理和可扩展;
  • 每个组件都可以独立部署、扩展和监控。

关于 FTI 模式,您必须了解的最后一件事是,系统不必只包含三个管道。在大多数情况下,它会包含更多管道。例如,特征管道可以由计算特征的服务以及验证数据的服务组成。此外,训练管道可以由训练和评估组件组成。

FTI 管道充当逻辑层。因此,每个管道都很复杂并且包含多个服务是完全没问题的。但是,重要的是坚持使用相同的接口来处理 FTI 管道如何通过特征存储和模型注册表相互交互。通过这样做,每个 FTI 组件都可以以不同的方式发展,而无需了解彼此的详细信息,也不会在新的更改中破坏系统。

结论

在本文中,我们了解了构建 ML 系统时的基本问题。

我们还研究了潜在的解决方案及其缺点。

最后,我们介绍了 FTI 架构、它的优势以及如何将其应用于现代 ML 系统。

RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/4718

Like (0)
Previous 2024-08-14 11:32 上午
Next 2024-08-17 2:39 下午

相关推荐

发表回复

Please Login to Comment
本文授权以下站点有原版访问授权 https://www.shxcj.com https://www.2img.ai https://www.2video.cn