Esquema YAML da tarefa de comando da CLI (v2)

APLICA-SE A:Extensão v2 da CLI do Azure (atual)

O esquema JSON de origem pode ser encontrado em https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

Nota

A sintaxe YAML detalhada neste documento baseia-se no esquema JSON para a versão mais recente da extensão da CLI v2 do ML. Esta sintaxe é garantida apenas para funcionar com a versão mais recente da extensão da CLI v2 do ML. Pode encontrar os esquemas para versões de extensões mais antigas em https://azuremlschemasprod.azureedge.net/.

Sintaxe YAML

Chave Tipo Descrição Valores permitidos Valor predefinido
$schema string O esquema YAML. Se utilizar a extensão do VS Code do Azure Machine Learning para criar o ficheiro YAML, incluindo $schema na parte superior do ficheiro, permite-lhe invocar conclusões de esquemas e recursos.
type constante O tipo de tarefa. command command
name string Nome da tarefa. Tem de ser exclusivo em todas as tarefas na área de trabalho. Se for omitido, o Azure Machine Learning gerará automaticamente um GUID para o nome.
display_name string Nome a apresentar da tarefa na IU do estúdio. Pode não ser exclusivo na área de trabalho. Se for omitido, o Azure Machine Learning gerará automaticamente um identificador adjetivo-substantivo legível por humanos para o nome a apresentar.
experiment_name string Nome da experimentação para organizar a tarefa em. O registo de execução de cada tarefa será organizado na experimentação correspondente no separador "Experimentações" do estúdio. Se for omitido, o Azure Machine Learning irá predefini-lo para o nome do diretório de trabalho onde a tarefa foi criada.
description string Descrição da tarefa.
tags objeto Dicionário de etiquetas para a tarefa.
command string Necessário (se não estiver a utilizar o component campo). O comando a executar.
code string Caminho local para o diretório de código fonte a carregar e utilizar para a tarefa.
environment cadeia ou objeto Necessário (se não estiver a utilizar o component campo). O ambiente a utilizar para a tarefa. Isto pode ser uma referência a um ambiente com versões existente na área de trabalho ou uma especificação de ambiente inline.

Para referenciar um ambiente existente, utilize a azureml:<environment_name>:<environment_version> sintaxe ou azureml:<environment_name>@latest (para referenciar a versão mais recente de um ambiente).

Para definir um ambiente inline, siga o Esquema do ambiente. Exclua as name propriedades e version , uma vez que não são suportadas para ambientes inline.
environment_variables objeto Dicionário de pares chave-valor de variável de ambiente para definir no processo em que o comando é executado.
distribution objeto A configuração de distribuição para cenários de preparação distribuída. Um de MpiConfiguration, PyTorchConfiguration ou TensorFlowConfiguration.
compute string Nome do destino de computação em que executar a tarefa. Isto pode ser uma referência a uma computação existente na área de trabalho (com a azureml:<compute_name> sintaxe) ou local para designar a execução local. Nota: as tarefas no pipeline não suportam local como compute local
resources.instance_count número inteiro O número de nós a utilizar para a tarefa. 1
resources.instance_type string O tipo de instância a utilizar para a tarefa. Aplicável a tarefas em execução na computação do Kubernetes compatível com o Azure Arc (em que o destino de computação especificado no compute campo é de type: kubernentes). Se for omitido, será predefinido o tipo de instância predefinido para o cluster do Kubernetes. Para obter mais informações, veja Criar e selecionar tipos de instância do Kubernetes.
resources.shm_size string O tamanho do bloco de memória partilhada do contentor do Docker. Deve estar no formato em que o número tem de <number><unit> ser maior do que 0 e a unidade pode ser de b (bytes), k (kilobytes), m (megabytes) ou g (gigabytes). 2g
limits.timeout número inteiro O tempo máximo em segundos que a tarefa tem permissão para ser executada. Assim que este limite for atingido, o sistema cancelará a tarefa.
inputs objeto Dicionário de entradas para a tarefa. A chave é um nome para a entrada no contexto da tarefa e o valor é o valor de entrada.

As entradas podem ser referenciadas com a command${{ inputs.<input_name> }} expressão .
inputs.<input_name> número, número inteiro, booleano, cadeia ou objeto Um de um valor literal (do tipo número, número inteiro, booleano ou cadeia) ou um objeto que contém uma especificação de dados de entrada de tarefa.
outputs objeto Dicionário de configurações de saída da tarefa. A chave é um nome para a saída no contexto da tarefa e o valor é a configuração de saída.

As saídas podem ser referenciadas com a command${{ outputs.<output_name> }} expressão .
outputs.<output_name> objeto Pode deixar o objeto vazio, caso em que, por predefinição, a saída será do tipo uri_folder e o Azure Machine Learning gerará uma localização de saída para a saída. Os ficheiros para o diretório de saída serão escritos através da montagem de leitura/escrita. Se quiser especificar um modo diferente para a saída, forneça um objeto que contenha a especificação de saída da tarefa.
identity objeto A identidade é utilizada para o acesso a dados. Pode ser UserIdentityConfiguration, ManagedIdentityConfiguration ou None. Se for UserIdentityConfiguration, a identidade do submissor de tarefas será utilizada para aceder aos dados de entrada e escrever o resultado na pasta de saída. Caso contrário, será utilizada a identidade gerida do destino de computação.

Configurações de distribuição

MpiConfiguration

Chave Tipo Descrição Valores permitidos
type constante Obrigatório. Tipo de distribuição. mpi
process_count_per_instance número inteiro Obrigatório. O número de processos por nó a iniciar para a tarefa.

PyTorchConfiguration

Chave Tipo Descrição Valores permitidos Valor predefinido
type const Obrigatório. Tipo de distribuição. pytorch
process_count_per_instance número inteiro O número de processos por nó a iniciar para a tarefa. 1

TensorFlowConfiguration

Chave Tipo Descrição Valores permitidos Valor predefinido
type const Obrigatório. Tipo de distribuição. tensorflow
worker_count número inteiro O número de trabalhadores a iniciar para o trabalho. Predefinições para resources.instance_count.
parameter_server_count número inteiro O número de servidores de parâmetros a iniciar para a tarefa. 0

Entradas de tarefas

Chave Tipo Descrição Valores permitidos Valor predefinido
type string O tipo de entrada da tarefa. Especifique uri_file para dados de entrada que apontem para uma única origem de ficheiro ou uri_folder para dados de entrada que apontem para uma origem de pasta. uri_file, uri_folder, mlflow_model, custom_model uri_folder
path string O caminho para os dados a utilizar como entrada. Isto pode ser especificado de algumas formas:

- Um caminho local para o ficheiro ou pasta da origem de dados, por exemplo, path: ./iris.csv. Os dados serão carregados durante a submissão da tarefa.

- Um URI de um caminho de nuvem para o ficheiro ou pasta a utilizar como entrada. Os tipos de URI suportados são azureml, , https, wasbs, abfssadl. Veja Sintaxe yaml core para obter mais informações sobre como utilizar o azureml:// formato URI.

- Um recurso de dados do Azure Machine Learning registado existente para utilizar como entrada. Para referenciar um recurso de dados registado, utilize a azureml:<data_name>:<data_version> sintaxe ou azureml:<data_name>@latest (para referenciar a versão mais recente desse recurso de dados), por exemplo path: azureml:cifar10-data:1 , ou path: azureml:cifar10-data@latest.
mode string Modo de entrega dos dados ao destino de computação.

Para montagem só de leitura (ro_mount), os dados serão consumidos como um caminho de montagem. Uma pasta será montada como uma pasta e um ficheiro será montado como um ficheiro. O Azure Machine Learning resolverá a entrada no caminho de montagem.

Para download o modo, os dados serão transferidos para o destino de computação. O Azure Machine Learning resolverá a entrada para o caminho transferido.

Se quiser apenas o URL da localização de armazenamento dos artefactos de dados em vez de montar ou transferir os dados propriamente ditos, pode utilizar o direct modo. Esta ação irá transmitir o URL da localização de armazenamento como entrada da tarefa. Tenha em atenção que, neste caso, é totalmente responsável pelo processamento de credenciais para aceder ao armazenamento.

Os eval_mount modos e eval_download são exclusivos da MLTable e montam os dados como um caminho ou transferem os dados para o destino de computação.

Para obter mais informações sobre modos, veja Aceder a dados numa tarefa
ro_mount, download, direct, eval_download, eval_mount ro_mount

Saídas de tarefas

Chave Tipo Descrição Valores permitidos Valor predefinido
type string O tipo de saída da tarefa. Para o tipo predefinido uri_folder , o resultado corresponderá a uma pasta. uri_folder , mlflow_model, custom_model uri_folder
mode string Modo de como os ficheiros de saída serão entregues no armazenamento de destino. Para o modo de montagem de leitura-escrita (rw_mount), o diretório de saída será um diretório montado. Para o modo de carregamento, os ficheiros escritos serão carregados no final da tarefa. rw_mount, upload rw_mount

Configurações de identidade

UserIdentityConfiguration

Chave Tipo Descrição Valores permitidos
type const Obrigatório. Tipo de identidade. user_identity

ManagedIdentityConfiguration

Chave Tipo Descrição Valores permitidos
type const Obrigatório. Tipo de identidade. managed ou managed_identity

Observações

O az ml job comando pode ser utilizado para gerir tarefas do Azure Machine Learning.

Exemplos

Os exemplos estão disponíveis nos exemplos do repositório do GitHub. São apresentados vários abaixo.

YAML: olá mundo

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest

YAML: nome a apresentar, nome da experimentação, descrição e 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: variáveis de ambiente

$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 fonte

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
  image: library/python:latest

YAML: entradas literais

$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: escrever em saídas predefinidas

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
  image: library/python:latest

YAML: escrever na saída de dados com nome

$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 de ficheiro URI do arquivo de dados

$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:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest

YAML: entrada da pasta URI do arquivo de dados

$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:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest

YAML: entrada de ficheiro 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:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest

YAML: entrada da pasta 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:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest

YAML: Bloco de notas através de moinho de papel

$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: preparação básica de modelos 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:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@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: preparação básica do modelo R com o contexto de compilação do 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 distribuído

$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-pytorch-1.9-ubuntu18.04-py37-cuda11-gpu@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 distribuído

$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.4-ubuntu18.04-py37-cuda11-gpu@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 distribuído

$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.7-ubuntu20.04-py38-cuda11-gpu@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.

Passos seguintes