使用亚马逊 SageMaker 改善对机器学习模型的管理

随着公司越来越多地在其主流企业应用程序中采用机器学习 (ML),他们越来越多的业务决策受到机器学习模型的影响。因此,通过简化访问控制并提高所有机器学习模型的透明度,可以更轻松地验证模型是否运行良好,并在表现不佳时采取行动。

在这篇文章中,我们探讨了公司如何使用两个新功能(SageMaker 模型卡和 SageMaker 模型仪表板)通过集中式仪表板和模型的详细文档来提高模型的可见性。SageMaker 客户无需额外付费即可使用这两项功能。

模型治理概述

模型治理是一个框架,可以系统地了解模型的开发、验证和使用。模型治理适用于端到端机器学习工作流程,从识别机器学习用例到通过警报、报告和仪表板持续监控已部署的模型。实施良好的模型治理框架应最大限度地减少查看、跟踪和管理生命周期任务所需的接口数量,从而更轻松地大规模监控机器学习生命周期。

如今,各组织投入大量技术专业知识来构建工具,以实现大部分治理和可审计工作流程的自动化。例如,模型构建者需要主动记录模型规范,例如模型的预期用途、风险评级以及衡量模型时应参照的性能标准。此外,他们还需要记录对模型行为的观察结果,并记录他们做出某些关键决策的原因,例如他们对模型进行了优化的目标函数。

公司通常使用 Excel 或电子邮件等工具来捕获和共享此类模型信息,用于批准生产用途。但是,随着机器学习开发规模的扩大,信息很容易丢失或放错地方,因此快速跟踪这些细节变得不可行。此外,部署这些模型后,您可以将来自不同来源的数据拼接在一起,以获得对所有模型、端点、监控历史和谱系的端到端可见性。如果没有这样的视图,你很容易忘记你的模型,也可能不知道何时需要对它们采取行动。在高度监管的行业中,这个问题更加严重,因为您要遵守法规,要求您保持此类措施。

随着模型数量开始扩大,管理自定义工具可能成为一项挑战,使组织更少的时间专注于核心业务需求。在以下部分中,我们将探讨 SageMaker 模型卡和 SageMaker 模型仪表板如何帮助您扩大治理工作。

SageMaker 模型卡

模型卡使您能够标准化模型的记录方式,从而实现对模型生命周期的可见性,包括设计、构建、训练和评估。模型卡旨在成为有关模型的业务和技术元数据的单一真实来源,可以可靠地用于审计和记录目的。它们提供了模型的概况介绍,这对于模型治理很重要。

模型卡允许用户编写和存储决策,例如为何选择目标函数进行优化,以及预期用途和风险评级等详细信息。您还可以附上和查看评估结果,并记下观察结果以备将来参考。

对于在 SageMaker 上训练的模型,模型卡可以发现并自动填充训练作业、训练数据集、模型构件和推理环境等细节,从而加快卡片的创建过程。使用 SageMaker Python SDK,你可以使用评估指标无缝更新模型卡。

模型卡使模型风险经理、数据科学家和机器学习工程师能够执行以下任务:

  • 记录模型要求,例如风险评级、预期用途、限制和预期性能
  • 为 SageMaker 训练过的模型自动填充模型卡
  • 对于非 SageMaker 型号,请自带信息 (BYOI)
  • 上传和共享模型和数据评估结果
  • 定义和捕获自定义信息
  • 捕获模型卡片状态(草稿、待审核或已批准生产)
  • 亚马逊云科技 管理控制台 访问模型卡中心
  • 创建、编辑、查看、导出、克隆和删除模型卡
  • 使用 亚马逊 Event Bridge 集成触发模型卡状态变更事件的工作流程

使用控制台创建 SageMaker 模型卡

您可以使用 SageMaker 控制台轻松创建模型卡。在这里,你可以看到所有现有的模型卡,并根据需要创建新的模型卡。

创建模型卡时,您可以记录关键模型信息,例如谁构建了模型、为何开发模型、模型在进行独立评估时表现如何,以及在将模型用于业务应用程序之前需要考虑的任何观察结果。

要在控制台上创建模型卡,请完成以下步骤:

  1. 输入模型概述详情。
  2. 输入训练详情(如果模型是在 SageMaker 上训练的,则会自动填充)。
  3. 上传评估结果。
  4. 添加其他细节,例如建议和道德注意事项。

创建模型卡后,您可以选择一个版本进行查看。

以下屏幕截图显示了我们的模型卡的详细信息。

您也可以将模型卡导出为 PDF 进行共享。

通过 SageMaker Python SDK 创建和浏览 SageMaker 模型卡

