

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.

# Greifen Sie AWS Systems Manager für das Remote-Debugging auf einen Trainingscontainer zu
<a name="train-remote-debugging"></a>

Sie können über AWS Systems Manager (SSM) eine sichere Verbindung zu SageMaker Trainingscontainern herstellen. Dadurch erhalten Sie Zugriff auf Shell-Ebene zum Debuggen von Trainingsjobs, die innerhalb des Containers ausgeführt werden. Sie können auch Befehle und Antworten protokollieren, die an Amazon CloudWatch gestreamt werden. Wenn Sie Ihre eigene Amazon Virtual Private Cloud (VPC) zum Trainieren eines Modells verwenden, können Sie AWS PrivateLink damit einen VPC-Endpunkt für SSM einrichten und über SSM eine private Verbindung zu Containern herstellen.

Sie können eine Verbindung zu [SageMaker AI Framework-Containern](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) oder zu Ihrem eigenen Trainingscontainer herstellen, der mit der Trainingsumgebung eingerichtet wurde. SageMaker 

## Einrichten von IAM-Berechtigungen
<a name="train-remote-debugging-iam"></a>

Um SSM in Ihrem SageMaker Trainingscontainer zu aktivieren, müssen Sie eine IAM-Rolle für den Container einrichten. Damit Sie oder Benutzer in Ihrem AWS Konto über SSM auf die Schulungscontainer zugreifen können, müssen Sie IAM-Benutzer mit Berechtigungen zur Verwendung von SSM einrichten.

### IAM role (IAM-Rolle)
<a name="train-remote-debugging-iam-role"></a>

Damit ein SageMaker Trainingscontainer mit dem SSM-Agenten beginnen kann, müssen Sie eine IAM-Rolle mit SSM-Berechtigungen bereitstellen.

Um das Remote-Debugging für Ihren Trainingsjob zu aktivieren, muss SageMaker KI den [SSM-Agenten](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) im Trainingscontainer starten, wenn der Trainingsjob gestartet wird. Damit der SSM-Agent mit dem SSM-Dienst kommunizieren kann, fügen Sie der IAM-Rolle, die Sie verwenden, um Ihren Trainingsjob auszuführen, die folgende Richtlinie hinzu. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"    
        }
    ]
 }
```

------

### IAM-Benutzer
<a name="train-remote-debugging-iam-user"></a>

Fügen Sie die folgende Richtlinie hinzu, um einem IAM-Benutzer SSM-Sitzungsberechtigungen zum Herstellen einer Verbindung mit einem SSM-Ziel zu erteilen. In diesem Fall ist das SSM-Ziel ein SageMaker Trainingscontainer.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

 Sie können IAM-Benutzer darauf beschränken, sich nur für bestimmte Trainingsjobs mit Containern zu verbinden, indem Sie den `Condition`-Schlüssel hinzufügen, wie im folgenden Richtlinienbeispiel gezeigt. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:ssmmessages:target-id": [
                        "sagemaker-training-job:*"
                    ]
                }
            } 
        }
    ]
}
```

------

Sie können den `sagemaker:EnableRemoteDebug`-Bedingungsschlüssel auch explizit verwenden, um das Remote-Debugging einzuschränken. Es folgt eine Beispielrichtlinie für IAM-Benutzer zur Einschränkung des Remote-Debuggings.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyRemoteDebugInTrainingJob",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateTrainingJob",
                "sagemaker:UpdateTrainingJob"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "sagemaker:EnableRemoteDebug": false
                }
            }
        }
    ]
}
```

------

Weitere Informationen finden Sie unter [Bedingungsschlüssel für Amazon SageMaker AI](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys) in der *AWS Service Authorization Reference*.

## Wie aktiviere ich das Remote-Debugging für einen SageMaker Trainingsjob
<a name="train-remote-debugging-how-to-use"></a>

In diesem Abschnitt erfahren Sie, wie Sie das Remote-Debugging aktivieren, wenn Sie einen Trainingsjob in Amazon SageMaker AI starten oder aktualisieren.

------
#### [ SageMaker Python SDK ]

Mithilfe der Estimator-Klasse im SageMaker Python-SDK können Sie das Remote-Debugging mithilfe des `enable_remote_debug` Parameters oder der Methoden `enable_remote_debug()` und `disable_remote_debug()` ein- oder ausschalten.

**So aktivieren Sie das Remote-Debugging beim Erstellen eines Trainingsjobs**

Um das Remote-Debugging zu aktivieren, wenn Sie einen neuen Trainingsjob erstellen, setzen Sie den Parameter `enable_remote_debug` auf `True`. Der Standardwert ist `False`. Wenn Sie diesen Parameter also überhaupt nicht oder explizit auf `False` festlegen, ist die Remote-Debugging-Funktionalität deaktiviert.

```
import sagemaker

