

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.

# SageMaker Leitfaden zur Fehlerbehebung beim Python-SDK
<a name="sagemaker-python-sdk-troubleshooting"></a>

Sie können das SageMaker Python-SDK verwenden, um mit Amazon SageMaker AI in Ihren Python-Skripten oder Jupyter-Notebooks zu interagieren. Obwohl das SDK einen vereinfachten Arbeitsablauf bietet, können Sie auf verschiedene Ausnahmen oder Fehler stoßen. Dieser Leitfaden zur Fehlerbehebung soll Ihnen helfen, häufig auftretende Probleme zu verstehen und zu lösen, die bei der Arbeit mit dem SageMaker Python-SDK auftreten können. Es behandelt Szenarien im Zusammenhang mit der Erstellung von Schulungsaufträgen, der Verarbeitung von Jobs und Endpunkten sowie allgemeine Verfahren zur Behandlung von Ausnahmen. Wenn Sie die Anleitungen in den folgenden Abschnitten befolgen, können Sie häufig auftretende Probleme effektiv diagnostizieren und beheben.

Das SageMaker Python-SDK fungiert als Wrapper für die SageMaker API-Operationen auf niedriger Ebene. Die IAM-Rolle, die Sie für den Zugriff auf das SDK verwenden, muss auf die zugrunde liegenden Operationen zugreifen können. Das Hinzufügen der SageMaker AI Full Access Policy zu Ihrer IAM-Rolle ist die einfachste Methode, um sicherzustellen, dass Sie über die Berechtigungen zur Verwendung des SageMaker Python-SDK verfügen. Weitere Informationen zur SageMaker AI Full Access Policy finden Sie unter [Amazon SageMaker AI Full Access](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html).

Die Bereitstellung detaillierterer Berechtigungen ist zwar weniger praktisch, stellt jedoch einen sicheren Ansatz für die Verwendung des SDK dar. Jeder der folgenden Abschnitte enthält Informationen zu den erforderlichen Berechtigungen.

## Erstellen eines Trainingsjobs
<a name="sagemaker-python-sdk-troubleshooting-create-training-job"></a>

