根据Statista Digital Economy Compass 2019,两大趋势将影响经济和我们的生活:
- 数据驱动的世界,这与呈指数增长的数字收集数据量有关。
- 人工智能 / 机器学习 / 数据科学的重要性日益增加,它从大量数据中获得洞察力。
为了保持一致性,我们将使用术语机器学习 (ML),但是,这些概念适用于人工智能和数据科学领域。
每个机器学习流水线都是一组操作,执行这些操作以生成模型。ML 模型大致定义为真实世界过程的数学表示。我们可能会认为 ML 模型是一个函数,它接受一些输入数据并产生输出(分类、情绪、推荐或聚类)。每个模型的性能都是通过使用评估指标来评估的,例如精确率和召回率或准确率。
作为一种强大的工具,机器学习可以解决许多实际问题。与任何其他软件工具类似,我们需要识别正确的“钉子”(场景或问题)来使用这个“锤子”(机器学习算法)。
我们对将机器学习纳入软件系统很感兴趣,因为 ML 可能会解决一些问题,这些问题可能太复杂而传统上无法解决。对于此类问题,通过使用机器学习实现的概率(随机)解决方案可能是正确的追求方式。例如,对话式 UI 中的感知问题可以通过语音识别或情感分析等技术来解决。机器学习(深度学习)似乎是最合适的一种,因为此类问题具有大量具有不同表示的元素。另一类适用于 ML 的问题是多参数问题。例如,我们应用机器学习方法来生成股票价格预测,这是股票交易决策的基础。
将模型投入生产意味着使你的模型可用于软件系统。实际上,通过部署 ML 模型,我们可以提供以下功能:
- 推荐。它根据产品描述或用户之前的交互来识别大型集合中的相关产品。
- Top-K Items Selection。它以适合用户的特定顺序组织一组项目(例如搜索结果)。
- 分类。将输入样本分配给先前定义的类别之一(例如“垃圾邮件”/“非垃圾邮件”)。
- 预测。将一些最可能的值分配给感兴趣的实体,例如股票价值。
- 内容生成。通过从现有样本中学习来产生新的内容,例如通过学习他以前的作品来完成巴赫合唱清唱剧。
- Question Answering。它回答一个明确的问题,例如:“这个文本是否描述了这个图像?”
- 自动化。可以是一组自动执行的用户步骤,例如股票交易。
- 欺诈和异常检测。识别欺诈或可疑的行为或交易。
- 信息提取和标注。用于识别文本中的重要信息,例如人名、职位描述、公司和位置。
在下表中,我们总结了 ML/AI 功能:
表来源:David Carmona 的“人工智能组织”
部署鸿沟
越来越多的企业正在尝试使用机器学习。将模型带入现实世界涉及的不仅仅是构建它。为了充分利用构建的 ML 模型,使其可用于我们的核心软件系统,我们需要将经过训练的 ML 模型合并到核心代码库中。这意味着,我们需要将 ML 模型部署到生产中。通过部署模型,其他软件系统可以向这些模型提供数据并获得预测,然后将其填充回软件系统中。因此,只有通过 ML 模型部署才能充分发挥 ML 模型的优势。
然而,根据 Algorithmia 公司的一份报告《2020 年企业机器学习现状》,许多公司还没有弄清楚如何实现其 ML/AI 目标。因为弥合 ML 模型构建和实际部署之间的鸿沟仍然是一项具有挑战性的任务。在 Jupyter notebook 模型中构建 ML 模型与将 ML 模型部署到产生业务价值的生产系统中存在根本区别。尽管 AI 预算在增加,但只有22% 的使用机器学习的公司已成功将 ML 模型部署到生产中。
图源:https://algorithmia.com/state-of-ml?utm_medium=website&utm_source=interactive-page&utm_campaign=IC-1912-2020-State-of-ML&_hsenc=p2ANqtz-_WbXKYLnpgf4zi4OZTNYmNgCRPIFFEqmW-Cqi2Px_T1K2wkIJvDt7KdCxB5vXAPmGirLi7ukZTykxeUh9vmHdn7dRF9g&_hsmi=81660946
“ 2020 年企业机器学习状况”报告基于对近 750 人的调查,其中包括机器学习从业者、机器学习项目经理和科技公司高管。一半的受访者回答说,他们的公司需要一周到三个月的时间来部署机器学习模型。大约 18% 的人表示需要三个月到一年的时间。根据该报告,“人们在开发 ML 功能时面临的主要挑战是规模、版本控制、模型可复现性和利益相关者的一致性”。
需要管理的变革情景
前面描述的部署鸿沟的原因是基于机器学习的应用程序的开发与传统软件的开发有着根本的不同。完整的开发流水线包括三个级别的更改:数据、机器学习模型和代码。这意味着在基于机器学习的系统中,构建的触发器可能是代码更改、数据更改或模型更改的组合。这也被称为“牵一发而动全身”(Changing Anything Changes Everything)原则。
下面我们列出了机器学习应用程序可能发生变化的一些场景:
- 将 ML 模型部署到软件系统中后,我们可能会认识到,随着时间的推移,模型开始衰减并出现异常行为,因此我们需要新的数据来重新训练我们的 ML 模型。
- 在检查了可用数据之后,我们可能会认识到很难获得解决我们之前定义的问题所需的数据,因此我们需要重新形式化问题。
- 在 ML 项目的某些阶段,我们可能会回到流程并收集更多数据,或者收集不同的数据并重新标记训练数据。这应该会触发 ML 模型的重新训练。
- 在将模型提供给最终用户之后,我们可能会认识到我们为训练模型所做的假设是错误的,因此我们必须更改我们的模型。
- 有时业务目标可能会在项目开发过程中发生变化,我们决定更改机器学习算法来训练模型。
此外,三个常见问题会在 ML 模型投入生产后影响其价值。
首先是数据质量:由于 ML 模型建立在数据之上,因此它们对传入数据的语义、数量和完整性很敏感。
第二个是模型衰减:ML 模型在生产中的性能会随着时间的推移而退化,因为在模型训练期间没有看到真实数据的变化。
第三是局部性:在将 ML 模型转移给新的商业客户时,这些使用不同的用户人口统计数据进行预训练的模型可能无法正常工作(根据质量指标)。由于 ML/AI 正在扩展到新的应用程序并塑造新的行业,因此构建成功的 ML 项目仍然是一项具有挑战性的任务。如图所示,需要围绕设计、构建和将 ML 模型部署到生产环境(MLOps)建立有效的实践和流程。
进一步阅读:为什么机器学习的 DevOps 如此不同?
https://hackernoon.com/why-is-devops-for-machine-learning-so-different-384z32f1
MLOps 定义
我们看到了应用机器学习可以解决哪些现实问题。我们确定了将 ML 模型投入生产的挑战。
最后,我们准备定义术语MLOps:
MLOps 一词被定义为“DevOps 方法的扩展,它将机器学习和数据科学资产作为 DevOps 生态系统中的一等公民。” (来源:MLOps特别兴趣组)
或者,我们可以使用机器学习工程 (MLE)的定义,其中“MLE 是使用机器学习和传统软件工程的科学原理、工具和技术来设计和构建复杂的计算系统。MLE 涵盖了从数据收集到模型构建到使模型可供产品或消费者使用的所有阶段。” (A.Burkov)
MLOps 与 DevOps 一样,源于这样一种理解:将 ML 模型开发与交付模型的过程(ML 操作)分开会降低整个智能软件的质量、透明度和敏捷性。
MLOps 的发展
在 2000 年代初期,当企业需要实施机器学习解决方案时,他们使用了供应商的许可软件,例如 SAS、SPSS 和 FICO。随着开源软件的兴起和数据的可用性,越来越多的软件从业者开始使用 Python 或 R 库来训练 ML 模型。
但是,模型在生产中的使用仍然是一个问题。随着容器化技术的兴起,通过使用 Docker 容器和 Kubernetes 解决了以可扩展方式部署模型的问题。最近,我们看到这些解决方案演变为 ML 部署平台,涵盖了模型实验、训练、部署和监控的整个迭代过程。
下图可视化了 MLOps 的发展过程。
https://ml-ops.org/content/motivation