云智慧助力MLOps加速落地

news2024/11/18 15:48:09

背景

随着数字化和计算能力的发展,机器学习(Machine Learning)技术在提高企业生产力方面所涌现的潜力越来越被大家所重视,然而很多机器学习的模型及应用在实际的生产环境并未达到预期,大量的ML项目被证明是失败的。从机器学习的发展历程来看,早期ML社区广泛关注的是ML模型的构建,确保模型能在预定义的测试数据集上取得较好的表现,但对于如何让模型从实验室走向用户的桌面,并未大家所关注。

机器学习的生命周期涉及众多的流程,如数据的获取、数据准备、模型训练、模型的调整、模型的部署、模型监控、模型的可解释性等,不同的流程涉及不同的流程工具和人员,需要跨团队的协作和交接,从数据工程到数据科学再到ML工程。在此背景下,如何保障生产中以下诸多目标是我们亟待解决的。譬如实现更快的模型开发、交付更高质量的 ML 模型以及更快的部署和生产;同时监督、控制、管理和监视数千个模型,以实现持续集成、持续交付和持续部署;加强对模型的监管审查,提高模型透明度,确保更好地遵守组织或行业的政策。

尤其是LLM模型时代,伴随着AGI的到来,机器学习模型的规模和复杂性也在不断增加。这意味着将这些模型部署到生产环境的难度也在上升,需要更加专业化的工具和方法来管理和监控。

什么是MLOps

MLOps(Machine Learning Operations)是一种将机器学习(ML)模型整合到生产环境中的实践,目的是确保模型在生产过程中的有效性和可靠性。 通过采用 MLOps 方法,数据科学家和机器学习工程师可以协作并加快模型开发和生产的步伐,方法是实施持续集成和部署 (CI/CD) 实践,并对 ML 模型进行适当的监控、验证和治理。使得机器学习模型从实验室走向生产环境,加速了机器学习的落地和商业化。

MLOps与DevOps的区别

MLOps 是一组特定于机器学习项目的工程实践,借鉴了软件工程中更广泛采用的 DevOps 原则。DevOps 为交付应用程序带来了一种快速、持续迭代的方法,而 MLOps 则借用了相同的原则将机器学习模型投入生产。在这两种情况下,结果都是更高的软件质量、更快的补丁和发布以及更高的客户满意度。

MLOps 和 DevOps 都是旨在简化和自动化软件应用程序开发和部署的方法。DevOps 专注于一般软件开发流程和 IT 运营,但 MLOps 专门针对机器学习应用程序的独特挑战和复杂性。  但这两种方法都旨在提高软件应用程序开发、部署和管理中的协作、自动化和效率。

MLOps实施原则

图片

图1 MLOps实施原则

MLOps 的实施原则是指导如何让我们在 MLOps 中实践。

  • CI/CD 自动化。 CI/CD 自动化提供持续集成、持续交付和持续部署。它执行构建、测试、交付和部署步骤。向开发人员提供有关某些步骤的成功或失败的快速反馈,从而提高整体生产力。
  • 再现性。  再现性是再现 ML 实验并获得完全相同结果的能力。
  • 版本控制。  版本控制确保数据、模型和代码的版本控制,不仅可以实现可再现性,还可以实现可追溯性(出于合规性和审计原因)的工作流程。
  • 可协作。  可协作确保在数据、模型和代码上协作工作的可能性。除了技术方面,该原则还强调协作和交流的工作文化,旨在减少不同角色之间的领域孤岛。
  • 持续性。  持续训练意味着根据新的特征数据定期重新训练 ML 模型。通过监控组件、反馈循环和自动化 ML 工作流管道的支持,可以实现持续培训。持续训练始终包括评估运行以评估模型质量的变化 。
  • ML 元数据跟踪/记录。  为每个编排的 ML 工作流任务跟踪和记录元数据。每次训练作业迭代都需要元数据跟踪和记录(例如,训练日期和时间、持续时间等),包括模型特定的元数据——例如,使用的参数和产生的性能指标、模型沿袭:使用的数据和代码—— 确保实验运行的完全可追溯性。
  • 可监控。  持续监控意味着定期评估数据、模型、代码、基础设施资源和模型服务性能(例如,预测准确性),以检测影响产品质量的潜在错误或变化。
  • 可反馈。  需要多个反馈循环才能将来自质量评估步骤的见解整合到开发或工程过程中(例如,从实验模型工程阶段到之前的特征工程阶段的反馈循环)。从监控组件(例如,观察模型服务性能)到调度程序需要另一个反馈循环,以启用再训练。

