机器学习运维(MLOps)

ops/2024/10/25 16:56:21/

机器学习运维(MLOps)

机器学习运维(Machine Learning Operations,简称MLOps)是一种将机器学习模型从开发到生产部署的系统方法,旨在缩短模型的开发周期,提高模型质量和可靠性。MLOps结合了DevOps、数据工程和机器学习,为整个机器学习生命周期提供了一套最佳实践。随着机器学习在各行各业的广泛应用,如何高效地开发、部署和维护机器学习模型成为了一个重要的挑战,而MLOps正是为解决这一挑战而诞生的。

一、MLOps的定义与背景

机器学习系统本质上是实验性的,并且具有更多的组件,这些组件的构建和操作相对复杂。MLOps是用于数据科学家和专业运维人员之间协作和交流的一系列实践,应用这些实践可以提高质量,简化管理流程,并在大规模生产环境中自动部署机器学习和深度学习模型,更容易使模型与业务需求以及监管要求保持一致。

MLOps正在慢慢演变成一种独立的机器学习生命周期管理方法,它适用于整个生命周期,包括数据收集、模型创建(软件开发生命周期、持续集成/持续交付)、编排、部署、健康、诊断、治理和业务指标。MLOps的关键阶段包括数据收集、数据分析、数据转换/准备、模型训练与开发、模型验证、模型服务、模型监控和模型再训练。

二、MLOps与DevOps的区别与联系

DevOps和MLOps具有基本的相似之处,因为MLOps源自DevOps,但它们在执行上完全不同。与DevOps不同,MLOps在本质上更具实验性。数据科学家和机器学习/深度学习工程师必须调整各种功能——超参数、参数和模型——同时还要跟踪和管理数据和代码库以获得可重复的结果。

除了所有的努力和工具之外,机器学习和深度学习行业仍然在为实验的可重复性而苦苦挣扎。在生产环境中,构建和部署模型所需的团队不仅仅由软件工程师组成。测试机器学习系统除了单元测试和集成测试等常规代码测试之外,还涉及模型验证、模型训练等。

为了提供模型在线预测的服务,不能仅将离线训练的机器学习模型部署,需要一个多步骤工作流来自动重新训练和部署模型。这个工作流增加了复杂性,因为需要自动化数据科学家在部署之前手动执行的步骤来训练和验证新模型。

生产中的机器学习模型可能会降低性能,这不仅是由于编程实现未达到最优,还因为数据配置文件的不断发展。与传统软件系统相比,模型可能会以更多方式衰减。在训练和服务工作流中处理数据的方式存在差异,训练和服务时数据发生了变化。反馈循环——当选择错误的假设(即目标)进行优化时,这会使收集到的数据有偏,用来训练模型。接着,在不知情的情况下,使用的这个有缺陷的假设又将收集新的数据点,并将其反馈到重新训练/微调模型的未来版本,使模型的偏差更大,并且滚雪球式增长。

虽然在源代码管理的持续集成、单元测试、集成测试以及软件模块或包的持续交付方面,MLOps和DevOps是相似的,但是,二者在机器学习上存在一些显著差异:

  1. 持续集成(CI):不再只是测试和验证代码和组件,还包括测试和验证数据、数据模式和模型。
  2. 持续部署(CD):不再是关于单个软件包或服务,而应该是一个系统(一个机器学习模型训练的流程),可以自动部署另一个服务(模型预测服务)或从某个模型回滚更改。
  3. 连续测试(CT):是机器学习系统独有的新属性,它与自动重新训练和服务模型有关。
三、MLOps的关键阶段与实践

MLOps涵盖了机器学习工作流程不同组件的最佳实践,即团队、数据、目标、模型、代码和部署。

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

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

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

MLOps平台是指一站式的AI算法生产平台,面向算法生产的用户,为AI算法生产实现降本增效的目标。算法本身是理论,比如要给用户推送感兴趣视频的算法,可以被表达为一系列的数学表达式,但表达式仅仅是定义规则而已,如果要将其落地,那么它本身会变成一个复杂的工程问题。

一站式的AI算法生产平台针对AI业务生产的全生命周期,针对数据集、模型编码、模型训练、模型优化、模型推理服务部署等步骤,提供相关的工具,助力用户低成本生产高质量的AI业务。

