Passer au contenu

Comment résoudre les problèmes liés aux scripts de configuration du cycle de vie dans Amazon SageMaker AI ?

Lecture de 5 minute(s)
0

Je souhaite résoudre les problèmes liés aux scripts de configuration du cycle de vie (LCC) dans Amazon SageMaker AI.

Résolution

Le script LCC expire

Lorsque l'exécution de votre script LCC dépasse le quota de 5 minutes, le script expire.

Pour réduire le temps d'exécution du script, effectuez les actions suivantes :

  • Réduisez le nombre d'étapes nécessaires. Par exemple, limitez les environnements conda dans lesquels vous installez des packages volumineux.
  • Exécutez des tâches dans des processus parallèles.
  • Exécutez la commande nohup dans votre script pour ignorer les signaux de déconnexion afin que le script puisse se terminer en 5 minutes.

Pour exécuter la commande nohup, initialisez-la sur la ligne de code spécifique, puis terminez la ligne de code par une esperluette.

Exemple de script :

===
#!/bin/bash

set -e

# OVERVIEW
# This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert)

# PARAMETERS

ENVIRONMENT=python3
NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb

source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &

source /home/ec2-user/anaconda3/bin/deactivate

====

Vous ne pouvez pas supprimer une LLC existante

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Lorsque vous essayez de supprimer un script LCC déjà associé à un domaine SageMaker Studio, le message d'erreur suivant peut s'afficher :

"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."

Pour résoudre ce problème, vous devez d'abord détacher le script LCC, puis le supprimer.

Vous pouvez également définir le paramètre LifecycleConfigArns dans la configuration de votre domaine sur une liste vide.

Pour reconfigurer votre domaine, procédez comme suit :

  1. Exécutez la commande describe-domain suivante pour afficher la liste des scripts LCC associés dans le paramètre LifecycleConfigArns :

    aws sagemaker describe-domain —domain-id d-xxxxxxxxx
  2. Exécutez la commande update-domain suivante pour définir le paramètre sur une liste vide :

    aws sagemaker update-domain --domain-id d-xxxxxxxxx \
    --default-user-settings '{
      "JupyterServerAppSettings": {
        "DefaultResourceSpec": {
          "InstanceType": "system"
        },
        "LifecycleConfigArns": []
      }
    }'

Lorsque vous exécutez à nouveau la commande update-domain, le domaine ne fait plus référence au script LCC. Vous pouvez ensuite joindre le nouveau script LCC au domaine.

Le script LCC ne peut pas installer de package

Si le LCC ne parvient pas à installer des packages dans un domaine SageMaker Studio ou une instance de bloc-notes, il est possible que le script LCC n'ait pas accès au domaine ou à l'instance. Pour résoudre ce problème, vous devez connecter le domaine ou l'instance de bloc-notes SageMaker Studio associé à Amazon Virtual Private Cloud (VPC). Le VPC doit également autoriser l'accès à Internet.

Vous pouvez associer un VPC à une communication par défaut sur Internet en mode PublicInternetOnly. Vous pouvez également configurer la communication avec Internet en mode VPC uniquement.

Si vous utilisez le mode VPC uniquement, configurez des groupes de sécurité avec des règles entrantes et sortantes qui autorisent le trafic suivant :

  • Trafic NFS via TCP sur le port 2049 entre le domaine et le volume Amazon Elastic File System (Amazon EFS).
  • Trafic TCP au sein du groupe de sécurité.
    Remarque : Le trafic TCP du groupe de sécurité est requis pour connecter l'application Jupyter Server et les applications Kernel Gateway. Vous devez autoriser l'accès à au moins des ports de la plage 8192-65535.

Pour autoriser l'accès à Internet, vous devez utiliser une passerelle NAT avec accès à Internet.

L'instance ne trouve pas le contenu du script LCC

Lorsque l'instance de l'application ne trouve pas le contenu du script LCC, le message d'erreur suivant peut s'afficher :

"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"

Cette erreur peut se produire en raison d’une incompatibilité entre les symboles au format Windows et les symboles au format Unix. Les caractères de fenêtre utilisent des fins de ligne CRLF (\r\n) et Unix utilise des fins de ligne LF (\n).

Les instances de bloc-notes Amazon SageMaker AI s'exécutent sur le système d'exploitation (OS) Amazon Linux 2 (AL2). Un script Bash LCC que vous téléchargez sur un système d'exploitation Windows et que vous attachez directement au LLC n'est pas valide pour le système d'exploitation Linux.

Pour résoudre ce problème, procédez comme suit :

  1. Ouvrez le script Bash dans Notepad++.
  2. Choisissez Afficher, puis choisissez Afficher le symbole.
  3. Choisissez Afficher tous les symboles pour afficher les fins de ligne Windows (\r\n).
  4. Remplacez CRLF par LF (\n) pour que le script soit valide dans Unix.
  5. Joignez le script au LCC.

Informations connexes

Déboguer les configurations du cycle de vie

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

AWS OFFICIELA mis à jour il y a 4 mois