MLOps工作流程

图片

图2 MLOps工作流程

  • 数据准备和特征工程: 通过创建可重现、可编辑和可共享的数据集、表格和可视化,为机器学习生命周期迭代探索、共享和准备数据。迭代地转换、聚合和删除重复数据以创建改进的特征。重要的是,利用特征存储,使特征在数据团队之间可见和共享。
  • 模型训练和调优: 使用流行的开源库来训练和提高模型性能。作为一种更简单的替代方法,使用自动化机器学习工具(例如 AutoML)自动执行试运行并创建可审查和可部署的代码。
  • 模型管理: 跟踪模型沿袭、模型版本,并管理模型工件和整个生命周期的转换。借助 MLflow 等开源 MLOps 平台,跨 ML 模型发现、共享和协作。
  • 模型推理和服务: 管理模型刷新频率、推理请求时间以及测试和 QA 中的类似生产细节。使用 repos 和 orchestrators(借用 devops 原则)等 CI/CD 工具来自动化预生产管道。
  • 模型部署和监控: 自动化权限和集群创建以生产注册模型。启用 REST API 模型端点。
  • 自动模型重训练: 收集模型监控的指标信息针对性对模型进行重新训练。

涉及人员角色

图片

图3 MLOps涉及的人员角色

  • 项目经理: 业务利益相关者定义要通过 ML 实现的业务目标,并负责业务的通信方面,例如,呈现 ML 产品产生的投资回报率 。
  • 解决方案架构师: 解决方案架构师设计架构并定义要使用的技术,然后进行全面评估 。
  • 数据科学家: 数据科学家将业务问题转化为 ML 问题并负责模型工程,包括选择性能良好的算法和超参数。
  • 数据工程师: 数据工程师建立并管理数据和特征工程管道。此外,此角色确保将适当的数据摄取到特征存储系统的数据库。
  • 软件工程师: 软件工程师应用软件设计模式、广泛接受的编码指南和深度实践将原始 ML 问题转化为精心设计的产品。
  • 开发运维工程师: DevOps 工程师弥合了开发和运营之间的差距,并确保适当的 CI/CD 自动化、ML 工作流程编排、模型部署到生产和监控。
  • 机器学习工程师/MLOps 工程师: ML 工程师或 MLOps 工程师结合了多个角色的各个方面,因此具有跨领域知识。该角色融合了数据科学家、数据工程师、软件工程师、DevOps 工程师和后端工程师的技能(见图 3)。这个跨域角色建立和操作 ML 基础设施,管理自动化 ML 工作流管道和模型部署到生产环境,并监控模型和 ML 基础设施 。

MLOps基础设施和工具

MLOps(机器学习运维)是一种方法,旨在加速机器学习应用程序的开发、部署和维护。 为了实现这一目标,MLOps使用了许多基础设施和工具。

  • 数据管道管理: 用于整理、清洗和转换数据的工具,如 Apache NiFi, Luigi 和 Apache Airflow。
  • 版本控制: 用于跟踪代码、数据和模型变化的工具,如 Git, DVC (Data Version Control) 和 MLflow。
  • 模型训练: 用于在多种硬件环境下训练模型的工具和平台,如 TensorFlow, PyTorch, Keras 和 Apache MXNet。
  • 模型验证和测试: 用于评估模型性能和准确性的工具,如 TensorFlow Extended (TFX) 和 MLflow。
  • 模型部署:用于将模型部署到生产环境的工具和平台,如 TensorFlow Serving, NVIDIA Triton Inference Server, AWS SageMaker 和 Microsoft Azure Machine Learning。
  • 模型监控: 用于实时跟踪模型性能和健康状况的工具,如 Grafana, Prometheus 和 ELK Stack (Elasticsearch, Logstash, Kibana)。
  • 自动化和持续集成/持续部署(CI/CD): 用于自动化机器学习工作流程的工具,如 Jenkins, GitLab CI/CD 和 GitHub Actions。
  • 容器化和编排: 用于简化部署和管理的容器技术,如 Docker 和 Kubernetes。
  • 云服务提供商: 提供各种机器学习服务和基础设施的云平台,如 Amazon Web Services (AWS), Microsoft Azure 和 Google Cloud Platform (GCP)。