session = sagemaker.Session()

estimator = sagemaker.estimator.Estimator(
    ...,
    sagemaker_session=session,
    image_uri="<your_image_uri>", #must be owned by your organization or Amazon DLCs 
    role=role,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=output_path,
    max_run=1800,
    enable_remote_debug=True
)
```

**So aktivieren Sie das Remote-Debugging durch die Aktualisierung eines Trainingsjobs**

Mithilfe der folgenden Methoden der Schätzerklasse können Sie das Remote-Debugging aktivieren oder deaktivieren, während ein Trainingsjob ausgeführt wird, wenn der `SecondaryStatus` des Jobs `Downloading` oder `Training` ist.

```
# Enable RemoteDebug
estimator.enable_remote_debug()

# Disable RemoteDebug
estimator.disable_remote_debug()
```

------
#### [ AWS SDK für Python (Boto3) ]

**So aktivieren Sie das Remote-Debugging beim Erstellen eines Trainingsjobs**

Um das Remote-Debugging zu aktivieren, wenn Sie einen neuen Trainingsjob erstellen, setzen Sie den Wert für den `EnableRemoteDebug`-Schlüssel im `RemoteDebugConfig`-Parameter auf `True`. 

```
import boto3

sm = boto3.Session(region_name=region).client("sagemaker")

# Start a training job
sm.create_training_job(
    ...,
    TrainingJobName=job_name,
    AlgorithmSpecification={
        // Specify a training Docker container image URI 
        // (Deep Learning Container or your own training container) to TrainingImage.
        "TrainingImage": "<your_image_uri>",
        "TrainingInputMode": "File"
    },
    RoleArn=iam_role_arn,
    OutputDataConfig=output_path,
    ResourceConfig={
        "InstanceType": "ml.m5.xlarge",
        "InstanceCount": 1,
        "VolumeSizeInGB": 30
    },
    StoppingCondition={
        "MaxRuntimeInSeconds": 86400
    },
    RemoteDebugConfig={
        "EnableRemoteDebug": True
    }
)
```

**So aktivieren Sie das Remote-Debugging durch die Aktualisierung eines Trainingsjobs**

Mithilfe der `update_traing_job`.API können Sie das Remote-Debugging aktivieren oder deaktivieren, während ein Trainingsjob ausgeführt wird, wenn der `SecondaryStatus` des Jobs `Downloading` oder `Training` ist.

```
# Update a training job
sm.update_training_job(
    TrainingJobName=job_name,
    RemoteDebugConfig={
        "EnableRemoteDebug": True     # True | False
    }
)
```

------
#### [ AWS Command Line Interface (CLI) ]

**So aktivieren Sie das Remote-Debugging beim Erstellen eines Trainingsjobs**

Bereiten Sie wie folgt eine `CreateTrainingJob`-Anforderungsdatei im JSON-Format vor.

```
// train-with-remote-debug.json
{
    "TrainingJobName": job_name,
    "RoleArn": iam_role_arn,
    "AlgorithmSpecification": {
        // Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage.
        "TrainingImage": "<your_image_uri>",
        "TrainingInputMode": "File"
    },
    "OutputDataConfig": {
        "S3OutputPath": output_path
    },
    "ResourceConfig": {
        "InstanceType": "ml.m5.xlarge",
        "InstanceCount": 1,
        "VolumeSizeInGB": 30
    },
    "StoppingCondition": {
        "MaxRuntimeInSeconds": 86400
    },
    "RemoteDebugConfig": {
        "EnableRemoteDebug": True
    }
}
```

Führen Sie nach dem Speichern der JSON-Datei den folgenden Befehl in dem Terminal aus, indem Sie den Trainingsjob einreichen. Im folgenden Beispielbefehl wird davon ausgegangen, dass die JSON-Datei `train-with-remote-debug.json` benannt ist. Wenn Sie den Befehl von einem Jupyter-Notebook aus ausführen, fügen Sie am Anfang der Zeile ein Ausrufezeichen (`!`) hinzu.

```
aws sagemaker create-training-job \
    --cli-input-json file://train-with-remote-debug.json