与模型卡互动不仅限于主机。你也可以使用 SageMaker Python SDK 来创建和浏览模型卡。SageMaker Python SDK 允许数据科学家和机器学习工程师轻松地与 SageMaker 组件进行交互。以下代码片段展示了使用新添加的 SageMaker Python SDK 功能创建模型卡的过程。

确保你安装了最新版本的 SageMaker Python SDK:

$ pip install --upgrade "sagemaker>=2"

使用 SageMaker 训练和部署模型后,可以使用 SageMaker 模型和训练作业中的信息自动将信息填充到模型卡中。

使用 SageMaker Python SDK 并传递 SageMaker 模型名称,我们可以自动收集基本的模型信息。诸如 SageMaker 模型 ARN、训练环境和模型输出之类的信息都是自动填充的 Amazon Simple Storage Servic e (Amazon S3) 位置。我们可以添加其他模型事实,例如描述、问题类型、算法类型、模型创建者和所有者。参见以下代码:

model_overview = ModelOverview.from_name(
    model_name=model_name,
    sagemaker_session=sagemaker_session,
    model_description="This is a simple binary classification model used for Model Card demo",
    problem_type="Binary Classification",
    algorithm_type="Logistic Regression",
    model_creator="DEMO-ModelCard",
    model_owner="DEMO-ModelCard",
)
print(model_overview.model_id) # Provides us with the SageMaker Model ARN
print(model_overview.inference_environment.container_image) # Provides us with the SageMaker inference container URI
print(model_overview.model_artifact) # Provides us with the S3 location of the model artifacts

我们还可以自动收集基本的训练信息,例如训练作业 ARN、训练环境和训练指标。可以添加其他训练细节,例如训练目标函数和观测值。参见以下代码:

objective_function = ObjectiveFunction(
    function=Function(
        function=ObjectiveFunctionEnum.MINIMIZE,
        facet=FacetEnum.LOSS,
    ),
    notes="This is a example objective function.",
)
training_details = TrainingDetails.from_model_overview(
    model_overview=model_overview,
    sagemaker_session=sagemaker_session,
    objective_function=objective_function,
    training_observations="Additional training observations could be put here."
)

print(training_details.training_job_details.training_arn) # Provides us with the SageMaker Model ARN
print(training_details.training_job_details.training_environment.container_image) # Provides us with the SageMaker training container URI
print([{"name": i.name, "value": i.value} for i in training_details.training_job_details.training_metrics]) # Provides us with the SageMaker Training Job metrics

如果我们有可用的评估指标,我们也可以将这些指标添加到模型卡中:

my_metric_group = MetricGroup(
    name="binary classification metrics",
    metric_data=[Metric(name="accuracy", type=MetricTypeEnum.NUMBER, value=0.5)]
)
evaluation_details = [
    EvaluationJob(
        name="Example evaluation job",
        evaluation_observation="Evaluation observations.",
        datasets=["s3://path/to/evaluation/data"],
        metric_groups=[my_metric_group],
    )
]

我们还可以添加有关模型的其他信息,以帮助进行模型治理:

intended_uses = IntendedUses(
    purpose_of_model="Test Model Card.",
    intended_uses="Not used except this test.",
    factors_affecting_model_efficiency="No.",
    risk_rating=RiskRatingEnum.LOW,
    explanations_for_risk_rating="Just an example.",
)
additional_information = AdditionalInformation(
    ethical_considerations="You model ethical consideration.",
    caveats_and_recommendations="Your model's caveats and recommendations.",
    custom_details={"custom details1": "details value"},
)

在我们提供了所需的所有详细信息后,我们可以使用前面的配置创建模型卡:

model_card_name = "sample-notebook-model-card"
my_card = ModelCard(
    name=model_card_name,
    status=ModelCardStatusEnum.DRAFT,
    model_overview=model_overview,
    training_details=training_details,
    intended_uses=intended_uses,
    evaluation_details=evaluation_details,
    additional_information=additional_information,
    sagemaker_session=sagemaker_session,
)
my_card.create()

SageMaker SDK 还提供了更新、加载、列出、导出和删除模型卡的功能。

要了解有关模型卡的更多信息,请参阅 开发者指南 并按照 示例笔记本开始操作。

SageMaker 模型仪表板

模型控制面板是账户中创建的所有模型的集中存储库。这些模型通常是通过在 SageMaker 上训练来创建的,或者您可以将经过训练的模型带到其他地方在 SageMaker 上托管。

模型仪表板为IT管理员、模型风险经理或业务主管提供了一个单一界面,可以查看所有已部署的模型及其表现。您可以查看端点、批量转换作业和监控作业,以深入了解模型性能。组织可以深入了解哪些模型缺少显示器或监控器处于非活动状态,并使用 SageMaker API 进行添加,以确保检查所有模型是否存在数据偏差、模型偏差、偏差偏移和特征归因偏差。

