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:
- Inicie sesión en Studio y vaya al área de trabajo.
- Seleccione Notebooks en la parte izquierda.
- 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) .
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 aazureuser
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:
- Inicie sesión en Studio y seleccione el área de trabajo.
- Seleccione Proceso a la izquierda.
- Seleccione +Nuevo para crear una nueva instancia de proceso.
- Rellene el formulario.
- 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).
- Vaya al script de shell que guardó. O bien, cargue un script desde el equipo.
- Agregue argumentos de comando según sea necesario.
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.