Wie kann ich die interne ServerError-Antwort auf Amazon SageMaker beheben?

Lesedauer: 3 Minute
0

Wenn ich einen Verarbeitungs-, Schulungs- oder Prognoseauftrag von Amazon SageMaker ausführe, schlägt die Anfrage fehl und es wird die Antwort angezeigt: „HTTP-Fehler 500: Interner Serverfehler“ oder „InternalServerError“: Es ist ein interner Fehler aufgetreten. Bitte versuchen Sie es erneut“.

Lösung

Wenn Ihr SageMaker-Job oder Ihre Inferenzanforderung an einen Endpunkt mit dem „InternalServerError“ fehlschlug, versuchen Sie die Anfrage erneut. Wenn Sie die Anfrage erneut versuchen, wird der Fehler aufgrund eines vorübergehenden Problems behoben.

Tritt der Fehler weiterhin auf, gehen Sie wie folgt vor, um die Protokolle des Jobs oder Endpoints auf Amazon CloudWatch zu überprüfen.

CloudWatch-Protokolle überprüfen

Überprüfen Sie die CloudWatch-Protokolle, die mit die SageMaker-Ressource verknüpft sind, um die Ursache zu ermitteln:

1.    Öffnen Sie die SageMaker-Konsole.

2.    Wählen Sie unter Verarbeitung, Training oder Inferenz die entsprechende Ressource.

3.    Wählen Sie den Namen des Endpunkts, der Verarbeitung oder des Schulungsauftrags.

4.    Wählen Sie im Abschnitt Überwachung die Option Protokolle anzeigen aus, um die CloudWatch-Konsole zu öffnen.

5.    Wählen Sie in der CloudWatch-Konsole den Log-Stream für den Job oder Endpunkt.

6.    Wenn es keinen Log-Stream gibt oder wenn der Log-Stream leer ist, vergewissern Sie sich, dass die Ausführungsrolle der Ressource über eine Richtlinie mit den folgenden Berechtigungen verfügt:

{
 "Effect": "Allow",
 "Action": [
 "cloudwatch:PutMetricData",
 "logs:CreateLogStream",
 "logs:PutLogEvents",
 "logs:CreateLogGroup",
 "logs:DescribeLogStreams",
 "ecr:GetAuthorizationToken"
 ],
 "Resource": "*"
}

7.    Überprüfen Sie die Protokolle, um die Fehlermeldung zu finden.

Fügen Sie Ihrem Inferenzskript Debugging-Code hinzu (optional)

Um den Protokollüberprüfungsprozess zu vereinfachen, können Sie Ihrem Inferenzskript Debugging-Code hinzufügen. Im Folgenden finden Sie ein Beispiel für einen Inferenzcode zum Debuggen eines Endpunkts. Sie können diesen Code verwenden, um zu bestätigen, dass Sie die Funktion predict () korrekt aufgerufen haben. Der Code druckt auch die Datenvariable, die Ihnen den tatsächlichen Wert anzeigt, der an den Endpunkt übergeben wurde. In diesem Beispiel ist MYDEBUG das Schlüsselwort, nach dem im CloudWatch-Logstream gesucht werden soll.

def predict():
    data = None
    print("MYDEBUG: Predict function called")
    # Convert from CSV to pandas
    if flask.request.content_type == 'text/csv':
        data = flask.request.data.decode('utf-8')
        s = StringIO.StringIO(data)
        data = pd.read_csv(s, header=None)
        ## To print the actual data set
        print( "MYDEBUG: Printing data")
        print( data.head(10) )

Behebung anderer häufiger Ursachen von „InternalServerError“

Auslastung der Ressourcen

Ein SageMaker-Job schlägt möglicherweise mit „InternalServerError“ fehl, wenn der Container des Jobs auf der Instance die Ressourcen der Instance verbraucht. Sie können die Ressourcenauslastung einsehen, indem Sie die Metriken CPUUtilization, MemoryUtilization und DiskUtilation der Instance in CloudWatch überprüfen.

Gehen Sie wie folgt vor, um die Instance-Metriken zu überprüfen:

1.    Öffnen Sie die SageMaker-Konsole.

2.    Wählen Sie im Abschnitt Verarbeitungs-/Schulungsaufträge die Option Verarbeitung/Schulung.

3.    Wählen Sie den Jobnamen.

4.    Wählen Sie im Abschnitt Monitoring die Option Instance-Metriken anzeigen aus, um die CloudWatch-Konsole zu öffnen. Wenn der Job hohe Ressourcen beansprucht, wechseln Sie zu einem größeren Instance-Typ oder fügen Sie der vorhandenen Instance ein größeres Speichervolume hinzu.

Fehlende EC2-Berechtigungen in der SageMaker-Ausführungsrolle

Die Amazon SageMaker-Ausführungsrolle zeigt möglicherweise einen „InternalServerError“ an, wenn Amazon Elastic Compute Cloud (Amazon EC2) -Berechtigungen nicht richtig konfiguriert sind. Wenn Sie ein VPCConfig-Objekt in Ihrem SageMaker-Job angeben, stellen Sie sicher, dass die SageMaker-Ausführungsrolle des Jobs über eine Richtlinie mit den folgenden Berechtigungen verfügt:

{
 "Effect": "Allow",
 "Action": [
 "ec2:CreateNetworkInterface",
 "ec2:CreateNetworkInterfacePermission",
 "ec2:DeleteNetworkInterface",
 "ec2:DeleteNetworkInterfacePermission",
 "ec2:DescribeNetworkInterfaces",
 "ec2:DescribeVpcs",
 "ec2:DescribeDhcpOptions",
 "ec2:DescribeSubnets",
 "ec2:DescribeSecurityGroups"
 ]
}

Weitere Informationen finden Sie unter SageMaker-Rollen.


Ähnliche Informationen

Protokollierung und Überwachung

ProcessingJob-API erstellen: Berechtigungen für Ausführungsrollen

SageMaker-Jobs und Endpunktmetriken

Verbinden Sie SageMaker Studio-Notebooks in einer VPC mit externen Ressourcen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren