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 : s’exécute une fois lors de la création de l’instance de calcul.
- Script de démarrage : s’exécute 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 :
- Connectez-vous au studio et sélectionnez votre espace de travail.
- Sur la gauche, sélectionnez Notebooks.
- 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) .
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
source /anaconda/etc/profile.d/conda.sh
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 surazureuser
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 :
- Connectez-vous à studio et sélectionnez votre espace de travail.
- Sur la gauche, sélectionnez Calcul.
- Sélectionnez + Créer pour créer une instance de calcul.
- Remplissez le formulaire.
- 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).
- Accédez au script shell que vous avez enregistré, ou téléchargez un script à partir de votre ordinateur.
- Ajoutez les arguments de commande nécessaires.
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')]"
}
}
}
scriptData
dans le code spécifie l’emplacement du script de création dans le partage de fichiers de notebooks, comme Users/admin/testscript.sh
.
scriptArguments
est facultatif 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
, où .<ciname>
est le nom de l’instance de calcul.
For example, specify a base64 encoded command string for `scriptData`:
```json
"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.