目前,国内外最具代表性和影响力的AI平台有:

  1. 华为ModelArts
  2. 阿里PAI
  3. 百度BML
  4. 字节火山机器学习平台
  5. Google Vertex
  6. 微软Azure AI
  7. Amazon SageMaker

这些平台提供先进生产工具,持续提供优秀的AI业务生产全流程所需要的工具;流程规范化,关键生产步骤规范化,保证生产流程的可观测性,以促进全链路生产效率,完成MLOps的建立,并为成本优化机制的实施提供基础;针对特殊的重要场景(例如LLM),提供专门的产品能力支持。

六、MLOps的未来展望

MLOps是一个快速发展的领域,它正在改变机器学习的开发和部署方式。通过采用MLOps的最佳实践和工具,企业可以显著提高机器学习项目的成功率,加速AI的落地应用。然而,MLOps不仅仅是工具的堆砌,更重要的是建立一种文化,鼓励跨职能团队协作,持续改进流程。

MLOps的未来展望包括更加智能和自动化的MLOps平台,以及AutoML的广泛应用,进一步简化模型开发流程。同时,提高模型的可解释性和可信度也是未来的重要方向。相信在不久的将来,MLOps将成为每个数据科学团队的标准实践。

MLOps是一个充满机遇的领域,欢迎更多开发者和研究者加入,共同推动机器学习工程化的发展。通过MLOps,可以加速机器学习应用程序的开发、部署和维护,实现更高效的工作流程、利用数据分析进行决策和改善客户体验,从而解锁以前未开发的收入来源、节省时间并降低成本。


http://www.ppmy.cn/ops/128394.html

相关文章

[笔记] 关于CreateProcessWithLogonW函数创建进程

函数介绍 https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw BOOL CreateProcessWithLogonW([in] LPCWSTR lpUsername,[in, optional] LPCWSTR lpDomain,[in] …

微服务网关之Gateway

1.微服务网关介绍 什么是网关 API Gateway,是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能,提供路由请求、鉴权、监控、缓存、限流等功能统一接入 智能路由AB测试、灰度测试负载均衡、容灾处理日志埋点…

FastGPT学习(2)- 本地开发通过Navicat管理MongoDB、PostgreSQL数据库

1. 背景 前期已经完成FastGPT的本地化部署工作,通过Docker启动FastGPT的相关容器即可运行。(共6个容器) 2.本地化开发 2.1 前置依赖 2.2 源码拉取 git clone gitgithub.com:labring/FastGPT.git2.3 数据库管理 本地化运行的FastGPT使用…

深入拆解TomcatJetty——Tomcat生命周期与多层容器

深入拆解Tomcat&Jetty(三) 专栏地址:https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示: 对组件之间的关系进行分析,…

150+Premiere剪辑视频制作视频3D空间转场特效

特征: 11类视频无缝转场风格。 超轻:仅3MB。 混搭,为你的过渡打造无限造型 .PrProj格式文件,兼容Premiere Pro 2023及以上版本。 无需预渲染。 快速渲染时间。 易于使用的拖放。 包含的样式: 3D旋转投影仪过渡。 3D旋转…

Kafka高可用性原理深度解析

在分布式系统中,高可用(High Availability, HA)是指系统在面对硬件故障、网络分区、软件崩溃等异常情况时,仍能继续提供服务的能力。对于消息队列系统而言,高可用性尤为重要,因为它通常作为数据流通的中枢&…

docker 部署单节点的etcd以及 常用使用命令

docker部署etcd $ docker run -d --name etcd-server -p 2379:2379 -p 2380:2380 quay.io/coreos/etcd:v3.5.0 /usr/local/bin/etcd -name my-etcd-1 -advertise-client-urls http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 -initial-advertise-peer-urls http…

数据分析-31-时间序列分析的卡尔曼滤波器平滑方法

1 卡尔曼滤波器估计系统状态 Kalman Filter(卡尔曼滤波器)算法是一种线性最小方差估计器,用于在存在噪声的情况下对随机过程或系统进行估计。它的基本思想是通过一系列的迭代步骤,不断优化对系统状态的估计。算法主要包含两个步骤:预测和更新。 1.1 卡尔曼滤波器的原理 …