创建模型卡 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建模型卡

重要

允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。需要向资源添加标签的权限,因为 Studio 和 Studio Classic 会自动标记他们创建的任何资源。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供为资源添加标签 SageMaker的权限

Amazon 适用于亚马逊的托管政策 SageMaker授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

您可以使用 SageMaker 控制台或 SageMaker Python 软件开发工具包创建亚马逊 SageMaker 模型卡。还可以直接使用 API 操作。有关这些 API 操作的更多信息,请参阅通过低级 API 使用模型卡

使用 SageMaker 控制台创建模型卡片

前往 Amazon SageMaker 控制台。在导航窗格的治理下,选择模型卡。在右上角,选择创建模型卡

完成创建模型卡提示中的四个步骤,记录有关模型的详细信息。

步骤 1:输入模型详细信息和预期用途

如果您的模型是一种 Amazon 资源,请在此字段中指定确切的模型名称以自动填充模型详细信息。要浏览现有型号名称,请参阅 Amazon SageMaker 控制台中的模特。每个唯一的模型名称只能有一张关联的模型卡。

如果您的模型不是 Amazon 资源,请为您的模型提供一个唯一的名称。要将模型添加为 Amazon 资源,请参阅《Amazon SageMaker 开发者指南》中的创建模型。或者,您可以使用 M SageMakerarketplace 或 M odel Registry 将您的SageMaker 模型添加为模型包。

有关预期用途的更多信息,请参阅模型的预期用途。有关风险评级的更多信息,请参阅风险评级

步骤 2:输入训练详细信息

将任何训练详细信息、训练观测值、数据集、超参数以及有关模型目标函数的详细信息添加到模型卡中。

模型卡中的目标函数可以是训练期间经过优化的任何函数。这可能包括但不限于成本函数、损失函数或目标指标。在本节中,记录对训练模型最重要的目标函数。

我们建议您对目标函数的以下属性进行编目:

  • 优化方向

  • 指标

  • 描述

例如,您可以尽可能减小(优化方向)二进制分类问题(描述)的交叉熵损失(指标),也可以尽可能提高逻辑回归的可能性。此外,您可以提供注释,说明为什么选择此目标函数而不是其他目标函数。

步骤 3:输入评估详细信息

如果您有由 SageMaker Clarify 或 Model Monitor 生成的现有评估报告,请为这些报告提供 S3 URI,或者手动上传这些报告以将其添加到模型卡片中。

有关 Clarify 的 SageMaker 更多信息,请参阅运行 Clar SageMaker ify 处理作业以进行偏见分析和可解释性

有关使用 Model Monitor 监控模型质量指标中偏差的更多信息,请参阅监控模型质量

要添加自己的评估报告,请选择通用模型卡评估。所有模型卡评估报告都必须采用模型卡 JSON 架构

步骤 4:输入其他详细信息

添加自定义的模型卡详细信息字段,以便在模型卡上显示任何其他信息。例如,您可以添加值为个人理财 的自定义字段业务线

保存模型卡

查看模型卡中的信息后,选择右下角的保存以保存模型卡。

使用 SageMaker Python 软件开发工具包创建模型卡片

创建模型卡之前,必须先定义模型卡的内容。使用 SageMaker Python SDK 时,模型内容包括模型概述、训练详情、预期用途、评估详情和其他信息。

可以为以下对象创建模型卡:

  • 托管在中的模型 SageMaker

  • 模型注册表中的模型包( SageMaker 模型)

  • 在外部托管或注册的模特 SageMaker

您也可以在不关联任何模型的情况下创建模型卡。

我们建议将您训练过的模型添加到 SageMaker 模型注册表中。模型注册表可帮助您对模型进行编目和跟踪模型版本。创建模型卡时,模型注册表中有关该模型的信息会自动填充到模型卡中。创建模型卡后,您可以对其进行编辑或向其添加信息。

有关使用模型注册表的信息,请参阅使用模型注册表注册和部署模型。有关从模型注册表创建模型卡的信息,请参阅在模型注册表中为您的模型创建 SageMaker 模型卡

注意

要将模型卡与 SageMaker Python SDK 配合使用,您首先需要建立 SageMaker 会话。有关更多信息,请参阅 SageMaker Python SDK API 参考中的会话

要为不在模型注册表中的模型创建 SageMaker 模型卡,请参阅创建模型注册表中没有的模型

创建模型注册表中没有的模型

使用以下几节中的信息为尚未添加到模型注册表的模型创建模型卡。

步骤 1:定义模型概述

定义模型的概述。

