Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Entraînez un PyTorch mannequin
Cette rubrique explique le processus de formation d'un PyTorch modèle à l'aide de HyperPod.
Dans ce scénario, entraînons un PyTorch modèle à l'aide du hyp-pytorch-job
modèle, qui simplifie la création de tâches en exposant les paramètres couramment utilisés. Les artefacts du modèle seront stockés dans un compartiment S3 pour une utilisation ultérieure en inférence. Toutefois, cela est facultatif et vous pouvez choisir votre emplacement de stockage préféré.
Création d'un poste de formation
Vous pouvez entraîner le modèle à l'aide de la CLI ou du SDK Python.
Utilisation de l’ CLI
Créez une tâche de formation à l'aide de la commande suivante :
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
Principaux paramètres requis expliqués :
--job-name
: Identifiant unique pour votre tâche de formation--image
: image Docker contenant votre environnement d'entraînement
Cette commande lance une tâche de formation nomméetest-pytorch-job
. --output-s3-uri
Spécifie l'endroit où les artefacts du modèle entraîné seront stockés, par exemple,s3://my-bucket/model-artifacts
. Notez cet emplacement, car vous en aurez besoin pour déployer le modèle personnalisé.
Utilisation du SDK Python
Pour le contrôle programmatique, utilisez le SDK. Créez un script Python pour lancer la même tâche de formation.
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()
Surveillez votre travail de formation
Suivez la progression de votre tâche à l'aide des commandes suivantes :
Utilisation de l’ 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
Remarque : Le temps de formation varie en fonction de la complexité du modèle et du type d'instance. Surveillez les journaux pour suivre les progrès.
Ces commandes vous aident à vérifier l'état de la tâche et à résoudre les problèmes. Une fois le travail terminé avec succès, les artefacts du modèle sont enregistrés danss3://my-bucket/model-artifacts
.
Utilisation du SDK Python
Ajoutez le code suivant à votre 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())
Étapes suivantes
Après l'entraînement, les artefacts du modèle sont stockés dans le compartiment S3 que vous avez spécifié (s3://my-bucket/model-artifacts
). Vous pouvez utiliser ces artefacts pour déployer un modèle. À l'heure actuelle, vous devez gérer manuellement le passage de l'entraînement à l'inférence. Cela implique :
-
Localisation des artefacts : vérifiez le compartiment S3 (
s3://my-bucket/model-artifacts
) pour vérifier la présence des fichiers de modèles entraînés. -
Enregistrement du chemin : notez le chemin S3 exact (par exemple,
s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz
) à utiliser dans la configuration d'inférence. -
Référencement lors du déploiement : fournissez ce chemin S3 lors de la configuration du point de terminaison personnalisé pour vous assurer que le modèle correct est chargé.