这些基础设施和工具的目标是帮助数据科学家、机器学习工程师和运维团队更有效地协作,以便更快地开发、部署和维护机器学习应用程序。

云智慧如何助力MLOps落地

模型监控作为MLOps中重要的环节,基于模型功能和运行时的一系列指标,可以实时监控模型的表现和运行情况,为模型重新训练及部署调整提供反馈信息。相比于通用的应用程序监控,模型监控一般分为模型功能监控和运维监控。

模型监控包括,一是数据监控,对数据及特征进行监控,识别数据漂移情况,保障数据的及时、准确和完整性等;二是模型性能监控,对模型的性能指标(准确率、召回率等)进行评估,保障模型结果的可信;三是模型效果监控,根据模型服务的推理结果,监控业务指标,保障业务目标的达成。

运维监控包括,一是基础设施监控,对主机或容器的健康状况、 资源(CPU、GPU 等)使用率、I/O 占用率等进行监控,保障运行环 境的稳定;二是服务监控,对模型服务性能(服务数量、访问量、时延、并发等)、异常调用等进行监控,保障模型服务的可靠性;三是过程监控,对各任务或流水线的运行情况(执行结果、SLA 等)进行 监控,保障模型生产过程的稳定和可靠。

图片

图4 模型监控指标

云智慧作为国内全栈式智能运维服务解决方案提供商,拥有全面的数据采集、数据清洗、数据存储、数据分析、数据智能挖掘、数据可视化等能力,为模型监控提供解决方案。

图片

图5 云智慧架构图

模型服务监控

服务链路监控可以通过对系统中各种服务之间的关系、性能、稳定性进行实时监控,以确保系统整体性能和稳定性。

通过对服务链路的监控,运维人员可以实时了解系统各个环节的性能状况,从而及时发现并处理潜在问题,提高系统的可靠性和稳定性;可以帮助运维人员快速定位故障发生的环节,从而缩短故障处理时间,降低故障对业务的影响;通过对服务链路的监控,运维人员可以发现系统中资源利用不均衡的情况,从而合理调整资源分配,提高整体资源利用效率等。

图片

主机容器监控

主机CPU、内存、网络监控是系统运行的关键组成部分,分别对应不同的系统资源。它们的作用主要在于确保系统性能稳定、优化资源利用率以及及时发现和解决潜在问题。

图片

CPU监控

GPU(图形处理器)是专门用于处理图像、视频和计算密集型任务的处理器。随着近年来深度学习、大数据处理等领域的发展,GPU的监控的需求越来越广泛。

图片

模型元信息管理: 如果您想确保部署正确的版本,那么在生产中监控模型版本至关重要。可以通过将再训练管道配置为在训练后自动报告模型版本并将元数据记录到元数据存储来监控模型版本。版本历史应该与模型预测一起记录到评估存储中,这样问题将更容易与模型版本相关联。

图片

数据漂移监控: 数据漂移是指训练数据和生产数据之间的分布发生有意义的变化。输入数据分布的变化会随着时间的推移影响模型性能,尽管它比数据质量问题的过程要慢。

图片

模型指标监控

监控生产中的模型输出不仅是模型性能的指标,而且还能告诉我们是否达到了业务 KPI。在模型预测方面,重要的监控是模型性能符合业务指标。使用指标来评估模型性能是在生产中监控模型的重要组成部分。这里可以使用不同的指标,例如分类、回归、聚类、强化学习等。我们通常使用预定义的模型评分指标(准确性、AUC、精度等)来评估模型。

图片

结语

MLOps 将会越来越受到关注和重视。随着人工智能技术的不断发展和应用,MLOps 将成为机器学习应用的必要条件。为了应对 MLOps 的挑战,我们需要采用多种实践,包括数据质量和准备、模型部署和管理、监控和更新、管理不确定性和变化等。同时,我们还需要不断探索和研究新的技术和方法,以实现 MLOps 的自动化和智能化。

在这过程中,智能运维行业将会发挥重要的作用:

  • 通过提供专业的基础设施和工具,可以简化数据处理、模型训练、部署和监控等各个环节。使得数据科学家和机器学习工程师能够专注于模型的研发,而不必担心底层基础设施的管理。
  • 通过提供云服务平台,可以为机器学习工程师提供了按需分配的计算资源、容器编排和自动扩展等功能,从而简化了模型的训练和部署过程。
  • 通过提供自动化的解决方案,可以在机器学习工作流中实现持续集成和持续部署。有助于确保软件质量、提高开发效率,并缩短从开发到生产的周期。
  • 通过提供安全性和合规性解决方案,以确保机器学习应用程序遵循行业标准和法规。这些解决方案包括数据保护、访问控制和审计跟踪等功能。

参考文献

[1] Kreuzberger D, Kühl N, Hirschl S. Machine learning operations (mlops): Overview, definition, and architecture[J]. IEEE Access, 2023.

[2]Alla S, Adari S K, Alla S, et al. What is mlops?[J]. Beginning MLOps with MLFlow: Deploy Models in AWS SageMaker, Google Cloud, and Microsoft Azure, 2021: 79-124.

[3]Zhou Y, Yu Y, Ding B. Towards mlops: A case study of ml pipeline platform[C]//2020 International conference on artificial intelligence and computer engineering (ICAICE). IEEE, 2020: 494-500.

[4]中国信息通信研究院云计算与大数据研究所.人工智能研发运营体系 (MLOps)实践指南(2023年)

[EB/OL]http://www.caict.ac.cn/kxyj/qwfb/ztbg/202303/P020230316567347382391.pdf  2023–03–01/2023–03-30.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算中的网络安全技术及其应用

云计算已经成为当今企业信息化的主要选择之一。它提供了可靠的数据存储和处理能力,同时降低了企业的IT成本。然而,云计算的安全问题也随之而来。网络安全技术的应用对于保护云计算的安全至关重要。本文将探讨云计算中的网络安全技术及其应用,…

Golang每日一练(leetDay0041) 股票买卖4题

目录 121. 买卖股票的最佳时机 🌟 122. 买卖股票的最佳时机 II 🌟🌟 123. 买卖股票的最佳时机 III 🌟🌟🌟 188. 买卖股票的最佳时机 IV 🌟🌟🌟 🌟 每…

2023第六届世界燕窝及天然滋补品博览会

2023上海燕窝展|上海燕博会|虫草节、鱼胶、灵芝、海参、滋补品展|滋补大会 摘要:燕博会、上海燕窝展、上海燕博会、2023上海燕博会、2023上海燕窝展、2023中国燕窝展、2023燕窝展,2023原装进口燕窝展,2023干制燕窝展,2023即食燕窝展,2023燕窝…

前端开发中有哪些常用的数组操作方法?

javascript数组 简介 JavaScript 数组用于在单一变量中存储多个值。 JavaScript数组是无类型的,数组元素可以是任意类型,并且同一个数组中元素类型也可以不同。 实例 var cars ["Saab", "Volvo", "BMW"];什么是数组&…

探索【Stable-Diffusion WEBUI】的插件:画布扩绘(Outpaint)

