Comment m'assurer que les bibliothèques installées manuellement persistent dans Amazon SageMaker si la configuration de mon cycle de vie expire lorsque j'essaie d'installer les bibliothèques ?

Lecture de 5 minute(s)
0

Lorsque j'essaie d'installer des bibliothèques supplémentaires, les scripts de configuration de cycle de vie sont exécutés pendant plus de cinq minutes. Cela entraîne l'expiration de l'instance de bloc-notes Amazon SageMaker. Je souhaite résoudre ce problème. Je souhaite également m'assurer que les bibliothèques installées manuellement persistent entre les sessions d'instance de bloc-notes.

Brève description

Si un script de configuration de cycle de vie s'exécute pendant plus de cinq minutes, il n'aboutit pas, et l'instance de bloc-notes n'est pas créée ou démarrée.

Essayez une ou plusieurs des méthodes suivantes pour résoudre le problème :

  • nohup : La commande nohup, abréviation de « no hangup », est une commande Linux qui ignore le signal de raccrochage. L'utilisation de cette commande avec le symbole esperluette à la fin force le script de configuration du cycle de vie à s'exécuter en arrière-plan jusqu'à l'installation des packages. Cette méthode fait partie des bonnes pratiques pour les utilisateurs débutants et convient comme solution à court terme.
    Remarque : La commande nohup ignore le signal de raccrochage. Par conséquent, vous devez l'utiliser avec le symbole esperluette pour que le script continue à s'exécuter en arrière-plan. Le shell qui exécute le script de configuration du cycle de vie s'arrête à la fin du script. Par conséquent, ajoutez nohup au début de la commande et & à la fin de la commande pour forcer le script de configuration du cycle de vie à s'exécuter en arrière-plan.
  • Créez une installation Conda personnalisée et persistante sur le volume Amazon Elastic Block Store (Amazon EBS) de l'instance de bloc-notes : exécutez le script de création dans le terminal d'une instance de bloc-notes existante. Ce script utilise Miniconda pour créer une installation Conda distincte sur le volume EBS (/home/ec2-user/SageMaker/). Exécutez ensuite le script on-start en tant que configuration de cycle de vie pour rendre les environnements personnalisés disponibles en tant que noyau dans Jupyter. Cette méthode fait figure de bonne pratique pour les utilisateurs plus expérimentés et constitue une meilleure solution à long terme.

Solution

Utilisez l'une des méthodes suivantes pour résoudre les problèmes d’expirations de configuration de cycle de vie.

Exécuter la commande nohup

Utilisez la commande nohup pour forcer le script de configuration de cycle de vie à continuer de s'exécuter en arrière-plan, même après l'expiration du délai de cinq minutes. Veillez à ajouter l'esperluette (&) à la fin de la commande.

Exemple :

#!/bin/bash
set -e
nohup pip install xgboost &

L'exécution du script s'arrête après l'installation des bibliothèques. Vous ne recevez aucun message pour vous en informer, mais vous pouvez utiliser la commande ps pour déterminer si le script est toujours en cours d'exécution.

Remarque : vous pouvez également utiliser la commande nohup si votre script de configuration de cycle de vie expire dans d'autres circonstances, notamment lorsque vous téléchargez des objets volumineux Amazon Simple Storage Service (Amazon S3).

Créer une installation Conda personnalisée et persistante sur le volume EBS de l'instance de bloc-notes

1.    Dans le terminal d'une instance de bloc-notes existante, créez un fichier .sh à l'aide de votre éditeur préféré.

Exemple :

vim custom-script.sh

2.    Copiez le contenu du script on-create dans le fichier .sh. Ce script crée un nouvel environnement Conda dans une installation Conda personnalisée. Il installe également NumPy et Boto3 dans le nouvel environnement Conda.

Remarque : l'instance de bloc-notes doit disposer d'une connexion Internet pour pouvoir télécharger le programme d'installation Miniconda et ipykernel.

3.    Marquez le script comme exécutable et exécutez-le.

Exemple :

chmod +x custom-script.sh
./custom-script.sh

4.    Une fois l'installation terminée, arrêtez l'instance de bloc-notes.

5.    Copiez le script on-start dans un fichier .sh.

#!/bin/bash
set -e
# OVERVIEW
# This script installs a custom, persistent installation of conda on the Notebook Instance's EBS volume, and ensures
# that these custom environments are available as kernels in Jupyter.
# 
# The on-start script uses the custom conda environment created in the on-create script and uses the ipykernel package

# to add that as a kernel in Jupyter.

#

# For another example, see:
# https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-add-external.html#nbi-isolated-environment
sudo -u ec2-user -i <<'EOF'
unset SUDO_UID
WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda/
source "$WORKING_DIR/miniconda/bin/activate"

for env in $WORKING_DIR/miniconda/envs/*; do

BASENAME=$(basename "$env")
source activate "$BASENAME"

python -m ipykernel install --user --name "$BASENAME" --display-name "Custom ($BASENAME)"
done
# Optionally, uncomment these lines to disable SageMaker-provided Conda functionality.

# echo "c.EnvironmentKernelSpecManager.use_conda_directly = False" >> /home/ec2-user/.jupyter/jupyter_notebook_config.py

# rm /home/ec2-user/.condarc
EOF
echo "Restarting the Jupyter server.."
# For notebook instance with alinux (notebook-al1-v1)
initctl restart jupyter-server --no-wait
# Use this instead for notebook instance with alinux2 (notebook-al2-v1)
systemctl restart jupyter-server

6.    Sur l'instance de bloc-notes arrêtée, ajoutez le script de démarrage en tant que configuration de cycle de vie. Ce script rend l'environnement personnalisé disponible en tant que noyau dans Jupyter à chaque fois que vous démarrez l'instance de bloc-notes.

7.    Démarrez l'instance de bloc-notes, puis installez vos bibliothèques personnalisées dans l'environnement personnalisé.

Par exemple, pour installer pyarrow :

import sys
!conda install --yes --prefix {sys.prefix} -c conda-forge pyarrow

Si vous obtenez un message d'erreur indiquant que vous devez mettre à jour Conda, exécutez les commandes ci-dessous. Essayez ensuite à nouveau d'installer les bibliothèques personnalisées.

!conda install -p "/home/ec2-user/anaconda3" "conda>=4.8" --yes
!conda install -p "/home/ec2-user/SageMaker/custom-miniconda/miniconda" "conda>=4.8" --yes

Vos bibliothèques et votre environnement Conda personnalisés sont toujours disponibles si vous arrêtez puis démarrez votre instance de bloc-notes. Il n'est pas nécessaire de les installer à nouveau.

Remarque : vous pouvez utiliser les journaux Amazon CloudWatch Logs pour résoudre les problèmes liés aux scripts de configuration de cycle de vie. Vous pouvez consulter les journaux d'exécution du script dans le flux de journaux LifecycleConfigOnStart sous l'espace de noms aws/sagemaker/studio.


Informations connexes

Exemples de configuration de cycle de vie d'instance de bloc-notes Amazon SageMaker

Bonnes pratiques de configuration du cycle de vie

Débogage des configurations du cycle de vie

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an