本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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](images/pattern-img/95fdf414-e561-4a93-9628-b41db39a577e/images/240d56e2-f076-4acc-8965-dc972ae45796.png)
该架构由以下组件组成:
数据科学家在开发账户中执行机器学习实验,通过使用各种数据源探索机器学习用例的不同方法。数据科学家进行单元测试和试验。模型评估后,数据科学家将代码推送并合并到托管在 Azure 上的模型生成存储库 DevOps。此存储库包含用于多步骤模型构建管道的代码。
在 Azure DevOps 上,提供持续集成 (CI) 的模型生成管道可以在代码合并到主分支时自动或手动激活。在 Automation 账户中,这将激活数据预处理、模型训练和评估以及基于准确性的条件模型注册的 SageMaker 管道。
自动化账户是跨机器学习平台的中央账户,用于托管机器学习环境 (Amazon ECR)、模型 (Amazon S3)、模型元数据(SageMaker 模型注册表)、功能(SageMaker 功能存储)、自动管道(SageMaker 管道)和机器学习日志见解(CloudWatch 和 OpenSearch 服务)。此账户允许机器学习资产的可重复使用性,并强制执行最佳实践以加快机器学习用例的交付。
最新的模型版本已添加到《 SageMaker 模型注册表》以供审查。它跟踪模型版本和相应的工件(血统和元数据)。它还管理模型的状态(批准、拒绝或待定),并管理下游部署的版本。
在模型注册表中训练过的模型通过工作室界面或 API 调用获得批准后,可以向 Amazon 发送事件 EventBridge。 EventBridge 在 Azure 上启动模型部署管道 DevOps。
提供持续部署 (CD) 的 Model Deploy 管道从 Model Deploy 存储库中检出源代码。源代码包含代码、模型部署配置和质量基准测试脚本。模型部署管道可以根据您的推理类型进行定制。
质量控制检查后,模型部署管道会将模型部署到暂存账户。 Staging 账户是生产账户的副本,用于集成测试和评估。对于批量转换,Model Deploy 管道可以自动更新批量推理过程以使用最新批准的模型版本。对于实时、无服务器或异步推理,它会设置或更新相应的模型端点。
在暂存账户中成功测试后,可以通过模型部署管道手动批准将模型部署到生产账户。该管道在 “部署到生产” 步骤中配置了生产端点,包括模型监控和数据反馈机制。
模型投入生产后,使用 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 终端节点创建面向外部的单一入口点。
其他工具
Azure DevOps
可帮助你管理 CI/CD 管道并简化代码构建、测试和部署。 Azure 数据湖存储
或 Snowfla ke 可能是机器学习模型训练数据的第三方来源。
最佳实践
在实施此多云 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 管理员 |
创建 | 在 Azure 中创建 Git 存储库,数据科学家可以在实验阶段完成后推送模型构建和部署代码。有关说明,请参阅 Azure DevOps 文档中的设置 Git 存储库 | DevOps 工程师、机器学习工程师 |
创建 | 在 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 文档中的使用模型注册表注册和部署模型。 | 机器学习工程师 |
创建 | 在 Azure 中创建 CI/CD 管道,该管道在将代码推送到存储库时可手动启动或自动启动。 | DevOps 工程师、机器学习工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
创建 AWS 暂存和部署账户。 | 创建用于暂存和部署机器学习模型的 AWS 账户。这些帐户应相同,以便在投入生产之前对试运行中的模型进行准确的测试。您可以授予数据科学团队对暂存账户的读取权限。有关说明,请参阅 AWS Organizations 文档中的在您的组织中创建成员账户。 | AWS 管理员 |
设置 S3 存储桶以进行模型监控。 | 如果您要为 | 机器学习工程师 |
创建 | 在 Azure 中创建一个 CI/CD 管道,该管道在模型注册表中获得批准后启动。管道应检查源代码和模型工件,构建用于在暂存账户和生产账户中部署模型的基础架构模板,在暂存账户中部署模型,运行自动测试,等待手动批准,然后将批准的模型部署到生产账户。有关创建管道的更多信息,请参阅 Azure 管道文档 | DevOps 工程师、机器学习工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
构建 AWS CDK 或 CloudFormation 模板。 | 为需要自动部署的所有环境定义 AWS Cloud Development Kit (AWS CDK) 或 AWS CloudFormation 模板。这可能包括开发环境、自动化环境以及暂存和部署环境。有关更多信息,请参阅 AWS CDK 和CloudFormation文档。 | AWS DevOps |
创建 | 在 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 文档
M@@ achine Learning Lens(AWS 架构良好的框架)
规划成功的 MLOP(AWS Prescrip tive Guidence)
其他 AWS 资源
使用@@ 亚马逊的企业的 MLOP 基础路线图
( SageMakerAWS 博客文章)
Azure 文档