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

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

3、数据ETL

在这个步骤中,为ML任务准备数据。这包括数据清理、过滤、数据转换和特性调整。它应该做一些事情,比如为整数映射生成特性。此外,该组件准备可能在训练组件中需要的特征元数据(例如,这包括特征规范化训练步骤中需要的元参数,分类变量编码所需的字典,等等)。这些称为转换工件;它们帮助构建模型输入。

重要的是,生成的任何映射都必须保存并在服务时重用(当训练过的模型用于进行预测时)。如果不能始终做到这一点,就会导致我们之前谈到的培训服务倾斜问题。

640.png

4、模型训练

模型训练组件负责训练我们的模型。在大多数用例中,模型可以训练数小时、数天甚至数周。优化一个需要数周训练的模型是不可行的。在其他情况下,用于训练模型的数据甚至无法装入内存。

在这种情况下,模型训练组件应该能够支持数据和模型并行性;并扩大到大量工作线程。它还应该能够处理内存不足的数据。

理想情况下,ML系统的所有组件都应该是可伸缩的,并运行在支持可伸缩性的基础设施上。

这个模型训练组件还应该能够在训练时自动监视和记录一切。我们不能训练一个机器学习模型很长一段时间,而不去观察它的运行情况,并确保它的正确配置能够随着迭代次数的增加而最小化损失函数。最后,训练组件还应该支持超参数调优。

5、模型分析

在模型分析组件中,我们对训练结果进行深入分析,并确保导出的模型具有足够的性能,可以推向生产。

这一步帮助我们保证模型只有在满足框架阶段预设的质量标准时才会被提升服务。标准必须包括与以前部署的模型相比的性能改进,以及在不同数据子集/切片上的性能。在下面的图中,我们在特性切片trip_start_hour上显示我们训练过的模型的性能。

640.png

该步骤的输出是一组性能指标,以及是否将模型推广到生产环境的决策。

6、模型服务部署

与训练组件相反,我们通常关注的是数据和模型复杂性的缩放。在服务部署组件中,我们感兴趣的是通过最小化响应延迟和最大化吞吐量来响应可变的用户需求。

因此,服务组件应该具有较低的延迟以快速响应用户、高效率以便在需要时可以同时运行多个实例、水平扩展、可靠和健壮地应对故障。

我们还需要我们的服务组件能够轻松地更新到模型的新版本。当我们获得新的数据或触发新的管道运行,或测试新的模型架构思想时,我们将希望推出模型的新版本,并希望系统无缝地过渡到这个新版本。

7、监控

正如我们前面提到的,由于不断变化的数据配置文件,部署的ML模型的性能会随着时间的推移而下降,我们需要确保我们的系统正在监视并响应这种下降。

因此,我们需要跟踪数据的汇总统计数据,并监控模型的在线性能,以便发送通知、在值偏离预期时进行回滚,或者潜在地调用ML流程中的新迭代。

640.png

因此,在线监控是检测性能退化和模型过时的关键。它作为一个线索,以新的实验迭代和再训练模型的新数据。

我们刚才描述的步骤的自动化水平定义了我们的ML系统的成熟度,它也反映了由模型衰退或给定的新数据触发的新模型的训练速度。

管道编排组件:目前,手工流程在许多用例中非常普遍。当模型由于静态数据分布而很少更改时,这可能就足够了。但在实践中,这种情况很少发生。数据通常是动态的,模型在实际部署时经常会中断。静态模型肯定不能适应描述环境的数据的变化。

手工处理也可能是危险的,因为它会导致ML训练和ML服务之间的断开。它将创建模型的数据科学家和作为预测服务操作模型的工程师分开。而这一过程会导致训练服务的倾斜问题。

业务流程组件的目标是连接系统的不同组件。它按顺序运行管道,并根据定义的条件自动从一个步骤移动到另一个步骤。这是自动化的第一步,因为我们现在可以使用基于实时管道触发器的新数据自动培训生产中的新模型。

640.png

我们需要注意的是,在生产环境中,我们并没有将训练过的模型部署为预测服务。我们实际上正在部署一个完整的训练管道,它会自动且反复地运行,以作为预测服务来服务训练过的模型。

管道的元数据存储:管道元数据存储的作用是记录ML管道执行的所有细节。这对于保持组件之间的沿袭和在任何需要的时候重新生成已部署的模型非常重要。它还可以帮助我们调试遇到的任何错误。

