将Amazon SageMaker模型卡与模型注册表集成
整合Amazon SageMaker模型卡与模型注册表
Amazon SageMaker模型卡片使您能够标准化模型的文档记录方式,从而实现对模型的生命周期的可见性,包括设计、构建、训练和评估。模型卡片旨在成为有关模型的业务和技术元数据的真实信息源,可可靠地用于审核和文档目的。它们提供了模型治理所必需的模型简介。
迄今为止,模型卡片通过模型名称匹配逻辑地与亚马逊SageMaker模型注册表中的模型关联。然而,当客户通过机器学习(ML)模型解决业务问题时,随着客户在问题上的迭代,他们会创建多个模型版本并且需要操作和管理多个模型版本。因此,他们需要将模型卡片与特定模型版本关联起来的能力。
在本文中,我们将讨论一项新功能,该功能支持将模型卡片与部署的模型版本级别的模型注册表集成。我们将讨论解决方案架构和管理模型卡片版本的最佳实践,并演示如何在模型注册表中设置、操作和管理模型卡片与模型版本的集成。
解决方案概述
SageMaker模型卡片帮助您从治理的角度标准化对模型的文档记录,而SageMaker模型注册表则帮助您部署和操作ML模型。模型注册表支持层次结构,用于组织和存储具有模型元数据信息的ML模型。
当组织使用ML解决业务问题时,例如客户流失预测,我们建议按照以下步骤进行操作:
- 为要解决的业务问题创建模型卡片。
- 为要解决的业务问题创建模型包组。
- 构建、训练、评估并注册第一个模型包版本(例如,客户流失V1)。
- 更新模型卡片,将模型包版本与模型卡片链接起来。
- 在新模型包版本上进行迭代时,从上一个版本克隆模型卡片,并与新模型包版本链接(例如,客户流失V2)。
以下图示说明了SageMaker模型卡片如何与模型注册表集成。
如上图所示,SageMaker模型卡片和模型注册表的集成允许您将模型卡片与模型注册表中的特定模型版本关联起来。这使您能够在SageMaker上建立一个真实可靠的注册模型版本的信息源,具有全面和标准化的文档,从而促进模型整个生命周期中的可发现性和治理,合规性和责任。
管理模型卡片的最佳实践
在当今许多企业组织中,以合规为重点进行机器学习运营是一个重要要求,尤其是在高度管制的行业中。作为这些要求的一部分,AWS提供了多个服务,以确保ML环境的可靠运行。
SageMaker模型卡片在一个地方记录关于您的ML模型的关键细节,以便进行简化的治理和报告。模型卡片可帮助您捕获诸如模型的预期用途和风险评级、训练细节和指标、评估结果和观察结果以及其他注意事项,建议和自定义信息等详细信息。
模型卡片需要作为您的开发过程的一部分进行管理和更新,贯穿整个ML生命周期。它们是ML中持续交付和流水线的重要组成部分。就像一个良好架构的ML项目在MLOps的监护下实施持续集成和持续交付(CI/CD)一样,持续的ML文档过程在许多管制行业或更高风险的用例中是一个关键能力。模型卡片是负责任和透明的ML开发的最佳实践之一。
以下图示显示了模型卡片应该是开发生命周期的一部分。
考虑以下最佳实践:
- 我们建议在项目生命周期的早期创建模型卡片。在项目的第一阶段,当您正在解决业务目标并界定ML问题时,应开始创建模型卡片。随着您在业务需求和重要性能指标的不同步骤中的工作,您可以创建处于草稿状态的模型卡片,并确定业务细节和预期用途。
- 作为模型开发生命周期阶段的一部分,您应使用模型注册表为生产目录模型,管理模型版本,并将元数据与模型关联起来。模型注册表支持谱系跟踪。
- 在成功迭代并准备将模型部署到生产环境时,是更新模型卡片的时候了。在部署生命周期阶段,您可以更新模型卡片的模型细节。您还应更新训练细节、评估细节、道德考虑、注意事项和建议。
模型卡与其关联的版本相关联。给定的模型版本在除了模型卡状态之外的所有属性上都是不可变的。如果您对模型卡进行任何其他更改,例如评估指标、描述或预期用途,SageMaker将创建一个新版本的模型卡以反映更新的信息。这是为了确保一旦创建了模型卡就无法被篡改。此外,每个唯一的模型名称只能有一个关联的模型卡,并且在创建模型卡之后无法更改。
机器学习模型是动态的,工作流自动化组件使您能够轻松扩展构建、训练、测试和部署数百个生产模型的能力,加快迭代速度,减少由于手动编排而导致的错误,并建立可重复使用的机制。
因此,您的模型卡的生命周期将如下图所示。每次通过模型生命周期更新模型卡时,都会自动创建一个新版本的模型卡。每次在新模型版本上进行迭代时,都会创建一个新的模型卡,该模型卡可以继承前一个模型版本的一些模型卡信息,并遵循相同的生命周期。
前提条件
本文假设您已经在模型注册表中拥有模型。如果您想跟随操作,可以使用以下SageMaker GitHub示例填充您的模型注册表:SageMaker Pipelines集成模型监视和澄清。
将模型卡与模型注册表中的模型版本集成
在本示例中,我们在模型注册表中有model-monitor-clarify-group
包。
在此包中,有两个模型版本可用。
对于此示例,我们将模型的第一个版本链接到一个新的模型卡。在模型注册表中,您可以查看版本1的详细信息。
现在,我们可以使用SageMaker Python SDK中的新功能。从sagemaker.model_card ModelPackage
模块中,您可以选择要将模型卡链接到的特定模型版本。
然后,您可以为模型版本创建一个新的模型卡,并使用先前检索到的模型包信息指定model_package_details
参数。您需要填充模型卡的所有其他必要细节。在本文中,我们创建了一个简单的模型卡作为示例。
然后,您可以使用SageMaker Python SDK来创建一个模型卡。
当再次加载模型卡时,您可以在"__model_package_details"
下看到关联的模型。
您还可以使用以下示例代码段中的model_package
选项来更新现有的模型卡:
my_card = ModelCard.load(("<model_card_name>")
mp_details = ModelPackage.from_model_package_arn("<arn>")
my_card.model_package_details = mp_details
my_card.update()
最后,当在现有模型包中创建或更新新的模型包版本时,如果该模型包组中已经存在一个模型卡,则某些信息(如业务详情和预期使用方式)可以被传递到新的模型卡中。
清理
如果使用前提部分中提到的笔记本创建了资源,则用户负责清理资源。请按照笔记本中的说明清理资源。
总结
本文中,我们讨论了如何将SageMaker模型卡与模型注册表中的模型版本集成。我们分享了最佳实践的解决方案架构,并展示了如何设置和操作模型卡以改进您的模型治理立场。我们鼓励您尝试这个解决方案,并在评论部分分享您的反馈。