PyTorch 모델 훈련 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

PyTorch 모델 훈련

이 주제에서는 HyperPod를 사용하여 PyTorch 모델을 훈련하는 프로세스를 안내합니다.

이 시나리오에서는 일반적으로 사용되는 파라미터를 노출하여 작업 생성을 간소화하는 hyp-pytorch-job 템플릿을 사용하여 PyTorch 모델을 훈련해 보겠습니다. 모델 아티팩트는 나중에 추론에 사용할 수 있도록 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: 훈련 환경이 포함된 도커 이미지

이 명령은 라는 훈련 작업을 시작합니다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 경로를 제공합니다.