

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
<a name="train-models-with-hyperpod"></a>

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
<a name="create-training-job"></a>

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)
<a name="using-cli"></a>

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
<a name="using-python-sdk"></a>

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
<a name="monitor-training-job"></a>

Surveillez la progression de votre tâche à l’aide des commandes suivantes :

### Utilisation de l’interface de ligne de commande (CLI)
<a name="monitor-cli"></a>

```
# 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
<a name="monitor-python-sdk"></a>

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
<a name="next-steps"></a>

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é.