image-20230817141747820

MLOps 是一组方法和技术,用于在生产环境中可靠高效地部署和维护机器学习 (ML) 模型。因此,MLOps 是机器学习、DevOps 和数据工程的交集(图 1)。

image-20230817141815656

图 1:显示 MLOps 相关字段之间关系的维恩图 [维基百科]。

背景

说MLOps处于不断变化的状态是轻描淡写的[7]。我能给出的关于MLOps的最佳建议是尝试雇用能够看到“大局”的人。任何称职的软件工程师都可以学习如何使用特定的 MLOps 平台,因为它不需要高级学位。因此,面试申请人时的一个常见错误是专注于特定平台(AWS,GCP,Databricks,MLflow等)的细节。理想的 MLOps 工程师应该具有多个 MLOps 和/或 DevOps 平台的一些经验。事实上,使用单个平台的太多经验在未来很可能会出现问题,因为大多数公司很少随着时间的推移停留在一个云平台上,而且目前没有任何MLOps标准。

MLOps 的一个主要问题是缺乏标准,这意味着每个平台都倾向于使用不同的术语。希望SEI或IEEE将很快发布AI工程指南,以标准化类似于SWEBOK的术语。目前,我建议学习MLflow,因为它是开源的,似乎非常受欢迎。

许多人在 MLOps 中使用术语“管道”,这可能会令人困惑,因为管道 是计算机科学术语,指的是具有单个输入/输出的线性序列。更好的定义是使用有向无环图(DAG),因为它可能不是一个线性过程。因此,术语工作流更好地描述了 MLOps SDLC 中任何阶段可能涉及的多种流程。

机器学习模型过程

一般来说,ML模型过程包括八个阶段(图2和图3),其中可能包括数据收集和/或数据标记[1]:

  1. 数据准备

  2. 特征工程

  3. 模型设计

  4. 模型训练和优化

  5. 模型评估

  6. 模型部署

  7. 模型服务

  8. 模型监控

    image-20230817141915655

图 2:ML 模型 SDLC 的阶段 [2]

image-20230817141944342

图 3:包括监控的 ML 模型 SDLC [2]

相比之下,ModelOps 专注于管理各种 AI 模型的完整软件开发生命周期 (SDLC),包括机器学习、知识图谱、规则、优化、自然语言和基于代理的模型(图 4)。

image-20230817142006220

图 4:模型操作流程 [维基百科]

机器学习工作流

机器学习需要试验各种数据集、数据准备和算法,以构建最大化某些目标指标的模型。构建模型后,下一步是将最终模型部署到生产系统,监视模型性能,并根据新数据不断重新训练模型并将其与其他模型进行比较。

因此,出于以下几个原因,在实际应用中使用机器学习进行高效工作可能具有挑战性[3]:

  • 很难**跟踪实验。**在笔记本电脑或笔记本上处理文件时,我们如何判断哪些数据、代码和参数用于获得特定结果?
  • 很难**重现代码。**即使我们仔细跟踪代码版本和参数,我们仍然需要捕获整个环境(例如库依赖项)以重现相同的结果。当在团队中工作时,或者如果我们想在另一个平台(例如云)上大规模运行相同的代码,这更具挑战性。
  • **没有打包和部署模型的标准方法。**每个数据科学团队都为每个使用的 ML 库开发自己的方法,因此模型与代码和参数之间的联系通常会丢失。
  • 没有用于管理模型(版本和阶段转换)的中央存储。如果没有一个中心位置来协作和管理模型生命周期,数据科学团队将遇到管理模型阶段的挑战。

尽管单个 ML 库为其中一些问题(例如模型服务)提供了解决方案,但您通常需要尝试多个 ML 库以获得最佳结果。MLOps 工具允许你使用任何库训练、重用和部署模型,并将其打包到可重现的步骤中,其他数据科学家可以将其用作“黑匣子”,而无需知道你正在使用哪些库。

请记住,尝试零碎地改造或应用 MLOps 是一种常见的误解,实际上会被视为软件设计反模式 [5][6]。令人惊讶的是,英伟达等一些公司目前正试图在其所有软件开发项目中集体这样做,这是不可行的,并且可能会被证明是有问题的。

因此,MLOps 平台必须提供至少五个功能来帮助管理 ML 工作流 [3]:

  • **跟踪:**一个 API,用于在运行机器学习代码并稍后可视化结果时记录参数、代码版本、指标和项目。
  • 项目:用于打包可重用 ML 代码的标准格式。
  • 模型:一种约定,用于将 ML 模型打包为多种风格,以及帮助部署它们的各种工具。
  • **注册表:**集中式模型存储、一组 API 和 UI,用于协作管理 ML 模型的整个生命周期。
  • **可伸缩性:**旨在扩展到大型数据集、大型输出文件和大量实验。

结论

MLOps 是一组用于部署和维护机器学习 (ML) 模型的方法和技术。但是,MLOps 当前未定义任何标准,因此请务必牢记这一点。因此,重要的是要看到“大局”,它涉及了解 MLOps 的关键概念、阶段、功能和挑战。