

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

# 创建模型卡
<a name="model-cards-create"></a>

**重要**  
允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。之所以需要为资源添加标签的权限，是因为 Studio 和 Studio Classic 会自动为创建的任何资源添加标签。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记，则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息，请参阅 [提供标记 A SageMaker I 资源的权限](security_iam_id-based-policy-examples.md#grant-tagging-permissions)。  
[AWS 亚马逊 A SageMaker I 的托管策略](security-iam-awsmanpol.md)授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

你可以使用 A SageMaker I 控制台或 SageMaker Python 软件开发工具包创建亚马逊 SageMaker 模型卡。还可以直接使用 API 操作。有关这些 API 操作的更多信息，请参阅[模型卡牌 SageMaker APIs 的低等级](model-cards-apis.md)。

## 使用 SageMaker AI 控制台创建模型卡片
<a name="model-cards-console-create"></a>

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

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

### 步骤 1：输入模型详细信息和预期用途
<a name="model-cards-console-create-enter-model-details"></a>

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

如果您的模型不是 AWS 资源，请为您的模型提供一个唯一的名称。要将模型添加为 AWS 资源，请参阅 *Amazon A SageMaker I 开发者指南*中的[创建模型](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html#realtime-endpoints-deployment-create-model)。或者，您可以使用 [SageMaker AI Marketplace 或 SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-marketplace.html) 模型[注册表将您的模型添加为模型](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html)包。

有关预期用途的更多信息，请参阅[模型的预期用途](model-cards.md#model-cards-intended-uses)。有关风险评级的更多信息，请参阅[风险评级](model-cards.md#model-cards-risk-rating)。

#### 步骤 2：输入训练详细信息
<a name="model-cards-console-create-enter-training-details"></a>

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

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

我们建议您对目标函数的以下属性进行编目：
+ 优化方向
+ 指标
+ 说明

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

#### 步骤 3：输入评估详细信息
<a name="model-cards-console-create-enter-evaluation-details"></a>

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

有关 Clarify 的 SageMaker 更多信息，请参阅[运行 Clar SageMaker ify 处理作业以进行偏见分析和可解释性](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-run.html)。

有关使用 Model Monitor 监控模型质量指标中偏差的更多信息，请参阅[监控模型质量](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality.html)。

要添加自己的评估报告，请选择**通用模型卡评估**。所有模型卡评估报告都必须采用[模型卡 JSON 架构](model-cards.md#model-cards-json-schema)。

#### 步骤 4：输入其他详细信息
<a name="model-cards-console-create-enter-additional-details"></a>

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

#### 保存模型卡
<a name="model-cards-console-create-save"></a>

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

## 使用 SageMaker Python 软件开发工具包创建模型卡片
<a name="model-cards-sdk-create"></a>

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

可以为以下对象创建模型卡：
+ 托管在 SageMaker AI 中的模型
+ 模型注册表中的模型包（ SageMaker 模型）
+ 在 SageMaker AI 之外托管或注册的模型

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

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

有关使用模型注册表的信息，请参阅[利用模型注册中心进行模型注册部署](model-registry.md)。有关从模型注册表创建模型卡的信息，请参阅[在模型注册表中为您的模型创建 SageMaker 模型卡](#model-cards-sdk-create-model-registry)。

**注意**  
要将模型卡与 SageMaker Python SDK 配合使用，您首先需要建立 A SageMaker I 会话。有关更多信息，请参阅 SageMaker Python SDK API 参考中的[会话](https://sagemaker.readthedocs.io/en/stable/api/utility/session.html)。

要为不在模型注册表中的模型创建 SageMaker 模型卡，请参阅[创建模型注册表中没有的模型](#model-card-sdk-create-model-non-model-registry)。

### 创建模型注册表中没有的模型
<a name="model-card-sdk-create-model-non-model-registry"></a>

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

#### 步骤 1：定义模型概述
<a name="model-cards-sdk-create-model-overview"></a>

定义模型的概述。

```
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"}},
)
```

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

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

#### 步骤 2：定义训练详细信息
<a name="model-cards-sdk-create-training-details"></a>

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

```
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}}",
)
```

再说一遍，如果您的模型是一种 AWS 资源，则某些训练详细信息会自动填充。使用以下命令打印训练作业 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])
```

#### 定义评估详细信息
<a name="model-cards-sdk-create-evalutation-details"></a>

要定义模型的评估详细信息，必须先定义一个或多个指标组来描述用于任何评估作业的指标。

```
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 AI Clarify 或 A SageMaker I](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-run.html) [模型监控器](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality.html)生成的现有评估报告，请将其上传到 Amazon S3 并提供 S3 URI 以自动解析评估指标。要添加自己的通用模型卡评估报告，请提供采用[评估结果 JSON 格式](https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards-json-schema.html)的报告。

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

#### 第 3 步：定义预期用途
<a name="model-cards-sdk-create-intended-uses"></a>

定义模型的预期用途，包括模型的一般用途及其预期使用案例。此外，还建议将可能影响此模型在特定使用案例中功效的任何因素以及贵组织对该模型的风险评级包括在内。有关更多信息，请参阅[模型的预期用途](model-cards.md#model-cards-intended-uses)和[风险评级](model-cards.md#model-cards-risk-rating)。

```
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"}},
)
```

#### 定义其他信息
<a name="model-cards-sdk-create-additional-details"></a>

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

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

#### 第 4 步：创建模型卡
<a name="model-cards-sdk-create-define"></a>

为模型卡命名，定义模型卡片，然后使用该定义使用 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 模型卡
<a name="model-cards-sdk-create-model-registry"></a>

开始创建模型卡之前，请确保已创建模型包组和模型包。有关使用模型注册表的更多信息，请参阅[利用模型注册中心进行模型注册部署](model-registry.md)。

**重要**  
您必须拥有使用 “ SageMaker 模型注册表” 中操作的权限。我们建议使用`AmazonSageMakerModelRegistryFullAccess` AWS 托管策略。有关托管策略的更多信息，请参阅 [AWS 模型注册管理机构的托管策略](security-iam-awsmanpol-model-registry.md)。

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

当您为模型包创建模型卡时，Amazon SageMaker 模型卡使用该[DescribeModelPackage](https://docs.aws.amazon.com/APIReference/API_DescribeModelPackage.html#API_DescribeModelPackage_ResponseSyntax)操作将模型包中的数据添加到模型卡中。以下是可从模型包导入模型卡的字段的示例：
+ [ModelDataUrl](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelPackageContainerDefinition.html#sagemaker-Type-ModelPackageContainerDefinition-ModelDataUrl)
+ [ModelPackageDescription](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html#sagemaker-DescribeModelPackage-response-ModelPackageDescription)
+ [ModelPackageGroupName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html#sagemaker-DescribeModelPackage-response-ModelPackageGroupName)
+ [ModelPackageStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html#sagemaker-DescribeModelPackage-response-ModelPackageStatus)
+ [ModelPackageVersion](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html#sagemaker-DescribeModelPackage-response-ModelPackageVersion)

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

```
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`。如果您未指定 A SageMaker I 会话，则 SageMaker 模型卡片将使用默认 SageMaker AI 会话。

必须指定模型名称和模型包的 Amazon 资源名称 (ARN)。有关获取模型包的 Amazon 资源名称 (ARN) 的信息，请参阅[查看和更新模型版本的详细信息 (Boto3)](model-registry-details.md#model-registry-details-api)。

您从模型包中创建的模型卡可能存在信息缺失或不准确的情况。您可以向模型卡添加信息或对其进行编辑。有关管理模型卡的更多信息，请参阅[模型卡操作](model-cards-manage.md)。

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

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