```

**So aktivieren Sie das Remote-Debugging durch die Aktualisierung eines Trainingsjobs**

Bereiten Sie wie folgt eine `UpdateTrainingJob`-Anforderungsdatei im JSON-Format vor.

```
// update-training-job-with-remote-debug-config.json
{
    "TrainingJobName": job_name,
    "RemoteDebugConfig": {
        "EnableRemoteDebug": True
    }
}
```

Führen Sie nach dem Speichern der JSON-Datei den folgenden Befehl in dem Terminal aus, indem Sie den Trainingsjob einreichen. Im folgenden Beispielbefehl wird davon ausgegangen, dass die JSON-Datei `train-with-remote-debug.json` benannt ist. Wenn Sie den Befehl von einem Jupyter-Notebook aus ausführen, fügen Sie am Anfang der Zeile ein Ausrufezeichen (`!`) hinzu.

```
aws sagemaker update-training-job \
    --cli-input-json file://update-training-job-with-remote-debug-config.json
```

------

## Zugriff auf Ihren Trainingscontainer
<a name="train-remote-debugging-access-container"></a>

Sie können auf einen Trainingscontainer zugreifen, wenn der `SecondaryStatus` des entsprechenden Trainingsjobs `Training` ist. Die folgenden Codebeispiele zeigen, wie Sie den Status Ihres Trainingsjobs mithilfe der `DescribeTrainingJob` API überprüfen, wie Sie die Trainings-Job-Anmeldungen überprüfen und wie Sie sich beim Trainingscontainer anmelden. CloudWatch

**So überprüfen Sie den Status eines Trainingsjobs**

------
#### [ SageMaker Python SDK ]

Führen Sie den `SecondaryStatus` folgenden SageMaker Python-SDK-Code aus, um den Status eines Trainingsjobs zu überprüfen.

```
import sagemaker

session = sagemaker.Session()

# Describe the job status
training_job_info = session.describe_training_job(job_name)
print(training_job_info)
```

------
#### [ AWS SDK für Python (Boto3) ]

Um den `SecondaryStatus` eines Trainingsjobs zu überprüfen, führen Sie den folgenden Code des SDK für Python (Boto3) aus.

```
import boto3

session = boto3.session.Session()
region = session.region_name
sm = boto3.Session(region_name=region).client("sagemaker")

# Describe the job status
sm.describe_training_job(TrainingJobName=job_name)
```

------
#### [ AWS Command Line Interface (CLI) ]

Führen Sie den `SecondaryStatus` folgenden AWS CLI Befehl für SageMaker AI aus, um den Status eines Trainingsjobs zu überprüfen.

```
aws sagemaker describe-training-job \
    --training-job-name job_name
