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

改进模型治理

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

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

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

SageMaker模型卡使您能够标准化模型的文档化方式,从而实现对模型的生命周期(设计、构建、训练和评估)的可见性。模型卡旨在成为有关模型的业务和技术元数据的单一真相来源,可可靠地用于审计和文档化目的。它们为模型治理提供了一个重要的事实表。

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

架构概述

该架构的实现如下:

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

以下图示了这个架构。

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

我们的客户需要共享模型卡以改善模型的可见性和治理,通过模型卡中共享的信息。现在,通过跨账户模型卡共享,客户可以享受多账户策略的好处,同时可以访问其组织中可用的模型卡,以加快协作并确保治理。

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

解决方案概述

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

下图说明了这个架构。

该架构的实施如下:

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

先决条件

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

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

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

设置模型卡片共享

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

在下一节中,我们将展示如何共享模型卡片。

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

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

或者,您可以使用以下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控制台中,选择创建资源共享

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

选择该模型,它将出现在“已选择的资源”部分。按照以下步骤再次选择该资源,然后选择下一步

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

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

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

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

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

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

使用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。

您还可以使用 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\"}}"

完成更改后,请返回模型卡片账户以查看我们在此共享账户中所做的更改。

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

清理

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

结论

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