

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

# 使用 API、、 AWS CLI SageMaker SDK 创建训练作业
<a name="use-training-plan-for-training-jobs-using-api-cli-sdk"></a>

要将 SageMaker 训练计划用于您的 SageMaker 训练作业，请在调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)API 操作`ResourceConfig`时在中指定所需计划的`TrainingPlanArn`参数。对于每个作业，您只能使用一个计划。

**重要**  
`CreateTrainingJob` 请求的 `ResourceConfig` 部分中设置的 `InstanceType` 字段必须与训练计划的 `InstanceType` 匹配。

## 使用 CLI 对计划运行训练作业
<a name="training-job-cli"></a>

以下示例演示如何使用`create-training-job` AWS CLI 命令中的`TrainingPlanArn`属性创建 SageMaker 训练作业并将其与提供的训练计划相关联。

有关如何使用 AWS CLI [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)命令创建训练作业的更多信息，请参阅[https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-training-job.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-training-job.html)。

```
# Create a training job
aws sagemaker create-training-job \
  --training-job-name training-job-name \
  ...
    
  --resource-config '{
        "InstanceType": "ml.p5.48xlarge",
        "InstanceCount": 8,
        "VolumeSizeInGB": 10,
        "TrainingPlanArn": "training-plan-arn"
        }
    }' \
    ...
```

此 AWS CLI 示例命令在 SageMaker AI 中创建一个新的训练作业，并在`--resource-config`参数中传递训练计划。

```
aws sagemaker create-training-job \
  --training-job-name job-name \
  --role-arn arn:aws:iam::111122223333:role/DataAndAPIAccessRole \
  --algorithm-specification '{"TrainingInputMode": "File","TrainingImage": "111122223333.dkr.ecr.us-east-1.amazonaws.com/algo-image:tag", "ContainerArguments": [" "]}' \
  --input-data-config '[{"ChannelName":"training","DataSource":{"S3DataSource":{"S3DataType":"S3Prefix","S3Uri":"s3://bucketname/input","S3DataDistributionType":"ShardedByS3Key"}}}]' \
  --output-data-config '{"S3OutputPath": "s3://bucketname/output"}' \
  --resource-config '{"VolumeSizeInGB":10,"InstanceCount":4,"InstanceType":"ml.p5.48xlarge", "TrainingPlanArn" : "arn:aws:sagemaker:us-east-1:111122223333:training-plan/plan-name"}' \
  --stopping-condition '{"MaxRuntimeInSeconds": 1800}' \
  --region us-east-1
```

创建训练作业后，您可以通过调用 `DescribeTrainingJob` API 来验证该作业是否已正确分配给训练计划。

```
aws sagemaker describe-training-job --training-job-name training-job-name
```

## 使用 SageMaker AI Python 软件开发工具包根据计划运行训练作业
<a name="training-job-sdk"></a>

或者，您可以使用 [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) 创建与训练计划关联的训练作业。

如果您 JupyterLab 在 Studio 中使用 SageMaker Python SDK 创建训练作业，请确保运行 JupyterLab应用程序的空间使用的执行角色具有使用 SageMaker 训练计划所需的权限。要了解使用 SageMaker 培训计划所需的权限，请参阅[用于 SageMaker 培训计划的 IAM](training-plan-iam-permissions.md)。

以下示例演示了在使用 SageMaker Python SDK 时如何使用`Estimator`对象中的`training_plan`属性创建 SageMaker 训练作业并将其与提供的训练计划关联起来。

有关 SageMaker 估算器的更多信息，请参阅[使用 SageMaker 估算器运行训练作](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html)业。

```
import sagemaker
import boto3
from sagemaker import get_execution_role
from sagemaker.estimator import Estimator
from sagemaker.inputs import TrainingInput

# Set up the session and SageMaker client
session = boto3.Session()
region = session.region_name
sagemaker_session = session.client('sagemaker')

# Get the execution role for the training job
role = get_execution_role()

# Define the input data configuration
trainingInput = TrainingInput(
    s3_data='s3://input-path',
    distribution='ShardedByS3Key',
    s3_data_type='S3Prefix'
)

estimator = Estimator(
    entry_point='train.py',
    image_uri="123456789123.dkr.ecr.{}.amazonaws.com/image:tag",
    role=role,
    instance_count=4,
    instance_type='ml.p5.48xlarge',
    training_plan="training-plan-arn",
    volume_size=20,
    max_run=3600,
    sagemaker_session=sagemaker_session,
    output_path="s3://output-path"
)

# Create the training job
estimator.fit(inputs=trainingInput, job_name=job_name)
```

创建训练作业后，您可以通过调用 `DescribeTrainingJob` API 来验证该作业是否已正确分配给训练计划。

```
# Check job details
sagemaker_session.describe_training_job(TrainingJobName=job_name)
```