Trainiere ein PyTorch Modell - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Trainiere ein PyTorch Modell

Dieses Thema führt Sie durch den Prozess des Trainings eines PyTorch Modells mithilfe von HyperPod.

In diesem Szenario trainieren wir ein PyTorch Modell anhand der hyp-pytorch-job Vorlage, die die Erstellung von Jobs vereinfacht, indem häufig verwendete Parameter verfügbar gemacht werden. Die Modellartefakte werden in einem S3-Bucket gespeichert, damit sie später als Inferenz verwendet werden können. Dies ist jedoch optional, und Sie können Ihren bevorzugten Speicherort wählen.

Erstellen Sie einen Schulungsjob

Sie können das Modell entweder mit der CLI oder dem Python-SDK trainieren.

Verwenden der CLI

Erstellen Sie einen Trainingsjob mit dem folgenden Befehl:

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

Die wichtigsten erforderlichen Parameter werden erklärt:

  • --job-name: Eindeutige Kennung für Ihren Ausbildungsjob

  • --image: Docker-Image, das Ihre Trainingsumgebung enthält

Dieser Befehl startet einen Trainingsjob mit dem Namentest-pytorch-job. Der --output-s3-uri gibt an, wo die trainierten Modellartefakte gespeichert werden, zum Beispiels3://my-bucket/model-artifacts. Notieren Sie sich diesen Speicherort, da Sie ihn für die Bereitstellung des benutzerdefinierten Modells benötigen.

Verwenden des Python-SDK

Verwenden Sie für die programmatische Steuerung das SDK. Erstellen Sie ein Python-Skript, um denselben Trainingsjob zu starten.

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()

Überwachen Sie Ihren Trainingsjob

Überwachen Sie den Fortschritt Ihres Jobs mit diesen Befehlen:

Verwenden der 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

Hinweis: Die Trainingszeit variiert je nach Modellkomplexität und Instanztyp. Überwachen Sie die Protokolle, um den Fortschritt zu verfolgen.

Mit diesen Befehlen können Sie den Status des Jobs überprüfen und Probleme beheben. Sobald der Job erfolgreich abgeschlossen wurde, werden die Modellartefakte unter gespeicherts3://my-bucket/model-artifacts.

Verwenden des Python-SDK

Fügen Sie Ihrem Python-Skript den folgenden Code hinzu:

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())

Nächste Schritte

Nach dem Training werden die Modellartefakte in dem von Ihnen angegebenen S3-Bucket gespeichert (s3://my-bucket/model-artifacts). Sie können diese Artefakte verwenden, um ein Modell bereitzustellen. Derzeit müssen Sie den Übergang vom Training zur Inferenz manuell verwalten. Das beinhaltet:

  • Artefakte lokalisieren: Überprüfen Sie den S3-Bucket (s3://my-bucket/model-artifacts), um sicherzustellen, dass die trainierten Modelldateien vorhanden sind.

  • Den Pfad aufzeichnen: Notieren Sie sich den genauen S3-Pfad (z. B.s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz), der im Inferenz-Setup verwendet werden soll.

  • Referenzierung bei der Bereitstellung: Geben Sie diesen S3-Pfad bei der Konfiguration des benutzerdefinierten Endpunkts an, um sicherzustellen, dass das richtige Modell geladen wird.