Press "Enter" to skip to content

使用亚马逊SageMaker模型卡共享来改善模型治理

随着人工智能(AI)和机器学习(ML)技术的普及,许多企业已成功构建了基于ML模型的关键业务应用,并在生产环境中实现了规模化应用。然而,由于这些ML模型为业务做出重要决策,企业有必要在整个ML生命周期中添加适当的保护措施。保护措施确保在模型生命周期中使用的代码、配置、数据和模型配置的安全性、隐私性和质量得到版本控制和保留。

对企业来说,实施这些保护措施变得越来越困难,因为企业内部的ML流程和活动变得更加复杂,涉及多个利益相关者和角色的参与。除了数据工程师和数据科学家之外,还增加了操作流程以自动化和简化ML生命周期。此外,业务利益相关者的增加,以及在某些情况下的法律和合规审查的涌现,需要能够增加透明性,以管理访问控制、活动追踪和报告ML生命周期中的各个环节。

提供对ML模型开发、验证和使用过程进行系统可见性的框架称为ML治理。在AWS re:Invent 2022期间,AWS推出了新的用于Amazon SageMaker的ML治理工具,可以简化访问控制,并提升对ML项目的透明度。作为ML治理的一部分,Amazon SageMaker Model Cards是一种工具,它可以通过集中和标准化文档,为模型信息创建一个统一的真实来源,从而实现模型生命周期中的可见性。

SageMaker模型卡片使您能够标准化模型的文档,从而实现对模型的整个生命周期(设计、构建、训练和评估)的可见性。模型卡片旨在成为模型治理的重要组成部分,可可靠地用于审计和文档目的的业务和技术元数据。它们提供了模型的重要信息的概要。

在扩展模型、项目和团队时,作为最佳实践,我们建议采用多账户策略,为ML模型的开发和部署提供项目和团队隔离。有关改进ML模型治理的更多信息,请参阅使用Amazon SageMaker改进机器学习模型治理。

架构概述

该架构的实现如下:

  • 数据科学账户 – 数据科学家在SageMaker Studio中进行实验,并构建MLOps设置,使用SageMaker项目将模型部署到暂存/生产环境中。
  • ML共享服务账户 – 来自数据科学账户的MLOps设置将使用AWS CodeCommit和AWS CodePipeline触发持续集成和持续交付(CI/CD)流水线。
  • 开发账户 – CI/CD流水线将进一步触发此账户中的ML流水线,涵盖数据预处理、模型训练和后处理(如模型评估和注册)。这些流水线的输出将在SageMaker端点中部署模型,以供推理目的使用。根据您的治理要求,数据科学和开发账户可以合并为一个AWS账户。
  • 数据账户 – 在开发账户中运行的ML流水线将从此账户中提取数据。
  • 测试和生产账户 – CI/CD流水线将在开发账户之后继续部署,以在这些账户中配置SageMaker端点。
  • 安全性和治理 – 将使用AWS身份和访问管理(IAM)、AWS IAM身份中心、AWS CloudTrail、AWS密钥管理服务(AWS KMS)、Amazon CloudWatch和AWS安全中心等服务,作为安全和治理的一部分。

下图说明了该架构:

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第1张

有关设置可扩展的多账户ML架构的更多信息,请参阅使用Amazon SageMaker为企业提供MLOps基础。

我们的客户需要能够跨账户共享模型卡片,以通过模型卡片中共享的信息来改善对模型的可见性和治理。现在,通过跨账户模型卡片共享功能,客户可以在组织中访问可用的模型卡片,从而享受多账户策略的好处,加速协作并确保治理。

在本文中,我们将展示如何设置和访问跨模型开发生命周期(MDLC)账户中的模型卡片,使用模型卡片的新的跨账户共享功能。首先,我们将描述设置模型卡片跨账户共享功能的场景和架构,然后深入介绍如何设置和访问跨账户共享的模型卡片的每个组件,以改善模型的可见性和治理。

解决方案概述

