

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

# 使用算法运行训练作业
<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.amazonaws.cn/sagemaker/)。

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

1. 从**我的算法**选项卡上的列表中选择您已创建的算法，或者在 **Amazon Web Services 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 使用 Amazon 密钥管理服务密钥对附加到训练实例的 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.amazonaws.cn/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.amazonaws.cn/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 使用 Amazon KMS 密钥对 S3 位置的静态输出数据进行加密。

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

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

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

要使用算法通过 SageMaker API 运行训练作业，请指定名称或 Amazon 资源名称 (ARN) 作为您传递给的[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_AlgorithmSpecification.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_AlgorithmSpecification.html)对象的`AlgorithmName`字段。[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.amazonaws.cn/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`值。 Amazon Web Services 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})
```