Comment puis-je résoudre la réponse InternalServerError sur Amazon SageMaker ?

Lecture de 4 minute(s)
0

Lorsque j'exécute une tâche de traitement, d’entraînement ou de prédiction dans Amazon SageMaker, la demande échoue avec la réponse « HTTP Error 500: Internal Server Error » ou « InternalServerError : We encountered an internal error. Veuillez réessayer ».

Solution

Si votre tâche SageMaker ou votre demande d'inférence à un point de terminaison a échoué avec l'erreur « InternalServerError », réessayez la demande. Une nouvelle tentative élimine l'échec dû à un problème passager.

Si l'échec persiste, suivez ces étapes pour consulter les journaux de la tâche ou du point de terminaison sur Amazon CloudWatch.

Consulter les journaux CloudWatch

Vérifiez les journaux CloudWatch associés au point de terminaison pour déterminer la cause première :

1.    Ouvrez la console SageMaker.

2.    Choisissez la ressource appropriée sous Traitement, Entraînement ou Inférence.

3.    Choisissez le nom du point de terminaison, du traitement ou de la tâche d’entraînement.

4.    Dans la section Surveillance choisissez Afficher les journaux pour ouvrir la console CloudWatch.

5.    Dans la console CloudWatch, choisissez le flux de journaux pour la tâche ou le point de terminaison.

6.    S'il n'y a pas de flux de journaux ou si le flux de journaux est vide, vérifiez que le rôle d'exécution de la ressource dispose d'une politique avec les autorisations suivantes :

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

7.    Passez en revue les journaux pour trouver le message d'erreur.

Ajoutez du code de débogage à votre script d'inférence (facultatif)

Pour simplifier le processus de révision du journal, vous pouvez ajouter du code de débogage à votre script d'inférence. Voici un exemple de code d'inférence pour le débogage d'un point de terminaison. Vous pouvez utiliser ce code pour confirmer que vous avez bien appelé la fonction predict (). Le code imprime également la variable de données qui vous montre la valeur réelle qui est passée au point de terminaison. Dans cet exemple, MYDEBUG est le mot-clé que vous souhaitez rechercher dans le flux de journaux 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) )

Résolution des autres causes courantes de « InternalServerError »

Utilisation des ressources

Une tâche SageMaker peut échouer avec l’erreur « InternalServerError » si le conteneur de la tâche sur l'instance utilise les ressources de l'instance. Vous pouvez consulter l'utilisation des ressources en examinant les métriques de l’instance CPUUtilization, MemoryUtilization et DiskUtilization dans CloudWatch.

Pour consulter les métriques de l'instance, procédez comme suit :

1.    Ouvrez la console SageMaker.

2.    Dans la section Tâches de traitement/Formation, choisissez Traitement/Formation.

3.    Choisissez le nom de la tâche.

4.    Dans la section Surveillance, choisissez Afficher les métriques de l'instance pour ouvrir la console CloudWatch. Si la tâche utilise un grand nombre de ressources, passez à un type d'instance plus grand ou attachez un volume de stockage plus important à l'instance existante.

Autorisations EC2 manquantes dans le rôle d'exécution de SageMaker

Le rôle d'exécution Amazon SageMaker peut afficher une erreur « InternalServerError » lorsque les autorisations Amazon Elastic Compute Cloud (Amazon EC2) ne sont pas correctement configurées. Lorsque vous spécifiez un objet VpcConfig dans votre tâche SageMaker, vérifiez que le rôle d'exécution SageMaker de la tâche dispose d'une politique avec les autorisations suivantes :

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

Pour plus d'informations, consultez la section Rôles SageMaker.


Informations connexes

Consignation et supervision

API CreateProcessingJob : autorisations du rôle d'exécution

Métriques des tâches et points de terminaison SageMaker

Connectez les blocs-notes SageMaker Studio d'un VPC à des ressources externes

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans