本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
训练 PyTorch 模型
本主题将引导您完成使用训练 PyTorch 模型的过程 HyperPod。
在此场景中,让我们使用模板训练 PyTorch 模型,该hyp-pytorch-job模板通过公开常用参数来简化就业创建。模型构件将存储在 S3 存储桶中,以便后续用于推理。不过,此操作是可选的,您可以选择自己的首选存储位置。
创建训练作业
您可以使用 CLI 或 Python SDK 训练模型。
使用 CLI
使用以下命令创建训练作业:
hyp create hyp-pytorch-job \ --version 1.0 \ --job-name test-pytorch-job \ --image pytorch/pytorch:latest \ --command '["python", "train.py"]' \ --args '["--epochs", "10", "--batch-size", "32"]' \ --environment '{"PYTORCH_CUDA_ALLOC_CONF": "max_split_size_mb:32"}' \ --pull-policy "IfNotPresent" \ --instance-type ml.p4d.24xlarge \ --tasks-per-node 8 \ --label-selector '{"accelerator": "nvidia", "network": "efa"}' \ --deep-health-check-passed-nodes-only true \ --scheduler-type "kueue" \ --queue-name "training-queue" \ --priority "high" \ --max-retry 3 \ --volumes '["data-vol", "model-vol", "checkpoint-vol"]' \ --persistent-volume-claims '["shared-data-pvc", "model-registry-pvc"]' \ --output-s3-uri s3://my-bucket/model-artifacts
关键所需参数说明:
--job-name:训练作业的唯一标识符--image:包含训练环境的 Docker 映像
此命令启动一个名为 test-pytorch-job 的训练作业。--output-s3-uri 指定经过训练的模型构件的存储位置,例如 s3://my-bucket/model-artifacts。请记下此位置,因为您需要在此位置部署自定义模型。
使用 Python SDK
要通过编程方式进行控制,请使用 SDK。创建一个 Python 脚本来启动相同的训练作业。
from sagemaker.hyperpod import HyperPodPytorchJob from sagemaker.hyperpod.job import ReplicaSpec, Template, Spec, Container, Resources, RunPolicy, Metadata # Define job specifications nproc_per_node = "1" # Number of processes per node replica_specs = [ ReplicaSpec ( name = "pod", # Replica name template = Template ( spec = Spec ( containers = [ Container ( # Container name name="container-name", # Training image image="448049793756.dkr.ecr.us-west-2.amazonaws.com/ptjob:mnist", # Always pull image image_pull_policy="Always", resources=Resources\ ( # No GPUs requested requests={"nvidia.com/gpu": "0"}, # No GPU limit limits={"nvidia.com/gpu": "0"}, ), # Command to run command=["python", "train.py"], # Script arguments args=["--epochs", "10", "--batch-size", "32"], ) ] ) ), ) ] # Keep pods after completion run_policy = RunPolicy(clean_pod_policy="None") # Create and start the PyTorch job pytorch_job = HyperPodPytorchJob ( # Job name metadata = Metadata(name="demo"), # Processes per node nproc_per_node = nproc_per_node, # Replica specifications replica_specs = replica_specs, # Run policy run_policy = run_policy, # S3 location for artifacts output_s3_uri="s3://my-bucket/model-artifacts" ) # Launch the job pytorch_job.create()
监控训练作业
使用以下命令监控作业进度:
使用 CLI
# Check job status hyp list hyp-pytorch-job # Get detailed information hyp describe hyp-pytorch-job --job-name test-pytorch-job # View logs hyp get-logs hyp-pytorch-job \ --pod-name test-pytorch-job-pod-0 \ --job-name test-pytorch-job
注意:训练时间因模型复杂度和实例类型而异。监控日志以跟踪进度。
这些命令可帮助您验证任务的状态并排查问题。在作业成功完成后,模型构件将保存到 s3://my-bucket/model-artifacts。
使用 Python SDK
向 Python 脚本添加以下代码:
print("List all pods created for this job:") print(pytorch_job.list_pods()) print("Check the logs from pod0:") print(pytorch_job.get_logs_from_pod(pod_name="demo-pod-0")) print("List all HyperPodPytorchJobs:") print(HyperPodPytorchJob.list()) print("Describe job:") print(HyperPodPytorchJob.get(name="demo").model_dump()) pytorch_job.refresh() print(pytorch_job.status.model_dump())
后续步骤
训练完成后,模型构件将存储在您指定的 S3 存储桶(s3://my-bucket/model-artifacts)中。您可以使用这些构件来部署模型。目前,您必须手动管理从训练到推理的过渡过程。这涉及:
-
查找构件:检查 S3 存储桶(
s3://my-bucket/model-artifacts)以确认训练后的模型文件存在。 -
记录路径:记录确切的 S3 路径(例如
s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz),以便在推理设置中使用。 -
在部署中引用:配置自定义端点时提供此 S3 路径,以确保加载正确的模型。