Personalización de la instancia de proceso con un script

Use un script de configuración para una manera automatizada de personalizar y configurar una instancia de proceso en el momento del aprovisionamiento.

Use una instancia de proceso como entorno de desarrollo completamente configurado y administrado en la nube. Para el desarrollo y las pruebas, también puede usar la instancia como un destino de proceso de entrenamiento o para un destino de inferencia. Una instancia de proceso puede ejecutar varios trabajos en paralelo y tiene una cola de trabajos. Como entorno de desarrollo, una instancia de proceso no se puede compartir con otros usuarios del área de trabajo.

Como administrador, puede escribir un script de personalización que se usará para aprovisionar todas las instancias de proceso del área de trabajo según sus requisitos. Puede configurar el script de instalación como:

  • Script de creación: se ejecuta una vez cuando se crea la instancia de proceso.
  • Script de inicio: se ejecuta cada vez que se inicie la instancia de proceso (incluida la creación inicial).

A continuación se muestran algunos ejemplos de lo que puede hacer en un script de configuración:

  • Instalar paquetes, herramientas y software
  • Montar datos
  • Crear un entorno de Conda personalizado y kernels de Jupyter
  • Clonar repositorios de Git y configurar opciones de Git
  • Establecer servidores proxy de red
  • Establecimiento de variables de entorno
  • Instalar extensiones de JupyterLab

Creación del script de configuración

El script de configuración es un script de shell que se ejecuta como rootuser. Cree o cargue el script en los archivos de Notebooks:

  1. Inicie sesión en Studio y vaya al área de trabajo.
  2. Seleccione Notebooks en la parte izquierda.
  3. Use la herramienta Agregar archivos para crear o cargar el script del shell de configuración. Asegúrese de que el nombre de archivo del script finaliza en ".sh". Al crear un nuevo archivo, cambie también el tipo de archivo a bash(.sh) .

Creación o carga del script de configuración en el archivo de Notebooks en Studio

Cuando se ejecuta el script, el directorio de trabajo actual del script es el directorio donde se cargó. Por ejemplo, si carga el script en Users>admin, la ubicación del script en la instancia de proceso y el directorio de trabajo actual cuando se ejecuta el script es /home/azureuser/cloudfiles/code/Users/admin. Esta ubicación le permite usar rutas de acceso relativas en el script.

En el script se pueden hacer referencia a los argumentos del script como $1, $2, etc.

Si el script estaba haciendo algo específico para azureuser, como instalar el entorno de conda o el kernel de Jupyter, colóquelo en el bloque sudo -u azureuser como este:

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

El comando sudo -u azureuser cambia el directorio de trabajo actual a /home/azureuser. Tampoco puede acceder a los argumentos del script de este bloque.

Para ver otros scripts de ejemplo, consulte azureml-examples.

También puede usar las siguientes variables de entorno en el script:

  • CI_RESOURCE_GROUP
  • CI_WORKSPACE
  • CI_NAME
  • CI_LOCAL_UBUNTU_USER - apunta a azureuser

Use el script de configuración junto con Azure Policy para aplicar o establecer de forma predeterminada un script de configuración para cada creación de instancia de proceso. El valor predeterminado para el tiempo de espera de un script de configuración es de 15 minutos. La hora se puede cambiar en Studio o a través de plantillas de ARM mediante el parámetro DURATION. DURATION es un número de punto flotante con un sufijo opcional: 's' para segundos (valor predeterminado), 'm' para minutos, 'h' para horas o 'd' para días.

Uso del script en Studio

Una vez que almacene el script, especifíquelo durante la creación de la instancia de proceso:

  1. Inicie sesión en Studio y seleccione el área de trabajo.
  2. Seleccione Proceso a la izquierda.
  3. Seleccione +Nuevo para crear una nueva instancia de proceso.
  4. Rellene el formulario.
  5. En la página Aplicaciones del formulario, active el tipo de script que desea usar, el script de creación (se ejecuta una vez al crear la instancia de proceso) o el script de inicio (se ejecuta cada vez que se inicia la instancia de proceso).
  6. Vaya al script de shell que guardó. O bien, cargue un script desde el equipo.
  7. Agregue argumentos de comando según sea necesario.

Captura de pantalla del aprovisionamiento de una instancia de proceso con un script de instalación en Studio.

Sugerencia

Si el almacenamiento del área de trabajo está conectado a una red virtual, es posible que no pueda acceder al archivo de script de configuración a menos que acceda a Studio desde la red virtual.

Uso del script en una plantilla de Resource Manager

En una plantillade Resource Manager, agregue setupScripts para invocar el script de configuración cuando se aprovisione la instancia de proceso. Por ejemplo:

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

scriptData en este código especifica la ubicación del script de creación en el recurso compartido de archivos de Notebooks, como Users/admin/testscript.sh. scriptArguments es opcional y especifica los argumentos del script de creación.

En su lugar, podría proporcionar el script en línea para una plantilla de Resource Manager. El comando de shell puede hacer referencia a las dependencias cargadas en el recurso compartido de archivos de Notebooks. Cuando se use una cadena insertada, el directorio de trabajo para el script es /mnt/batch/tasks/shared/LS_root/mounts/clusters/<ciname>/code/Users, donde .<ciname> es el nombre de la instancia de proceso.


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

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

Registros del script de configuración

Los registros de la ejecución del script de configuración aparecen en la carpeta de registros de la página de detalles de la instancia de proceso. Los registros se almacenan de nuevo en el recurso compartido de archivos de Notebooks en la carpeta Logs\<compute instance name>. Los argumentos de archivo de script y comando para una instancia de proceso determinada se muestran en la página de detalles.