Come posso risolvere la risposta InternalServerError su Amazon SageMaker?

3 minuti di lettura
0

Quando eseguo un processo di elaborazione, addestramento o previsione di Amazon SageMaker, la richiesta dà esito negativo restituendo la risposta "HTTP Error 500: Internal Server Error" o "InternalServerError: We encountered an internal error. Please try again".

Risoluzione

Se il processo o la richiesta di inferenza di SageMaker a un endpoint dà esito negativo restituendo la risposta "InternalServerError", riprova la richiesta. Riprovare la richiesta elimina l'errore dovuto a un problema transitorio.

Se l'errore persiste, segui questi passaggi per esaminare i log del processo o dell'endpoint su Amazon CloudWatch.

Revisione dei log di CloudWatch

Esamina i log di CloudWatch associati alla risorsa SageMaker per determinare la causa principale:

1.    Apri la console SageMaker.

2.    Scegli la risposta pertinente in Elaborazione, Addestramento o Inferenza.

3.    Scegli il nome dell’endpoint, del processo di elaborazione o di addestramento.

4.    Nella sezione Monitoraggio, scegli Visualizza log per aprire la console CloudWatch.

5.    Nella console CloudWatch, scegli il flusso di log per il processo o l'endpoint.

6.    Se non è presente alcun flusso di log o se il flusso di log è vuoto, conferma che il ruolo di esecuzione della risorsa abbia una policy con le seguenti autorizzazioni:

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

7.    Esamina i log per trovare il messaggio di errore.

Aggiunta di un codice di debug al tuo script di inferenza (opzionale)

Per semplificare il processo di revisione del log, puoi aggiungere codici di debug al tuo script di inferenza. Di seguito è riportato un esempio di codice di inferenza per il debug di un endpoint. Puoi usare questo codice per confermare che hai chiamato correttamente la funzione predict(). Il codice stampa anche la variabile data che mostra il valore effettivo passato all'endpoint. In questo esempio, MYDEBUG è la parola chiave da cercare nel flusso di log di CloudWatch.

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

Risoluzione di altre cause comuni di "InternalServerError"

Utilizzo delle risorse

Un processo SageMaker potrebbe non riuscire dando la risposta "InternalServerError" se il container del processo sull'istanza consuma le risorse dell'istanza. Puoi visualizzare l'utilizzo delle risorse esaminando le metriche CPUUtilization, MemoryUtilization e DiskUtilization in CloudWatch.

Per esaminare le metriche delle istanze, procedi nel modo seguente:

1.    Apri la console SageMaker.

2.    Nella sezione Processi di elaborazione/addestramento, scegli Elaborazione/Addestramento.

3.    Scegli il nome del processo.

4.    Nella sezione Monitoraggio, scegli Visualizza i parametri dell'istanza per aprire la console CloudWatch. Se il processo utilizza risorse elevate, passa a un tipo di istanza più grande o collega un volume di archiviazione maggiore all'istanza esistente.

Autorizzazioni EC2 mancanti nel ruolo di esecuzione di SageMaker

Il ruolo di esecuzione di Amazon SageMaker potrebbe mostrare "InternalServerError" quando le autorizzazioni di Amazon Elastic Compute Cloud (Amazon EC2) non sono configurate correttamente. Quando specifichi un oggetto VpcConfig nel tuo processo SageMaker, conferma che il ruolo di esecuzione di SageMaker del lavoro abbia una policy con le seguenti autorizzazioni:

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

Per ulteriori informazioni, consulta la pagina SageMaker roles.


Informazioni correlate

Logging and monitoring

CreateProcessingJob API: Execution role permissions

SageMaker jobs and endpoint metrics

Connect SageMaker Studio Notebooks in a VPC to external resources

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa