本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
训练 PyTorch 模型
本主题将引导您完成使用训练 PyTorch 模型的过程 HyperPod。
在此场景中,让我们使用模板训练 PyTorch 模型,该hyp-pytorch-job
模板通过公开常用参数来简化就业创建。模型工件将存储在 S3 存储桶中,供以后用于推理。但是,这是可选的,您可以选择首选的存储位置。
创建训练作业
你可以使用 CLI 或 Python 软件开发工具包来训练模型。
使用 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 路径,以确保加载正确的模型。