

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Trainiere ein PyTorch Modell
<a name="train-models-with-hyperpod"></a>

Dieses Thema führt Sie durch den Prozess des Trainings eines PyTorch Modells mit HyperPod.

In diesem Szenario trainieren wir ein PyTorch Modell anhand der `hyp-pytorch-job` Vorlage, die die Erstellung von Jobs vereinfacht, indem häufig verwendete Parameter verfügbar gemacht werden. Die Modellartefakte werden in einem S3-Bucket gespeichert, um sie später als Inferenz zu verwenden. Dies ist jedoch optional, und Sie können Ihren bevorzugten Speicherort wählen.

## Erstellen eines Trainingsjobs
<a name="create-training-job"></a>

Sie können das Modell entweder mit der CLI oder dem Python-SDK trainieren.

### Verwenden der -CLI
<a name="using-cli"></a>

Erstellen Sie einen Trainingsjob mit dem folgenden Befehl:

```
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
```

**Die wichtigsten erforderlichen Parameter werden erklärt**:
+ `--job-name`: Eindeutige Kennung für Ihren Ausbildungsjob
+ `--image`: Docker-Image, das Ihre Trainingsumgebung enthält

Dieser Befehl startet einen Trainingsjob mit dem Namen`test-pytorch-job`. Der `--output-s3-uri` gibt an, wo die trainierten Modellartefakte gespeichert werden, zum Beispiel`s3://my-bucket/model-artifacts`. Notieren Sie sich diesen Speicherort, da Sie ihn für die Bereitstellung des benutzerdefinierten Modells benötigen.

### Verwenden des Python SDK
<a name="using-python-sdk"></a>

Verwenden Sie für die programmgesteuerte Steuerung das SDK. Erstellen Sie ein Python-Skript, um denselben Trainingsjob zu starten.

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

## Überwachen Sie Ihren Trainingsjob
<a name="monitor-training-job"></a>

Überwachen Sie den Fortschritt Ihres Jobs mit diesen Befehlen:

### Verwenden der -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
```

**Hinweis**: Die Trainingszeit variiert je nach Modellkomplexität und Instance-Typ. Überwachen Sie die Protokolle, um den Fortschritt zu verfolgen.

Mit diesen Befehlen können Sie den Status des Jobs überprüfen und Probleme beheben. Sobald der Job erfolgreich abgeschlossen wurde, werden die Modellartefakte unter gespeichert`s3://my-bucket/model-artifacts`.

### Verwenden des Python SDK
<a name="monitor-python-sdk"></a>

Fügen Sie den folgenden Code in Ihr Python-Skript ein:

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

## Nächste Schritte
<a name="next-steps"></a>

Nach dem Training werden die Modellartefakte in dem von Ihnen angegebenen S3-Bucket gespeichert (`s3://my-bucket/model-artifacts`). Sie können diese Artefakte verwenden, um ein Modell bereitzustellen. Derzeit müssen Sie den Übergang vom Training zur Inferenz manuell verwalten. Dies beinhaltet:
+ **Artefakte lokalisieren**: Überprüfen Sie den S3-Bucket (`s3://my-bucket/model-artifacts`), um sicherzustellen, dass die trainierten Modelldateien vorhanden sind.
+ **Aufzeichnen des Pfads**: Notieren Sie sich den genauen S3-Pfad (z. B. `s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz`) für die Verwendung in der Inferenzkonfiguration.
+ **Referenzierung bei der Bereitstellung**: Geben Sie diesen S3-Pfad bei der Konfiguration des benutzerdefinierten Endpunkts an, um sicherzustellen, dass das richtige Modell geladen wird.