你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
概念 - 面向 AI 和机器学习工作流的机器学习运营 (MLOps)
在本文中,你将了解机器学习运营 (MLOps),包括涉及哪些类型的做法和工具,以及它如何简化和加快 Azure Kubernetes 服务 (AKS) 上的 AI 和机器学习工作流。
什么是 MLOps?
机器学习运营 (MLOps) 包含有助于数据科学家、IT 运营和业务利益干系人之间协作的做法,可确保高效地开发、部署和维护机器学习模型。 MLOps 将 DevOps 原则应用于机器学习项目,旨在自动执行和简化端到端机器学习生命周期。 此生命周期包括训练、打包、验证、部署、监视和重新训练模型。
MLOps 需要使用多个角色和工具才能有效地协同工作。 数据科学家专注于与训练模型相关的任务,这被称为内部循环。 机器学习工程师和 IT 运营团队负责处理外部循环,他们将在此应用 DevOps 做法来打包、验证、部署和监视模型。 当模型需要微调或重新训练时,该流程将循环回到内部循环。
MLOps 管道
MLOps 管道可以利用按顺序或并行部署的各种工具和微服务。 下面是管道中关键组件的示例,这些组件受益于实现以下最佳做法,以减少开销并允许更快的迭代:
- 适用于流入应用程序的新数据的非结构化数据存储
- 用于存储和查询结构化、预处理数据的矢量数据库
- 数据引入和索引框架
- 矢量引入和/或模型重新训练工作流
- 指标收集和警报工具(跟踪模型性能、引入数据量等)
- 生命周期管理工具
DevOps 和 MLOps
DevOps 是工具和做法的组合,可支持你创建可靠且可重现的应用程序。 使用 DevOps 的目标是快速为最终用户提供价值。 MLOps 的主要目标是创建、部署和监视可靠且可重现的模型,以向最终用户提供价值。
MLOps 包括以下三个至关重要的过程:
- 数据科学家负责的机器学习工作负载,其中包括探索性数据分析 (EDA)、特征工程,以及模型训练和优化。
- 软件开发做法,包括规划、开发、测试和打包模型以进行部署。
- 在生产中部署和维护模型的运营方面,包括发布、配置资源和监视模型。
适用于 MLOps 的 DevOps 原则
MLOps 利用 DevOps 中的多项原则来增强机器学习生命周期,例如自动化、持续集成和交付 (CI/CD)、源代码管理、敏捷规划和基础结构即代码 (IaC)。
自动化
通过自动执行任务,可以减少手动错误、提高效率并确保 ML 生命周期中的一致性。 自动化可以应用于各种阶段,包括数据收集、模型训练、部署和监视。 通过自动化,还可以在 AI 管道中应用主动措施,以确保数据符合组织的策略。
例如,管道可以自动执行以下任务:
- 定期或在应用程序中收集一定数量的新数据后优化/重新训练模型。
- 检测性能降低,以启动对不同数据子集的微调或重新训练。
- 对拉取紫外部容器注册表的基础容器映像上进行常见漏洞和暴露 (CVE) 扫描,以确保实施安全做法。
持续集成 (CI)
持续集成涵盖了模型开发过程的创建和验证方面。 CI 的目标是创建代码并在部署前验证代码的质量和模型。 这包括对一系列示例数据集进行测试,以确保模型按预期执行并符合质量标准。
在 MLOps 中,CI 可能涉及:
- 将 Jupyter 笔记本中的探索性代码重构为 Python 或 R 脚本。
- 验证新输入的数据是否存在缺失值或错误值。
- 端到端管道中的单元测试和集成测试。
要执行 Lint 分析和单元测试,可以使用自动化工具,例如 Azure DevOps 中的 Azure Pipelines 或 GitHub Actions。
持续交付 (CD)
持续交付涉及在生产中安全部署模型所需的步骤。 第一步是在预生产环境中打包和部署模型,例如开发和测试环境。 参数、超参数和其他模型工件的可移植性是通过这些环境提升代码时要进行维护的重要工作。 当涉及到大语言模型 (LLM) 和稳定的扩散模型时,这种可移植性尤为重要。 模型通过单元测试和质量保证 (QA) 测试后,可以批准它以在生产环境中进行部署。
源代码管理
源代码管理或版本控制对于管理对代码和模型进行的更改至关重要。 在 ML 系统中,这指的是数据版本控制、代码版本控制和模型版本控制,可支持跨职能团队有效协作并随时间推移跟踪更改。 使用基于 Git 的源代码管理系统(如 Azure DevOps 中的 Azure Repos 或 GitHub 存储库),可以通过编程方式维护更改的历史记录、还原到以前的版本,以及管理不同试验的分支。
敏捷规划
敏捷规划涉及将工作隔离到冲刺中,后者指的是用于完成特定任务的短暂时段。 使用此方法,团队能够快速适应更改,并为模型提供增量改进。 模型训练可能是一个持续性的过程,敏捷规划可以帮助确定项目的范围并实现更好的团队协调。
可以使用 Azure DevOps 中的 Azure Boards 或 GitHub 问题等工具来管理敏捷规划。
基础结构即代码 (IaC)
可使用基础结构即代码来重复和自动自行训练、部署和提供模型所需的基础结构。 在 ML 系统中,IaC 有助于简化和定义代码中特定作业类型所需的相应 Azure 资源,并在存储库中维护代码。 通过此方法,可以对基础结构进行版本控制,并根据需要进行更改,以优化资源和提高成本效益。
后续步骤
请查看以下文章,以了解适用于 AKS 上智能应用程序中 MLOps 的最佳做法: