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 , abfss adl . 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://registries/azureml/environments/sklearn-1.0/labels/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://registries/azureml/environments/sklearn-1.0/labels/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://registries/azureml/environments/sklearn-1.0/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.0/labels/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://registries/azureml/environments/sklearn-1.0/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: 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.