

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

# 创建推理推荐
<a name="instance-recommendation-create"></a>

使用 适用于 Python (Boto3) 的 AWS SDK 或以编程方式创建推理建议，或者使用 Studio Classic 或 AI 控制台以交互方式创建推理建议。 AWS CLI SageMaker **为推理建议指定任务名称、 AWS IAM 角色 ARN、输入配置，以及您在模型注册表中注册模型时的模型包 ARN，或者在 “先决条件” 部分中创建模型时的模型名称和`ContainerConfig`字典。**

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html) API 启动推理推荐作业。将推理推荐作业的 `JobType` 字段设置为 `'Default'`。此外，请提供以下各项：
+ IAM 角色的 Amazon 资源名称 (ARN)，此角色可让 Inference Recommender 代表您执行任务。为 `RoleArn` 字段定义此项。
+ 模型包 ARN 或模型名称。Inference Recommender 支持将模型包 ARN 或模型名称作为输入。指定下列项之一：
  + 您在向 A SageMaker I 模型注册表注册模型时创建的版本化模型包的 ARN。在 `InputConfig` 字段中为 `ModelPackageVersionArn` 定义此项。
  + 您创建的模型的名称。在 `InputConfig` 字段中为 `ModelName` 定义此项。另外，请提供 `ContainerConfig` 字典，其中包括需要与模型名称一起提供的必填字段。在 `InputConfig` 字段中为 `ContainerConfig` 定义此项。在 `ContainerConfig` 中，您也可以选择将 `SupportedEndpointType` 字段指定为 `RealTime` 或 `Serverless`。如果您指定此字段，则 Inference Recommender 将仅返回该端点类型的推荐。如果您未指定此字段，则 Inference Recommender 将返回两种端点类型的推荐。
+ `JobName` 字段的 Inference Recommender 推荐作业的名称。推理推荐人任务名称在 AWS 区域内和您的 AWS 账户中必须是唯一的。

导入 适用于 Python (Boto3) 的 AWS SDK 软件包并使用客户端类创建 SageMaker AI 客户端对象。如果您执行了**先决条件**部分中的步骤，请仅指定下列选项之一：
+ 选项 1：如果您想使用模型包 ARN 创建推理推荐作业，请将模型包组 ARN 存储在名为 `model_package_arn` 的变量中。
+ 选项 2：如果您想使用模型名称和 `ContainerConfig` 创建推理推荐作业，请将模型名称存储在名为 `model_name` 的变量中，并将 `ContainerConfig` 字典存储在名为 `container_config` 的变量中。

```
# Create a low-level SageMaker service client.
import boto3
aws_region = {{'<INSERT>'}}
sagemaker_client = boto3.client('sagemaker', region_name=aws_region) 

# Provide only one of model package ARN or model name, not both.
# Provide your model package ARN that was created when you registered your 
# model with Model Registry 
model_package_arn = '<INSERT>'
## Uncomment if you would like to create an inference recommendations job with a
## model name instead of a model package ARN, and comment out model_package_arn above
## Provide your model name
# model_name = '<INSERT>'
## Provide your container config 
# container_config = '<INSERT>'

# Provide a unique job name for SageMaker Inference Recommender job
job_name = {{'<INSERT>'}}

# Inference Recommender job type. Set to Default to get an initial recommendation
job_type = 'Default'

# Provide an IAM Role that gives SageMaker Inference Recommender permission to 
# access AWS services
role_arn = {{'arn:aws:iam::<account>:role/*'}}

sagemaker_client.create_inference_recommendations_job(
    JobName = job_name,
    JobType = job_type,
    RoleArn = role_arn,
    # Provide only one of model package ARN or model name, not both. 
    # If you would like to create an inference recommendations job with a model name,
    # uncomment ModelName and ContainerConfig, and comment out ModelPackageVersionArn.
    InputConfig = {
        'ModelPackageVersionArn': model_package_arn
        # 'ModelName': model_name,
        # 'ContainerConfig': container_config
    }
)
```