model_overview = ModelOverview.from_model_name( model_name=model_name, sagemaker_session=sagemaker_session, model_description="A-description-of-your-model", problem_type="Problem-type", # For example, "Binary Classification" algorithm_type="Algorithm-type", # For example, "Logistic Regression" model_creator="Name-of-model-creator", model_owner="Name-of-model-owner", )

如果您的模型是一种 Amazon 资源,则可以自动检索模型 ARN、推理容器 URI 和模型工件的 S3 位置等概述信息。使用以下命令打印关联的 Amazon 元数据:

print(model_overview.model_id) print(model_overview.inference_environment.container_image) print(model_overview.model_artifact)

步骤 2:定义训练详细信息

要定义模型的训练详细信息,必须先定义其目标函数。

objective_function = ObjectiveFunction( function=Function( function=ObjectiveFunctionEnum.MINIMIZE, facet=FacetEnum.LOSS, ), notes="An-explanation-about-objective-function", )

接下来,您可以使用现有的模型概述、会话和目标函数来定义训练详细信息。在此处添加任何训练观测值。

training_details = TrainingDetails.from_model_overview( model_overview=model_overview, sagemaker_session=sagemaker_session, objective_function=objective_function, training_observations="Model-training-observations", )

再说一遍,如果您的模型是一种 Amazon 资源,则某些训练详细信息会自动填充。使用以下命令打印训练作业 ARN、训练容器 URI 和训练指标:

print(training_details.training_job_details.training_arn) print(training_details.training_job_details.training_environment.container_image) print([{"name": i.name, "value": i.value} for i in training_details.training_job_details.training_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], ) ]

如果您已有由 SageMaker Clarify 或 SageMaker Model Monit or 生成的评估报告,请将其上传到 Amazon S3 并提供 S3 URI 以自动解析评估指标。要添加自己的通用模型卡评估报告,请提供采用评估结果 JSON 格式的报告。

report_type = "clarify_bias.json" example_evaluation_job.add_metric_group_from_json( f"example_metrics/{report_type}", EvaluationMetricTypeEnum.CLARIFY_BIAS )

第 3 步:定义预期用途

定义模型的预期用途,包括模型的一般用途及其预期使用案例。此外,还建议将可能影响此模型在特定使用案例中功效的任何因素以及贵组织对该模型的风险评级包括在内。有关更多信息,请参阅 模型的预期用途风险评级

intended_uses = IntendedUses( purpose_of_model="Purpose-of-the-model", intended_uses="The-intended-uses-of-this-model", factors_affecting_model_efficiency="Any-factors-effecting-model-efficacy", risk_rating=RiskRatingEnum.LOW, explanations_for_risk_rating="Explanation-for-low-risk-rating", )

定义其他信息

最后,您可以向模型卡添加其他自定义信息。您可以记录有关模型的任何道德考虑、注意事项和建议。还可以以键值对的形式添加所需的任何自定义详细信息。

additional_information = AdditionalInformation( ethical_considerations="Any-ethical-considerations", caveats_and_recommendations="Any-caveats-and-recommendations", custom_details={"custom details1": "details-value"}, )

第 4 步:创建模型卡

为模型卡命名,定义模型卡片,然后使用该定义使用 SageMaker Python SDK 创建模型卡片。

model_card_name = "my-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 模型卡

开始创建模型卡之前,请确保已创建模型包组和模型包。有关使用模型注册表的更多信息,请参阅使用模型注册表注册和部署模型

重要

您必须拥有使用 “ SageMaker 模型注册表” 中操作的权限。我们建议使用AmazonSageMakerModelRegistryFullAccess Amazon 托管策略。有关托管策略的更多信息,请参阅Amazon 模型注册管理机构的托管策略

使用 SageMaker Python SDK 在模型注册表中为模型包创建 SageMaker 模型卡。模型包是您训练过的模型。当您创建模型卡时,Amazon SageMaker 模型卡会自动将模型包中的数据导入模型卡片中。

当您为模型包创建模型卡片时,Amazon SageMaker 模型卡使用 Package 操作将模型包中的数据添加到模型卡中。DescribeModel以下是可从模型包导入模型卡的字段的示例:

使用以下代码来定义模型包并从中创建模型卡:

mp_details = ModelPackage.from_model_package_arn( model_package_arn="example_model_package_arn", sagemaker_session=sagemaker_session, ) model_card_name = "example-model-card" my_card = ModelCard( name=model_card_name, status=ModelCardStatusEnum.status, model_package_details=mp_details, sagemaker_session=sagemaker_session, ) my_card.create()

对于 status,您要指定模型卡的批准状态。如果您未指定状态,则 SageMaker 模型卡片将使用默认值DRAFT。如果您未指定 SageMaker 会话, SageMaker 模型卡片将使用默认会 SageMaker 话。

必须指定模型名称和模型包的 Amazon 资源名称 (ARN)。有关获取模型包的 Amazon 资源名称 (ARN) 的信息,请参阅查看和更新模型版本的详细信息 (Boto3)

您从模型包中创建的模型卡可能存在信息缺失或不准确的情况。您可以向模型卡添加信息或对其进行编辑。有关管理模型卡的更多信息,请参阅管理模型卡

SageMaker 模型注册表支持模型包的版本控制。您可以对模型包进行版本控制,并为每个版本创建模型卡。先前版本模型卡中的信息会延续到后续版本创建的模型卡中。例如,一个模型包可以有版本 1、版本 2 和版本 3。假设您已为版本 1 创建了模型卡,但还没有为版本 2 创建模型卡。如果您为版本 3 创建模型卡,Amazon SageMaker 模型卡片会自动将版本 1 的模型卡中的信息传送到版本 3 的模型卡。

注意

您也可以为不使用版本控制的模型包创建模型卡。但是,大多数机器学习工作流都涉及同一模型的多个版本,因此我们建议您执行以下操作:

  1. 为每个模型包创建版本

  2. 为模型包的每个版本创建模型卡