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

Date de la dernière mise à jour : 04/06/2020

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, ce qui fait expirer l'instance de bloc-notes Amazon SageMaker. Comment résoudre ce problème et 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. Vous pouvez résoudre ce problème de deux manières :

  • nohup : la commande nohup force le script de configuration de cycle de vie à continuer de s'exécuter en arrière-plan jusqu'à ce que les packages soient installés. Cette méthode fait partie des bonnes pratiques pour les utilisateurs débutants et convient comme solution à court terme.
  • 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 de démarrage en tant que configuration de cycle de vie pour rendre les environnements personnalisés disponibles en tant que noyau dans Jupyter. Cette méthode est recommandée pour les utilisateurs plus expérimentés et constitue une meilleure solution à long terme.

Résolution

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

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. 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 de création dans le fichier .sh. Ce script crée un 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 connectivité 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.    Téléchargez le script de démarrage.

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.