MLOps:构建生产机器学习系统的最佳实践(上)

简介: MLOps:构建生产机器学习系统的最佳实践

你可能已经听过很多次了,但只有一小部分机器学习模型投入生产。部署和运行机器学习模型对于大多数已经开始将ML应用于用例的行业来说都是一个挑战。在这篇文章中,我将分享一些MLOps的最佳实践和技巧,它们将允许您在生产环境中使用您的ML模型并正确地操作它。在我们开始之前,让我们讨论一下我们可能都知道的典型的ML项目生命周期。

ML项目生命周期

一个典型的ML生命周期可以概括为以下图表,主要由三个阶段组成。

640.png

在第一阶段,我们深入研究数据之前做好准备是很重要的。因此与业务专家一起,我们需要仔细定义我们的问题和业务目标!我们需要回答一些重要的问题,这些问题使我们能够对模型和生产线的设计进行培训和服务决策。例如:

理想的结果是什么?

我们的评估指标是什么?我们如何定义ROI?

成功和失败的标准是什么?

推理速度要求是什么?我们能否让每个功能都满足要求?…

在第二阶段,我们建立了我们的第一个ML模型,我们进行ML可行性研究。

我们使用第一阶段中定义的度量来证明ML业务价值。ML工程规则第1条的最佳实践是«保持第一个模型简单,并获得正确的基础模型»。最初的模型为我们的产品提供了最大的提升,所以它不需要一开始就成为最花哨的模型。

在第三阶段,我们进入生产阶段。这是本文的主要主题,因此我们将在接下来的小节中对此进行更详细的介绍。一旦我们的生产管道准备好并设计好了,我们便能够更快更有效地收集见解并迭代新想法。

数据科学家现在主要在做什么?

今天,大多数ML将机器学习模型投入生产的步骤都是差不读。作为数据科学家,它从ML用例和业务目标开始。有了这个用例,我们开始收集和探索来自不同数据源的相关数据,以理解和评估它们的质量。

640.png

一旦我们对数据有了感觉,我们就会开始设计一些我们认为对我们的问题感兴趣的功能。然后我们进入建模阶段并开始处理一些实验。在这个阶段,我们定期手动执行不同的实验步骤。对于每个实验,我们都要做一些数据准备,一些特性工程和测试。然后我们对我们认为特别有前途的模型或模型架构进行一些模型训练和超参数调优。

最后但并非最不重要的是,我们将评估所有生成的模型,针对准备好的测试数据集测试它们,评估不同的指标,查看性能,并将这些模型与其他模型进行比较,看看哪个模型最有效,哪个模型产生最高的评价指标。整个过程是迭代的,并且会一遍又一遍地手动执行,直到我们得到具有最佳性能的最漂亮的模型。

一旦我们获得了性能最好的模型,我们通常会把它放在某个存储中,然后把它扔给it和运营团队,他们的工作是将模型作为预测服务部署到生产环境中。

ML操作陷阱——这种方法有什么问题?

下面是上述方法的错误之处。

手动:这些步骤非常手动,每次都是从头开始编写的。每次数据科学家需要进行新的实验时,他都需要查看他的笔记本,更新它们并手动执行它们。如果模型需要用新的训练数据刷新,数据科学家需要再次手动执行他的代码。

耗时:此手工流程耗时且效率不高。

不可重用:在笔记本中编写的自定义代码只能由作者自己理解,不能被其他数据科学家或其他用例重用或利用。即使是作者自己有时也会发现,在一段时间后,很难理解他们的作品。

不可复现:复现性是指被重新创建或复制的能力。在机器学习中,能够复制精确的模型是很重要的。使用这里的手工流程,我们可能无法复制模型的旧版本,因为底层数据可能已经更改,代码本身可能已经被覆盖,或者依赖项及其确切版本可能没有被记录。因此,在出现问题的情况下,任何回滚到模型的旧版本的尝试都可能是不可能的。

易出错:这个过程会导致很多错误,比如训练偏差,模型性能下降,模型偏差,基础设施崩溃……

  • 训练偏差:当我们部署模型时,有时会注意到模型的在线性能完全低于我们在保留数据集上预期和测量的性能。对于可操作的机器学习模型,这种现象非常常见。训练和线上渠道之间的差异会导致偏差。训练的偏差可能很难检测到,并且会使模型的预测完全无用。为了避免出现此问题,我们需要确保在训练和线上服务数据上都完成了精确的处理功能,随时监控训练和线上服务数据的分布,并监控模型的实时性能并将其与离线性能进行比较。
  • 模型衰减:在大多数情况下,数据配置文件是动态的,并且会随时间变化。当基础数据发生变化时,模型性能会下降,因为现有模式已不再是最新的。静态模型很少继续发挥作用。我们需要确保使用新数据定期更新模型,并监控所提供模型的实时性能以触发模型衰减。下图显示了部署的模型如何随时间衰减,以及不断需要用新模型更新模型。

640.png

  • 模型偏差:在医学和金融领域,人工智能可以协助进行医学诊断,或测试某人的贷款资格。这些应用程序看起来很实用,但是在此类系统中任何偏差的影响都可能是有害的并且造成严重的后果。因此,未来AI系统的一个重要特性是对所有人的公平性和包容性。因此对于任何机器学习模型,衡量跨敏感功能(性别,种族等)的公平性都非常重要。敏感功能取决于上下文。即使对于不敏感的功能,评估AI系统在不同子组上的性能也很重要,以确保在部署模型之前,我们知道所有表现不佳的子组。

