Installation de bibliothèques et de noyaux externes dans des instances de bloc-notes - Amazon SageMaker

Installation de bibliothèques et de noyaux externes dans des instances de bloc-notes

Les instances de bloc-notes Amazon SageMaker sont fournies avec plusieurs environnements déjà installés. Ces environnements contiennent des noyaux Jupyter et des packages Python, en particulier : scikit, Pandas, NumPy, TensorFlow et MXNet. Ces environnements, ainsi que tous les fichiers du dossier sample-notebooks, sont actualisés lorsque vous arrêtez et démarrez une instance de bloc-notes. Vous pouvez également installer vos propres environnements contenant vos choix de packages et noyaux.

Les différents noyaux Jupyter dans les instances de bloc-notes Amazon SageMaker sont des environnements conda distincts. Pour plus d'informations sur les environnements conda, consultez Managing environments dans la documentation Conda.

Installez des environnements et des noyaux personnalisés sur le volume Amazon EBS de l'instance de bloc-notes. Cela garantit qu'elles persistent lorsque vous arrêtez et redémarrez l'instance de bloc-notes et que les bibliothèques externes que vous installez ne sont pas mises à jour par SageMaker. Pour ce faire, utilisez une configuration de cycle de vie qui inclut à la fois un script qui s'exécute lorsque vous créez l'instance de bloc-notes (on-create) et un script qui s'exécute chaque fois que vous redémarrez l'instance de bloc-notes (on-start). Pour de plus amples informations sur l'utilisation des configurations du cycle de vie des instances de bloc-notes, veuillez consulter Personnalisation d'une instance de bloc-notes à l'aide d'un script de configuration du cycle de vie. Il existe un référentiel GitHub qui contient des exemples de scripts de configuration du cycle de vie sur Exemples de configuration de cycle de vie d'une instance de bloc-notes SageMaker.

Les exemples présentés sur https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-create.sh et https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-start.sh présentent les bonnes pratiques pour installer des environnements et des noyaux sur une instance de bloc-notes. Le script on-create installe la bibliothèque ipykernel afin de créer des environnements personnalisés en tant que noyaux Jupyter et utilise pip install et conda install pour installer des bibliothèques. Vous pouvez adapter le script pour créer des environnements personnalisés et installer les bibliothèques de votre choix. SageMaker ne met pas à jour ces bibliothèques lorsque vous arrêtez et redémarrez l'instance de bloc-notes. Vous pouvez donc vous assurer que votre environnement personnalisé possède des versions spécifiques des bibliothèques que vous souhaitez. Le script on-start installe tous les environnements personnalisés que vous créez en tant que noyaux Jupyter, de sorte qu'ils apparaissent dans la liste déroulante de menu New (Nouveau) de Jupyter.

Outils d'installation de package

Les blocs-notes SageMaker prennent en charge les outils d'installation de package suivants :

  • conda install

  • pip install

Vous pouvez installer des packages à l'aide des méthodes suivantes :

À partir d'un bloc-notes, vous pouvez utiliser la syntaxe de la commande système (lignes commençant par !) pour installer des packages, par exemple !pip install et !conda install. Plus récemment, de nouvelles commandes ont été ajoutées à IPython : %pip et %conda. Ces commandes sont la méthode recommandée pour installer des packages à partir d'un bloc-notes, car elles prennent correctement en compte l'environnement d'activation ou l'interpréteur utilisé. Pour de plus amples informations, veuillez consulter Add %pip and %conda magic functions.

Conda

Conda est un système de gestion de packages open source et système de gestion d'environnement, qui peut installer des packages et leurs dépendances. SageMaker prend en charge l'utilisation de Conda avec l'un des deux canaux principaux, le canal par défaut et le canal conda-forge. Pour de plus amples informations, veuillez consulter Conda channels. Le canal conda-forge est un canal communautaire où les contributeurs peuvent télécharger des packages.

Note

En raison de la façon dont Conda résout le graphique de dépendance, l'installation de packages à partir de conda-forge peut prendre beaucoup plus de temps (dans le pire des cas, jusqu'à 10 minutes).

