使用 Ama SageMaker zon 和 Azure 构建 mLOPs 工作流程 DevOps - AWS Prescriptive Guidance

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

使用 Ama SageMaker zon 和 Azure 构建 mLOPs 工作流程 DevOps

由 Deepika Kumar (AWS) 和 Sara van de Moosdijk (AWS) 创作

环境:生产

技术:机器学习和人工智能; DevOps;运营

工作负载:Microsoft

AWS 服务:亚马逊 API Gateway;亚马逊 ECR;亚马逊 EventBridge;AWS Lambda;亚马逊 SageMaker

Summary

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

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

该解决方案简化了 Azure 和 AWS 之间的工作。你可以使用 Azure 进行开发,使用 AWS 进行机器学习。它促进了从头到尾制作机器学习模型的有效流程,包括在 AWS 上处理数据、训练和部署。为了提高效率,你可以通过 Azure DevOps 管道管理这些流程。

先决条件和限制

先决条件

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

  • 活跃 AWS 账户 — 使用此模式中使用的 AWS 服务的权限。

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

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

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

限制

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

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

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

架构

目标架构

目标架构将 Azure DevOps 与 Amazon 集成 SageMaker,创建了跨云端机器学习工作流程。它使用 Azure 进行 CI/CD 流程以及 SageMaker 机器学习模型训练和部署。它概述了通过模型构建和部署获取数据(来自 Amazon S3、Snowflake 和 Azure 数据湖等来源)的过程。关键组件包括用于模型构建和部署、数据准备、基础设施管理的 CI/CD 管道,以及 SageMaker 用于训练、评估和部署机器学习模型的 Amazon。该架构旨在跨云平台提供高效、自动化和可扩展的机器学习工作流程。

使用 Azure DevOps 和 SageMaker

该架构由以下组件组成:

  1. 数据科学家在开发账户中执行机器学习实验,通过使用各种数据源探索机器学习用例的不同方法。数据科学家进行单元测试和试验。模型评估后,数据科学家将代码推送并合并到托管在 Azure 上的模型生成存储库 DevOps。此存储库包含用于多步骤模型构建管道的代码。

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

  3. 自动化账户是跨机器学习平台的中央账户,用于托管机器学习环境 (Amazon ECR)、模型 (Amazon S3)、模型元数据(SageMaker 模型注册表)、功能(SageMaker 功能存储)、自动管道(SageMaker 管道)和机器学习日志见解(CloudWatch 和 OpenSearch 服务)。此账户允许机器学习资产的可重复使用性,并强制执行最佳实践以加快机器学习用例的交付。

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

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

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

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

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

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

自动化和扩展

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

工具

Amazon Web Services

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

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

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

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

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

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

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

其他工具

最佳实践

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

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

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

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

操作说明

任务描述所需技能

识别数据源。

根据当前和未来的用例、可用数据源和数据类型(例如机密数据),记录需要与 mLOps 平台集成的数据源。数据可以存储在 Amazon S3、Azure 数据湖存储、Snowflake 或其他来源中。制定计划,将这些资源与您的平台集成,并确保对正确资源的访问。

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

选择适用的服务。

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

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

分析安全需求。

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

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

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

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

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

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

设置 AWS Organizations。

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

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

创建一个 AWS 开发账户。

创建一个 AWS 账户,让数据工程师和数据科学家有权试验和创建 ML 模型。有关说明,请参阅 AWS Organizations 文档中的在您的组织中创建成员账户

AWS 管理员

创建 Model Build 存储库。

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

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

创建 Model Deploy 存储库。

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

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

创建 Amazon ECR 存储库。

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

机器学习工程师

设置 SageMaker 工作室。

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

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

创建自动化账户。

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

AWS 管理员

设置模型注册表。

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

机器学习工程师

创建Model Build管道。

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

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

创建 AWS 暂存和部署账户。

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

AWS 管理员

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

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

机器学习工程师

创建Model Deploy管道。

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

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

构建 AWS CDK 或 CloudFormation 模板。

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

AWS DevOps

创建Infrastructure管道。

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

DevOps 工程师

故障排除

问题解决方案

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

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

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

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

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

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

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

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

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

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

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

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

相关资源

AWS 文档

其他 AWS 资源

Azure 文档