Addestra un PyTorch modello - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Addestra un PyTorch modello

Questo argomento illustra il processo di addestramento di un PyTorch modello utilizzando HyperPod.

In questo scenario, formiamo un PyTorch modello utilizzando il hyp-pytorch-job modello, che semplifica la creazione di posti di lavoro esponendo i parametri di uso comune. Gli artefatti del modello verranno archiviati in un bucket S3 per un uso successivo nell'inferenza. Tuttavia, questo è facoltativo e puoi scegliere la posizione di archiviazione preferita.

Crea un lavoro di formazione

Puoi addestrare il modello utilizzando la CLI o Python SDK.

Utilizzo della CLI

Crea un processo di formazione con il seguente comando:

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

Spiegazione dei principali parametri richiesti:

  • --job-name: identificatore univoco per il tuo lavoro di formazione

  • --image: immagine Docker contenente l'ambiente di formazione

Questo comando avvia un processo di formazione denominatotest-pytorch-job. --output-s3-uriSpecificano dove verranno archiviati gli artefatti del modello addestrato, ad esempio. s3://my-bucket/model-artifacts Prendi nota di questa posizione, poiché ti servirà per distribuire il modello personalizzato.

Usare l'SDK Python

Per il controllo programmatico, usa l'SDK. Crea uno script Python per avviare lo stesso processo di formazione.

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

Monitora il tuo lavoro di formazione

Monitora l'avanzamento del tuo lavoro con questi comandi:

Utilizzo della 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

Nota: il tempo di formazione varia in base alla complessità del modello e al tipo di istanza. Monitora i log per tenere traccia dei progressi.

Questi comandi consentono di verificare lo stato del lavoro e risolvere i problemi. Una volta completato correttamente il lavoro, gli elementi del modello vengono salvati in. s3://my-bucket/model-artifacts

Usare l'SDK Python

Aggiungi il seguente codice al tuo script 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())

Passaggi successivi

Dopo l'addestramento, gli artefatti del modello vengono archiviati nel bucket S3 specificato (). s3://my-bucket/model-artifacts È possibile utilizzare questi artefatti per distribuire un modello. Attualmente, è necessario gestire manualmente la transizione dall'addestramento all'inferenza. Ciò comporta:

  • Individuazione degli artefatti: controlla il bucket S3 (s3://my-bucket/model-artifacts) per confermare che i file del modello addestrato siano presenti.

  • Registrazione del percorso: annota il percorso esatto di S3 (ad esempios3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz) da utilizzare nella configurazione dell'inferenza.

  • Riferimento durante la distribuzione: fornisci questo percorso S3 durante la configurazione dell'endpoint personalizzato per assicurarti che venga caricato il modello corretto.