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
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, Verarbeitungsaufträgen 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.
Die Bereitstellung detaillierterer Berechtigungen ist zwar weniger praktisch, aber ein sicherer Ansatz für die Verwendung des SDK. Jeder der folgenden Abschnitte enthält Informationen zu den erforderlichen Berechtigungen.
Einen Ausbildungsjob erstellen
Wichtig
Wenn Sie die SageMaker AI-Vollzugriffsrichtlinie nicht zu Ihrer IAM-Rolle hinzufügen, muss sie über Berechtigungen zum Aufrufen der DescribeTrainingJobOperationen CreateTrainingJobund verfügen.
Außerdem sind Berechtigungen für Folgendes erforderlich:
-
Greifen Sie in S3 auf Eingabe-/Ausgabedaten zu
-
EC2 Amazon-Instances ausführen
-
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, stoßen Sie möglicherweise auf Ausnahmen botocore.exceptions.ClientError
oder ValueError
Ausnahmen.
Einen Schulungsjob aktualisieren
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
— Bietet Berechtigungen zum Lesen der Modellartefakte aus Amazon S3 S3-Buckets -
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 des UpdateTrainingJobVorgangs 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 einen botocore.exceptions.ParamValidationError
oder einenbotocore.exceptions.ClientError
.
Einen Verarbeitungsjob erstellen
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 Verarbeitungsauftrags bereit -
sagemaker:DescribeProcessingJob
— Stellt Berechtigungen zum Abrufen von Informationen über einen Verarbeitungsjob bereit -
s3:GetObject
— Bietet Berechtigungen zum Lesen der Modellartefakte aus Amazon S3 S3-Buckets -
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 dem von Ihnen erstellten Kalkulator angeben. Ein Beispiel dafür, wie Sie auf Ressourcen innerhalb einer Amazon VPC zugreifen können, finden Sie unter Secure Training and Inference with
Wenn Sie einen Verarbeitungsauftrag erstellen, stoßen Sie möglicherweise auf einValueError
, ein oder einUnexpectedStatusException
. botocore.exceptions.ClientError
Erstellen eines Endpunkts
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 Instanztyp und die Anzahl der Instanzen -
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 einbotocore.exceptions.ClientError
.
Im Folgenden finden Sie ein Beispiel für einenUnexpectedStatusException
:
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
In der Fehlermeldung werden Sie aufgefordert, 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
-
Navigieren Sie zur Amazon SageMaker AI-Konsole
. -
Wählen Sie in der linken Navigationsleiste Endpoints aus.
-
Wählen Sie den Endpunkt aus, der ausgefallen ist.
-
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
Hinweise zur Lösung von finden Sie botocore.exceptions.ClientError
unterHinweise zur Behandlung von Ausnahmen.
Einen Endpunkt aktualisieren
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
— Bietet Berechtigungen zum Aktualisieren eines vorhandenen Endpunkts, z. B. zum Ändern des Instanztyps oder der Anzahl der Instanzen des Endpunkts -
sagemaker:UpdateEndpointWeightsAndCapacities
— Stellt Berechtigungen zum Erstellen einer Endpunktkonfiguration bereit, die das Verhalten des Endpunkts definiert, z. B. den Instanztyp und die Anzahl der Instanzen -
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 z. ValueError
B. 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
-
Verwenden Sie den folgenden Code, um alle Ihre Endgeräte aufzulisten:
import sagemaker sagemaker_session = sagemaker.Session() # List all endpoints endpoints = sagemaker_session.sagemaker_client.list_endpoints() print(endpoints)
-
Stellen Sie sicher, dass der Endpunkt, den Sie für die
update_endpoint
Funktion angegeben haben, in der Liste aufgeführt ist. -
Stellen Sie sicher, dass Sie in der richtigen AWS Region arbeiten. SageMaker KI-Endpunkte sind regionsspezifisch.
-
Stellen Sie sicher, dass die von Ihnen verwendete IAM-Rolle über Berechtigungen zum Auflisten, Beschreiben oder Aktualisieren der Endpunkte verfügt.
Hinweise zur Behandlung von Ausnahmen
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önnenbotocore.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 zur Behandlung von ClientError
Ausnahmen finden Sie unter Fehlerantworten analysieren und Ausnahmen abfangen von AWS-Services