Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
SageMaker Guide de dépannage du SDK Python
Vous pouvez utiliser le SDK SageMaker Python pour interagir avec Amazon SageMaker AI dans vos scripts Python ou vos blocs-notes Jupyter. Bien que le kit SDK fournisse un flux de travail simplifié, vous pouvez rencontrer diverses exceptions ou erreurs. Ce guide de résolution des problèmes vise à vous aider à comprendre et à résoudre les problèmes courants susceptibles de survenir lors de l' SageMaker utilisation du SDK Python. Il couvre les scénarios liés à la création de tâches d’entraînement, de tâches de traitement et de points de terminaison, ainsi que les pratiques générales de gestion des exceptions. En suivant les instructions fournies dans les sections suivantes, vous pouvez diagnostiquer et résoudre efficacement les problèmes courants.
Le SDK SageMaker Python agit comme un wrapper pour les opérations d' SageMaker API de bas niveau. Le rôle IAM que vous utilisez pour accéder au kit SDK doit pouvoir accéder aux opérations sous-jacentes. L'ajout de la politique d'accès complet à l' SageMaker IA à votre rôle IAM est le moyen le plus simple de vous assurer que vous êtes autorisé à utiliser le SDK SageMaker Python. Pour plus d'informations sur la politique d'accès complet à l' SageMaker IA, consultez Amazon SageMaker AI Full Access.
Bien que moins pratique, le fait de fournir des autorisations plus détaillées constitue une approche sécurisée de l’utilisation du kit SDK. Chacune des sections suivantes présente des informations sur les autorisations requises.
Création d’une tâche d’entraînement
Important
Si vous n'ajoutez pas la politique d'accès complet à l' SageMaker IA à votre rôle IAM, celui-ci doit être autorisé à appeler les DescribeTrainingJobopérations CreateTrainingJobet.
Il nécessite également des autorisations pour :
-
Accès aux input/output données dans S3
-
exécuter des instances Amazon EC2 ;
-
CloudWatch Métriques du journal
Si votre mission de SageMaker formation doit accéder aux ressources d'un Amazon Virtual Private Cloud (Amazon VPC), assurez-vous de configurer les paramètres VPC et les groupes de sécurité nécessaires lors de la création de la tâche de traitement.
Lorsque vous créez une tâche d’entraînement, vous pouvez rencontrer des exceptions botocore.exceptions.ClientError ou ValueError.
Mise à jour d’une tâche d’entraînement
Important
Si vous n'ajoutez pas la politique gérée par l' SageMaker IA à votre rôle IAM, vous devez accorder au rôle l'accès aux autorisations suivantes :
-
s3:GetObject: fournit les autorisations permettant de lire les artefacts de modèle depuis les compartiments Amazon S3. -
s3:PutObject: le cas échéant, fournit les autorisations nécessaires pour écrire des mises à jour des artefacts de modèle. -
iam:GetRole: fournit les autorisations permettant d’obtenir des informations sur le rôle IAM nécessaire pour exécuter la tâche d’entraînement. -
sagemaker:UpdateTrainingJob— Fournit les autorisations nécessaires pour modifier les tâches de formation à l'aide de l'UpdateTrainingJobopération. -
logs:PutLogEvents— Fournit les autorisations nécessaires pour écrire des CloudWatch journaux sur Amazon Logs pendant le processus de mise à jour.
Lorsque vous mettez à jour une tâche d’entraînement, vous pouvez rencontrer une erreur botocore.exceptions.ParamValidationError ou botocore.exceptions.ClientError.
Création d’une tâche de traitement
Important
Si vous n'ajoutez pas la politique gérée par l' SageMaker IA à votre rôle IAM, vous devez accorder au rôle l'accès aux autorisations suivantes :
-
sagemaker:CreateProcessingJob: fournit les autorisations pour créer une tâche de traitement -
sagemaker:DescribeProcessingJob: fournit des autorisations d’obtenir des informations sur une tâche de traitement -
s3:GetObject: fournit les autorisations permettant de lire les artefacts de modèle depuis les compartiments Amazon S3. -
s3:PutObject: le cas échéant, fournit les autorisations nécessaires pour écrire des mises à jour des artefacts de modèle. -
logs:PutLogEvents— Permet d'écrire des journaux sur Amazon CloudWatch Logs pendant le processus de mise à jour.
Si votre tâche de traitement doit accéder aux ressources au sein d’un cloud privé Amazon Virtual Private Cloud, vous devez spécifier ses security_group_ids et subnets dans l’estimateur que vous créez. Pour un exemple de la manière dont vous pouvez accéder aux ressources au sein d’un Amazon VPC, consultez Secure Training and Inference with VPC
Lorsque vous créez une tâche de traitement, vous pouvez rencontrer un ValueError, un UnexpectedStatusException ou un botocore.exceptions.ClientError.
Création d’un point de terminaison
Important
Si vous n'ajoutez pas la politique gérée par l' SageMaker IA à votre rôle IAM, vous devez accorder au rôle l'accès aux autorisations suivantes :
-
sagemaker:CreateModel: fournit les autorisations nécessaires pour créer le modèle que vous déployez sur le point de terminaison. -
sagemaker:CreateEndpointConfig: fournit les autorisations pour créer une configuration du point de terminaison qui définit le comportement du point de terminaison, tel que le type et le nombre d’instances. -
sagemaker:CreateEndpoint: fournit les autorisations nécessaires pour créer la configuration du point de terminaison à l’aide du point de terminaison que vous avez spécifié
En outre, vous avez besoin d’autorisations pour décrire et répertorier les modèles, les points de terminaison et les configurations des points de terminaison.
Lorsque vous créez un point de terminaison, vous pouvez rencontrer une exception UnexpectedStatusException ou une erreur botocore.exceptions.ClientError.
Voici un exemple de 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
Le message d'erreur vous demande de consulter les CloudWatch journaux Amazon. Utilisez la procédure suivante pour vérifier les journaux.
Pour consulter les CloudWatch journaux
-
Accédez à la console Amazon SageMaker AI
. -
Dans le panneau de navigation de gauche, choisissez Points de terminaison.
-
Sélectionnez le point de terminaison qui a échoué.
-
Sur la page des détails du point de terminaison, choisissez Afficher les connexions CloudWatch.
Une fois que vous avez trouvé les journaux, recherchez le problème spécifique. Voici un exemple de CloudWatch journal :
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
Pour en savoir plus sur la résolution de l’erreur botocore.exceptions.ClientError, consultez Conseils sur le traitement des exceptions.
Mise à jour d’un point de terminaison
Important
Si vous n'ajoutez pas la politique gérée par l' SageMaker IA à votre rôle IAM, vous devez accorder au rôle l'accès aux autorisations suivantes :
-
sagemaker:UpdateEndpoint: fournit les autorisations pour mettre à jour un point de terminaison existant, par exemple en modifiant le type ou le nombre d’instances du point de terminaison. -
sagemaker:UpdateEndpointWeightsAndCapacities: fournit les autorisations pour créer une configuration du point de terminaison qui définit le comportement du point de terminaison, tel que le type et le nombre d’instances. -
sagemaker:DescribeEndpoint: fournit des autorisations pour décrire la configuration actuelle du point de terminaison, qui est souvent requise avant la mise à jour.
En outre, vous pourriez avoir besoin d’autorisations pour décrire et répertorier les points de terminaison et leurs configurations.
Vous pouvez rencontrer une erreur ValueError, telle que la suivante :
ValueError: Endpoint with name 'abc' does not exist; please use an existing endpoint name
L'erreur indique que le nom du point de terminaison spécifié ne correspond à aucun point de terminaison existant dans votre AWS compte. Pour résoudre cette erreur, appliquez la procédure suivante :
Pour résoudre le problème d’une erreur de valeur
-
Utilisez le code suivant pour répertorier tous vos points de terminaison :
import sagemaker sagemaker_session = sagemaker.Session() # List all endpoints endpoints = sagemaker_session.sagemaker_client.list_endpoints() print(endpoints) -
Vérifiez que le point de terminaison que vous avez spécifié pour la fonction
update_endpointfigure dans la liste. -
Assurez-vous que vous opérez dans la bonne AWS région. SageMaker Les points de terminaison de l'IA sont spécifiques à chaque région.
-
Assurez-vous que le rôle IAM que vous utilisez est autorisé à répertorier, décrire ou mettre à jour les points de terminaison.
Conseils sur le traitement des exceptions
Si vous ne trouvez pas d’informations susceptibles de vous aider à résoudre votre problème spécifique, les exemples de code suivants peuvent vous inspirer pour gérer les exceptions.
Voici un exemple générique que vous pouvez utiliser pour détecter la plupart des exceptions.
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
Il existe deux catégories principales d’erreurs :
-
Erreurs spécifiques au SDK SageMaker Python
-
Erreurs spécifiques au AWS service sous-jacent
Les erreurs spécifiques au AWS service sous-jacent sont toujours botocore.exceptions.ClientError des exceptions. botocore.exceptions.ClientError possède un objet Error et un objet ResponseMetadata. Voici le modèle d’une erreur client :
{ '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 } }
Voici un exemple de gestion des erreurs spécifiques que vous pouvez effectuer avec 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'])
Pour plus d'informations sur la façon dont vous pouvez gérer les ClientError exceptions, voir Analyse des réponses aux erreurs et détection des exceptions provenant de Services AWS