使用亚马逊 A SageMaker I 和 Azure 构建MLOps工作流程 DevOps - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用亚马逊 A SageMaker I 和 Azure 构建MLOps工作流程 DevOps

由 Deepika Kumar (AWS)、Philips Kokoh Prasetyo () 和 Sara van de Moosdijk (AWS) 创作 AWS

摘要

机器学习操作 (MLOps) 是一组自动化和简化机器学习 (ML) 工作流程和部署的实践。 MLOps侧重于机器学习生命周期的自动化。它有助于确保不仅开发模型,还能系统地、反复地部署、监控和再训练。它为机器学习带来了 DevOps 原理。 MLOps可以更快地部署机器学习模型,随着时间的推移提高准确性,并更有力地保证机器学习模型提供真正的商业价值。

在开始MLOps旅程之前,Organizations 通常会拥有现有的 DevOps 工具和数据存储解决方案。这种模式展示了如何利用微软 Azure 和 AWS. 它可以帮助你将 Azure DevOps 与 Amazon SageMaker AI 集成,从而创建MLOps工作流程。

该解决方案简化了 Azure 和之间的工作 AWS。你可以使用 Azure 进行开发和 AWS 机器学习。它促进了从头到尾制作机器学习模型的有效流程,包括数据处理、训练和部署 AWS。为了提高效率,你可以通过 Azure DevOps 管道管理这些流程。该解决方案适用于生成式 AI 中的基础模型操作 (FMOps) 和大型语言模型操作 (LLMOps),其中包括微调、向量数据库和提示管理。

先决条件和限制

先决条件

  • Azure 订阅 — 访问 Azure 服务,例如 Azure DevOps,用于设置持续集成和持续部署 (CI/CD) 管道。

  • 活动AWS账户-使用此模式中 AWS 服务 使用的账号的权限。

  • 数据-访问用于训练机器学习模型的历史数据。

  • 熟悉机器学习概念 — 了解 Python、Jupyter 笔记本和机器学习模型开发。

  • 安全配置-在 Azure 上正确配置角色、策略和权限,AWS并确保数据传输和访问的安全性。

  • (可选)矢量数据库-如果您使用的是检索增强生成 (RAG) 方法和向量数据库的第三方服务,则需要访问外部矢量数据库。

限制

  • 本指南不讨论安全的跨云数据传输。有关跨云数据传输的更多信息,请参阅混合云和多云AWS 解决方案

  • 多云解决方案可能会增加实时数据处理和模型推断的延迟。

  • 本指南提供了多账户MLOps架构的一个示例。需要根据您的机器学习和 AWS 策略进行调整。

  • 除了 Ama SageMaker zon AI 之外,本指南未描述人工智能/机器学习服务的使用情况。

  • 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅AWS 服务 按地区划分。有关特定终端节点,请参阅服务终端节点和配额页面,然后选择服务的链接。

架构

目标架构

目标架构将 Azure DevOps 与 Amazon A SageMaker I 集成在一起,创建了跨云端机器学习工作流程。它将 Azure 用于模型构建和部署、数据准备、基础架构管理的CI/CD processes and SageMaker AI for ML model training and deployment. It outlines the process of obtaining data (from sources such as Amazon S3, Snowflake, and Azure Data Lake) through model building and deployment. Key components include CI/CD管道,并使用 SageMaker Amazon AI 来训练和微调、评估和部署机器学习模型。该架构旨在跨云平台提供高效、自动化和可扩展的机器学习工作流程。

使用 Azure DevOps 和 SageMaker. MLOps

