Esquema YAML do trabalho de comando da CLI (v2)
APLICA-SE A:Extensão de ML da CLI do Azurev2 (atual)
O esquema JSON de origem pode ser encontrado em https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.
Observação
A sintaxe YAML detalhada neste documento baseia-se no esquema JSON da última versão da extensão de ML da CLI v2. Essa sintaxe só tem a garantia de funcionar com a última versão da extensão de ML da CLI v2. Encontre os esquemas para as versões mais antigas da extensão em https://azuremlschemasprod.azureedge.net/.
Sintaxe YAML
Chave | Tipo | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
$schema |
string | O esquema YAML. Se você usar a extensão do Azure Machine Learning para VS Code para criar o arquivo YAML, a inclusão de $schema no início do arquivo permitirá invocar conclusões de esquema e recursos. |
||
type |
const | O tipo de trabalho. | command |
command |
name |
string | Nome do trabalho. Precisa ser exclusivo em todos os trabalhos no espaço de trabalho. Se isso for omitido, o Azure Machine Learning vai gerar automaticamente um GUID para o nome. | ||
display_name |
string | Nome de exibição do trabalho na interface do usuário no Estúdio. Dentro do espaço de trabalho ele pode ser não exclusivo. Se isso for omitido, o Azure Machine Learning vai gerar automaticamente um identificador adjetivo-substantivo legível como o nome de exibição. | ||
experiment_name |
string | Nome do experimento sob o qual o trabalho é organizado. O registro de execução de cada trabalho será organizado sob o experimento correspondente na guia "Experimentos" do estúdio. Se isso for omitido, o Azure Machine Learning usará como padrão o nome do diretório de trabalho no qual o trabalho foi criado. | ||
description |
string | Descrição do trabalho. | ||
tags |
objeto | Dicionário de tags para o trabalho. | ||
command |
string | Necessário (se não estiver usando o campo component ). 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 |
cadeia de caracteres ou objeto | Necessário (se não estiver usando o campo component ). O ambiente a ser usado para o trabalho. Ele pode ser uma referência para um ambiente com versão existente no espaço de trabalho ou uma especificação de ambiente embutido. Para fazer referência a um ambiente existente, use a sintaxe azureml:<environment_name>:<environment_version> ou azureml:<environment_name>@latest (para fazer referência à versão mais recente de um ambiente). Siga o esquema do ambiente para definir um ambiente embutido. Exclua as propriedades name e version , pois não há suporte para elas nos ambientes em linha. |
||
environment_variables |
objeto | Dicionário de pares chave-valor da variável de ambiente a ser definido no processo em que o comando é executado. | ||
distribution |
objeto | A configuração de distribuição nos cenários de treinamento distribuídos. Um de MpiConfiguration, PyTorchConfiguration ou TensorFlowConfiguration. | ||
compute |
string | Nome do destino de computação no qual executar o trabalho. Isso pode ser uma referência a uma computação existente no espaço de trabalho (usando a sintaxe azureml:<compute_name> ) ou local para designar a execução local. Observação: os trabalhos no pipeline não dão suporte a local como compute |
local |
|
resources.instance_count |
inteiro | O número de nós que serão usados para o trabalho. | 1 |
|
resources.instance_type |
cadeia de caracteres | O tipo de instância a ser usado para o trabalho. Aplicável para trabalhos em execução na computação Kubernetes habilitada para o Azure Arc (onde o destino de computação especificado no campo compute é de type: kubernentes ). Se for omitido, o padrão será o tipo de instância padrão para o cluster de Kubernetes. Para obter mais informações, consulte Criar e selecionar tipos de instância de Kubernetes. |
||
resources.shm_size |
string | O tamanho do bloco de memória compartilhada do contêiner do docker. Isso deve estar no formato de <number><unit> , em que o número deve ser maior 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 o trabalho tem permissão para ser executado. Quando esse limite for atingido, o sistema cancelará 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 em command usando a expressão ${{ inputs.<input_name> }} . |
||
inputs.<input_name> |
número, número inteiro, booliano, cadeia de caracteres ou objeto | Um dos valores literais (de número de tipo, inteiro, booliano ou cadeia de caracteres) 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 em command usando a expressão ${{ outputs.<output_name> }} . |
||
outputs.<output_name> |
objeto | Você pode deixar o objeto vazio. Nesse caso, a saída será do tipo uri_folder por padrão e o Azure Machine Learning vai gerar pelo sistema um local de saída para a saída. Os arquivos no diretório de saída serão gravados por meio da montagem de leitura/gravação. Se você desejar especificar um modo diferente para a saída, forneça um objeto que contenha a especificação de saída do trabalho. |
||
identity |
objeto | A identidade é usada para acessar dados. Pode ser UserIdentityConfiguration, ManagedIdentityConfiguration ou None. Se for UserIdentityConfiguration, a identidade do remetente do trabalho será usada para acessar dados de entrada e gravar o resultado na pasta de saída; caso contrário, será usada a identidade gerenciada do destino de computação. |
Configurações de distribuição
MpiConfiguration
Chave | Tipo | Descrição | Valores permitidos |
---|---|---|---|
type |
const | Obrigatórios. Tipo de distribuição. | mpi |
process_count_per_instance |
inteiro | Obrigatórios. O número de processos por nó a iniciar para o trabalho. |
PyTorchConfiguration
Chave | Tipo | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
type |
const | Obrigatórios. Tipo de distribuição. | pytorch |
|
process_count_per_instance |
inteiro | O número de processos por nó a iniciar para o trabalho. | 1 |
TensorFlowConfiguration
Chave | Tipo | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
type |
const | Obrigatórios. Tipo de distribuição. | tensorflow |
|
worker_count |
inteiro | O número de trabalhos a iniciar para o trabalho. | Assume o padrão de resources.instance_count . |
|
parameter_server_count |
inteiro | O número de servidores de parâmetros a iniciar para o trabalho. | 0 |
Entradas de trabalho
Chave | Tipo | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
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. Ele 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 serão carregados durante o envio do trabalho. - Um URI de um caminho de nuvem para o arquivo ou pasta a ser usado como entrada. Os tipos de URI com suporte são azureml , https , wasbs , abfss , adl . Confira Sintaxe principal do YAML para saber mais sobre como usar o formato URI azureml:// . – Um ativo de dados existente e registrado do Azure Machine Learning a ser usado como a entrada. Para fazer referência a um ativo de dados registrado, use a sintaxe azureml:<data_name>:<data_version> 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 como os dados devem ser entregues ao destino de computação. Na montagem somente leitura ( ro_mount ), os dados serão consumidos como um caminho de montagem. Uma pasta será montada como uma pasta e um arquivo será montado como um arquivo. O Azure Machine Learning resolverá a entrada para o caminho de montagem. Para o modo download , os dados serão baixados para o destino de computação. O Azure Machine Learning resolverá a entrada para o caminho baixado. Se desejar somente a URL do local de armazenamento dos artefatos de dados em vez de montar ou baixar os próprios dados, você pode usar o modo direct . Isso passará a URL do local de armazenamento como a entrada do trabalho. Observe que, nesse caso, você é totalmente responsável por identificar credenciais para acessar o armazenamento. Os modos eval_mount e eval_download são exclusivos da MLTable e montam os dados como um caminho ou baixam os dados para o destino de computação. Para obter mais informações sobre os modos, confira Acessar dados em um trabalho |
ro_mount , download , direct , eval_download , eval_mount |
ro_mount |
Saídas de trabalho
Chave | Tipo | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
type |
string | O tipo de saída de trabalho. Para o tipo padrão uri_folder , a saída corresponderá a uma pasta. |
uri_folder , mlflow_model , custom_model |
uri_folder |
mode |
string | Modo como os arquivos de saída serão entregues ao armazenamento de destino. No modo de montagem de leitura/gravação (rw_mount ), o diretório de saída será um diretório montado. No modo de upload, os arquivos gravados serão carregados no final do trabalho. |
rw_mount , upload |
rw_mount |
Configurações de identidade
UserIdentityConfiguration
Chave | Tipo | Descrição | Valores permitidos |
---|---|---|---|
type |
const | Obrigatórios. Tipo de identidade. | user_identity |
ManagedIdentityConfiguration
Chave | Tipo | Descrição | Valores permitidos |
---|---|---|---|
type |
const | Obrigatórios. Tipo de identidade. | managed ou managed_identity |
Comentários
O comando az ml job
pode ser usado para gerenciar trabalhos no Azure Machine Learning.
Exemplos
Os exemplos estão disponíveis no repositório de exemplos do GitHub. Vários são mostrados abaixo.
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 marcas
$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 em saídas 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 de 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.0/labels/latest
YAML: entrada de pasta de URI de 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.0/labels/latest
YAML: entrada de arquivo 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.0/labels/latest
YAML: entrada de pasta 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.0/labels/latest
YAML: Notebook atravé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: treinamento básico do 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.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: treinamento básico do modelo R com contexto de compilação local do Docker
$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.