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 , , abfss wasbs , 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.