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 modello PyTorch
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 vengono archiviati in un bucket S3 per essere utilizzati successivamente per l’inferenza. Tuttavia, questa impostazione è facoltativa, quindi puoi scegliere la tua posizione di archiviazione preferita.
Creazione di un job di addestramento
Puoi addestrare il modello utilizzando la CLI o Python SDK.
Utilizzo della CLI
Crea un job di addestramento con il comando seguente:
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 job di addestramento--image: immagine Docker che contiene l’ambiente di addestramento
Questo comando avvia un job di addestramento denominato test-pytorch-job. --output-s3-uri specifica dove vengono archiviati gli artefatti del modello addestrato, ad esempio s3://my-bucket/model-artifacts. Annota questa posizione, perché ti servirà per implementare il modello personalizzato.
Utilizzo di Python SDK
Per il controllo programmatico, utilizza l’SDK. Crea uno script Python per avviare lo stesso job di addestramento.
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()
Monitoraggio del job di addestramento
Monitora lo stato di avanzamento del processo 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: la durata dell’addestramento varia in base alla complessità del modello e al tipo di istanza. Monitora i log per tenere traccia dello stato di avanzamento.
Questi comandi consentono di verificare lo stato del processo e di risolvere i problemi. Una volta completato correttamente il processo, gli artefatti del modello vengono salvati in s3://my-bucket/model-artifacts.
Utilizzo di Python SDK
Aggiungi il codice seguente allo 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())
Fasi successive
Dopo l’addestramento, gli artefatti del modello vengono archiviati nel bucket S3 che hai specificato (s3://my-bucket/model-artifacts). Puoi utilizzare questi artefatti per implementare un modello. Attualmente, è necessario gestire manualmente la transizione dall’addestramento all’inferenza. Questa operazione prevede:
-
Individuazione degli artefatti: controlla il bucket S3 (
s3://my-bucket/model-artifacts) per verificare che i file del modello addestrato siano presenti. -
Registrazione del percorso: annota il percorso S3 esatto (ad esempio
s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz) da utilizzare nella configurazione dell’inferenza. -
Riferimento durante l’implementazione: inserisci questo percorso S3 nella configurazione dell’endpoint personalizzato per assicurarti che venga caricato il modello corretto.