该架构由以下组件组成:

  1. 数据科学家在开发账户中执行机器学习实验,通过使用各种数据源探索机器学习用例的不同方法。数据科学家进行单元测试和试验,为了跟踪他们的实验,他们可以将 Amazon AI 与 Amazon A SageMaker I 配合使用MLflow。在生成式 AI 模型开发中,数据科学家对 Amazon A SageMaker I 模型中心的基础 JumpStart 模型进行微调。模型评估后,数据科学家将代码推送并合并到托管在 Azure 上的模型生成存储库 DevOps。此存储库包含用于多步骤模型构建管道的代码。

  2. 在 Azure DevOps 上,提供持续集成 (CI) 的模型生成管道可以在代码合并到主分支时自动或手动激活。在 Automation 账户中,这会激活 SageMaker AI 管道,用于数据预处理、模型训练和微调、模型评估以及基于准确性的条件模型注册。

  3. 自动化账户是跨机器学习平台的中央账户,用于托管机器学习环境 (AmazonECR)、模型 (Amazon S3)、模型元数据(SageMaker AI 模型注册表)、功能(SageMaker AI 功能存储)、自动管道(SageMaker AI 管道)和机器学习日志见解(CloudWatch)。对于生成式 AI 工作负载,您可能需要对下游应用程序中的提示进行额外评估。即时管理应用程序有助于简化和自动化流程。此账户允许机器学习资产的可重复使用性,并强制实施最佳实践,加快机器学习用例的交付。

  4. 最新模型版本已添加到 SageMaker AI 模型注册表中以供审核。它跟踪模型版本和相应的工件(血统和元数据)。它还管理模型的状态(批准、拒绝或待定),并管理下游部署的版本。

  5. 在模型注册表中训练过的模型通过工作室界面或API致电获得批准后,可以向 Amazon 发送事件 EventBridge。 EventBridge 在 Azure 上启动模型部署管道 DevOps。

  6. 提供持续部署 (CD) 的 Model Deploy 管道从 Model Deploy 存储库中检出源代码。源代码包含代码、模型部署配置和质量基准测试脚本。模型部署管道可以根据您的推理类型进行定制。

  7. 质量控制检查后,模型部署管道会将模型部署到暂存账户。 Staging 账户是生产账户的副本,用于集成测试和评估。对于批量转换,Model Deploy 管道可以自动更新批量推理过程以使用最新批准的模型版本。对于实时、无服务器或异步推理,它会设置或更新相应的模型端点。

  8. 在暂存账户中成功测试后,可以通过模型部署管道手动批准将模型部署到生产账户。该管道在 “部署到生产” 步骤中配置了生产端点,包括模型监控和数据反馈机制。

  9. 模型投入生产后,使用 SageMaker AI Model Monitor 和 A SageMaker I Clarify 等工具来识别偏差、检测漂移并持续监控模型的性能。

自动化和扩缩

使用基础设施即代码 (IaC) 自动部署到多个账户和环境。通过实现MLOps工作流程设置过程的自动化,可以将从事不同项目的机器学习团队所使用的环境分开。 AWS CloudFormation通过将基础设施视为代码,帮助您建模、配置和管理 AWS 资源。

工具

AWS 服务

  • Amazon SageMaker AI 是一项托管机器学习服务,可帮助您构建和训练机器学习模型,然后将其部署到可用于生产的托管环境中。

  • AWS Glue是一项完全托管的提取、转换和加载 (ETL) 服务。它可以帮助您在数据存储和数据流之间对数据进行可靠地分类、清理、扩充和移动。

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。在这种模式中,Amazon S3 用于数据存储,并与 SageMaker AI 集成用于模型训练和模型对象。

  • AWS Lambda 是一项计算服务,可帮助您运行代码,无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。在这种模式中,Lambda 用于数据预处理和后处理任务。

  • Amazon Elastic Container Registry (AmazonECR) 是一项安全、可扩展且可靠的托管容器镜像注册服务。在这种模式下,它存储 SageMaker AI 用作训练和部署环境的 Docker 容器。

  • Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来。在这种模式下, EventBridge 协调事件驱动或基于时间的工作流程,以启动自动模型再训练或部署。

  • Amazon API Gateway 可帮助您以任何规模创建、发布RESTHTTP、维护、监控和 WebSocket APIs保护。 在这种模式中,它用于为 SageMaker AI 端点创建面向外部的单一入口点。

  • 对于RAG应用程序 AWS 服务,您可以使用诸如 Amazon S OpenSearch ervic e 和 A mazon RDS for Postgre SQL 来存储LLM与您的内部数据一起提供的矢量嵌入内容。

其他工具

最佳实践

在实施此多云MLOps工作流程的任何组件之前,请完成以下活动:

  • 定义和了解机器学习工作流程以及支持该工作流程所需的工具。不同的用例需要不同的工作流程和组件。例如,在个性化用例中,功能重用和低延迟推断可能需要功能存储,但其他用例可能不需要 feature store。要成功定制架构,需要了解数据科学团队的目标工作流程、用例要求和首选协作方法。

  • 为架构的每个组件制定明确的责任分工。在 Azure 数据湖存储、Snowflake 和 Amazon S3 上分布数据存储可能会增加复杂性和成本。如果可能,请选择一致的存储机制。同样,请避免使用 Azure 和AWS DevOps 服务的组合,或 Azure 和 AWS ML 服务的组合。

  • 选择一个或多个现有模型和数据集对MLOps工作流程进行 end-to-end测试。测试工件应反映平台投入生产时数据科学团队开发的真实用例。

操作说明

任务描述所需技能

识别数据源。

根据当前和未来的用例、可用数据源和数据类型(例如机密数据),记录需要与MLOps平台集成的数据源。数据可以存储在 Amazon S3、Azure 数据湖存储、Snowflake 或其他来源中。对于生成式 AI 工作负载,数据还可能包括为生成的响应奠定基础的知识库。这些数据以矢量嵌入的形式存储在矢量数据库中。制定计划,将这些资源与您的平台集成,并确保对正确资源的访问。

数据工程师、数据科学家、云架构师

选择适用的服务。

根据数据科学团队所需的工作流程、适用的数据源和现有云架构,通过添加或删除服务来自定义架构。例如,数据工程师和数据科学家可能会在 SageMaker AI 或 Amazon EMR 中执行数据预处理和功能工程。 AWS Glue不太可能全部需要这三种服务。

AWS管理员、数据工程师、数据科学家、机器学习工程师

分析安全需求。

收集并记录安全要求。这包括确定:

  • 哪些团队或工程师可以访问特定的数据源

  • 哪些团队或工程师可以访问预先训练好的基础模型

  • 是否允许团队访问其他团队的代码和模型

  • 对于非开发账户,团队成员应拥有哪些权限(如果有)

  • 跨云数据传输需要实施哪些安全措施

有关保护生成式 AI 工作负载的更多信息,请参阅保护生成式 AI:生成式 AI 安全范围矩阵简介(AWS 博客文章)。

AWS管理员、云架构师
任务描述所需技能

设置 AWS Organizations。

在根 AWS Organizations 上设置 AWS 账户。这可以帮助您管理作为多账户MLOps策略的一部分创建的后续账户。有关更多信息,请参阅 AWS Organizations 文档

AWS 管理员
任务描述所需技能

创建 AWS 开发账户。

创建数据工程师和数据科学家有权实验和创建机器学习模型 AWS 账户 的地方。有关说明,请参阅 AWS Organizations 文档中的在组织中创建成员帐户

AWS 管理员

创建 “模型构建” 存储库。

在 Azure 中创建 Git 存储库,数据科学家可以在实验阶段完成后推送模型构建和部署代码。有关说明,请参阅 Azure DevOps 文档中的设置 Git 存储库

DevOps 工程师、机器学习工程师

创建模型部署存储库。

在 Azure 中创建用于存储标准部署代码和模板的 Git 存储库。它应包括组织使用的每个部署选项的代码,如设计阶段所确定的那样。例如,它应包括实时端点、异步端点、无服务器推理或批量转换。有关说明,请参阅 Azure DevOps 文档中的设置 Git 存储库

DevOps 工程师、机器学习工程师

创建亚马逊ECR存储库。

设置一个 Amazon ECR 存储库,将经批准的机器学习环境存储为 Docker 映像。允许数据科学家和机器学习工程师定义新环境。有关说明,请参阅 Amazon ECR 文档中的创建私有存储库

机器学习工程师

设置 SageMaker AI 工作室。

根据先前定义的安全要求、首选的数据科学工具(例如)和首选的集成开发环境(MLflowIDE),在开发账户上设置 SageMaker AI Studio。使用生命周期配置自动安装关键功能,并为数据科学家创建统一的开发环境。有关更多信息,请参阅 A SageMaker I 文档中的 Amazon AI StudioMLflow跟踪服务器。 SageMaker

数据科学家、机器学习工程师、提示工程师
任务描述所需技能

创建自动化账户。

创建自动管道和作业的运行 AWS 账户 位置。您可以授予数据科学团队对此帐户的读取权限。有关说明,请参阅 AWS Organizations 文档中的在组织中创建成员帐户