每次执行管道时,存储都会记录所有关于管道执行的细节,例如:

  • 我们的管道和组件的版本被执行的源代码。
  • 传递给我们管道的输入参数。
  • 管道中每个执行组件产生的工件/输出,如原始数据的路径、转换的数据集、验证统计数据和异常、训练的模型……
  • 模型评估度量标准,以及关于模型部署的模型验证决策,这些决策是在模型分析和验证组件期间产生的……

640.png

CI / CD管道自动化

到目前为止,我们只讨论了如何自动化ML管道的持续执行,以基于新数据的可用性或模型衰减来捕捉新出现的模式等触发器来重新训练新模型。

但是,如果我们想测试一个新的特性,一个新的模型架构,或者一个新的超参数呢?这就是自动化CI/CD管道的意义所在。CI/CD管道让我们能够快速探索新的想法和实验。它允许我们自动构建、测试和部署新管道及其组件到预期的环境。

以下是CI/CD流水线自动化如何补充连续ML流水线自动化:

  • 如果给定新的实现/代码(新的模型架构、特性工程和超参数……),一个成功的CI/CD管道会部署一个新的连续ML管道。
  • 如果给定新的数据(或模型衰减触发器),成功的自动连续管道将部署新的预测服务。要用新数据训练新的ML模型,需要在新数据上执行之前部署的ML管道。

640.png

完整的端到端自动化管道应该如下所示:

640.png

  • 我们迭代地尝试了新的ML想法,其中对一些管道组件进行了更新(例如,引入新功能将看到我们更新数据转换组件……)。此阶段的输出是新ML管道组件的源代码,然后将其推送到目标环境的源存储库中。
  • 新源代码的存在将触发CI / CD管道,而CI / CD管道将反过来构建新的组件和管道,运行相应的单元和集成测试,以确保一切均已正确编码和配置,最后将新管道部署到目标环境是否通过所有测试。机器学习系统的单元测试和集成测试本身值得一篇独立的文章。  
  • 根据计划,新训练数据的存在或响应触发器,新部署的管道将在生产中自动执行。此阶段的输出是经过训练的模型,该模型被推送到模型注册中心并进行连续监视。

为什么Tensorflow ?

在这最后一节中,我想谈谈为什么Tensorflow是我开发集成ML系统时首选的框架。当然,TensorFlow可能并不适合并适用于所有的用例,有时甚至可能是一种过度使用,特别是在不需要深度学习的情况下。然而,我倾向于在可能的情况下使用Tensorflow,原因如下:

Tensorflow自带Tensorflow Extended (TFX)。TFX使我们能够专注于优化ML管道,同时减少对每次重复的样板代码的关注。像数据验证和模型分析这样的组件可以很容易地完成,而不需要开发自定义代码来读取数据并在两次管道执行之间检测异常。使用TFX,只需要很少几行代码就可以完成,从而节省了大量开发管道组件的时间。数据验证和模型分析组件中的截图来自TFX。

我们可以设计自定义模型,我们可以使用TF layers API、TF losses API、....来构建这些模型如果我们正在构建一些相当标准的东西,TensorFlow有一组我们可以尝试的预估器。Tensorflow 2可以很好地与Keras模型一起工作。随着数据和培训时间的增加,我们的需求也会增加。检查点允许我们在需要时暂停并恢复训练,如果预先设定的时间不够,则继续训练。

Tensorflow设计了一个数据集API,可以很好地处理内存不足的数据集。

模特训练需要几个小时,有时几天。我们不能在不检查模型是否按预期运行的情况下对模型进行长时间的训练Tensorboard是TensorFlow的可视化工具包。TensorBoard提供了机器学习实验所需的可视化和工具。它允许我们将在训练期间实时生成的TensorFlow关键指标显示出来,并将它们可视化在训练和验证集上,以便查看我们的模型是否正确地配置为收敛。如果情况不是这样,我们可以停止训练。

我们可以将TensorFlow分布在一个集群上以使它更快。从一台机器到多台机器可能听起来很复杂,但有了Tensorflow,我们就可以开箱即用了。TF为训练和评估抽象了分布式执行的细节,同时也支持跨本地/非分布式和分布式配置的一致行为。

