Esquema YAML del trabajo de comando de la CLI (v2)
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
El esquema JSON de origen se puede encontrar en https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.
Nota
La sintaxis de YAML que se detalla en este documento se basa en el esquema JSON de la versión más reciente de la extensión ML de la CLI v2. Se garantiza que esta sintaxis solo funciona con la versión más reciente de la extensión ML de la CLI v2. Dispone de los esquemas de las versiones de anteriores de la extensión en https://azuremlschemasprod.azureedge.net/.
Sintaxis de YAML
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
$schema |
string | Esquema de YAML. Si usa la extensión VS Code de Azure Machine Learning para crear el archivo YAML, la inclusión de $schema en la parte superior del archivo le permite invocar las finalizaciones del esquema y los recursos. |
||
type |
const | Tipo de trabajo. | command |
command |
name |
string | Nombre del trabajo. Debe ser único en todos los trabajos del área de trabajo. Si se omite, Azure Machine Learning genera automáticamente un GUID para el nombre. | ||
display_name |
string | Nombre para mostrar del trabajo en la interfaz de usuario de Studio. Puede no ser único dentro del área de trabajo. Si se omite, Azure Machine Learning genera automáticamente un identificador adjetivo-sustantivo legible para el nombre para mostrar. | ||
experiment_name |
string | Nombre del experimento en el que se va a organizar el trabajo. El registro de ejecución de cada trabajo se organiza en el experimento correspondiente en la pestaña "Experimentos" de Studio. Si se omite, Azure Machine Learning lo usa como valor predeterminado el nombre del directorio de trabajo donde se creó el trabajo. | ||
description |
string | Descripción del trabajo. | ||
tags |
object | Diccionario de etiquetas para el trabajo. | ||
command |
string | El comando que se debe ejecutar. | ||
code |
string | Ruta de acceso local al directorio de código fuente que se va a cargar y usar para el trabajo. | ||
environment |
cadena u objeto | El entorno que se usará para el trabajo. Puede ser una referencia a un entorno con versiones existente en el área de trabajo o una especificación de entorno insertada. Para hacer referencia a un entorno existente, use la sintaxis azureml:<environment_name>:<environment_version> o azureml:<environment_name>@latest (para hacer referencia a la versión más reciente de un entorno). Para definir un entorno en línea, siga el Esquema de entorno. Excluya las propiedades name y version , ya que no se admiten para entornos en línea. |
||
environment_variables |
objeto | Diccionario de pares de clave-valor de variables de entorno que se establecerán en el proceso donde se ejecuta el comando. | ||
distribution |
object | La configuración de distribución para escenarios de entrenamiento distribuido. MpiConfiguration, PyTorchConfiguration o TensorFlowConfiguration. | ||
compute |
string | Nombre del destino de proceso en el que se ejecutará el trabajo. Puede ser una referencia a un proceso existente en el área de trabajo (mediante la azureml:<compute_name> sintaxis) o local para designar la ejecución local. Nota: Los trabajos de la canalización no admitieron local como compute . |
local |
|
resources.instance_count |
integer | El número de nodos que se usarán para el trabajo. | 1 |
|
resources.instance_type |
string | Tipo de instancia que se usará para el trabajo. Aplicable a los trabajos que se ejecutan Azure Arc proceso de Kubernetes habilitado para el usuario (donde el destino de proceso especificado en el campo compute es de type: kubernentes ). Si se omite, el valor predeterminado es el tipo de instancia predeterminado para el clúster de Kubernetes. Para más información, consulte Creación y selección de tipos de instancia de Kubernetes. |
||
resources.shm_size |
string | El tamaño del bloque de memoria compartida del contenedor docker. Debe estar en el formato de <number><unit> donde el número tiene que ser mayor que 0 y la unidad puede ser uno de b (bytes), k (kilobytes), (megabytes) m o g (gigabytes). |
2g |
|
limits.timeout |
integer | Tiempo máximo en segundos durante el que se puede ejecutar el trabajo. Cuando se alcanza este límite, el sistema cancela el trabajo. | ||
inputs |
objeto | Diccionario de entradas para el trabajo. La clave es un nombre para la entrada dentro del contexto del trabajo y el valor es el valor de entrada. Se puede hacer referencia a las entradas en command mediante la expresión ${{ inputs.<input_name> }} . |
||
inputs.<input_name> |
número, entero, booleano, cadena u objeto | Uno de un valor literal (de tipo número, entero, booleano o cadena) o un objeto que contiene una especificación de datos de entrada de trabajo. | ||
outputs |
object | Diccionario de configuraciones de salida del trabajo. La clave es un nombre para la salida dentro del contexto del trabajo y el valor es la configuración de salida. Se puede hacer referencia a las salidas en command mediante la expresión ${{ outputs.<output_name> }} . |
||
outputs.<output_name> |
objeto | Puede dejar el objeto vacío, en cuyo caso, de forma predeterminada, la salida es de tipo uri_folder y Azure Machine Learning genera una ubicación de salida para la salida. Los archivos en el directorio de salida se escriben a través del montaje de lectura y escritura. Si desea especificar un modo diferente de salida, proporcione un objeto que contenga la especificación de salida del trabajo. |
||
identity |
object | La identidad se usa para el acceso a datos. Puede ser UserIdentityConfiguration, ManagedIdentityConfiguration o None. Si UserIdentityConfiguration, la identidad del remitente de trabajos se usa para tener acceso a los datos de entrada y escribir el resultado en la carpeta de salida; de lo contrario, se usa la identidad administrada del destino de proceso. |
Configuraciones de distribución
MpiConfiguration
Clave | Tipo | Descripción | Valores permitidos |
---|---|---|---|
type |
const | Necesario. Tipo de distribución. | mpi |
process_count_per_instance |
integer | Necesario. El número de procesos por nodo que se inician para el trabajo. |
PyTorchConfiguration
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
type |
const | Necesario. Tipo de distribución. | pytorch |
|
process_count_per_instance |
integer | El número de procesos por nodo que se inician para el trabajo. | 1 |
TensorFlowConfiguration
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
type |
const | Necesario. Tipo de distribución. | tensorflow |
|
worker_count |
integer | El número de trabajos que se inician para el trabajo. | Tiene como valor predeterminado resources.instance_count . |
|
parameter_server_count |
integer | El número de servidores de parámetros que se inician para el trabajo. | 0 |
Entradas de trabajo
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
type |
string | Tipo de entrada de trabajo. Especifique uri_file para los datos de entrada que apunte a un único origen de archivo o uri_folder para los datos de entrada que apunte a un origen de carpeta. |
uri_file , uri_folder , , mlflow_model , custom_model |
uri_folder |
path |
string | Ruta de acceso a los datos que se va a usar como entrada. Se puede especificar de varias maneras: - Ruta de acceso local al archivo o carpeta del origen de datos, por ejemplo, path: ./iris.csv . Los datos se cargan durante el envío del trabajo. - URI de una ruta de acceso a la nube al archivo o carpeta que se va a usar como entrada. Los tipos de URI admitidos son azureml , https , wasbs , abfss , adl . Consulte Sintaxis principal de YAML para más información sobre cómo usar el formato de URI azureml:// . - Recurso de datos de Azure Machine Learning registrado existente que se va a usar como entrada. Para hacer referencia a un recurso de datos registrado, use la sintaxis azureml:<data_name>:<data_version> o azureml:<data_name>@latest (para hacer referencia a la versión más reciente de ese recurso de datos), por ejemplo, path: azureml:cifar10-data:1 o path: azureml:cifar10-data@latest . |
||
mode |
string | Modo de cómo se deben entregar los datos al destino de proceso. Para el montaje de solo lectura ( ro_mount ), los datos se consumen como ruta de acceso de montaje. Una carpeta se monta como una carpeta y un archivo se monta como un archivo. Azure Machine Learning resuelve la entrada en la ruta de acceso de montaje. En download el modo , los datos se descargan en el destino de proceso. Azure Machine Learning resuelve la entrada en la ruta de acceso descargada. Si solo desea la dirección URL de la ubicación de almacenamiento de los artefactos de datos en lugar de montar o descargar los datos en sí, puede usar el direct modo . Este modo pasa la dirección URL de la ubicación de almacenamiento como entrada del trabajo. En este caso, el usuario es el único responsable de controlar las credenciales para acceder al almacenamiento. Los modos eval_mount y eval_download son únicos para MLTable. Cualquiera de ellos monta los datos como una ruta de acceso o descarga los datos en el destino de proceso. Consulte Acceso a los datos en un trabajo para obtener más información sobre los modos |
ro_mount , download , direct , , eval_download , eval_mount |
ro_mount |
Salidas de trabajo
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
type |
string | Tipo de salida del trabajo. Para el tipo predeterminado uri_folder , la salida corresponde a una carpeta. |
uri_folder , , mlflow_model , custom_model |
uri_folder |
mode |
string | Modo de cómo se entregan los archivos de salida al almacenamiento de destino. Para el modo de montaje de lectura y escritura (rw_mount ), el directorio de salida es un directorio montado. Para el modo de carga, los archivos escritos se cargan al final del trabajo. |
rw_mount , upload |
rw_mount |
Configuraciones de identidad
UserIdentityConfiguration
Clave | Tipo | Descripción | Valores permitidos |
---|---|---|---|
type |
const | Necesario. Tipo de identidad. | user_identity |
ManagedIdentityConfiguration
Clave | Tipo | Descripción | Valores permitidos |
---|---|---|---|
type |
const | Necesario. Tipo de identidad. | managed o managed_identity |
Comentarios
El comando az ml job
se puede usar para administrar los trabajos de Azure Machine Learning.
Ejemplos
Hay ejemplos disponibles en el repositorio de GitHub de ejemplos. En las secciones siguientes se muestran algunos de los ejemplos.
YAML: hola mundo
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
YAML: nombre para mostrar, nombre del experimento, descripción y etiquetas
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
tags:
hello: world
display_name: hello-world-example
experiment_name: hello-world-example
description: |
# Azure Machine Learning "hello world" job
This is a "hello world" job running in the cloud via Azure Machine Learning!
## Description
Markdown is supported in the studio for job descriptions! You can edit the description there or via CLI.
YAML: variables de entorno
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo $hello_env_var
environment:
image: library/python:latest
environment_variables:
hello_env_var: "hello world"
YAML: código fuente
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
image: library/python:latest
YAML: entradas literales
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo ${{inputs.hello_string}}
echo ${{inputs.hello_number}}
environment:
image: library/python:latest
inputs:
hello_string: "hello world"
hello_number: 42
YAML: escritura en salidas predeterminadas
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
image: library/python:latest
YAML: escritura en la salida de datos con nombre
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ${{outputs.hello_output}}/helloworld.txt
outputs:
hello_output:
environment:
image: python
YAML: entrada del archivo de URI del almacén de datos
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: entrada de la carpeta de URI del almacén de datos
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: azureml://datastores/workspaceblobstore/paths/example-data/
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: entrada del archivo de URI
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: entrada de la carpeta de URI
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: cuaderno a través de Papermill
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
pip install ipykernel papermill
papermill hello-notebook.ipynb outputs/out.ipynb -k python
code: src
environment:
image: library/python:3.11.6
YAML: entrenamiento básico del modelo de Python
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
--C ${{inputs.C}}
--kernel ${{inputs.kernel}}
--coef0 ${{inputs.coef0}}
inputs:
iris_csv:
type: uri_file
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
C: 0.8
kernel: "rbf"
coef0: 0.1
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
display_name: sklearn-iris-example
experiment_name: sklearn-iris-example
description: Train a scikit-learn SVM on the Iris dataset.
YAML: entrenamiento básico del modelo de R con contexto de compilación de Docker local
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
Rscript train.R
--data_folder ${{inputs.iris}}
code: src
inputs:
iris:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
build:
path: docker-context
compute: azureml:cpu-cluster
display_name: r-iris-example
experiment_name: r-iris-example
description: Train an R model on the Iris dataset.
YAML: PyTorch distribuido
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--learning-rate ${{inputs.learning_rate}}
--data-dir ${{inputs.cifar}}
inputs:
epochs: 1
learning_rate: 0.2
cifar:
type: uri_folder
path: azureml:cifar-10-example@latest
environment: azureml:AzureML-acpt-pytorch-2.2-cuda12.1@latest
compute: azureml:gpu-cluster
distribution:
type: pytorch
process_count_per_instance: 1
resources:
instance_count: 2
display_name: pytorch-cifar-distributed-example
experiment_name: pytorch-cifar-distributed-example
description: Train a basic convolutional neural network (CNN) with PyTorch on the CIFAR-10 dataset, distributed via PyTorch.
YAML: TensorFlow distribuido
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--model-dir ${{inputs.model_dir}}
inputs:
epochs: 1
model_dir: outputs/keras-model
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: tensorflow
worker_count: 2
display_name: tensorflow-mnist-distributed-example
experiment_name: tensorflow-mnist-distributed-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via TensorFlow.
YAML: MPI distribuido
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
inputs:
epochs: 1
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: mpi
process_count_per_instance: 1
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.