

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

# 使用算法和模型包资源
<a name="sagemaker-mkt-buy"></a>

您可以在 Amazon SageMaker AI 账户中创建算法和模型包作为资源，也可以在 AWS Marketplace 上查找和订阅算法和模型包。

使用算法可以：
+ 运行训练作业。有关信息，请参阅[使用算法运行训练作业](sagemaker-mkt-algo-train.md)。
+ 运行超参数优化作业。有关信息，请参阅[使用算法运行超参数优化作业](sagemaker-mkt-algo-tune.md)。
+ 创建模型包。在使用算法资源运行训练作业或超参数优化作业后，可以使用算法和这些作业输出的模型构件来创建模型包。有关信息，请参阅[创建模型包资源](sagemaker-mkt-create-model-package.md)。
**注意**  
如果您在 AWS Marketplace 上订阅算法，则必须先创建模型包，然后才能通过创建托管终端节点或运行批量转换作业来使用它获取推理结果。

![\[市场买家工作流程。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/mkt-buyer-workflow.png)


使用模型包可以：
+ 创建可用于获取实时推理或运行批量转换作业的模型。有关信息，请参阅[使用模型包创建模型](sagemaker-mkt-model-pkg-model.md)。
+ 创建托管终端节点以获取实时推理。有关信息，请参阅[将模型部署到 SageMaker AI 托管服务](ex1-model-deployment.md#ex1-deploy-model)。
+ 创建批量转换作业。有关信息，请参阅[（可选）利用批量转换进行预测](ex1-model-deployment.md#ex1-batch-transform)。

**Topics**
+ [使用算法运行训练作业](sagemaker-mkt-algo-train.md)
+ [使用算法运行超参数优化作业](sagemaker-mkt-algo-tune.md)
+ [使用模型包创建模型](sagemaker-mkt-model-pkg-model.md)

# 使用算法运行训练作业
<a name="sagemaker-mkt-algo-train"></a>

您可以使用 Amazon AI 控制台、低级亚马逊 SageMaker API 或 Amazon SageMaker [ SageMaker Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)创建使用算法资源来创建训练作业。

**注意**  
您的执行角色必须拥有您指定的算法资源的`sagemaker:DescribeAlgorithm`权限。有关执行角色权限的更多信息，请参阅[CreateTrainingJob API：执行角色权限](sagemaker-roles.md#sagemaker-roles-createtrainingjob-perms)。

**Topics**
+ [使用算法运行训练作业（控制台）](#sagemaker-mkt-algo-train-console)
+ [使用算法运行训练作业 (API)](#sagemaker-mkt-algo-train-api)
+ [使用算法运行训练作业（[亚马逊 SageMaker Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)）](#sagemaker-mkt-algo-train-sdk)

## 使用算法运行训练作业（控制台）
<a name="sagemaker-mkt-algo-train-console"></a>

**使用算法运行训练作业（控制台）**

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

1. 选择 **Algorithms (算法)**。

1. 从**我的算法**选项卡上的列表中选择您已创建的算法，或者在 **AWS Marketplace 订阅**选项卡上选择已订阅的算法。

1. 选择 **Create training job (创建训练作业)**。

   将自动选择您选定的算法。

1. 在 **Create training job (创建训练作业)** 页面上，提供以下信息：

   1. 对于 **Job name (作业名称)**，请为训练作业键入名称。

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

   1. 对于 **Resource configuration (资源配置)**，提供以下信息：

      1. 对于 **Instance type (实例类型)**，选择要用于训练的实例类型。

      1. 对于 **Instance count (实例计数)**，键入要用于训练作业的 ML 实例的数目。

      1. 对于 **Additional volume per instance (GB) (每个实例的附加卷 (GB))**，键入要预配置的 ML 存储卷的大小。ML 存储卷存储模型构件和增量状态。

      1. 对于**加密密钥**，如果您希望 Amazon SageMaker AI 使用 AWS 密钥管理服务密钥对附加到训练实例的 ML 存储卷中的数据进行加密，请指定密钥。

      1. 对于 **Stopping condition (停止条件)**，请指定希望训练作业运行的最长时间（以秒、分钟、小时或天为单位）。

   1. 对于 **VPC**，选择您希望允许训练容器访问的 Amazon VPC。有关更多信息，请参阅 [让 SageMaker AI 训练作业访问您的 Amazon VPC 中的资源](train-vpc.md)。

   1. 对于 **Hyperparameters (超参数)**，请指定要用于训练作业的超参数的值。

   1. 对于 **Input data configuration (输入数据配置)**，请指定要用于训练作业的每个输入数据通道的以下值。在算法的**算法摘要**页面中，您可在**通道规范**部分下查看用于训练的算法支持哪些通道，以及每个通道的内容类型、支持的压缩类型和支持的输入模式。

      1. 对于 **Channel name (通道名称)**，键入输入通道的名称。

      1. 对于 **Content type (内容类型)**，键入算法预期用于通道的数据的内容类型。

      1. 对于 **Compression type (压缩类型)**，选择要使用的数据压缩类型（如果有）。

      1. 对于 **Record wrapper (记录包装程序)**，如果算法需要 `RecordIO` 格式的数据，则选择 `RecordIO`。

      1. 对于 **S3 data type (S3 数据类型)**、**S3 data distribution type (S3 数据分布类型)** 和 **S3 location (S3 位置)**，请指定适当的值。有关这些值的含义的信息，请参阅[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)。

      1. 对于 **Input mode (输入模式)**，选择 **File (文件)** 以将数据下载到预配置的 ML 存储卷，并将目录挂载到 Docker 卷。选择 **Pipe (管道)** 以直接从 Amazon S3 将数据流式传输到容器。

      1. 要添加另一个输入通道，请选择 **Add channel (添加通道)**。如果已添加完输入通道，请选择 **Done (完成)**。

   1. 对于 **Output (输出)** 位置，请指定以下值：

      1. 对于 **S3 output path (S3 输出路径)**，请选择训练作业将输出（例如模型构件）存储到的 S3 位置。
**注意**  
您可以使用存储在此位置的模型构件来从该训练作业创建模型或模型包。

      1. 对于**加密密钥**，如果您希望 SageMaker AI 使用 AWS KMS 密钥对 S3 位置的静态输出数据进行加密。

   1. 对于 **Tags (标签)**，请指定一个或多个标签来管理训练作业。每个标签都由一个键和一个可选值组成。每个资源的标签键必须是唯一的。

   1. 选择 **Create training job (创建训练作业)** 以运行训练作业。

## 使用算法运行训练作业 (API)
<a name="sagemaker-mkt-algo-train-api"></a>

要使用算法通过 SageMaker API 运行训练作业，请指定名称或 Amazon 资源名称 (ARN) 作为您传递给的[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html)对象的`AlgorithmName`字段。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)有关在 SageMaker AI 中训练模型的信息，请参阅[使用 Amazon 训练模型 SageMaker](how-it-works-training.md)。

## 使用算法运行训练作业（[亚马逊 SageMaker Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)）
<a name="sagemaker-mkt-algo-train-sdk"></a>

使用您创建或订阅的算法创建训练作业，创建`AlgorithmEstimator`对象并指定 Amazon 资源名称 (ARN) 或算法名称作为参数的`algorithm_arn`值。 AWS Marketplace 然后，调用评估程序的 `fit` 方法。例如：

```
from sagemaker import AlgorithmEstimator
data_path = os.path.join(DATA_DIR, 'marketplace', 'training')

algo = AlgorithmEstimator(
algorithm_arn='arn:aws:sagemaker:us-east-2:012345678901:algorithm/my-algorithm',
        role='SageMakerRole',
        instance_count=1,
        instance_type='ml.c4.xlarge',
        sagemaker_session=sagemaker_session,
        base_job_name='test-marketplace')

train_input = algo.sagemaker_session.upload_data(
path=data_path, key_prefix='integ-test-data/marketplace/train')

algo.fit({'training': train_input})
```

# 使用算法运行超参数优化作业
<a name="sagemaker-mkt-algo-tune"></a>

以下部分介绍如何使用算法资源在 Amazon A SageMaker I 中运行超参数调整任务。超参数优化作业通过使用您指定的算法和超参数范围在数据集上运行很多训练作业来查找模型的最佳版本。然后，它会选择超参数值来生成性能最佳的模型（按所选指标衡量）。有关更多信息，请参阅 [使用 SageMaker AI 自动调整模型](automatic-model-tuning.md)。

您可以使用 Amazon AI 控制台、低级亚马逊 SageMaker API 或 Amazon SageMaker [Pyth SageMaker on](https://sagemaker.readthedocs.io/en/stable) 软件开发工具包创建使用算法资源来创建超参数调整任务。

**Topics**
+ [使用算法运行超参数优化作业（控制台）](#sagemaker-mkt-algo-tune-console)
+ [使用算法运行超参数优化作业 (API)](#sagemaker-mkt-algo-tune-api)
+ [使用算法运行超参数调优作业（[Amaz SageMaker on Python SDK](https://sagemaker.readthedocs.io/en/stable)）](#sagemaker-mkt-algo-tune-sdk)

## 使用算法运行超参数优化作业（控制台）
<a name="sagemaker-mkt-algo-tune-console"></a>

**使用算法运行超参数优化作业（控制台）**

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

1. 选择 **Algorithms (算法)**。

1. 从**我的算法**选项卡上的列表中选择您已创建的算法，或者在 **AWS Marketplace 订阅**选项卡上选择已订阅的算法。

1. 选择 **Create hyperparameter tuning job (创建超参数优化作业)**。

   将自动选择您选定的算法。

1. 在 **Create hyperparameter tuning job (创建超参数优化作业)** 页面上，提供以下信息：

   1. 对于 **Warm start (热启动)**，选择 **Enable warm start (启用热启动)** 以使用来自之前的超参数优化作业的信息作为此超参数优化作业的起点。有关更多信息，请参阅 [运行热启动超参数调优作业](automatic-model-tuning-warm-start.md)。

      1. 选择 **Identical data and algorithm (相同的数据和算法)**（如果您的输入数据与此超参数优化作业的父作业的输入数据相同），或选择 **Transfer learning (迁移学习)** 以将附加或其他输入数据用于此超参数优化作业。

      1. 对于 **Parent hyperparameter tuning job(s) (父超参数优化作业)**，请选择最多 5 个超参数优化作业以用作此超参数优化作业的父作业。

   1. 对于 **Hyperparameter tuning job name (超参数优化作业名称)**，请键入优化作业的名称。

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

   1. 对于 **VPC**，请选择您希望调整作业启动的训练作业所能访问的 Amazon VPC。有关更多信息，请参阅 [让 SageMaker AI 训练作业访问您的 Amazon VPC 中的资源](train-vpc.md)。

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

   1. 对于 **Objective metric (目标指标)**，选择超参数优化作业用于确定超参数的最佳组合的指标，并选择是最小化该指标还是最大化该指标。有关更多信息，请参阅 [查看最佳训练作业](automatic-model-tuning-ex-tuning-job.md#automatic-model-tuning-best-training-job)。

   1. 对于 **Hyperparameter configuration (超参数配置)**，选择希望优化作业搜索的可优化超参数的范围，并为要在超参数优化作业启动的所有训练作业中保持不变的超参数设置静态值。有关更多信息，请参阅 [定义超参数范围](automatic-model-tuning-define-ranges.md)。

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

   1. 对于 **Input data configuration (输入数据配置)**，请指定要用于超参数优化作业的每个输入数据通道的以下值。在算法的**算法摘要**页面中，您可在**通道规范**部分下查看用于超参数调整的算法支持哪些通道，以及每个通道的内容类型、支持的压缩类型和支持的输入模式。

      1. 对于 **Channel name (通道名称)**，键入输入通道的名称。

      1. 对于 **Content type (内容类型)**，键入算法预期用于通道的数据的内容类型。

      1. 对于 **Compression type (压缩类型)**，选择要使用的数据压缩类型（如果有）。

      1. 对于 **Record wrapper (记录包装程序)**，如果算法需要 `RecordIO` 格式的数据，则选择 `RecordIO`。

      1. 对于 **S3 data type (S3 数据类型)**、**S3 data distribution type (S3 数据分布类型)** 和 **S3 location (S3 位置)**，请指定适当的值。有关这些值的含义的信息，请参阅[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)。

      1. 对于 **Input mode (输入模式)**，选择 **File (文件)** 以将数据下载到预配置的 ML 存储卷，并将目录挂载到 Docker 卷。选择 **Pipe (管道)** 以直接从 Amazon S3 将数据流式传输到容器。

      1. 要添加另一个输入通道，请选择 **Add channel (添加通道)**。如果已添加完输入通道，请选择 **Done (完成)**。

   1. 对于 **Output (输出)** 位置，请指定以下值：

      1. 对于 **S3 output path (S3 输出路径)**，请选择此超参数优化作业启动的训练作业将输出（例如模型构件）存储到的 S3 位置。
**注意**  
您可以使用存储在此位置的模型构件来从该超参数优化作业创建模型或模型包。

      1. 对于**加密密钥**，如果您希望 SageMaker AI 使用 AWS KMS 密钥对 S3 位置的静态输出数据进行加密。

   1. 对于 **Resource configuration (资源配置)**，提供以下信息：

      1. 对于 **Instance type (实例类型)**，选择要用于超参数优化作业启动的每个训练作业的实例类型。

      1. 对于 **Instance count (实例计数)**，键入要用于超参数优化作业启动的每个训练作业的 ML 实例的数目。

      1. 对于 **Additional volume per instance (GB) (每个实例的附加卷 (GB))**，键入预配置超参数优化作业启动的每个训练作业所需的 ML 存储卷的大小。ML 存储卷存储模型构件和增量状态。

      1. 对于**加密密钥**，如果您希望 Amazon SageMaker AI 使用 AWS 密钥管理服务密钥对附加到训练实例的 ML 存储卷中的数据进行加密，请指定密钥。

   1. 对于 **Resource limits (资源限制)**，提供以下信息：

      1. 对于 **Maximum training jobs (最大训练作业数)**，请指定您希望超参数优化作业启动的训练作业的最大数目。超参数优化作业最多可启动 500 个训练作业。

      1. 对于 **Maximum parallel training jobs (最大并行训练作业数)**，请指定超参数优化作业可启动的并发训练作业的最大数目。超参数优化作业最多可启动 10 个并发训练作业。

      1. 对于 **Stopping condition (停止条件)**，请指定您希望超参数优化作业启动的每个训练作业运行的最长时间（以秒、分钟、小时或天为单位）。

   1. 对于 **Tags (标签)**，请指定一个或多个标签来管理超参数优化作业。每个标签都由一个键和一个可选值组成。每个资源的标签键必须是唯一的。

   1. 选择 **Create jobs (创建作业)** 以运行超参数优化作业。

## 使用算法运行超参数优化作业 (API)
<a name="sagemaker-mkt-algo-tune-api"></a>

要使用算法通过 SageMaker API 运行超参数调整任务，请将算法的名称或 Amazon 资源名称 (ARN) 指定为传递`AlgorithmName`给的对象[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html)的字段。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)有关 SageMaker AI 中超参数调整的信息，请参阅[使用 SageMaker AI 自动调整模型](automatic-model-tuning.md)。

## 使用算法运行超参数调优作业（[Amaz SageMaker on Python SDK](https://sagemaker.readthedocs.io/en/stable)）
<a name="sagemaker-mkt-algo-tune-sdk"></a>

使用您创建或订阅的算法创建超参数调整任务，创建`AlgorithmEstimator`对象并指定 Amazon 资源名称 (ARN) 或算法名称作为参数的值。 AWS Marketplace `algorithm_arn`然后，使用您创建的 `AlgorithmEstimator` 作为 `estimator` 参数的值来初始化 `HyperparameterTuner` 对象。最后，调用 `AlgorithmEstimator` 的 `fit` 方法。例如：

```
from sagemaker import AlgorithmEstimator
from sagemaker.tuner import HyperparameterTuner

data_path = os.path.join(DATA_DIR, 'marketplace', 'training')

algo = AlgorithmEstimator(
            algorithm_arn='arn:aws:sagemaker:us-east-2:764419575721:algorithm/scikit-decision-trees-1542410022',
            role='SageMakerRole',
            instance_count=1,
            instance_type='ml.c4.xlarge',
            sagemaker_session=sagemaker_session,
            base_job_name='test-marketplace')

train_input = algo.sagemaker_session.upload_data(
    path=data_path, key_prefix='integ-test-data/marketplace/train')

algo.set_hyperparameters(max_leaf_nodes=10)
tuner = HyperparameterTuner(estimator=algo, base_tuning_job_name='some-name',
                                objective_metric_name='validation:accuracy',
                                hyperparameter_ranges=hyperparameter_ranges,
                                max_jobs=2, max_parallel_jobs=2)

tuner.fit({'training': train_input}, include_cls_metadata=False)
tuner.wait()
```

# 使用模型包创建模型
<a name="sagemaker-mkt-model-pkg-model"></a>

使用模型包创建可部署模型，您可以使用该模型通过创建托管终端节点获取实时推理或运行批量转换作业。您可以使用亚马逊 AI 控制台、低级 SageMaker API 或亚马逊 SageMaker [Pyth SageMaker on](https://sagemaker.readthedocs.io/en/stable) 软件开发工具包创建可部署模型。

**Topics**
+ [使用模型包创建模型（控制台）](#sagemaker-mkt-model-pkg-model-console)
+ [使用模型包创建模型 (API)](#sagemaker-mkt-model-pkg-model-api)
+ [使用模型包创建模型（[亚马逊 SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)）](#sagemaker-mkt-model-pkg-model-sdk)

## 使用模型包创建模型（控制台）
<a name="sagemaker-mkt-model-pkg-model-console"></a>

**从模型包中创建可部署的模型（控制台）**

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

1. 选择 **Model packages (模型包)**。

1. 从**我的模型包**选项卡上的列表中选择您已创建的模型包，或者在 **AWS Marketplace 订阅**选项卡上选择您已订阅的模型包。

1. 选择**创建模型**。

1. 对于 **Model name (模型名称)**，键入模型的名称。

1. 对于 **IAM 角色**，请选择具有代表您调用其他服务所需权限的 IAM 角色，或者选择**创建新角色**以允许 SageMaker AI 创建附加了`AmazonSageMakerFullAccess`托管策略的角色。有关信息，请参阅[如何使用 SageMaker AI 执行角色](sagemaker-roles.md)。

1. 对于 **VPC**，选择您希望允许模型访问的 Amazon VPC。有关更多信息，请参阅 [让 SageMaker AI 托管的终端节点访问您的 Amazon VPC 中的资源](host-vpc.md)。

1. 保留 **Container input options (容器输入选项)** 和 **Choose model package (选择模型包)** 的默认值。

1. 对于环境变量，提供要传递给模型容器的环境变量的名称和值。

1. 对于 **Tags (标签)**，请指定一个或多个标签来管理模型。每个标签都由一个键和一个可选值组成。每个资源的标签键必须是唯一的。

1. 选择**创建模型**。

创建可部署模型后，您可以使用它来设置实时推理的终端节点，或创建批量转换作业来获取对整个数据集的推理。有关在 SageMaker AI 中托管终端节点的信息，请参阅[部署用于推理的模型](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)。

## 使用模型包创建模型 (API)
<a name="sagemaker-mkt-model-pkg-model-api"></a>

要使用模型包通过 SageMaker API 创建可部署模型，请将模型包的名称或 Amazon 资源名称 (ARN) 指定为`ModelPackageName`传递给 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html)的对象的字段。

创建可部署模型后，您可以使用它来设置实时推理的终端节点，或创建批量转换作业来获取对整个数据集的推理。有关 SageMaker AI 中托管终端节点的信息，请参阅[部署模型进行推理](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)。

## 使用模型包创建模型（[亚马逊 SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)）
<a name="sagemaker-mkt-model-pkg-model-sdk"></a>

要使用模型包通过 SageMaker AI Python SDK 创建可部署模型，请初始化`ModelPackage`对象，然后将模型包的 Amazon 资源名称 (ARN) 作为`model_package_arn`参数传递。例如：

```
from sagemaker import ModelPackage
model = ModelPackage(role='SageMakerRole',
         model_package_arn='training-job-scikit-decision-trees-1542660466-6f92',
         sagemaker_session=sagemaker_session)
```

创建可部署模型后，您可以使用它来设置实时推理的终端节点，或创建批量转换作业来获取对整个数据集的推理。有关在 SageMaker AI 中托管终端节点的信息，请参阅[部署用于推理的模型](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)。