

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

# 创建算法资源
<a name="sagemaker-mkt-create-algo"></a>

您可以在 Amazon A SageMaker I 中创建用于训练作业的算法资源，也可以将其发布到上 AWS Marketplace。以下各节说明了如何使用 AWS 管理控制台 和 SageMaker API 来实现此目的。

要创建算法资源，需要指定以下信息：
+ 包含训练和（可选）推理代码的 Docker 容器。
+ 您的算法预期用于训练的输入数据的配置。
+ 您的算法支持的超参数。
+ 您的算法 CloudWatch 在训练作业期间发送给 Amazon 的指标。
+ 您的算法支持的用于训练和推理的实例类型，以及它是否支持跨多个实例的分布式训练。
+ 验证配置文件，即 SageMaker AI 用来测试算法训练代码的训练作业，以及 SageMaker AI 为测试算法的推理代码而运行的批量转换作业。

  为了确保买家和卖家能够确信产品在 SageMaker 人工智能中运行，我们要求您在发布算法之前对其进行验证 AWS Marketplace。 AWS Marketplace 只有验证成功后，您才能在中发布商品。为了验证您的算法， SageMaker AI 使用您的验证配置文件和示例数据来运行以下验证任务：

  1. 在您的账户中创建训练作业，以验证您的训练图像是否适用于 A SageMaker I。

  1. 如果已在算法中包含推理代码，则使用算法的推理镜像以及训练作业所生成的模型构件在账户中创建模型。

  1. 如果您在算法中包含推理代码，请使用模型在您的账户中创建转换作业，以验证您的推理图像是否适用于 A SageMaker I。

  当您在上架商品时 AWS Marketplace，此验证过程的输入和输出将作为商品的一部分保留，并提供给买家。这有助于买家在购买产品前先了解和评估产品。例如，买家可以检查您使用的输入数据、生成的输出以及代码发出的日志和指标。验证规范越全面，客户就越容易评估您的产品。
**注意**  
在验证配置文件中，仅提供您希望公开的数据。

  验证可能需要几个小时。要查看您账户中任务的状态，请在 SageMaker AI 控制台中查看**训练作业**和**转换作业**页面。如果验证失败，则可以从 SageMaker AI 控制台访问扫描和验证报告。如果发现任何问题，您必须重新创建算法。
**注意**  
要在上发布算法 AWS Marketplace，至少需要一个验证配置文件。

您可以使用 SageMaker AI 控制台或 AI AP SageMaker I 创建算法。