L'AMI de deep learning est fourni avec de nombreux environnements conda et de nombreux packages préinstallés. En raison du nombre de packages préinstallés, il est difficile de trouver un ensemble de packages dont la compatibilité est garantie. Vous pouvez voir un avertissement « The environment is inconsistent, please check the package plan carefully » (L'environnement est incohérent, veuillez vérifier attentivement le plan du package). Malgré cet avertissement, SageMaker s'assure que tous les environnements fournis par SageMaker sont corrects. SageMaker ne peut garantir que les packages installés par l'utilisateur fonctionneront correctement.

Conda dispose de deux méthodes pour activer les environnements : conda activate/deactivate et source activate/deactivate. Pour de plus amples informations, veuillez consulter Should I use 'conda activate' or 'source activate' in Linux.

SageMaker prend en charge le déplacement des environnements Conda sur le volume Amazon EBS, qui est conservé lorsque l'instance est arrêtée. Les environnements ne sont pas conservés lorsque les environnements sont installés sur le volume racine, qui est le comportement par défaut. Pour voir un exemple de script de cycle de vie, veuillez consulter persistant conda-ebs.

Opérations conda prises en charge (voir note au bas de cette rubrique)

  • commande conda install d'un package dans un environnement unique

  • commande conda install d'un package dans tous les environnements

  • commande conda install d'un package R dans l'environnement R

  • Installation d'un package à partir du référentiel conda principal

  • Installation d'un package à partir de conda-forge

  • Modification de l'emplacement d'installation de Conda pour utiliser EBS

  • Prise en charge de conda activate et source activate

Pip

Pip est l'outil de facto pour l'installation et la gestion des packages Python. Pip recherche des packages sur l'index Python Package Index (PyPI) par défaut. Contrairement à Conda, pip ne dispose pas de la prise en charge de l'environnement intégrée, et n'est pas aussi complet que Conda lorsqu'il s'agit de packages avec des dépendances de bibliothèque native/système. Pip peut être utilisé pour installer des packages dans des environnements Conda.

Vous pouvez utiliser des référentiels de packages alternatifs avec pip au lieu de PyPI. Pour voir un exemple de script de cycle de vie, veuillez consulter on-start.sh.

Opérations pip prises en charge (voir la note au bas de cette rubrique)

  • Utilisation de pip pour installer un package sans environnement conda actif (installer les packages à l'ensemble du système)

  • Utilisation de pip pour installer un package dans un environnement conda

  • Utilisation de pip pour installer un package dans tous les environnements conda

  • Modification de l'emplacement d'installation de pip pour utiliser EBS

  • Utilisation d'un référentiel alternatif pour installer des packages avec pip

Unsupported

SageMaker vise à prendre en charge le plus grand nombre possible d'opérations d'installation de packages. Toutefois, si les packages ont été installés par SageMaker ou DLAMI et que vous utilisez les opérations suivantes sur ces packages, cela peut rendre votre instance de bloc-notes instable :

  • Désinstallation

  • Rétrogradation

  • Mise à jour

Nous ne fournissons pas de support pour l'installation de packages via yum install ou l'installation de packages R à partir de CRAN.

En raison de problèmes potentiels liés aux conditions ou aux configurations réseau, ou de la disponibilité de Conda ou PyPi, nous ne pouvons pas garantir que les packages seront installés dans un délai fixe ou déterministe.

Note

Nous ne pouvons pas garantir le succès de l'installation d'un package. Une tentative d'installation d'un package dans un environnement avec des dépendances incompatibles peut entraîner un échec. Dans ce cas, vous devriez contacter le responsable de la bibliothèque pour voir s'il est possible de mettre à jour les dépendances du package. Vous pouvez également essayer de modifier l'environnement de manière à autoriser l'installation. Cependant, cette modification impliquera probablement la suppression ou la mise à jour des packages existants, ce qui signifie que nous ne pouvons plus garantir la stabilité de cet environnement.