在构建机器学习模型时,我们建议设置多账户架构,以提供工作负载隔离,提高安全性、可靠性和可扩展性。在本文中,我们将假设构建和部署一个用于客户流失的模型。下面的架构图展示了一种推荐的方法——集中式模型卡——用于在多账户的机器学习模型开发生命周期(MDLC)架构中管理模型卡。然而,您也可以采用另一种方法,即集线器和辐射模型卡。在本文中,我们只关注集中式模型卡的方法,但是相同的原则也可以扩展到集线器和辐射模型卡的方法。主要的区别在于,每个辐射账户都将维护自己的模型卡版本,并且它将有过程来聚合和复制到一个集中式账户。

下图说明了这个架构。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第2张

该架构的实现如下:

  1. 主要数据科学家被通知解决客户流失问题,使用机器学习,并通过在ML共享服务账户中创建一个Draft状态的Customer Churn V1模型的模型卡来启动机器学习项目。
  2. 通过自动化,该模型卡与ML Dev账户共享。
  3. 数据科学家构建模型,并通过API将基于他们的实验结果的信息填充到模型卡中,模型卡的状态设置为Pending Review。
  4. 通过自动化,该模型卡与ML测试账户共享。
  5. 机器学习工程师(MLE)在ML测试账户中运行集成和验证测试,中央注册表中的模型被标记为Pending Approval。
  6. 模型审批人员根据中央模型卡中提供的支持文档审查模型结果,并批准模型卡用于生产部署。
  7. 通过自动化,该模型卡与ML Prod账户以只读模式共享。

先决条件

在开始之前,请确保您具备以下先决条件:

  • 两个AWS账户。
  • 在两个AWS账户中,有一个具有管理员访问权限的IAM联合角色,用于执行以下操作:
    • 在Amazon SageMaker中创建、编辑、查看和删除模型卡。
    • 在AWS RAM中创建、编辑、查看和删除资源共享。

有关更多信息,请参阅AWS RAM的示例IAM策略。

设置模型卡共享

创建模型卡的账户是模型卡账户。模型卡账户中的用户将其与可以进行更新的共享账户共享。模型卡账户中的用户可以通过AWS资源访问管理器(AWS RAM)共享他们的模型卡。AWS RAM可帮助您在AWS账户之间共享资源。

在下面的部分中,我们将展示如何共享模型卡。

首先,按照之前的描述为客户流失用例创建一个模型卡。在Amazon SageMaker控制台上,展开“治理”部分,选择模型卡

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第3张

我们以Draft状态创建模型卡,名称为Customer-Churn-Model-Card。有关更多信息,请参阅创建模型卡。在本演示中,您可以将其余字段留空并创建模型卡。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第4张

或者,您可以使用以下AWS CLI命令创建模型卡:

aws sagemaker create-model-card --model-card-name Customer-Churn-Model-Card --content "{\"model_overview\": {\"model_owner\": \"model-owner\",\"problem_type\": \"Customer Churn Model\"}}" --model-card-status Draft

现在,使用AWS RAM创建跨账户共享。在AWS RAM控制台上,选择创建资源共享

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第5张

为资源共享输入一个名称,例如“Customer-Churn-Model-Card-Share”。在“可选资源”部分,选择资源类型为SageMaker模型卡。我们在前一步中创建的模型卡将显示在列表中。

选择该模型,它将显示在“选择的资源”部分。按照以下步骤再次选择该资源,并选择下一步

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第6张

在下一页中,您可以选择托管的权限。您可以创建自定义权限或使用默认选项“AWSRAMPermissionSageMakerModelCards”,然后选择下一步。有关更多信息,请参阅AWS RAM中的权限管理。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第7张

在下一页中,您可以选择主体。在选择主体类型下,选择AWS账户并输入共享模型卡的账户ID。选择添加并继续到下一页。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第8张

在最后一页上,查看信息并选择“创建资源共享”。或者,您可以使用以下AWS CLI命令创建资源共享:

aws ram create-resource-share --name <模型卡的名称>

aws ram associate-resource-share --resource-share-arn <从前一个命令创建的资源共享的ARN> --resource-arns <模型卡的ARN>

在AWS RAM控制台上,您可以查看资源共享的属性。确保“共享资源”、“托管权限”和“共享主体”处于“关联”状态。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第9张