AWS 管理员

设置模型注册表。

在自动化账户中设置 SageMaker AI 模型注册表。该注册表存储机器学习模型的元数据,并帮助某些数据科学家或团队负责人批准或拒绝模型。有关更多信息,请参阅 SageMaker AI 文档中的使用模型注册表注册和部署模型。

机器学习工程师

创建模型构建管道。

在 Azure 中创建 CI/CD 管道,当代码推送到模型生成存储库时,该管道会手动启动或自动启动。管道应查看源代码,并在 Automation 账户中创建或更新 SageMaker AI 管道。管道应向模型注册表中添加一个新模型。有关创建管道的更多信息,请参阅 Azure 管道文档

DevOps 工程师、机器学习工程师
任务描述所需技能

创建 AWS 暂存和部署帐户。

AWS 账户 为机器学习模型的暂存和部署而创建。这些帐户应相同,以便在投入生产之前对试运行中的模型进行准确的测试。您可以授予数据科学团队对暂存账户的读取权限。有关说明,请参阅 AWS Organizations 文档中的在组织中创建成员帐户

AWS 管理员

设置 S3 存储桶以进行模型监控。

如果您要为由 Model Deploy 管道创建的已部署模型启用模型监控,请完成此步骤。创建用于存储输入和输出数据的 Amazon S3 存储桶。有关创建 S3 存储桶的更多信息,请参阅 Amazon S3 文档中的创建存储桶。设置跨账户权限,以便自动模型监控作业在 Automation 账户中运行。有关更多信息,请参阅 SageMaker AI 文档中的监控数据和模型质量

机器学习工程师

创建模型部署管道。

在 Azure 中创建一个 CI/CD 管道,该管道在模型注册表中获得批准后启动。管道应检查源代码和模型工件,构建用于在暂存账户和生产账户中部署模型的基础架构模板,在暂存账户中部署模型,运行自动测试,等待手动批准,然后将批准的模型部署到生产账户。有关创建管道的更多信息,请参阅 Azure 管道文档

DevOps 工程师、机器学习工程师
任务描述所需技能

构建 AWS CDK 或 CloudFormation 模板。

为需要自动部署的所有环境定义 AWS Cloud Development Kit (AWS CDK) 或 AWS CloudFormation 模板。这可能包括开发环境、自动化环境以及暂存和部署环境。有关更多信息,请参阅AWS CDKCloudFormation文档。

AWS DevOps

创建基础设施管道。

在 Azure 中创建用于基础架构部署的 CI/CD 管道。管理员可以启动此管道来创建机器学习团队所需的新环境 AWS 账户 和设置环境。

DevOps 工程师

故障排除

事务解决方案

监控和偏差检测不足 — 监控不足可能导致错过模型性能问题或数据漂移的检测。

使用 Amazon CloudWatch、A SageMaker I 模型监控器和 SageMaker AI Clarify 等工具加强监控框架。配置警报,以便对已发现的问题立即采取行动。

CI 管道触发错误 由于配置错误,代码合并时 DevOps 可能不会触发 Azure 中的 CI 管道。

检查 Azure DevOps 项目设置,确保 webhook 已正确设置并指向正确的 SageMaker AI 端点。

治理 — 中央自动化账户可能无法在机器学习平台上强制执行最佳实践,从而导致工作流程不一致。

审计 Automation 账户设置,确保所有机器学习环境和模型都符合预定义的最佳实践和策略。

模型注册机构批准延迟 — 当模型的检查和批准延迟时,就会发生这种情况,要么是因为人们需要时间进行审查,要么是因为技术问题。

实施通知系统,提醒利益相关者注意待批准的模型,并简化审核流程。

模型部署事件失败 — 为启动模型部署管道而调度的事件可能会失败,从而导致部署延迟。

确认 Amazon EventBridge 拥有成功调用 Azure DevOps 管道的正确权限和事件模式。

生产部署瓶颈 手动批准流程可能会造成瓶颈,从而延迟模型的生产部署。

优化模型部署管道内的审批工作流程,促进及时审核和畅通沟通渠道。

相关资源

AWS 文档

其他 AWS 资源

Azure 文档