Esquema YAML do trabalho de comando CLI (v2)

APLICA-SE A: Azure CLI ml extension v2 (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 é baseada no esquema JSON para a versão mais recente da extensão ML CLI v2. Esta sintaxe é garantida apenas para funcionar com a versão mais recente da extensão ML CLI v2. Você pode encontrar os esquemas para versões de extensão mais antigas em https://azuremlschemasprod.azureedge.net/.

Sintaxe YAML

Chave Tipo Description Valores permitidos Default value
$schema string O esquema YAML. Se você usar a extensão VS Code do Aprendizado de Máquina do Azure para criar o arquivo YAML, inclusive $schema na parte superior do arquivo permitirá que você invoque o esquema e as completações de recursos.
type const O tipo de trabalho. command command
name string Nome do trabalho. Deve ser exclusivo em todos os trabalhos no espaço de trabalho. Se omitido, o Azure Machine Learning gera automaticamente um GUID para o nome.
display_name string Nome para exibição do trabalho na interface do usuário do estúdio. Pode não ser exclusivo dentro do espaço de trabalho. Se omitido, o Azure Machine Learning gera automaticamente um identificador de substantivo adjetivo legível por humanos para o nome para exibição.
experiment_name string Nome do experimento para organizar o trabalho em. O registro de execução de cada trabalho é organizado sob o experimento correspondente na guia "Experimentos" do estúdio. Se omitido, o Azure Machine Learning assume como padrão o nome do diretório de trabalho onde o trabalho foi criado.
description string Descrição do trabalho.
tags objeto Dicionário de tags para o trabalho.
command string O comando a ser executado.
code string Caminho local para o diretório de código-fonte a ser carregado e usado para o trabalho.
environment string ou objeto O ambiente a utilizar para o trabalho. Pode ser uma referência a um ambiente versionado existente no espaço de trabalho ou uma especificação de ambiente embutido.

Para fazer referência a um ambiente existente, use a azureml:<environment_name>:<environment_version> sintaxe ou azureml:<environment_name>@latest (para fazer referência à versão mais recente de um ambiente).

Para definir um ambiente embutido, siga o esquema Ambiente. Exclua as name propriedades e version pois elas não são suportadas para ambientes em linha.
environment_variables objeto Dicionário de pares chave-valor variável de ambiente para definir no processo onde o comando é executado.
distribution objeto A configuração de distribuição para cenários de treinamento distribuído. Um de MpiConfiguration, PyTorchConfiguration ou TensorFlowConfiguration.
compute string Nome do destino de computação no qual executar o trabalho. Pode ser uma referência a um cálculo existente no espaço de trabalho (usando a sintaxe) ou local para designar a azureml:<compute_name> execução local. Nota: os trabalhos em pipeline não suportaram local como compute local
resources.instance_count integer O número de nós a serem usados para o trabalho. 1
resources.instance_type string O tipo de instância a ser usado para o trabalho. Aplicável para trabalhos executados na computação do Kubernetes habilitada para Azure Arc (onde o destino de computação especificado no compute campo é de type: kubernentes). Se omitido, assume como padrão o tipo de instância padrão para o cluster do Kubernetes. Para obter mais informações, consulte Criar e selecionar tipos de instância do Kubernetes.
resources.shm_size string O tamanho do bloco de memória compartilhada do contêiner do docker. Deve estar no formato em <number><unit> que o número tem de ser superior a 0 e a unidade pode ser uma de b (bytes), k (kilobytes), m (megabytes) ou g (gigabytes). 2g
limits.timeout integer O tempo máximo em segundos que o trabalho pode ser executado. Quando esse limite é atingido, o sistema cancela o trabalho.
inputs objeto Dicionário de entradas para o trabalho. A chave é um nome para a entrada dentro do contexto do trabalho e o valor é o valor de entrada.

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

As saídas podem ser referenciadas no command uso da ${{ outputs.<output_name> }} expressão.
outputs.<output_name> objeto Você pode deixar o objeto vazio, caso em que, por padrão, a saída é do tipo uri_folder e o Azure Machine Learning gera um local de saída para a saída. Os arquivos para o diretório de saída são gravados via montagem de leitura-gravação. Se desejar especificar um modo diferente para a saída, forneça um objeto contendo a especificação de saída do trabalho.
identity objeto A identidade é usada para acesso aos dados. Pode ser UserIdentityConfiguration, ManagedIdentityConfiguration ou None. Se UserIdentityConfiguration, a identidade do remetente do trabalho é usada para acessar, inserir dados e gravar o resultado na pasta de saída, caso contrário, a identidade gerenciada do destino de computação será usada.

Configurações de distribuição

MpiConfiguration

Chave Tipo Description Valores permitidos
type const Obrigatório. Tipo de distribuição. mpi
process_count_per_instance integer Obrigatório. O número de processos por nó a serem iniciados para o trabalho.

PyTorchConfiguration

Chave Tipo Description Valores permitidos Default value
type const Obrigatório. Tipo de distribuição. pytorch
process_count_per_instance integer O número de processos por nó a serem iniciados para o trabalho. 1

TensorFlowConfiguration

Chave Tipo Description Valores permitidos Default value
type const Obrigatório. Tipo de distribuição. tensorflow
worker_count integer O número de trabalhadores a lançar para o trabalho. O padrão é resources.instance_count.
parameter_server_count integer O número de servidores de parâmetros a serem iniciados para o trabalho. 0

Entradas de trabalho

Chave Tipo Description Valores permitidos Default value
type string O tipo de entrada de trabalho. Especifique uri_file para dados de entrada que apontem para uma única fonte de arquivo ou uri_folder para dados de entrada que apontem para uma fonte de pasta. uri_file, uri_folder, mlflow_model, custom_model uri_folder
path string O caminho para os dados a serem usados como entrada. Pode ser especificado de algumas maneiras:

- Um caminho local para o arquivo ou pasta da fonte de dados, por exemplo, path: ./iris.csv. Os dados são carregados durante a submissão de trabalho.

- Um URI de um caminho de nuvem para o arquivo ou pasta para usar como entrada. Os tipos de URI suportados são azureml, https, , abfsswasbs, adl. Consulte Sintaxe yaml principal para obter mais informações sobre como usar o azureml:// formato URI.

- Um ativo de dados registrado existente do Azure Machine Learning para usar como entrada. Para fazer referência a um ativo de dados registrado, use a azureml:<data_name>:<data_version> sintaxe ou azureml:<data_name>@latest (para fazer referência à versão mais recente desse ativo de dados), por exemplo, path: azureml:cifar10-data:1 ou path: azureml:cifar10-data@latest.
mode string Modo de como os dados devem ser entregues ao destino de computação.

Para montagem somente leitura (ro_mount), os dados são consumidos como um caminho de montagem. Uma pasta é montada como uma pasta e um arquivo é montado como um arquivo. O Azure Machine Learning resolve a entrada para o caminho de montagem.

Para download o modo, os dados são baixados para o destino de computação. O Aprendizado de Máquina do Azure resolve a entrada para o caminho baixado.

Se você quiser apenas a URL do local de armazenamento dos artefatos de dados em vez de montar ou baixar os dados em si, você pode usar o direct modo. Esse modo passa a URL do local de armazenamento como a entrada do trabalho. Nesse caso, você é totalmente responsável por lidar com as credenciais para acessar o armazenamento.

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

Para obter mais informações sobre modos, consulte Acessar dados em um trabalho
ro_mount, download, direct, eval_download, eval_mount ro_mount

Resultados do trabalho

Chave Tipo Description Valores permitidos Default value
type string O tipo de saída do trabalho. Para o tipo padrão uri_folder , a saída corresponde a uma pasta. uri_folder , mlflow_model, custom_model uri_folder
mode string Modo de como os arquivos de saída são entregues ao armazenamento de destino. Para o modo de montagem de leitura-gravação (rw_mount), o diretório de saída é um diretório montado. Para o modo de upload, os arquivos gravados são carregados no final do trabalho. rw_mount, upload rw_mount

Configurações de identidade

UserIdentityConfiguration

Chave Tipo Description Valores permitidos
type const Obrigatório. Tipo de identidade. user_identity

ManagedIdentityConfiguration

Chave Tipo Description Valores permitidos
type const Obrigatório. Tipo de identidade. managed ou managed_identity

Observações

O az ml job comando pode ser usado para gerenciar trabalhos do Azure Machine Learning.

Exemplos

Exemplos estão disponíveis no repositório GitHub de exemplos. As seções a seguir mostram alguns dos exemplos.

YAML: Olá mundo

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

YAML: nome de exibição, nome do experimento, descrição e tags

$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: gravar em saídas padrão

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

YAML: gravar na saída de dados nomeados

$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 arquivo URI de armazenamento 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://registries/azureml/environments/sklearn-1.5/labels/latest

YAML: entrada da pasta URI do armazenamento 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://registries/azureml/environments/sklearn-1.5/labels/latest

YAML: Entrada de arquivo 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 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://registries/azureml/environments/sklearn-1.5/labels/latest

YAML: Caderno via fábrica 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: treinamento básico de modelo 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: treinamento básico do modelo R com contexto de construçã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: distribuído PyTorch

$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 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.16-cuda12@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.

Próximos passos