使用AWS RAM创建资源共享后,资源共享中指定的主体可以被授予对共享资源的访问权限。

  • 如果您打开了与AWS组织的AWS RAM共享,并且您共享的主体与共享账户在同一个组织中,那些主体只要他们的账户管理员授予了权限,就可以立即获得访问权限。
  • 如果您没有打开与组织的AWS RAM共享,您仍然可以与您组织中的单个AWS账户共享资源。消费账户中的管理员将收到加入资源共享的邀请,他们必须接受邀请,才能让资源共享中指定的主体访问共享资源。
  • 如果资源类型支持,您还可以与组织外的账户共享。消费账户中的管理员将收到加入资源共享的邀请,他们必须接受邀请,才能让资源共享中指定的主体访问共享资源。

有关AWS RAM的更多信息,请参阅AWS RAM的术语和概念。

访问共享的模型卡

现在我们可以登录共享的AWS账户,以访问模型卡。确保您使用允许访问AWS RAM的IAM权限(IAM角色)来访问AWS控制台。

使用AWS RAM,您可以查看您已被添加到的资源共享、您可以访问的共享资源以及与您共享资源的AWS账户。当您不再需要访问共享资源时,您还可以离开资源共享。

要在共享的AWS帐户中查看模型卡:

  1. 导航到AWS RAM控制台中的“与我共享的:共享资源”页面。
  2. 确保您在创建共享的AWS区域中操作。
  3. 从模型帐户共享的模型将在列表中可用。如果资源列表很长,那么您可以应用筛选器来查找特定的共享资源。您可以应用多个筛选器来缩小搜索范围。
  4. 以下信息可用:
    1. 资源ID – 资源的ID。这是我们之前在模型卡帐户中创建的模型卡的名称。
    2. 资源类型 – 资源的类型。
    3. 上次共享日期 – 资源与您共享的日期。
    4. 资源共享 – 资源所包含的资源共享的数量。选择该值以查看资源共享。
    5. 所有者ID – 拥有资源的主体的ID。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第10张

您还可以使用AWS CLI选项访问模型卡。对于配置有正确凭证的AWS IAM策略,请确保您具有在Amazon SageMaker中创建、编辑和删除模型卡的权限。有关更多信息,请参阅配置AWS CLI。

您可以使用以下AWS IAM权限策略作为模板:

{
     "Version": "2012-10-17",
     "Statement": [
        {
             "Effect": "Allow",
             "Action": [
                 "sagemaker:DescribeModelCard",
                 "sagemaker:UpdateModelCard",
                 "sagemaker:CreateModelCardExportJob",
                 "sagemaker:ListModelCardVersions",
                 "sagemaker:DescribeModelCardExportJob"
             ],
             "Resource": [
                 "arn:aws:sagemaker:AWS-Region:AWS-model-card-account-id:model-card/example-model-card-name-0",
                 "arn:aws:sagemaker:AWS-Region:AWS-model-card-account-id:model-card/example-model-card-name-1/*"
             ]
        },
        { 
             "Effect": "Allow", 
             "Action": "s3:PutObject",
             "Resource": "arn:aws:s3:::Amazon-S3-bucket-storing-the-pdf-of-the-model-card/model-card-name/*"
        }
    ]
}

您可以运行以下AWS CLI命令来访问共享模型卡的详细信息。

aws sagemaker describe-model-card --model-card-name <模型卡的ARN>

现在您可以从此帐户对该模型卡进行更改。

aws sagemaker update-model-card --model-card-name <模型卡的ARN> --content "{\"model_overview\": {\"model_owner\": \"model-owner\",\"problem_type\": \"Customer Churn Model\"}}"

在进行更改后,返回模型卡帐户以查看我们在此共享帐户中进行的更改。

使用亚马逊SageMaker模型卡共享来改善模型治理 四海 第11张

问题类型已更新为“Customer Churn Model”,这是我们作为AWS CLI命令输入的一部分提供的。

清理

现在您可以删除您创建的模型卡。确保删除您创建的用于共享模型卡的AWS RAM资源共享。

结论

在本文中,我们提供了一个用于安全可靠地扩展和管理ML工作负载的多帐户架构概述。我们讨论了设置模型卡共享的架构模式,并且演示了集中式模型卡共享模式的工作原理。最后,我们在多个帐户之间设置了模型卡共享,以改善模型开发生命周期中的可见性和治理。我们鼓励您尝试新的模型卡共享功能,并告诉我们您的反馈。

Leave a Reply

Your email address will not be published. Required fields are marked *