

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

# 向配额共享提交作业
<a name="submit-job-quota-share"></a>

配额管理任务队列要求所有作业在提交作业时指定配额份额。要向配额共享提交作业，请在`quotaShareName`中指定[SubmitServiceJob](https://docs.amazonaws.cn/batch/latest/APIReference/API_SubmitServiceJob.html)。`preemptionConfiguration`可以选择提供 A 来限制在任务尝试进入之前的抢占尝试次数。`FAILED`要限制工作经历的抢占次数，请在提交工作时将其设置`preemptionRetriesBeforeTermination`[ServiceJobPreemptionConfiguration](https://docs.amazonaws.cn/batch/latest/APIReference/API_ServiceJobPreemptionConfiguration.html)在内。

## 先决条件
<a name="submit-job-quota-share-prerequisites"></a>

在向配额共享提交作业之前，请确保您已经：
+ **配额管理资源** — 为配额管理配置的调度策略、服务环境和作业队列。有关更多信息，请参阅 [创建配额管理资源](create-quota-management-resources.md)。
+ **配额份额**-在作业队列中创建的至少一个配额共享。有关更多信息，请参阅 [创建配额份额](create-quota-shares.md)。
+ **IAM 权限** — 向其提交任务的权限 Amazon Batch。有关更多信息，请参阅 [Amazon Batch IAM 策略、角色和权限](IAM_policies.md)。

## 向配额共享提交服务任务
<a name="submit-job-quota-share-example"></a>

下表显示了如何使用 SageMaker Python SDK 或 Amazon CLI 向配额共享提交服务任务：

------
#### [ Submit using the SageMaker Python SDK ]

[SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v3-examples/training-examples/aws_batch/sm-training-queues_quota-management.html) 内置支持向启用配额管理的作业队列提交作业。以下示例说明如何创建模型训练器、创建训练队列以及如何向配额共享提交作业。有关完整示例，请参阅上的[完整示例笔记本](https://github.com/aws/sagemaker-python-sdk/blob/master/v3-examples/training-examples/aws_batch/sm-training-queues_quota-management.ipynb) GitHub。

创建用于`ModelTrainer`定义训练作业配置的。

```
from sagemaker.train.model_trainer import ModelTrainer
from sagemaker.train.configs import SourceCode, Compute, StoppingCondition

source_code = SourceCode(command="echo 'Hello World'")

model_trainer = ModelTrainer(
    training_image={{"123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:2.5-gpu-py311"}},
    source_code=source_code,
    base_job_name={{"my-training-job"}},
    compute=Compute(instance_type={{"ml.g5.xlarge"}}, instance_count={{1}}),
    stopping_condition=StoppingCondition(max_runtime_in_seconds={{300}}),
)
```

创建一个按名称引用已启用配额管理的作业队列的`TrainingQueue`对象。

```
from sagemaker.train.aws_batch.training_queue import TrainingQueue

queue = TrainingQueue({{"my-sagemaker-job-queue"}})
```

通过调用`queue.submit`并指定，将任务提交给配额共享`quota_share_name`。您应该设置`priority`以影响配额份额内的任务顺序。现实世界`ModelTrainer`需要`inputs`这样才能有数据可以训练。

```
job = queue.submit(
    job_name={{"my-training-job"}},
    training_job=model_trainer,
    quota_share_name={{"my_quota_share"}},
    priority={{3}},
    inputs=None,
)
```

------
#### [ Submit using the Amazon CLI ]

以下示例使用**submit-service-job**命令向配额共享提交任务。

```
aws batch submit-service-job \
    --job-name {{"my-sagemaker-training-job"}} \
    --job-queue {{"my-sagemaker-job-queue"}} \
    --service-job-type "SAGEMAKER_TRAINING" \
    --quota-share-name {{"my_quota_share"}} \
    --timeout-config '{"attemptDurationSeconds":{{3600}}}' \
    --scheduling-priority {{5}} \
    --service-request-payload {{'{\"TrainingJobName\": \"sagemaker-training-job-example\", \"AlgorithmSpecification\": {\"TrainingImage\": \"123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.8.0-cpu-py3\", \"TrainingInputMode\": \"File\", \"ContainerEntrypoint\":  [\"sleep\", \"1\"]}, \"RoleArn\":\"arn:aws:iam::123456789012:role/SageMakerExecutionRole\", \"OutputDataConfig\": {\"S3OutputPath\": \"s3://example-bucket/model-output/\"}, \"ResourceConfig\": {\"InstanceType\": \"ml.m5.large\", \"InstanceCount\": 1, \"VolumeSizeInGB\": 1}}'}}"
```

------