```

------

**So ermitteln Sie den Hostnamen eines Trainingscontainers**

Um über SSM eine Verbindung zum Trainingscontainer herzustellen, verwenden Sie für die Ziel-ID das Format `sagemaker-training-job:<training-job-name>_algo-<n>`, wobei `algo-<n>` der Name des Container-Hosts ist. Wenn Ihr Job auf einer einzelnen Instance ausgeführt wird, ist der Host immer `algo-1`. Wenn Sie einen verteilten Trainingsjob auf mehreren Instanzen ausführen, erstellt SageMaker KI die gleiche Anzahl von Hosts und Log-Streams. Wenn Sie beispielsweise 4 Instanzen verwenden, erstellt SageMaker KI`algo-1`, `algo-2``algo-3`, und`algo-4`. Sie müssen festlegen, welchen Protokollstream Sie debuggen möchten und welche Hostnummer er hat. Um auf Protokollstreams zuzugreifen, die einem Trainingsjob zugeordnet sind, führen Sie die folgenden Schritte aus.

1. Öffnen Sie die Amazon SageMaker AI-Konsole unter [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Wählen Sie im linken Navigationsbereich **Training** und dann **Trainingsjobs** aus.

1. Wählen Sie in der Liste **Trainingsjobs** den Trainingsjob aus, den Sie debuggen möchten. Dadurch wird die Detailseite des Trainingsjobs geöffnet.

1. Wählen Sie im Abschnitt **Überwachen** die Option **Protokolle anzeigen** aus. Die Liste der zugehörigen Trainingsjob-Log-Streams wird in der CloudWatch Konsole geöffnet.

1. Die Namen der Protokollstreams werden im Format `<training-job-name>/algo-<n>-<time-stamp>` angezeigt, wobei `algo-<n>` den Hostnamen darstellt. 

Weitere Informationen darüber, wie SageMaker KI die Konfigurationsinformationen für verteilte Schulungen mit mehreren Instanzen verwaltet, finden Sie unter [Konfiguration verteilter Schulungen](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training).

**So greifen Sie auf den Trainingscontainer zu**

Verwenden Sie den folgenden Befehl im Terminal, um die SSM-Sitzung (`[aws ssm start-session](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)`) zu starten und eine Verbindung zum Trainingscontainer herzustellen. 

```
aws ssm start-session --target sagemaker-training-job:<training-job-name>_algo-<n>
```

Wenn der Name des Trainingsjobs beispielsweise `training-job-test-remote-debug` und der Hostname `algo-1` lautet, ist die Ziel-ID `sagemaker-training-job:training-job-test-remote-debug_algo-1`. Bei einer Befehlsausgabe wie `Starting session with SessionId:xxxxx` ist die Verbindung erfolgreich.

### SSM-Zugriff mit AWS PrivateLink
<a name="train-remote-debugging-access-container-vpc"></a>

Wenn Ihre Trainingscontainer in einer Amazon Virtual Private Cloud ausgeführt werden, die nicht mit dem öffentlichen Internet verbunden ist, können Sie SSM verwenden, AWS PrivateLink um SSM zu aktivieren. AWS PrivateLink schränkt den gesamten Netzwerkverkehr zwischen Ihren Endpunkt-Instances, SSM und Amazon EC2 auf das Amazon-Netzwerk ein. Weitere Informationen zur Einrichtung des SSM-Zugriffs mit finden Sie unter AWS PrivateLink[Einen Amazon VPC-Endpunkt für Session Manager einrichten](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html). 

## Protokollieren von Befehlen und Ergebnissen der SSM-Sitzung
<a name="train-remote-debugging-log-ssm"></a>

Nachdem Sie die Anweisungen unter [Erstellen eines Dokuments mit Session-Manager-Einstellungen (Befehlszeile)](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-create-preferences-cli.html) befolgt haben, können Sie SSM-Dokumente erstellen, die Ihre Einstellungen für SSM-Sitzungen definieren. Sie können SSM-Dokumente verwenden, um Sitzungsoptionen wie Datenverschlüsselung, Sitzungsdauer und Protokollierung zu konfigurieren. Sie können beispielsweise angeben, ob Sitzungsprotokolldaten in einem Amazon Simple Storage Service (Amazon S3) -Bucket oder in einer Amazon CloudWatch Logs-Gruppe gespeichert werden sollen. Sie können  Dokumente erstellen, die allgemeine Einstellungen für alle Sitzungen eines AWS Kontos definieren AWS-Region, oder Dokumente, die Einstellungen für einzelne Sitzungen definieren.

## Beheben von Problemen über die Fehlerprotokolle von SSM
<a name="train-remote-debugging-checking-ssm-agent-logs"></a>

Amazon SageMaker AI lädt Fehler vom SSM-Agenten in Ihre CloudWatch Logs in der `/aws/sagemaker/TrainingJobs` Protokollgruppe hoch. Die Protokollstreams des SSM-Agenten werden im folgenden Format benannt: `<job-name>/algo-<n>-<timestamp>/ssm`. Wenn Sie beispielsweise einen Trainingsjob mit zwei Knoten mit dem Namen erstellen`training-job-test-remote-debug`, werden das Trainingsjob-Protokoll `training-job-test-remote-debug/algo-<n>-<timestamp>` und mehrere SSM-Agent-Fehlerprotokolle `training-job-test-remote-debug/algo-<n>-<timestamp>/ssm` in Ihre Logs hochgeladen. CloudWatch In diesem Beispiel können Sie die `*/ssm`-Protokollstreams überprüfen, um SSM-Probleme zu beheben.

```
training-job-test-remote-debug/algo-1-1680535238
training-job-test-remote-debug/algo-2-1680535238
training-job-test-remote-debug/algo-1-1680535238/ssm
training-job-test-remote-debug/algo-2-1680535238/ssm
```

## Überlegungen
<a name="train-remote-debugging-considerations"></a>

Beachten Sie Folgendes, wenn Sie SageMaker AI-Remote-Debugging verwenden.
+ Remote-Debugging wird für [SageMaker KI-Algorithmus-Container oder Container](https://docs.aws.amazon.com/sagemaker/latest/dg/algorithms-choose.html) ab SageMaker KI nicht unterstützt. AWS Marketplace
+ Sie können keine SSM-Sitzung für Container mit aktivierter Netzwerkisolierung starten, da die Isolierung ausgehende Netzwerkaufrufe verhindert.