本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中提交服务作业 AWS Batch
要向提交服务任务 AWS Batch,请使用 SubmitServiceJobAPI。您可以使用 AWS CLI 或 SDK 提交作业。
如果您还没有执行角色,则必须首先创建一个,然后才能提交服务作业。要创建 SageMaker AI 执行角色,请参阅 SageMaker AI 开发者指南中的如何使用 SageMaker AI 执行角色。
服务作业提交工作流
提交服务任务时,请 AWS Batch 遵循以下工作流程:
-
AWS Batch 接收您的SubmitServiceJob请求并验证 AWS Batch特定参数。传递 serviceRequestPayload 但不进行验证。
-
作业进入 SUBMITTED 状态并放入指定的作业队列中
-
AWS Batch 评估服务环境中是否有可用容量用于排在RUNNABLE队列前面的作业
-
如果容量可用,则任务将移至SCHEDULED,任务已传递给 SageMaker AI
-
获得容量并且 SageMaker AI 下载了服务作业数据后,服务作业将开始初始化并将任务更改为STARTING。
-
当 SageMaker AI 开始执行任务时,其状态将更改为RUNNING。
-
当 SageMaker AI 执行任务时, AWS Batch 监控其进度并将服务状态映射到 AWS Batch 作业状态。有关如何映射服务作业状态的详细信息,请参阅将 AWS Batch 服务作业状态映射到 SageMaker AI 状态
当服务作业完成后,其状态将变为 SUCCEEDED 并且所有输出都可随时下载。
先决条件
提交服务作业之前,请确保您满足以下条件:
提交服务作业
下表显示了如何使用 SageMaker Python SDK 或 AWS CLI 提交服务作业:
- Submit using the SageMaker Python SDK
-
P SageMaker ython 开发工具包内置了向提交作业的支持 AWS Batch。以下示例说明如何创建模型训练器、创建训练队列和提交作业。有关完整示例,请参阅上的完整示例笔记本 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。
job = queue.submit(
training_job=model_trainer,
inputs=None,
)
- Submit using the AWS CLI
-
以下内容展示了如何使用 AWS
CLI 提交服务作业:
aws batch submit-service-job \
--job-name "my-sagemaker-training-job" \
--job-queue "my-sagemaker-job-queue" \
--service-job-type "SAGEMAKER_TRAINING" \
--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}}'
--client-token "unique-token-12345"
有关 serviceRequestPayload 参数的更多信息,请参阅 中的服务任务有效负载 AWS Batch。