以下屏幕截图显示了 “模型” 仪表板的示例。

模型仪表板概述了您的所有模型、它们的风险评级以及这些模型在生产中的表现。它通过从 SageMaker 中提取信息来做到这一点。性能监控信息通过 Amazon SageMaker 模型 监视器获取,您还可以通过 SageMaker 批量转换作业查看有关为批量预测而调用的模型的信息。捕获了世系信息,例如如何训练模型、使用数据等,还会从模型卡中提取信息。

模型监视器监控生产中用于批量推理或实时端点的 SageMaker 模型的质量。您可以通过 SageMaker API 设置持续监控或定时监控,并通过 “模型” 仪表板编辑警报设置。您可以设置警报,在模型质量出现偏差时通知您。及早主动检测这些偏差使您能够采取纠正措施,例如重新训练模型、审计上游系统或修复质量问题,而无需手动监控模型或构建其他工具。模型仪表板可让您快速了解正在监控哪些模型以及它们的性能如何。有关模型监视器的更多信息,请访问 监控模型的数据和模型质量、偏差和可解释性

在模型仪表板中选择模型时,您可以更深入地了解模型,例如模型卡(如果有)、模型谱系、有关模型部署到的端点的详细信息以及模型的监控时间表。

此视图允许您在需要时创建模型卡。也可以通过模型仪表板激活、停用或编辑监控计划。

对于没有监控计划的模型,您可以通过为模型部署到的端点启用模型监视器来进行此设置。通过警报详细信息和状态,您将收到显示数据偏差、模型偏差、偏差偏差或功能偏差的模型的通知,具体取决于您设置的显示器。

让我们来看一个如何设置模型监控的示例工作流程。此过程的关键步骤是:

  1. 捕获发送到端点(或批量转换作业)的数据。
  2. 建立基准(针对每种监控类型)。
  3. 创建模型监控器时间表,将实时预测与基线进行比较,以报告违规行为并触发警报。

根据警报,您可以采取操作,例如将端点回滚到以前的版本或使用新数据重新训练模型。在这样做时,可能需要追踪模型是如何训练的,这可以通过可视化模型的谱系来完成。

除了可以深入了解模型的具体细节外,模型仪表板还提供有关账户中整个模型生态系统的丰富信息。要了解有关模型仪表板的更多信息,请参阅 开发者指南

结论

模型治理很复杂,通常涉及许多特定于组织或行业的定制需求。这可能基于您的组织需要遵守的监管要求、组织中存在的角色类型以及所使用的模型类型。没有放之四海皆准的治理方法,重要的是要有合适的工具,这样才能建立稳健的治理流程。

借助 SageMaker 中专门构建的机器学习治理工具,组织可以实施正确的机制来改善对其特定用例的机器学习项目的控制和可见性。尝试一下模型卡片和模型控制面板,并在评论中留下问题和反馈。要了解有关模型卡片和模型仪表板的更多信息,请参阅 开发者指南


作者简介

Kirit Thadaka 是一名 机器学习解决方案架构师,在 SageMaker Service SA 团队工作。在加入 亚马逊云科技 之前,Kirit 曾在早期的人工智能初创公司工作,随后担任过人工智能研究、mLOP 和技术领导等各种职位的咨询服务。

马克·卡普 是 SageMaker 服务团队的一名机器学习架构师。他专注于帮助客户大规模设计、部署和管理机器学习工作负载。在业余时间,他喜欢旅行和探索新地方。

Raghu Ramesha 是亚马 逊 SageMaker 服务团队的一名机器学习解决方案架构师。他专注于帮助客户构建、部署机器学习生产工作负载并将其大规模迁移到 SageMaker。他专攻机器学习、人工智能和计算机视觉领域,并拥有德克萨斯大学达拉斯分校的计算机科学硕士学位。在业余时间,他喜欢旅行和摄影。

Ram Vittal 是 亚马逊云科技 的机器学习专家解决方案架构师。他在架构和构建分布式、混合和云应用程序方面拥有 20 多年的经验。他热衷于构建安全且可扩展的人工智能/机器学习和大数据解决方案,以帮助企业客户完成云采用和优化之旅,从而改善其业务成果。在业余时间,他喜欢网球、摄影和动作片。

Sahil Saini 是亚马逊网络服务的 ISV 解决方案架构师。他与 亚马逊云科技 战略客户产品和工程团队合作,使用适用于 AI/ML、容器、HPC 和 IoT 的 亚马逊云科技 服务,帮助他们提供技术解决方案。他曾帮助企业客户建立人工智能/机器学习平台。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。