文章目录 (零)前言(一)局部重绘(Inpaint)(二)画布扩绘(Outpaint)(2.1)图片画布扩大(插件:OpenOutpaint&#x…

回炉重造九---DNS服务器

1、DNS服务器的相关概念和技术 1.1 DNS服务器的类型 主DNS服务器从DNS服务器缓存DNS服务器(forward DNS服务器{转发器}) 1.1.1 主DNS服务器的作用 管理和维护所负责解析的域内解析库的服务器1.1.2 从DNS服务器的作用 从主服务器或从服务器“复制”解…

检测并打印C++编译器支持的feature(附Visual Studio 2022和gcc-12测试、对比结果)

C标准快速迭代,不同的系统平台和编译器对C各种新功能的支持不同,通过这个程序可以测试所用编译器对各个版本C的支持情况。另一方面,可以在代码中通过这些宏针对不同版本编写不同的代码分支。 源码下面附上Visual Studio 2022的测试结果&#…

32道子网划分习题详细解析

目录 1 子网划分概念: 2 划分方法: 子网划分方法:段,块,数的计算三步。 段就是确定ip地址段中既有网络地址,又有主机地址的那一段是四段中的那一段? 块就确定上一步中确定的那一段中的主机…

【C语言】21-结构体

本文目录 • 一、什么是结构体 • 二、结构体的定义 • 三、结构体变量的定义 • 四、结构体的注意点 • 五、结构体的初始化 • 六、结构体的使用 • 七、结构体数组 • 八、结构体作为函数参数 • 九、指向结构体的指针 说明:这个C语言专题,是学习iOS开…

算法设计与智能计算 || 专题七: 主成分分析的统计学视角

主成分分析的统计学视角 文章目录 主成分分析的统计学视角PCA 的统计学视角1. 寻找第一个主成分2. 获取第二个主成分3. 非零均值随机变量的主元4. 零均值随机变量的样本主元5. PCA 降维案例 主成分分析是将高维空间中的数据集拟合成一个低维子空间的方法,到目前为止…

搞定常见八大排序

文章目录 注意事项插入排序插入排序希尔排序 分组预排序选择排序堆排序直接选择排序(最拉胯的排序) 交换排序冒泡排序快速排序1. hoare版本如何解决快排缺陷?2.挖坑法版本3.双指针法版本(建议)快排算法优化实现非递归快排 归并排序归并排序 非…

Rainbond 结合 Jpom 实现云原生 本地一体化项目管理

Jpom 是一个简而轻的低侵入式在线构建、自动部署、日常运维、项目运维监控软件。提供了: 节点管理:集群节点,统一管理多节点的项目,实现快速一键分发项目文件项目管理:创建、启动、停止、实时查看项目控制台日志&…

CentOS系统设置中文输入法,并切换输入法

1.点击Application—>System Tools—>Settings,选择Region&Language 2.在Input Sources中,选择左下角的“”,找到Chinese(Intelligent Pinyin),选中后点击右上角的“add”即可 3.选择好后,就可以切换中英…

可口可乐如何管理其全球供应链

目录 (一)可口可乐供应链管理的核心组成部分 (二)可口可乐管理全球供应链的挑战 (三)可口可乐利用技术简化其供应链 转载自供应链星球 可口可乐在200多个国家和地区拥有约225家装瓶合作伙伴,并…

【李沐—AutoGluon背后的技术】

1.资料来源 AutoGluon背后的技术_哔哩哔哩_bilibili 也是一种Automl框架【在尽量不需要人的帮助下,对输入进行特征提取,选取适合的机器学习模型对它进行训练】。大部分基于超参数搜索技术【从数十或者数百个参数中选取一个合适的参数,媲美人…

vue插槽的使用

文章目录 前言默认插槽具名插槽作用域插槽 前言 插槽总共分为3类&#xff1a;默认插槽&#xff0c;具名插槽&#xff0c;作用域插槽 默认插槽 默认插槽只需要在子组件的新增一个slot标签&#xff0c;父组件的子组件标签的内容就是要插入的内容 父组件 <template v-bind…

mysql “order by”是怎么工作的?

开发应用的时候&#xff0c;一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以我们 前面举例用过的市民表为例&#xff0c;假设你要查询城市是“杭州”的所有人名字&#xff0c;并且按照姓名排序返回 前1000个人的姓名、年龄。 假设这个表的部分定义是这样的&…

【linux】基于单例模式实现线程池

文章目录 一、线程池1.1 池化的概念1.2 线程池的实现1.3 线程池的使用场景 二、单例模式2.1 单例模式概念2.2 单例模式的线程池2.3 防过度优化 三、源码 一、线程池 1.1 池化的概念 当我们处理任务的时候&#xff0c;一般就是来一个任务我们就创建一个线程来处理这个任务。这…

类实例化对象的存储与内存对齐,this指针与调用成员函数传参的本原面目(两种调用方式)

类的实例化对象的内存存储方式与内存对齐 对于类当中定义的成员函数&#xff0c;是放在公共代码区的&#xff0c;在公共代码区有类成员函数表。对于不同的实例化对象而言&#xff0c;它里面的各个成员变量都是不一样的&#xff0c;但是如果他们分别调用相同名字的成员函数&…

cmd切换壁纸 适用windows10

文章目录 代码代码讲解参考文章菜鸟的目录结构注意 昨天菜鸟上班但是真的没活干&#xff0c;闲着无聊&#xff0c;突然发现自己壁纸好久都是一个&#xff0c;看着真的烦了&#xff0c;但是下载一个壁纸软件又感觉实际用处不大还占着内存&#xff0c;所以菜鸟就想&#xff0c;要…