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 dans le cadre de l’inférence. Toutefois, cela est facultatif et vous pouvez choisir votre emplacement de stockage préféré.
Création d’une tâche d’entraînement
Vous pouvez entraîner le modèle à l’aide de la CLI ou du kit SDK Python.
Utilisation de l’interface de ligne de commande (CLI)
Créez une tâche d’entraînement à 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 d’entraînement--image: image Docker contenant votre environnement d’entraînement
Cette commande lance une tâche d’entraînement nommée test-pytorch-job. L’élément --output-s3-uri spécifie l’emplacement 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 kit SDK Python
Pour le contrôle programmatique, utilisez le kit SDK. Créez un script Python pour lancer la même tâche d’entraînement.
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()
Surveillance de votre tâche d’entraînement
Surveillez la progression de votre tâche à l’aide des commandes suivantes :
Utilisation de l’interface de ligne de commande (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 : La durée d’entraînement 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 le statut de la tâche et à résoudre les problèmes. Une fois la tâche terminée avec succès, les artefacts du modèle sont enregistrés dans s3://my-bucket/model-artifacts.
Utilisation du kit SDK Python
Ajoutez le code suivant dans 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 vous assurer que les fichiers du modèle entraîné sont présents. -
Enregistrement du chemin : notez le chemin S3 exact (p. ex.,
s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz) à utiliser dans la configuration de l’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é.