Anpassen der Compute-Instanz mit einem Skript

Verwenden Sie ein Setupskript, um eine Compute-Instanz zum Zeitpunkt der Bereitstellung automatisch anzupassen und zu konfigurieren.

Nutzen Sie eine Compute-Instanz als Ihre vollständig konfigurierte und verwaltete Entwicklungsumgebung in der Cloud. Zu Entwicklungs- und Testzwecken können Sie die Instanz auch als Trainingscomputeziel oder Rückschlussziel verwenden. Computeinstanzen können mehrere Aufträge parallel ausführen und verfügen über eine Auftragswarteschlange. Da es sich bei einer Compute-Instanz um eine Entwicklungsumgebung handelt, kann sie nicht für andere in Ihrem Arbeitsbereich freigegeben werden.

Als Administrator können Sie ein Anpassungsskript schreiben, mit dem alle Compute-Instanzen im Arbeitsbereich gemäß Ihren Anforderungen bereitgestellt werden. Sie können Ihr Setupskript folgendermaßen konfigurieren:

  • Erstellungsskript: Wird einmal ausgeführt, wenn die Compute-Instanz erstellt wird
  • Startskript: Wird jedes Mal ausgeführt, wenn die Compute-Instanz gestartet wird, einschließlich bei der ursprünglichen Erstellung

Einige Beispiele für die Verwendungsmöglichkeiten eines Setupskripts:

  • Installieren von Paketen, Tools und Software
  • Einbinden von Daten
  • Erstellen einer benutzerdefinierten Conda-Umgebung und von Jupyter-Kernels
  • Klonen von Git-Repositorys und Festlegen der Git-Konfiguration
  • Festlegen von Netzwerkproxys
  • Festlegen von Umgebungsvariablen
  • Installieren von JupyterLab-Erweiterungen

Erstellen des Setupskripts

Das Setup-Skript ist ein Shellskript, das als rootuser ausgeführt wird. Erstellen Sie das Skript, oder laden Sie es in Ihre Notebooks-Dateien hoch:

  1. Melden Sie sich bei Studio an, und wählen Sie Ihren Arbeitsbereich aus.
  2. Wählen Sie links Notebooks aus.
  3. Verwenden Sie das Tool Dateien hinzufügen, um das Setupshellskript zu erstellen oder hochzuladen. Der Skriptdateiname muss unbedingt mit „.sh“ enden. Wenn Sie eine neue Datei erstellen, ändern Sie auch den Dateityp in bash(.sh) .

Erstellen oder Hochladen Ihres Setupskripts in die Notebooks-Datei in Studio

Wenn das Skript ausgeführt wird, ist das aktuelle Arbeitsverzeichnis des Skriptes das Verzeichnis, in das es hochgeladen wurde. Wenn Sie z. B. das Skript in Users>admin hochladen, lautet der Speicherort des Skripts auf der Compute-Instanz und des aktuellen Arbeitsverzeichnisses bei Ausführung des Skripts /home/azureuser/cloudfiles/code/Users/admin. Dadurch können Sie relative Pfade im Skript verwenden.

Skriptargumente können im Skript als $1, $2 usw. bezeichnet werden.

Wenn Ihr Skript spezifische Aufgaben für azureuser ausführt – z. B. die Installation der Conda-Umgebung oder des Jupyter-Kernels –, fügen Sie es wie folgt in den Block sudo -u azureuser ein:

#!/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

Der Befehl sudo -u azureuser ändert das aktuelle Arbeitsverzeichnis zu /home/azureuser. Sie können auch nicht auf die Skriptargumente in diesem Block zugreifen.

Sehen Sie andere Skriptbeispiele in azureml-examples.

In Ihrem Skript können zudem die folgenden Umgebungsvariablen verwendet werden:

  • CI_RESOURCE_GROUP
  • CI_WORKSPACE
  • CI_NAME
  • CI_LOCAL_UBUNTU_USER – zeigt auf azureuser

Verwenden Sie ein Setupskript in Verbindung mit Azure-Policy, um ein Setupskript für jede Erstellung einer Compute-Instanz zu erzwingen oder vorzugeben. Der Standardwert für das Timeout eines Setupskripts beträgt 15 Minuten. Diese Zeitspanne kann in Studio oder über ARM-Vorlagen mit dem DURATION-Parameter geändert werden. DURATION ist eine Gleitkommazahl mit einem optionalen Suffix: 's' für Sekunden (Standardeinstellung), 'm' für Minuten, 'h' für Stunden oder 'd' für Tage.

Verwenden des Skripts in Studio

Nachdem Sie das Skript gespeichert haben, geben Sie es während der Erstellung Ihrer Compute-Instanz an:

  1. Melden Sie sich bei Studio an, und wählen Sie Ihren Arbeitsbereich aus.
  2. Wählen Sie links Compute aus.
  3. Wählen Sie +Neu aus, um eine neue Compute-Instanz zu erstellen.
  4. Füllen Sie das Formular aus.
  5. Schalten Sie auf der Seite Anwendungen des Formulars die Art des Skripts ein, das Sie verwenden möchten: Erstellungsskript (wird einmal bei der Erstellung der Recheninstanz ausgeführt) oder Startskript (wird bei jedem Start der Recheninstanz ausgeführt).
  6. Navigieren Sie zu dem Shellskript, das Sie gespeichert haben. Oder laden Sie ein Skript von Ihrem Computer hoch.
  7. Fügen Sie nach Bedarf Befehlsargumente hinzu.

Screenshot: Bereitstellen einer Compute-Instanz mit einem Setupskript in Studio

Tipp

Wenn der Arbeitsbereichsspeicher an ein virtuelles Netzwerk angefügt ist, können Sie möglicherweise nicht auf die Setupskriptdatei zugreifen, es sei denn, der Zugriff auf Studio erfolgt innerhalb des virtuellen Netzwerks.

Verwenden eines Skripts in einer Resource Manager-Vorlage

Fügen Sie setupScripts zu einer Resource Manager-Vorlage hinzu, um das Setupskript beim Bereitstellen der Compute-Instanz aufzurufen. Zum Beispiel:

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

scriptData in diesem Code gibt den Speicherort des Erstellungsskripts in der Notebooks-Dateifreigabe an, z. B. Users/admin/testscript.sh. scriptArguments ist optional und gibt die Argumente für das Erstellungsskript an.

Sie können das Skript stattdessen inline für eine Resource Manager-Vorlage bereitstellen. Der Shellbefehl kann auf alle Abhängigkeiten verweisen, die in die Notebooks-Dateifreigabe hochgeladen wurden. Wenn Sie eine Inline-Zeichenfolge verwenden, lautet das Arbeitsverzeichnis für das Skript /mnt/batch/tasks/shared/LS_root/mounts/clusters/<ciname>/code/Users, wobei<ciname> der Name der Compute-Instanz ist.


For example, specify a base64 encoded command string for `scriptData`:

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

Setupskriptprotokolle

Protokolle der Setupskriptausführung werden im Protokollordner auf der Detailseite der Compute-Instanz angezeigt. Protokolle werden wieder in Ihrer Notebooks-Dateifreigabe im Ordner Logs\<compute instance name> gespeichert. Skriptdatei- und Befehlsargumente für eine bestimmte Compute-Instanz werden auf der Detailseite angezeigt.