目录
相关文章
|
11天前
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与CUDA:加速深度学习模型训练的最佳实践
【8月更文第27天】随着深度学习应用的广泛普及,高效利用GPU硬件成为提升模型训练速度的关键。PyTorch 是一个强大的深度学习框架,它支持动态计算图,易于使用且高度灵活。CUDA (Compute Unified Device Architecture) 则是 NVIDIA 开发的一种并行计算平台和编程模型,允许开发者直接访问 GPU 的并行计算能力。本文将详细介绍如何利用 PyTorch 与 CUDA 的集成来加速深度学习模型的训练过程,并提供具体的代码示例。
28 1
|
10天前
|
机器学习/深度学习 数据采集 缓存
Elasticsearch与机器学习集成的最佳实践
【8月更文第28天】Elasticsearch 提供了强大的搜索和分析能力,而机器学习则能够通过识别模式和预测趋势来增强这些能力。将两者结合可以实现更智能的搜索体验、异常检测等功能。
24 0
|
2月前
|
人工智能 自然语言处理 算法
|
3月前
|
人工智能 自然语言处理 算法
阿里云PAI大模型评测最佳实践
在大模型时代,模型评测是衡量性能、精选和优化模型的关键环节,对加快AI创新和实践至关重要。PAI大模型评测平台支持多样化的评测场景,如不同基础模型、微调版本和量化版本的对比分析。本文为您介绍针对于不同用户群体及对应数据集类型,如何实现更全面准确且具有针对性的模型评测,从而在AI领域可以更好地取得成就。
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
构建高效机器学习模型的最佳实践
【5月更文挑战第31天】 在数据驱动的时代,机器学习已成为创新的核心动力。本文深入探讨了构建高效机器学习模型的关键技术要点,包括数据预处理、特征工程、模型选择、调参策略及模型评估等环节。通过实例分析与经验总结,旨在为从业者提供实用的技术参考,以优化模型性能,提升项目成功率。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习中的特征工程最佳实践
【5月更文挑战第21天】 在机器学习领域,特征工程是模型性能优化的关键环节之一。本文将深入探讨特征工程的核心概念、方法及其在构建高效机器学习模型中的应用。文章不仅总结了实用的特征选择技巧和数据预处理策略,还介绍了如何通过自动化工具简化特征工程流程。通过案例分析,我们展示了在不同数据集上应用这些技术的效果,并讨论了特征工程在未来发展中的潜在趋势与挑战。
|
4月前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的最佳实践
【5月更文挑战第16天】 在数据驱动的时代,机器学习已成为创新的核心推动力。本文将深入探讨如何构建一个高效的机器学习模型,包括数据预处理、特征选择、模型训练与优化等关键步骤。通过实例分析和技术讲解,旨在为读者提供一套实用的技术指导和最佳实践方法,以支持其在复杂数据环境中实现准确预测和智能决策。
|
4月前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的最佳实践
【5月更文挑战第18天】 在数据驱动的时代,构建高效的机器学习模型已经成为企业获取竞争优势的关键。本文将深入探讨如何通过精确的数据预处理、合理的特征工程、高效的算法选择以及细致的模型调优等步骤,来提升模型的性能和预测准确度。我们还将讨论模型部署后的监控和维护策略,确保模型长期稳定运行。这些最佳实践不仅适用于初学者建立基础,也能帮助有经验的数据科学家优化现有工作流程。
|
4月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型的最佳实践
【5月更文挑战第28天】 在数据驱动的时代,构建一个高效的机器学习模型对于解决复杂问题至关重要。本文将深入探讨如何通过精确的数据预处理、特征工程、模型选择和调优以及评估策略来提升模型的性能。我们将摒弃传统的摘要方式,直接进入主题,提供一系列实用的技术和方法,帮助读者构建出既健壮又精准的机器学习系统。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型的最佳实践
【5月更文挑战第25天】 在数据科学和人工智能领域,构建高效的机器学习模型是实现问题解决方案的关键步骤。本文将探讨一系列策略和技术,旨在优化模型的性能并确保其可靠性。我们将从数据预处理的重要性出发,接着讨论特征工程、模型选择、超参数调优以及交叉验证等概念。此外,我们还将探索如何通过正则化技术和集成方法来避免过拟合,并讨论最新的自动化机器学习(AutoML)趋势。文章的目的在于为读者提供一套综合的技术指南,以支持其在构建和部署精确且健壮的机器学习模型时做出明智的决策。

热门文章

最新文章

下一篇
DDNS