**Topics**
+ [创建算法资源（控制台）](#sagemaker-mkt-create-algo-console)
+ [创建算法资源 (API)](#sagemaker-mkt-create-algo-api)

## 创建算法资源（控制台）
<a name="sagemaker-mkt-create-algo-console"></a>

**创建算法资源（控制台）**

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

1. 从左侧菜单中，选择**训练**。

1. 从下拉菜单中选择**算法**，然后选择**创建算法**。

1. 在 **Training specifications (训练规范)** 页面上，提供以下信息：

   1. 对于 **Algorithm name (算法名称)**，键入算法的名称。算法名称在您的账户和 AWS 区域中必须是唯一的。名称必须具有 1 到 64 个字符。有效字符为 a-z、A-Z、0-9 和 -（连字符）。

   1. 键入算法的描述。此描述显示在 SageMaker AI 控制台和中 AWS Marketplace。

   1. 对于**训练映像，请键入 Amazon ECR 中存储训练容器的路径。**

   1. 对于 **Support distributed training (支持分布式训练)**，如果您的算法支持在多个实例上进行训练，则选择 **Yes (是)**。否则，请选择 **No**。

   1. 对于 **Support instance types for training (支持训练的实例类型)**，选择您的算法支持的实例类型。

   1. 对于 **Channel specification (通道规范)**，为算法指定最多 8 个输入数据通道。例如，您可以指定 3 个输入通道，它们分别名为 `train`、`validation` 和 `test`。对于每个通道，可以指定以下信息：

      1. 对于 **Channel name (通道名称)**，键入通道的名称。名称必须具有 1 到 64 个字符。有效字符为 a-z、A-Z、0-9 和 -（连字符）。

      1. 要将您的算法设为需要通道，请选择 **Channel required (需要通道)**。

      1. 键入通道的说明。

      1. 对于 **Supported input modes (支持的输入模式)**，如果算法支持流式传输输入数据，则选择 **Pipe mode (管道模式)**；如果算法支持以文件形式下载输入数据，则选择 **File mode (文件模式)**。您可以选择二者。

      1. 对于 **Supported content types (支持的内容类型)**，键入算法预期用于输入数据的 MIME 类型。

      1. 对于 **Supported compression type (支持的压缩类型)**，如果算法支持 Gzip 压缩，则选择 **Gzip**。否则，选择 **None (无)**。

      1. 选择 **Add channel (添加通道)** 以添加另一个数据输入通道；如果您已添加完通道，则选择 **Next (下一步)**。

1. 在 **Tuning specifications (优化规范)** 页面上，提供以下信息：

   1. 对于 **Hyperparameter specification (超参数规范)**，通过编辑 JSON 对象来指定算法支持的超参数。对于算法支持的每个超参数，构造一个类似于以下内容的 JSON 块：

      ```
      {
      "DefaultValue": "5",
      "Description": "The first hyperparameter",
      "IsRequired": true,
      "IsTunable": false,
      "Name": "intRange",
      "Range": {
      "IntegerParameterRangeSpecification": {
      "MaxValue": "10",
      "MinValue": "1"
      },
      "Type": "Integer"
      }
      ```

      在 JSON 中，提供以下内容：

      1. 对于 `DefaultValue`，指定超参数的默认值（如果有）。

      1. 对于 `Description`，指定超参数的描述。

      1. 对于 `IsRequired`，指定是否需要超参数。

      1. 对于 `IsTunable`，如果在用户运行使用此算法的超参数优化作业时可以优化此超参数，则指定 `true`。有关信息，请参阅[使用 SageMaker AI 自动调整模型](automatic-model-tuning.md)。

      1. 对于 `Name`，指定超参数的名称。

      1. 对于 `Range`，指定下列项之一：
         + `IntegerParameterRangeSpecification` - 超参数的值为整数。指定超参数的最小值和最大值。
         + 
         + `ContinuousParameterRangeSpecification` - 超参数的值为浮点值。指定超参数的最小值和最大值。
         + `CategoricalParameterRangeSpecification` - 超参数的值为分类值。指定所有可能的值的列表。

      1. 对于 `Type`，指定 `Integer`、`Continuous` 或 `Categorical`。该值必须对应于您指定的 `Range` 类型。

   1. 对于**指标定义**，请指定您希望算法发出的任何训练指标。 SageMaker AI 使用您指定的正则表达式通过在训练期间解析训练容器中的日志来查找指标。当用户使用您的算法运行训练作业时，他们可以查看这些指标，并可以在 Amazon 中监控和绘制这些指标 CloudWatch。有关信息，请参阅[用于 CloudWatch 监控和分析训练作业的 Amazon 指标](training-metrics.md)。对于每个指标，提供以下信息：

      1. 对于 **Metric name (指标名称)**，键入指标的名称。

      1. 对于`Regex`，键入 SageMaker AI 用来解析训练日志的正则表达式，以便它可以找到指标值。

      1. 对于 **Objective metric support (目标指标支持)**，如果此指标可用作超参数优化作业的目标指标，则选择 **Yes (是)**。有关信息，请参阅[使用 SageMaker AI 自动调整模型](automatic-model-tuning.md)。

      1. 选择 **Add metric (添加指标)** 以添加另一个指标；如果您已添加完指标，则选择 **Next (下一步)**。

1. 在 **Inference specifications (推理规范)** 页面上，如果算法支持推理，则提供以下信息：

   1. 对于**推理映像的位置**，请键入 Amazon ECR 中存储推理容器的路径。

   1. 对于 **Container DNS host name (容器 DNS 主机名)**，键入镜像的 DNS 主机名。

   1. 对于**支持用于实时推理的实例类型**，请为在 SageMaker AI 中作为托管终端节点部署的模型选择您的算法支持的实例类型。有关信息，请参阅[部署模型用于推理](deploy-model.md)。

   1. 对于 **Supported instance types for batch transform jobs (支持的批量转换作业实例类型)**，选择算法支持的用于批量转换作业的实例类型。有关信息，请参阅[使用 Amazon A SageMaker I 进行批量转换以进行推理](batch-transform.md)。

   1. 对于 **Supported content types (支持的内容类型)**，键入算法预期用于推理请求的输入数据的类型。

   1. 对于 **Supported response MIME types (支持的响应 MIME 类型)**，键入算法支持的推理响应的 MIME 类型。

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

1. 在 **Validation specifications (验证规范)** 页面上，提供以下信息：

   1. 对于 “**发布此算法**” AWS Marketplace，选择 “**是**” 以发布算法 AWS Marketplace。

   1. 对于 “**验证此资源**”，如果您希望 SageMaker AI 运行您的算法的训练作业and/or batch transform jobs that you specify to test the training and/or推理代码，请选择 “**是**”。
**注意**  
要在上发布您的算法 AWS Marketplace，必须对您的算法进行验证。

   1. 对于 **IAM 角色**，请选择具有在 A SageMaker I 中运行训练作业和批量转换任务所需权限的 IAM 角色，或者选择**创建新角色**以允许 SageMaker AI 创建附加了`AmazonSageMakerFullAccess`托管策略的角色。有关信息，请参阅 [如何使用 SageMaker AI 执行角色](sagemaker-roles.md)。

   1. 对于 **Validation profile (验证配置文件)**，请指定以下内容：
      + 验证配置文件的名称。
      + **Training job definition (训练作业定义)**。这是一个描述训练作业的 JSON 数据块。其格式与 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html) API 的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html) 输入参数的格式相同。
      + **Transform job definition (转换作业定义)**。这是一个描述批量转换作业的 JSON 数据块。其格式与 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html) API 的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformJobDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformJobDefinition.html) 输入参数的格式相同。

   1. 选择**创建算法**。

## 创建算法资源 (API)
<a name="sagemaker-mkt-create-algo-api"></a>

要使用 SageMaker API 创建算法资源，请调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html)API。