Press "Enter" to skip to content

AI项目有何不同

Michael Dziedzic on Unsplash

我经常被潜在客户询问如何解释人工智能(AI)软件流程,最近还被具有丰富软件开发和数据科学经验的经理们要求实施 MLOps。

本文旨在概述关键差异,而不是对 AI 软件流程的全面讨论。

背景

AI 项目是实验性质的,因此软件程序的多个或许全部部分可能会随着时间的推移被替换或修改。因此,变化通常是各个步骤的结果,而不是客户/系统要求,因此设计系统的方式至关重要,以免在实验结果表明不同方法时需要进行全面重建。事实上,编写科学代码具有两个独特的属性:数学错误和实验性质。

计算中的错误通常很难追踪,尤其是当代码在语义上是正确的时候。没有发现错误。没有引发异常。一切看起来都很好,但(数值)结果显然是不正确的。在实现概率模型时,结果可能会根据某些初始条件或随机因素而变得良好。

没有免费午餐定理:当两个算法在所有可能的问题上的表现被平均时,它们是等效的。

总会有一些实验性的部分会不断变化。因此,关键是设计每个组件,使大部分工作可以保持并成为下一阶段开发的基础。

因此,许多文章,比如[3],侧重于设计模式,可以帮助创建更健壮和可重用的代码,减少错误。

MLOps 流程

我们可以看到 MLOps 与传统软件开发过程的一些差异。MLOps 是一套在生产中可靠高效地部署和维护机器学习(ML)模型的方法和技术。MLOps 是机器学习、DevOps 和数据工程的交集。

Figure 1: ML model SDLC [4]

一般来说,MLOps 流程包括八个阶段:

  1. 数据准备
  2. 特征工程
  3. 模型设计
  4. 模型训练和优化
  5. 模型评估
  6. 模型部署
  7. 模型服务
  8. 模型监控

MLOps 生命周期中的每个步骤都建立在自己的系统上,但需要相互连接,这是扩展 ML 应用所需的最低要求。

在不深入讨论 MLOps 的情况下,我们可以确定一些项目差异的关键想法:

  • 需要对代码、数据和模型进行版本管理
  • 持续交付和持续训练
  • 跟踪模型实验
  • 管理机器学习特征
  • 监控生产中的模型

跟踪模型实验

与传统软件开发周期不同,模型开发周期范式具有两个主要差异:管理特征和监控模型。

管理机器学习特征

特征存储解决了一些关键的操作挑战:它们提供了训练和推理之间一致的数据集;它们避免任何数据偏差或意外数据泄漏;它们在特征提取过程中允许自定义功能转换(批处理和流处理数据);它们允许在推理时使用历史数据进行请求增强,这在大型欺诈和异常检测模型以及推荐系统中很常见。

监控生产中的模型

机器学习应用程序随着时间的推移可能会遇到几种问题[4]:

  • 数据漂移:特征值的突然变化或数据分布的变化。
  • 模型/概念漂移:模型性能如何、为什么以及何时发生变化。
  • 模型随时间失败:模型因无法解释的原因而失败(系统故障、网络连接差、系统过载、错误输入或损坏的请求),因此早期检测根本原因或其频率很重要。
  • 异常值:需要在出现异常值或意外情况时跟踪模型的结果和性能。
  • 数据质量:确保在生产中接收到的数据以与训练数据相同的方式进行处理。
  • 系统性能:训练流程失败或运行时间过长,延迟非常高等。
  • 系统过载退化:不断监控模型服务器或服务的健康状态也很重要。

结论

显然,人工智能项目的实验性质是与传统软件开发的一个重要区别。在MLOps的背景下,我们还可以识别出一些重要的差异:需要对代码、数据和模型进行版本控制;跟踪模型实验;监测生产环境中的模型。

参考文献

[1] E. Alpaydin, 《机器学习导论》, 第三版, MIT Press, ISBN: 978–0262028189, 2014.

[2] S. Russell 和 P. Norvig, 《人工智能:一种现代方法》, 第四版, Upper Saddle River, NJ: Prentice Hall, ISBN: 978–0–13–604259–4, 2021.

[3] O. Zero, ” 如何在Python中编写更好的科学代码,” Towards Data Science, 2022年2月15日.

[4] M. Galarnyk, ” 在生产环境中部署机器学习模型的考虑事项,” Towards Data Science, 2021年11月19日.

Leave a Reply

Your email address will not be published. Required fields are marked *