640.png

  • 可扩展性:可扩展性在机器学习中很重要,因为训练模型可能需要很长时间,因此优化需要数周训练的模型是不可行的。例如模型太大以致无法容纳在训练设备的工作内存中。即使我们决定垂直扩展也要比水平扩展更昂贵。在某些情况下,数据量可能不大一开始可能不需要扩展性,但是我们应该考虑,如果通过连续训练我们期望接收的训练数据量是否会随着时间增加并可能产生问题。

机器学习系统的主要组成部分

在本节中,我们将描述ML系统的主要组成部分以及围绕它们的最佳实践,这将使我们避免上述陷阱。

提供集成的ML系统并在生产中持续运行的过程涉及以下步骤:

640.png

让我们详细讨论每个组件。

1、数据集成:

该组件通常位于用例的ML管道之外。在成熟的数据处理过程中,数据工程师应该优化连续的数据获取和转换,以不断地向组织内的不同数据分析实体提供最新的数据,这些实体期待发现数据驱动的见解和更好的决策

2、数据验证:

在这个组件中,我们的重点是验证输入到管道的数据。我们不能低估这个问题在ML系统中的重要性。无论采用何种ML算法,数据中的错误都可能严重影响生成模型的质量。正如一个流行的数据科学概念所说的“垃圾进,垃圾出”。因此,尽早发现数据错误是至关重要的。

无错误数据可以发挥的另一个作用是模型输出分析。这个组件允许我们正确地理解和调试ML模型的输出。因此,数据在ML系统中必须被视为头等公民,就像算法和基础设施一样。在ML管道的每次执行时,都必须对其进行持续监视和验证。

这个步骤也用于模型训练之前,以决定我们是否应该重新训练模型或停止管道的执行。

下面是数据验证组件的典型行为:

它计算并显示关于数据的描述性统计信息,它还可以显示连续数据跨度的描述性统计信息(例如,当前管道执行N和上次管道执行N-1之间的数据),以查看数据分布是如何变化的。

640.png

它可以推断出表示使用中的数据的数据模式。

640.png

检测数据异常。它应该检查数据集是否与预定义的经过验证的模式匹配。它应该检测连续数据跨度之间的数据漂移(即当前流水线执行N和最后流水线执行N-1之间的数据漂移),比如不同天数的训练数据之间的数据漂移。它还应该通过比较训练数据和在线服务数据来检测训练和线上的偏差。

640.png

在生产中,下面是一个示意图展示在通过不断的训练的情况下,视图如何生成关于新到数据的统计信息、验证它并生成异常报告:

640.png

目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
107 4
|
17天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
20 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
基于python 机器学习算法的二手房房价可视化和预测系统
文章介绍了一个基于Python机器学习算法的二手房房价可视化和预测系统,涵盖了爬虫数据采集、数据处理分析、机器学习预测以及Flask Web部署等模块。
基于python 机器学习算法的二手房房价可视化和预测系统
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与CUDA:加速深度学习模型训练的最佳实践
【8月更文第27天】随着深度学习应用的广泛普及,高效利用GPU硬件成为提升模型训练速度的关键。PyTorch 是一个强大的深度学习框架,它支持动态计算图,易于使用且高度灵活。CUDA (Compute Unified Device Architecture) 则是 NVIDIA 开发的一种并行计算平台和编程模型,允许开发者直接访问 GPU 的并行计算能力。本文将详细介绍如何利用 PyTorch 与 CUDA 的集成来加速深度学习模型的训练过程,并提供具体的代码示例。
78 1
|
2月前
|
机器学习/深度学习 数据可视化 数据处理
Python vs R:机器学习项目中的实用性与生态系统比较
【8月更文第6天】Python 和 R 是数据科学和机器学习领域中最受欢迎的两种编程语言。两者都有各自的优点和适用场景,选择哪种语言取决于项目的具体需求、团队的技能水平以及个人偏好。本文将从实用性和生态系统两个方面进行比较,并提供代码示例来展示这两种语言在典型机器学习任务中的应用。
61 1
|
2月前
|
机器学习/深度学习 算法
【Deepin 20系统】机器学习分类算法模型xgboost、lightgbm、catboost安装及使用
介绍了在Deepin 20系统上使用pip命令通过清华大学镜像源安装xgboost、lightgbm和catboost三个机器学习分类算法库的过程。
32 4
|
2月前
|
机器学习/深度学习 数据采集 缓存
Elasticsearch与机器学习集成的最佳实践
【8月更文第28天】Elasticsearch 提供了强大的搜索和分析能力,而机器学习则能够通过识别模式和预测趋势来增强这些能力。将两者结合可以实现更智能的搜索体验、异常检测等功能。
48 0
|
3月前
|
机器学习/深度学习 数据采集 运维
智能化运维:利用机器学习优化系统性能
在当今快速发展的信息技术时代,传统的运维方式已难以满足日益增长的业务需求和复杂性。本文将探讨如何通过机器学习技术来提升运维效率,确保系统的高可用性和性能优化。我们将深入分析机器学习模型在预测系统负载、自动故障检测与响应以及资源分配中的应用,并讨论实施这些策略时可能遇到的挑战和解决思路。
|
3月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:机器学习在系统维护中的应用与挑战
本文深入探讨了机器学习技术在IT运维领域的应用,并分析了其带来的优势及面临的主要挑战。文章首先概述了智能运维的发展历程和当前趋势,随后详细讨论了机器学习技术如何优化故障预测、自动化处理流程以及增强安全监控。最后,文中指出了实施过程中可能遇到的技术和管理难题,为读者提供了对智能运维未来发展方向的深刻见解。
|
3月前
|
人工智能 自然语言处理 算法
下一篇
无影云桌面