什么是机器学习MLOps? - kdnuggets


MLOps是ML的DevOps。数据科学家构建的机器学习(ML)模型需要与其他多个团队紧密合作,例如业务、工程和运营。这意味着了在沟通、协作和协调方面的存在挑战。MLOps的目标是通过完善的实践来简化此类挑战。此外,MLOps带来了敏捷性和速度,这是当今数字世界的基石。
ML模型操作化的挑战与DevOps证明自己的软件生产化有很多共同点。
因此,采用DevOps的 最佳实践 是一种谨慎的方法,可以帮助数据科学家克服软件生产中常见的挑战。例如,与瀑布方法相比,DevOps提倡的敏捷方法的使用可提高效率。
 
DevOps与MlOps比较
DevOps:

  • 使用持续集成和持续交付 CI / CD框架 来构建,测试和部署软件。它具有可重现性,安全性和代码版本控制的优点。
  • 敏捷方法论通过强制执行在初始阶段本身建立的端到端管道来解决此协调问题。敏捷方法论将项目分为冲刺Sprint阶段。在每个sprint中,开发人员都提供了可供部署的增量功能。在项目的早期阶段,每个成员都可以看到每个sprint的输出(使用管道)。因此,减少了最后一刻的意外风险 ,并且 提早反馈已 成为一种惯例。用业界的话来说,这确实“前移”了协调问题。

MLOps:
  • 持续集成和持续交付(CI / CD):
  • 设置流水线,以便不断构建更新并准备准确,安全和无缝地进行生产。
  • 更长的开发到部署生命周期:数据科学家开发模型/算法,并将其移交给运营部门以部署到生产中。双方之间缺乏协调和不正确的交接会导致延误和错误。
  • 团队之间的无效沟通会导致最终解决方案的延迟: 机器学习解决方案的评估通常在项目生命周期的末尾进行。由于开发团队通常在孤岛上工作,因此解决方案成为其他利益相关者的黑匣子。缺乏中间反馈使情况更加恶化。这些在时间,精力和资源方面构成了重大挑战。

 
MLOps挑战不同于DevOps
MLOps平台需要解决ML所面临的典型挑战。
这种挑战的一个例子是数据的作用。在传统软件工程(即软件1.0)中,开发人员编写了在程序空间中定义良好的逻辑和规则(作为代码)。但是,在机器学习(即软件2.0)中,数据科学家编写的代码定义了如何使用参数来解决业务问题。使用数据(使用诸如梯度下降等技术)可以找到参数值。这些值可能会随数据的不同版本而改变,从而改变代码的行为。换句话说,数据在定义输出时起着与书面代码同等重要的作用。而且两者可以彼此独立地改变。除了模型代码作为需要定义和跟踪的软件的固有部分之外,这还增加了一层数据复杂性。
MLOps平台需要解决的各种挑战:
  • 数据和超参数版本控制

在传统的软件应用程序中,使用代码版本控制工具来跟踪更改。版本控制是任何持续集成(CI)解决方案的先决条件,因为它能够以完全自动化的方式实现可重复性。源代码中的任何更改都会触发CI / CD管道来构建,测试和交付可用于生产的代码。在机器学习中,如果算法代码或超参数或数据发生更改,则输出模型可能会更改。尽管代码和超参数由开发人员控制,但数据更改可能不受限制。除了算法代码,这还保证了数据和超参数版本控制的概念。请注意,数据版本控制对于非结构化数据(例如图像和音频)是一个挑战,并且MLOps平台采用了独特的方法来应对这一挑战。
  • 迭代开发和实验

ML算法和模型开发是 迭代和实验的。它需要大量的参数调整和功能设计。ML管道可用于数据版本,算法代码版本和/或超参数。这些工件的任何更改(独立地)都会触发新的可部署模型版本,从而保证进行实验和度量计算。MLOps平台会跟踪这些工件的完整沿袭。
  • 测试

机器学习需要数据和模型测试 ,以尽早在ML管道中发现问题。
  1. 数据验证- 检查数据是否干净无异常且新数据是否符合先前的分布。
  2. 数据预处理-检查数据是否有效且可扩展地进行了预处理,并避免了任何训练服务上的偏差[ 3 ]。
  3. 算法验证- 根据业务问题跟踪分类/回归指标,并确保算法公平。

  • 安全性

生产中的ML模型通常是较大系统的一部分,该系统的输出由可能未知的应用程序消耗。这暴露了多种安全风险。MLOps需要提供 安全性和访问控制 ,以确保ML模型的输出仅由已知用户使用。
  • 生产监控 

生产中的模型需要持续监控 ,以确保模型在处理新数据时按预期执行。监控具有多个维度,例如协变量移位,先前移位等
  • 基础设施要求

ML应用程序需要 扩展 到复杂基础架构的规模和计算能力。例如,在实验期间可能需要GPU,而动态地进行生产扩展则可能是必需的。
 
MLOps组件
 凭借MLOps的背景及其与DevOps的相似之处和不同之处,以下内容描述了组成MLOps框架的不同组件,如图3所示。它们背后的工作流程是通过敏捷方法实现的,

  1. 用例发现: 此阶段涉及业务与数据科学家之间的协作,以定义业务问题并将其转化为ML和相关的相关KPI(关键绩效指标)可以解决的问题陈述和目标。
  2. 数据工程: 这一阶段涉及一个数据工程师和来自各种来源的数据科学家采集数据和准备建模的数据(处理/验证)之间的协作。
  3. 机器学习管道: 这个阶段的设计和部署一个管道与CI / CD集成。数据科学家使用管道进行多次实验和测试。该平台跟踪整个实验中的数据和模型沿袭以及相关的KPI。
  4. 生产部署: 此阶段负责安全,无缝地部署到所选的生产服务器,无论是公共云,本地部署还是混合部署。
  5. 生产监控: 此阶段包括模型监控和基础架构监控。使用已配置的KPI(例如输入数据分布的更改或模型性能的更改)连续监视模型。设置触发器以进行更多实验,以使用新算法,数据和超参数来生成ML管道的新版本。根据内存和计算要求监控基础架构,并根据需要进行扩展。