Personnalisation de l’instance de calcul avec un script

Utilisez un script de configuration pour personnaliser et configurer automatiquement une instance de calcul au moment du provisionnement.

Utilisez une instance de calcul comme environnement de développement complètement configuré et managé dans le cloud. Pour le développement et le test, vous pouvez également utiliser l’instance en tant que cible de calcul d’entraînement ou pour une cible d’inférence. Une instance de calcul peut exécuter plusieurs travaux en parallèle et dispose d’une file d’attente de travaux. Parce qu’il s’agit d’un environnement de développement, une instance de calcul ne peut pas être partagée avec d’autres utilisateurs dans votre espace de travail.

En tant qu’administrateur, vous pouvez écrire un script de personnalisation visant à provisionner toutes les instances de calcul dans l’espace de travail en fonction de vos besoins. Vous pouvez configurer votre script d’installation en tant que script de création, qui s’exécutera une fois lors de la création de l’instance de calcul. Vous pouvez également le configurer en tant que script de démarrage, qui s’exécutera chaque fois que l’instance de calcul est démarrée (y compris la création initiale).

Voici quelques exemples de ce que vous pouvez faire dans un script de configuration :

  • Installer des packages, des outils et des logiciels
  • Monter des données
  • Créer un environnement Conda personnalisé et des noyaux Jupyter
  • Cloner des référentiels Git et définir la configuration Git
  • Définir des proxys réseau
  • Définir des variables d’environnement
  • Installer des extensions JupyterLab

Création du script de configuration

Le script de configuration est un script d’interpréteur de commandes qui s’exécute en tant que rootuser. Créez ou chargez le script dans vos fichiers Notebooks :

  1. Connectez-vous au studio et sélectionnez votre espace de travail.
  2. Sur la gauche, sélectionnez Notebooks.
  3. Utilisez l’outil Ajouter des fichiers pour créer ou charger votre script shell de configuration. Veillez à ce que le nom de fichier du script se termine par « .sh ». Lorsque vous créez un fichier, remplacez également le Type de fichier par bash (.sh) .

Create or upload your setup script to Notebooks file in studio

Lorsque le script s’exécute, le répertoire de travail actif du script est le répertoire dans lequel il a été chargé. Par exemple, si vous chargez le script dans Utilisateurs>Administrateur, l’emplacement du script sur l’instance de calcul et le répertoire de travail actuel lorsque le script s’exécute est /home/azureuser/cloudfiles/code/Users/admin. Cet emplacement vous permet d’utiliser des chemins relatifs dans le script.

Les arguments de script peuvent être référencés dans le script sous la forme $1, $2, etc.

Si votre script effectue une opération propre à azureuser, par exemple, l’installation de l’environnement conda ou du noyau Jupyter, placez-le dans un bloc sudo -u azureuser de la façon suivante :

#!/bin/bash

set -e

# This script installs a pip package in compute instance azureml_py38 environment.

sudo -u azureuser -i <<'EOF'

PACKAGE=numpy
ENVIRONMENT=azureml_py38 
conda activate "$ENVIRONMENT"
pip install "$PACKAGE"
conda deactivate
EOF

La commande sudo -u azureuser définit le répertoire de travail actif sur /home/azureuser. Vous ne pouvez pas non plus accéder aux arguments du script dans ce bloc.

Pour d’autres exemples de script, consultez azureml-examples.

Vous pouvez également utiliser les variables d’environnement suivantes dans votre script :

  • CI_RESOURCE_GROUP
  • CI_WORKSPACE
  • CI_NAME
  • CI_LOCAL_UBUNTU_USER : pointe sur azureuser

Utilisez un script de configuration conjointement avec Azure Policy afin d’appliquer ou d’utiliser par défaut un script de configuration pour chaque création d’instance de calcul. La valeur par défaut du délai d’expiration d’un script de configuration est de 15 minutes. Ce délai peut être modifié dans studio ou par le biais de modèles ARM à l’aide du paramètre DURATION. DURATION est un nombre à virgule flottante avec un suffixe facultatif : 's' pour les secondes (valeur par défaut), 'm' pour les minutes, 'h' pour les heures ou 'd' pour les jours.

Utiliser le script dans studio

Une fois que vous avez stocké le script, spécifiez-le lors de la création de votre instance de calcul :

  1. Connectez-vous à studio et sélectionnez votre espace de travail.
  2. Sur la gauche, sélectionnez Calcul.
  3. Sélectionnez + Créer pour créer une instance de calcul.
  4. Remplissez le formulaire.
  5. Dans la page Applications du formulaire, basculez vers le type de script que vous voulez utiliser, le script de création (exécuté une fois pendant la création de l’instance de calcul) ou le script de démarrage (exécuté chaque fois que l’instance de calcul est démarrée).
  6. Accédez au script shell que vous avez enregistré, ou téléchargez un script à partir de votre ordinateur.
  7. Ajoutez les arguments de commande nécessaires.

Screenshot of provision a compute instance with a setup script in the studio.

Conseil

Si le stockage d’espace de travail est attaché à un réseau virtuel, vous risquez de ne pas pouvoir accéder au fichier de script d’installation, sauf si vous accédez au studio à partir du réseau virtuel.

Utiliser le script dans un modèle Resource Manager

Dans un modèle Resource Manager, ajoutez setupScripts pour appeler le script de configuration lorsque l’instance de calcul est provisionnée. Par exemple :

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"workspaceStorage",
        "scriptData":"[parameters('creationScript.location')]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

La propriété scriptData ci-dessus spécifie l’emplacement du script de création dans le partage de fichiers de notebooks, comme Users/admin/testscript.sh. scriptArguments est facultatif ci-dessus, et spécifie les arguments pour le script de création.

Il est également possible d’insérer le script inline pour un modèle Resource Manager. La commande shell peut faire référence à toutes les dépendances chargées dans le partage de fichiers des notebooks. Lorsque vous utilisez une chaîne inline, le répertoire de travail du script est /mnt/batch/tasks/shared/LS_root/mounts/clusters/**\<ciname\>**/code/Users.

Par exemple, spécifiez une chaîne de commande encodée en Base64 pour scriptData :

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"inline",
        "scriptData":"[base64(parameters('inlineCommand'))]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

Journaux du script de configuration

Les journaux issus de l’exécution du script de configuration s’affichent dans le dossier Journaux de la page Détails de l’instance de calcul. Ils sont stockés dans votre partage de fichiers de notebooks dans le dossier Logs\<compute instance name>. Les arguments de fichier de script et de commande d’une instance de calcul particulière apparaissent sur la page de détails.