有关您可以传递的可选参数和必填参数的完整列表，请参阅 [Amazon SageMaker API 参考指南[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html)。

------
#### [ AWS CLI ]

使用 `create-inference-recommendations-job` API 启动推理推荐作业。将推理推荐作业的 `job-type` 字段设置为 `'Default'`。此外，请提供以下各项：
+ 允许亚马逊 SageMaker 推理推荐人代表您执行任务的 IAM 角色的亚马逊资源名称 (ARN)。为 `role-arn` 字段定义此项。
+ 模型包 ARN 或模型名称。Inference Recommender 支持将模型包 ARN 或模型名称作为输入。指定下列项之一：
  + 在模型注册表中注册模型时创建的版本控制模型包的 ARN。在 `input-config` 字段中为 `ModelPackageVersionArn` 定义此项。
  + 您创建的模型的名称。在 `input-config` 字段中为 `ModelName` 定义此项。另外，请提供 `ContainerConfig` 字典，其中包括需要与模型名称一起提供的必填字段。在 `input-config` 字段中为 `ContainerConfig` 定义此项。在 `ContainerConfig` 中，您也可以选择将 `SupportedEndpointType` 字段指定为 `RealTime` 或 `Serverless`。如果您指定此字段，则 Inference Recommender 将仅返回该端点类型的推荐。如果您未指定此字段，则 Inference Recommender 将返回两种端点类型的推荐。
+ `job-name` 字段的 Inference Recommender 推荐作业的名称。推理推荐人任务名称在 AWS 区域内和您的 AWS 账户中必须是唯一的。

要使用模型包 ARN 创建推理推荐作业，请使用以下示例：

```
aws sagemaker create-inference-recommendations-job 
    --region {{<region>}}\
    --job-name {{<job_name>}}\
    --job-type Default\
    --role-arn arn:aws:iam::{{<account:role/*>}}\
    --input-config "{
        \"ModelPackageVersionArn\": \"arn:aws:sagemaker:{{<region:account:role/*>}}\",
        }"
```

要使用模型名称和 `ContainerConfig` 创建推理推荐作业，请使用以下示例。该示例使用 `SupportedEndpointType` 字段来指定我们只需返回实时推理推荐：

```
aws sagemaker create-inference-recommendations-job 
    --region {{<region>}}\
    --job-name {{<job_name>}}\
    --job-type Default\
    --role-arn arn:aws:iam::{{<account:role/*>}}\
    --input-config "{
        \"ModelName\": \"model-name\",
        \"ContainerConfig\" : {
                \"Domain\": \"COMPUTER_VISION\",
                \"Framework\": \"PYTORCH\",
                \"FrameworkVersion\": \"1.7.1\",
                \"NearestModelName\": \"resnet18\",
                \"PayloadConfig\": 
                    {
                        \"SamplePayloadUrl\": \"s3://{bucket}/{payload_s3_key}\", 
                        \"SupportedContentTypes\": [\"image/jpeg\"]
                    },
                \"SupportedEndpointType\": \"RealTime\",
                \"DataInputConfig\": \"[[1,3,256,256]]\",
                \"Task\": \"IMAGE_CLASSIFICATION\",
            },
        }"
```

------
#### [ Amazon SageMaker Studio Classic ]

在 Studio Classic 中创建实例推荐作业。

1. 在 Studio Classic 应用程序中，选择主页图标 (![](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png))。

1. 在 Studio Classic 的左侧边栏中，选择**模型**。

1. 从下拉列表中选择**模型注册表**可显示您已在模型注册表中注册的模型。

   左侧面板将显示模型组的列表。该列表包括您账户中已注册到模型注册表的所有模型组，包括在 Studio Classic 外部注册的模型。

1. 选择模型组的名称。选择模型组时，Studio Classic 的右窗格会显示列标题，例如**版本**和**设置**。

   如果您的模型组中有一个或多个模型包，您会在**版本**列中看到这些模型包的列表。

1. 选择 **Inference Recommender** 列。

1. 选择一个 IAM 角色来授予推理推荐者访问服务的 AWS 权限。您可以创建一个角色，并附加 `AmazonSageMakerFullAccess` IAM 托管策略来做到这一点。或者，可以让 Studio Classic 为您创建角色。

1. 选择**获得推荐**。

   推理推荐最多可能需要 45 分钟。
**警告**  
不要关闭此选项卡。如果关闭此选项卡，则取消实例推荐作业。

------
#### [ SageMaker AI console ]

通过执行以下操作，通过 SageMaker AI 控制台创建实例推荐任务：

1. 前往 SageMaker AI 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 在左侧导航窗格中，选择**推理**，然后选择 **Inference Recommender**。

1. 在 **Inference Recommender 作业**页面上，选择**创建作业**。

1. 对于**步骤 1：模型配置**，执行以下操作：

   1. 对于**作业类型**，选择**默认 Recommender 作业**。

   1. 如果您使用的是在 SageMaker AI 模型注册表中注册的模型，请打开**从模型注册表中选择模型**开关并执行以下操作：

      1. 从**模型组**下拉列表中，选择您的模型所在的 SageMaker AI 模型注册表中的模型组。

      1. 从**模型版本**下拉列表中，选择所需的模型版本。

   1. 如果您使用的是在 SageMaker AI 中创建的模型，请关闭**从模型注册表中选择模型开关**并执行以下操作：

      1. 在**模型名称**字段中，输入您的 SageMaker AI 模型的名称。

   1. 从 **IAM 角色**下拉列表中，您可以选择具有创建实例推荐任务所需权限的现有 AWS IAM 角色。或者，如果您没有现有角色，则可以选择**创建新角色以打开角色**创建弹出窗口，然后 SageMaker AI 会为您创建的新角色添加必要的权限。

   1. 对于**用于对负载进行基准测试的 S3 存储桶**，输入示例负载存档的 Amazon S3 路径，其中应包含示例负载文件，Inference Recommender 使用这些文件在不同的实例类型上对模型进行基准测试。

   1. 对于**负载内容类型**，输入示例负载数据的 MIME 类型。

   1. （可选）如果您关闭了**从模型注册表中选择模型开**关并指定了 A SageMaker I 模型，那么对于**容器配置**，请执行以下操作：

      1. 对于**域**下拉列表，选择模型的机器学习域，例如计算机视觉、自然语言处理或机器学习。

      1. 在 “**框架**” 下拉列表中，选择容器的框架，例如 TensorFlow 或 XGBoost。

      1. 对于**框架版本**，输入容器映像的框架版本。

      1. 对于**最近的模型名称**下拉列表，选择与您自己的模型最匹配的预训练的模型。

      1. 对于**任务**下拉列表，选择模型完成的机器学习任务，例如图像分类或回归。

   1. （可选）对于**使用 SageMaker Neo 进行模型编译**，您可以为使用 N SageMaker eo 编译的模型配置推荐作业。对于**数据输入配置**，使用类似于 `{'input':[1,1024,1024,3]}` 的格式为模型输入正确的输入数据形状。

   1. 选择**下一步**。

1. 对于**步骤 2：实例和环境参数**，请执行以下操作：

   1. （可选）对于**选择用于基准测试的实例**，您最多可以选择 8 种实例类型来进行基准测试。如果您未选择任何实例，则 Inference Recommender 将考虑所有实例类型。

   1. 选择**下一步**。

1. 对于**步骤 3：作业参数**，请执行以下操作：

   1. （可选）对于**作业名称**字段，输入您的实例推荐作业的名称。创建任务时， SageMaker AI 会在该名称的末尾附加一个时间戳。

   1. （可选）对于**作业描述**字段，输入作业的描述。

   1. （可选）在**加密密钥**下拉列表中，按名称选择 AWS KMS 密钥或输入其 ARN 来加密您的数据。

   1. （可选）对于**最长测试时间**，输入您希望每项测试运行的最长时间（以秒为单位）。

   1. （可选）对于**每分钟最大调用次数**，输入端点在停止推荐作业之前可达到的每分钟最大请求数。达到此限制后， SageMaker AI 将结束任务。

   1. （可选）对于 **P99 模型延迟阈值 (ms)**，输入模型延迟百分位数（以毫秒为单位）。

   1. 选择**下一步**。

1. 对于**步骤 4：查看作业**，请查看您的配置，然后选择**提交**。

------