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

目录
相关文章
|
人工智能 自然语言处理 安全
通过阿里云Milvus与PAI搭建高效的检索增强对话系统
阿里云向量检索Milvus版是一款全托管的云服务,兼容开源Milvus并支持无缝迁移。它提供大规模AI向量数据的相似性检索服务,具备易用性、可用性、安全性和低成本等优势,适用于多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等场景。用户可通过PAI平台部署RAG系统,创建和配置Milvus实例,并利用Attu工具进行可视化操作,快速开发和部署应用。使用前需确保Milvus实例和PAI在相同地域,并完成相关配置与开通服务。
|
11月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
891 46
|
存储 人工智能 自然语言处理
基于QwQ-32B+Hologres+PAI搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于QwQ大模型的RAG服务,并关联Hologres引擎实例。Hologres与达摩院自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时、简单易用的向量计算能力。通过PAI-EAS,用户可以一键部署集成大语言模型(LLM)和检索增强生成(RAG)技术的对话系统服务,显著缩短部署时间并提升问答质量。具体步骤包括准备Hologres向量检索库、部署RAG服务、通过WebUI页面进行模型推理验证及API调用验证。Hologres支持高性能向量计算,适用于复杂任务的动态决策,帮助克服大模型在领域知识局限、信息更新滞后和误导性输出等方面的挑战。
|
人工智能 自然语言处理 API
Hologres × PAI × DeepSeek 搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于DeepSeek大模型的RAG(检索增强生成)服务,并关联Hologres引擎实例。Hologres与阿里云自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时的向量计算能力。通过PAI-EAS,用户可以一键部署集成了大语言模型和RAG技术的对话系统服务,显著缩短部署时间,并提高问答质量。部署步骤包括准备Hologres向量检索库、部署基于DeepSeek的RAG服务、通过WebUI进行模型推理验证,以及通过API调用进行模型推理验证。Hologres还提供了特色功能支持,如高性能向量计算等。
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
1294 0
|
人工智能 自然语言处理 安全
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
367 0
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
870 4
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
517 1
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
704 5
|
人工智能 运维 API
PAI企业级能力升级:应用系统构建、高效资源管理、AI治理
PAI平台针对企业用户在AI应用中的复杂需求,提供了全面的企业级能力。涵盖权限管理、资源分配、任务调度与资产管理等模块,确保高效利用AI资源。通过API和SDK支持定制化开发,满足不同企业的特殊需求。典型案例中,某顶尖高校基于PAI构建了融合AI与HPC的科研计算平台,实现了作业、运营及运维三大中心的高效管理,成功服务于校内外多个场景。