**Wichtig**  
Wenn Sie die SageMaker AI-Vollzugriffsrichtlinie nicht zu Ihrer IAM-Rolle hinzufügen, muss sie über Berechtigungen zum Aufrufen der [CreateTrainingJob[DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)AND-Operationen verfügen.  
Außerdem sind Berechtigungen für Folgendes erforderlich:  
Greifen Sie auf input/output Daten in S3 zu
Ausführen von Amazon-EC2-Instances
 CloudWatch Metriken protokollieren
Wenn Ihr SageMaker Schulungsjob auf Ressourcen in einer Amazon Virtual Private Cloud (Amazon VPC) zugreifen muss, stellen Sie sicher, dass Sie bei der Erstellung des Verarbeitungsjobs die erforderlichen VPC-Einstellungen und Sicherheitsgruppen konfigurieren.

Wenn Sie einen Trainingsjob erstellen, kann es sein, dass Sie auf Ausnahmen stoßen. `botocore.exceptions.ClientError` `ValueError`

------
#### [ ValueError ]

`ValueError`Ausnahmen treten auf, wenn es ein Problem mit den Werten oder Parametern gibt, die Sie an eine Funktion übergeben. In der folgenden Liste finden Sie Beispiele für `ValueError` Ausnahmen und deren Behebung.
+ `ValueError: either image_uri or algorithm_arn is required. None was provided`:
  + Wenn Sie die `AlgorithmEstimator` Funktion verwenden, geben Sie die an`algorithm_arn`.
  + Wenn Sie die `Estimator` Funktion verwenden, geben Sie die an`estimator_arn`.
+ `ValueError: Unknown input channel: train is not supported by: scikit-decision-trees-15423055-57b73412d2e93e9239e4e16f83298b8f`

  Dieser Fehler wird angezeigt, wenn Sie einen ungültigen Eingangskanal angeben. Ein Eingangskanal ist eine Datenquelle oder ein Parameter, den das Modell erwartet.

  Auf der [Arten von Algorithmen](algorithms-choose.md) Seite können Sie zum Modell navigieren, um Informationen zu den Eingangskanälen des Modells zu finden.

  Informationen zu den Eingangskanälen finden Sie auch im Abschnitt **Verwendung** auf der AWS Marketplace Seite des Algorithmus.

  Gehen Sie wie folgt vor, um Informationen zu den Eingangskanälen eines Algorithmus abzurufen.

**So rufen Sie Informationen zu den Eingangskanälen eines Algorithmus auf**

  1. Navigieren Sie zur [SageMaker AI-Konsole](https://console.aws.amazon.com/sagemaker).

  1. Wählen Sie im linken Navigationsbereich die Option **Training** aus.

  1. Wählen Sie **Algorithmen** aus.

  1. Wählen Sie **Algorithmus suchen** aus.

  1. Suchen Sie Ihren Algorithmus in der resultierenden Liste.

  1. Wählen Sie die Registerkarte **Verwendung** aus.

  1. Navigieren Sie zur Überschrift **Kanalspezifikation**.

------
#### [ botocore.exceptions.ClientError ]

`botocore.exceptions.ClientError`Ausnahmen treten auf, wenn ein zugrunde liegender AWS Dienst eine Ausnahme auslöst. Dies kann verschiedene Gründe haben, z. B. falsche Parameter, Berechtigungsprobleme oder Ressourcenbeschränkungen. In der folgenden Liste finden Sie Informationen zu `botocore.exceptions.ClientError` Ausnahmen und Informationen zu deren Behebung.
+ `ResourceLimitExceeded`— Ihr AWS Konto hat keinen Zugriff auf die Amazon EC2 EC2-Instances, die für die Ausführung des Trainingsjobs erforderlich sind. Um Zugang zu erhalten, fordern Sie eine Erhöhung des Kontingents an. Informationen zur Kontingenterhöhung finden Sie unter [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker). In der folgenden Liste finden Sie Informationen zu `botocore.exceptions.ClientError` Ausnahmen.
+ `ValidationException` – Validierungsausnahmen treten auf, wenn Sie den falschen Instance-Typ von Amazon EC2 für den Trainingsjob verwendet haben. Sie können auch auftreten, wenn die von Ihnen verwendete IAM-Rolle keine Berechtigungen für den Trainingsjob hat.

------

## Aktualisieren eines Trainingsjobs
<a name="sagemaker-python-sdk-troubleshooting-update-training-job"></a>

**Wichtig**  
Wenn Sie die SageMaker AI Managed Policy nicht zu Ihrer IAM-Rolle hinzufügen, müssen Sie der Rolle Zugriff auf die folgenden Berechtigungen gewähren:  
`s3:GetObject` – Stellt Berechtigungen zum Lesen der Modellartefakte aus Amazon-S3-Buckets bereit
`s3:PutObject` – Stellt, falls zutreffend, Berechtigungen zum Schreiben von Aktualisierungen der Modellartefakte bereit
`iam:GetRole` – Stellt Berechtigungen zum Abrufen von Informationen über die IAM-Rolle bereit, die für die Ausführung des Trainingsjobs erforderlich sind
`sagemaker:UpdateTrainingJob`— Stellt Berechtigungen zum Ändern der Trainingsjobs mithilfe der [UpdateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateTrainingJob.html)Operation bereit.
`logs:PutLogEvents`— Bietet Berechtigungen zum Schreiben von Protokollen in CloudWatch Amazon-Protokolle während des Aktualisierungsvorgangs.

Wenn Sie einen Trainingsjob aktualisieren, stoßen Sie möglicherweise auf ein `botocore.exceptions.ParamValidationError` oder ein`botocore.exceptions.ClientError`.

------
#### [ botocore.exceptions.ClientError ]

Der `ClientError` hat die folgende Meldung:

```
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the UpdateTrainingJob operation: Invalid UpdateTrainingJobRequest, the request cannot be empty            
```

Wenn dieser Fehler auftritt, müssen Sie zusammen mit dem Namen des Trainingsjobs einen der folgenden Parameter angeben:
+ `profiler_rule_configs`(Liste) – Eine Liste von Profiler-Regelkonfigurationen. Standardmäßig gibt es keine Profiler-Regelkonfigurationen.
+ `profiler_config`(dict) — Die Konfiguration für SageMaker AI Profiler sammelt Metriken und sendet sie aus. Standardmäßig gibt es keine Profiler-Konfiguration.
+ `resource_config`(dict) – Die Konfiguration für die Trainingsjob-Ressourcen. Sie können den Keep-Alive-Zeitraum aktualisieren, wenn der Status „Warm Pool“ lautet. `Available` Andere Felder können nicht aktualisiert werden.
+ `remote_debug_config`(dict) – Konfiguration für`RemoteDebug`. Das Wörterbuch kann `EnableRemoteDebug` (bool) enthalten. 

------
#### [ botocore.exceptions.ParamValidationError ]

Das `botocore.exceptions.ParamValidationError` hat den folgenden Fehler:

```
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter ProfilerRuleConfigurations, value: {'DisableProfiler': False}, type: <class 'dict'>, valid types: <class 'list'>, <class 'tuple'>
```

Diese Ausnahme kann auftreten, wenn der Parameter von der `update_training_job` Funktion nicht im erwarteten Format bereitgestellt wird. Sie erwartet beispielsweise, dass es sich bei dem `profiler_rule_configs` Parameter um eine Liste handelt. Wenn der Parameter stattdessen als Wörterbuch übergeben wird, wird der Fehler ausgelöst.

------

## Erstellen eines Verarbeitungsauftrags
<a name="sagemaker-python-sdk-troubleshooting-create-processing-job"></a>

**Wichtig**  
Wenn Sie die SageMaker AI Managed Policy nicht zu Ihrer IAM-Rolle hinzufügen, müssen Sie der Rolle Zugriff auf die folgenden Berechtigungen gewähren:  
`sagemaker:CreateProcessingJob` – Stellt Berechtigungen zum Erstellen eines Processing-Jobs bereit
`sagemaker:DescribeProcessingJob` – Stellt Berechtigungen zum Abrufen von Informationen zu einem Bearbeitungsauftrag bereit
`s3:GetObject` – Stellt Berechtigungen zum Lesen der Modellartefakte aus Amazon-S3-Buckets bereit
`s3:PutObject` – Stellt, falls zutreffend, Berechtigungen zum Schreiben von Aktualisierungen der Modellartefakte bereit
`logs:PutLogEvents`— Bietet Berechtigungen zum Schreiben von Protokollen in CloudWatch Amazon-Protokolle während des Aktualisierungsvorgangs.
Wenn Ihr Verarbeitungsauftrag auf Ressourcen innerhalb einer Amazon Virtual Private Cloud zugreifen muss, müssen Sie dessen `security_group_ids` und `subnets` in der von Ihnen erstellten Schätzfunktion angeben. Ein Beispiel dafür, wie Sie auf Ressourcen innerhalb einer Amazon VPC zugreifen können, finden Sie unter [Secure Training and Inference with](https://sagemaker.readthedocs.io/en/stable/overview.html#secure-training-and-inference-with-vpc) VPC.

Wenn Sie einen Verarbeitungsauftrag erstellen, stoßen Sie möglicherweise auf ein`ValueError`, ein oder ein`UnexpectedStatusException`. `botocore.exceptions.ClientError`

------
#### [ ValueError ]

Es folgt ein Beispiel für `ValueError`.

```
ValueError: code preprocess.py wasn't found. Please make sure that the file exists.           
```

Der Pfad, den Sie angegeben haben, war nicht korrekt. Sie können entweder einen relativen Pfad oder einen absoluten Pfad zu Ihrer Skriptdatei angeben. Weitere Informationen zur Angabe von Pfaden zu Ihren Dateien finden Sie unter [sagemaker.processing. RunArgs](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.RunArgs).

------
#### [ UnexpectedStatusException ]

Es folgt ein Beispiel für `UnexpectedStatusException`:

```
UnexpectedStatusException: Error for Processing job sagemaker-scikit-learn-2024-07-02-14-08-55-993: Failed. Reason: AlgorithmError: , exit code: 1           
```

Der Traceback, der der Ausnahme beigefügt ist, kann Ihnen helfen, die Ursache zu identifizieren:

```
Traceback (most recent call last):
  File "/opt/ml/processing/input/code/preprocessing.py", line 51, in <module>
    df = pd.read_csv(input_data_path)
  .
  .
  .
  File "pandas/_libs/parsers.pyx", line 689, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] File b'/opt/ml/processing/input/census-income.csv' does not exist: b'/opt/ml/processing/input/census-income.csv'
```

Der Fehler `"FileNotFoundError: [Errno 2] File b'/opt/ml/processing/input/census-income.csv' does not exist"` weist darauf hin, dass die Eingabedatei `census-income.csv` nicht im angegebenen Pfad `/opt/ml/processing/input/` gefunden wurde. Stellen Sie sicher, dass die Eingabedaten korrekt bereitgestellt wurden und dass das Vorverarbeitungsskript die Daten in den erwarteten Pfad kopiert.

------
#### [ botocore.exceptions.ClientError ]

Es folgt ein Beispiel für `botocore.exceptions.ClientError`.

```
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the CreateProcessingJob operation: RoleArn: Cross-account pass role is not allowed.
```

Der `"Cross-account pass role is not allowed in create processing job"` Fehler tritt auf, wenn Sie versuchen, einen SageMaker Verarbeitungsauftrag mit einer IAM-Rolle von einem anderen AWS Konto aus zu erstellen. Diese Sicherheitsfunktion stellt sicher, dass Rollen und Berechtigungen in jedem Konto verwaltet werden. Beheben Sie das Problem wie folgt:

1. Vergewissern Sie sich, dass sich die IAM-Rolle im selben Konto wie der Processing-Job befindet. Kontoübergreifende Rollen erfordern eine ausdrückliche Genehmigung

1. Wenn Sie eine Rolle von einem anderen Konto aus verwenden, aktualisieren Sie dessen Vertrauensrichtlinie, damit das Konto, das den Verarbeitungsauftrag erstellt, die Rolle übernehmen kann.

1. Stellen Sie sicher, dass die Rolle über die erforderlichen Berechtigungen für die Verarbeitung von Aufträgen verfügt, z. B. `sagemaker:CreateProcessingJob` oder`iam:PassRole`.

------

## Erstellen eines Endpunkts
<a name="sagemaker-python-sdk-troubleshooting-create-endpoint"></a>

**Wichtig**  
Wenn Sie die SageMaker AI Managed Policy nicht zu Ihrer IAM-Rolle hinzufügen, müssen Sie der Rolle Zugriff auf die folgenden Berechtigungen gewähren:  
`sagemaker:CreateModel` – Bietet Berechtigungen zum Erstellen des Modells, das Sie auf dem Endpunkt bereitstellen
`sagemaker:CreateEndpointConfig` – Stellt Berechtigungen zum Erstellen einer Endpunktkonfiguration bereit, die das Verhalten des Endpunkts definiert, z. B. den Instance-Typ und die Anzahl der Instances
`sagemaker:CreateEndpoint` – Stellt Berechtigungen zum Erstellen der Endpunktkonfiguration mithilfe des von Ihnen angegebenen Endpunkts bereit
Darüber hinaus benötigen Sie Berechtigungen, um die Modelle, Endpunkte und Endpunktkonfigurationen zu beschreiben und aufzulisten.

Wenn Sie einen Endpunkt erstellen, stoßen Sie möglicherweise auf ein `UnexpectedStatusException` oder ein`botocore.exceptions.ClientError`.

Es folgt ein Beispiel für `UnexpectedStatusException`:

```
UnexpectedStatusException: Error hosting endpoint gpt2-large-2024-07-03-15-28-20-448: Failed. Reason: The primary container for production variant AllTraffic did not pass the ping health check. Please check CloudWatch logs for this endpoint.. Try changing the instance type or reference the troubleshooting page https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-troubleshooting.html            
```

Die Fehlermeldung fordert Sie auf, die CloudWatch Amazon-Protokolle zu überprüfen. Gehen Sie wie folgt vor, um die Protokolle zu überprüfen.

**Um die CloudWatch Protokolle zu überprüfen**

1. Navigieren Sie zur [Amazon SageMaker AI-Konsole](https://console.aws.amazon.com/sagemaker).

1. Wählen Sie im linken Navigationsbereich die Option **Endpunkte** aus.

1. Wählen Sie den Endpunkt aus, der ausgefallen ist.

1. Wählen Sie auf der Seite mit den **Endpunktdetails** die Option **Anmeldungen anzeigen** aus CloudWatch.

Nachdem Sie die Protokolle gefunden haben, suchen Sie nach dem spezifischen Problem. Im Folgenden finden Sie ein Beispiel für ein CloudWatch Protokoll:

```
NotImplementedError: gptq quantization is not supported for AutoModel, you can try to quantize it with text-generation-server quantize ORIGINAL_MODEL_ID NEW_MODEL_ID            
```

Weitere Informationen zum Lösen des `botocore.exceptions.ClientError` finden Sie unter [Leitlinien zur Behandlung von Ausnahmen](#sagemaker-python-sdk-troubleshooting-exception-handling).

## Aktualisieren eines Endpunkts
<a name="sagemaker-python-sdk-troubleshooting-update-endpoint"></a>

**Wichtig**  
Wenn Sie die SageMaker AI Managed Policy nicht zu Ihrer IAM-Rolle hinzufügen, müssen Sie der Rolle Zugriff auf die folgenden Berechtigungen gewähren:  
`sagemaker:UpdateEndpoint` – gewährt Berechtigungen zum Aktualisieren eines vorhandenen Endpunkts, beispielsweise zum Ändern des Instance-Typs oder der Anzahl des Endpunkts.
`sagemaker:UpdateEndpointWeightsAndCapacities` – Stellt Berechtigungen zum Erstellen einer Endpunktkonfiguration bereit, die das Verhalten des Endpunkts definiert, z. B. den Instance-Typ und die Anzahl der Instances
`sagemaker:DescribeEndpoint` – Stellt Berechtigungen zur Beschreibung der aktuellen Konfiguration des Endpunkts bereit, was häufig vor dem Update erforderlich ist
Darüber hinaus benötigen Sie möglicherweise Berechtigungen, um die Endpunkte und Endpunktkonfigurationen zu beschreiben und aufzulisten.

Sie können `ValueError` beispielsweise auf Folgendes stoßen:

```
ValueError: Endpoint with name 'abc' does not exist; please use an existing endpoint name            
```

Der Fehler weist darauf hin, dass der angegebene Endpunktname mit keinem vorhandenen Endpunkt in Ihrem AWS Konto übereinstimmt. Gehen Sie wie folgt vor, um den Fehler zu beheben:

**Um einen Wertfehler zu beheben**

1. Verwenden Sie den folgenden Code, um alle Ihre Endpunkte aufzulisten:

   ```
   import sagemaker
   sagemaker_session = sagemaker.Session()
   # List all endpoints
   endpoints = sagemaker_session.sagemaker_client.list_endpoints()
   print(endpoints)
   ```

1. Stellen Sie sicher, dass der Endpunkt, den Sie für die `update_endpoint` Funktion angegeben haben, in der Liste aufgeführt ist.

1. Stellen Sie sicher, dass Sie in der richtigen AWS Region arbeiten. SageMaker KI-Endpunkte sind regionsspezifisch.

1. Stellen Sie sicher, dass die von Ihnen verwendete IAM-Rolle über Berechtigungen zum Auflisten, Beschreiben oder Aktualisieren der Endgeräte verfügt.

## Leitlinien zur Behandlung von Ausnahmen
<a name="sagemaker-python-sdk-troubleshooting-exception-handling"></a>

Wenn Sie keine Informationen zur Behebung Ihres spezifischen Problems finden, können Ihnen die folgenden Codebeispiele als Inspiration für den Umgang mit Ausnahmen dienen.

Das Folgende ist ein allgemeines Beispiel, mit dem Sie die meisten Ausnahmen catch können.

```
import sagemaker
from botocore.exceptions import ParamValidationError, ClientError

try:
    sagemaker.some_api_call(SomeParam='some_param')

except ClientError as error:
    # Put your error handling logic here
    raise error

except ParamValidationError as error:
    raise ValueError('The parameters you provided are incorrect: {}'.format(error))
    
except ValueError as error:
    # Catch generic ValueError exceptions
```

Es gibt zwei Hauptkategorien von Fehlern:
+ Spezifische Fehler für das SageMaker Python-SDK
+ Spezifische Fehler für den zugrunde liegenden AWS Dienst

Fehler, die für den zugrunde liegenden AWS Dienst spezifisch sind, sind immer `botocore.exceptions.ClientError` Ausnahmen. Der `botocore.exceptions.ClientError` hat ein `Error` Objekt und ein `ResponseMetadata` Objekt. Im Folgenden wird die Vorlage für einen Client-Fehler dargestellt:

```
{
    'Error': {
        'Code': 'SomeServiceException',
        'Message': 'Details/context around the exception or error'
    },
    'ResponseMetadata': {
        'RequestId': '1234567890ABCDEF',
        'HostId': 'host ID data will appear here as a hash',
        'HTTPStatusCode': 400,
        'HTTPHeaders': {'header metadata key/values will appear here'},
        'RetryAttempts': 0
    }
}
```

Im Folgenden finden Sie ein Beispiel für die spezifische Fehlerbehandlung, die Sie mit dem durchführen können`botocore.exceptions.ClientError`:

```
try:
    sagemaker.some_api_call(SomeParam='some_param')

except botocore.exceptions.ClientError as err:
    if err.response['Error']['Code'] == 'InternalError': # Generic error
        # We grab the message, request ID, and HTTP code to give to customer support
        print('Error Message: {}'.format(err.response['Error']['Message']))
        print('Request ID: {}'.format(err.response['ResponseMetadata']['RequestId']))
        print('Http code: {}'.format(err.response['ResponseMetadata']['HTTPStatusCode']))
        raise err
    else if err.response['Error']['Code'] == 'ValidationException':
       raise ValueError(err.response['Error']['Message'])
```

Weitere Informationen darüber, wie Sie mit `ClientError` Ausnahmen umgehen können, finden Sie unter [Fehlerantworten analysieren und Ausnahmen von AWS-Services abfangen](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/error-handling.html#parsing-error-responses-and-catching-exceptions-from-aws-services).