背景
随着数字化和计算能力的发展,机器学习(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.