Esquema YAML de trabalho paralelo CLI (v2)
APLICA-SE A: Azure CLI ml extension v2 (atual)
Importante
O trabalho paralelo só pode ser usado como uma única etapa dentro de um trabalho de pipeline do Azure Machine Learning. Assim, não há nenhum esquema JSON de origem para trabalho paralelo no momento. Este documento lista as chaves válidas e seus valores ao criar um trabalho paralelo em um pipeline.
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 |
---|---|---|---|---|
type |
const | Obrigatório. O tipo de trabalho. | parallel |
|
inputs |
objeto | Dicionário de entradas para o trabalho paralelo. A chave é um nome para a entrada dentro do contexto do trabalho e o valor é o valor de entrada. As entradas podem ser referenciadas program_arguments no uso da ${{ inputs.<input_name> }} expressão. As entradas de trabalho paralelo podem ser referenciadas por entradas de pipeline usando a ${{ parent.inputs.<input_name> }} expressão. Para saber como vincular as entradas de uma etapa paralela às entradas do pipeline, consulte a sintaxe da expressão para vincular entradas e saídas entre as etapas em um trabalho de pipeline. |
||
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 paralelo. 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 de trabalho paralelo podem ser referenciadas por saídas de pipeline usando a ${{ parents.outputs.<output_name> }} expressão. Para saber como vincular as saídas de uma etapa paralela às saídas do pipeline, consulte a sintaxe da expressão para vincular entradas e saídas entre as etapas em um trabalho de pipeline. |
||
outputs.<output_name> |
objeto | Você pode deixar o objeto vazio, caso em que, por padrão, a saída será do tipo uri_folder e o Aprendizado de Máquina do Azure gerará um local de saída para a saída com base no seguinte caminho modelado: {settings.datastore}/azureml/{job-name}/{output-name}/ . O(s) arquivo(s) para o diretório de saída será gravado 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. |
||
compute |
string | Nome do destino de computação no qual executar o trabalho. O valor 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. Ao usar o trabalho paralelo no pipeline, você pode deixar essa configuração vazia, caso em que a computação será selecionada automaticamente pelo default_compute pipeline de. |
local |
|
task |
objeto | Obrigatório. O modelo para definir as tarefas distribuídas para trabalho paralelo. Consulte Atributos da task chave. |
||
input_data |
objeto | Obrigatório. Defina quais dados de entrada serão divididos em minilotes para executar o trabalho paralelo. Aplicável apenas para referenciar um dos trabalhos inputs paralelos usando a ${{ inputs.<input_name> }} expressão |
||
mini_batch_size |
string | Defina o tamanho de cada minilote para dividir a entrada. Se o input_data for uma pasta ou um conjunto de arquivos, esse número definirá a contagem de arquivos para cada minilote. Por exemplo, 10, 100. Se o input_data for um dado tabular do mltable , esse número define o tamanho físico próximo para cada minilote. Por exemplo, 100 kb, 100 mb. |
1 | |
partition_keys |
list | As chaves usadas para particionar o conjunto de dados em minilotes. Se especificado, os dados com a mesma chave serão particionados no mesmo minilote. Se ambos partition_keys forem mini_batch_size especificados, as chaves de partição entrarão em vigor. |
||
mini_batch_error_threshold |
integer | Defina o número de minilotes com falha que podem ser ignorados neste trabalho paralelo. Se a contagem de minilote com falha for maior que esse limite, o trabalho paralelo será marcado como falha. O minilote é marcado como reprovado se: - a contagem de retorno de run() é menor do que a contagem de entrada de minilotes. - capturar exceções no código run() personalizado. "-1" é o número padrão, o que significa ignorar todos os minilotes com falha durante o trabalho paralelo. |
[-1, int.max] | -1 |
logging_level |
string | Defina qual nível de logs será despejado nos arquivos de log do usuário. | INFORMAÇÕES, AVISO, DEPURAÇÃO | INFORMAÇÃO |
resources.instance_count |
integer | O número de nós a serem usados para o trabalho. | 1 | |
max_concurrency_per_instance |
integer | Defina o número de processos em cada nó de computação. Para uma computação de GPU, o valor padrão é 1. Para uma computação de CPU, o valor padrão é o número de núcleos. |
||
retry_settings.max_retries |
integer | Defina o número de novas tentativas quando o minilote falhar ou atingir o tempo limite. Se todas as novas tentativas falharem, o minilote será marcado como falha ao ser contado pelo mini_batch_error_threshold cálculo. |
2 | |
retry_settings.timeout |
integer | Defina o tempo limite em segundos para executar a função run() personalizada. Se o tempo de execução for maior que esse limite, o minilote será abortado e marcado como um minilote com falha para acionar a nova tentativa. | (0, 259200] | 60 |
environment_variables |
objeto | Dicionário de pares chave-valor variável de ambiente para definir no processo onde o comando é executado. |
Atributos da task
chave
Chave | Tipo | Description | Valores permitidos | Default value |
---|---|---|---|---|
type |
const | Obrigatório. O tipo de tarefa. Aplicável apenas por run_function enquanto.No run_function modo, você é obrigado a fornecer code , entry_script e program_arguments definir script Python com funções executáveis e argumentos. Nota: O trabalho paralelo suporta apenas script Python neste modo. |
run_function | run_function |
code |
string | Caminho local para o diretório de código-fonte a ser carregado e usado para o trabalho. | ||
entry_script |
string | O arquivo Python que contém a implementação de funções paralelas predefinidas. Para obter mais informações, consulte Preparar script de entrada para trabalho paralelo. | ||
environment |
string ou objeto | Obrigatório O ambiente a ser usado para executar a tarefa. O valor 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. |
||
program_arguments |
string | Os argumentos a serem passados para o script de entrada. Pode conter "--<arg_name> ${{inputs.<intput_name>}}" referência a entradas ou saídas. O trabalho paralelo fornece uma lista de argumentos predefinidos para definir a configuração da execução paralela. Para obter mais informações, consulte argumentos predefinidos para trabalho paralelo. |
||
append_row_to |
string | Agregar todos os retornos de cada execução de minilote e enviá-los para este arquivo. Pode fazer referência a uma das saídas do trabalho paralelo usando a expressão ${{outputs.<output_name>}} |
Entradas de trabalho
Chave | Tipo | Description | Valores permitidos | Default value |
---|---|---|---|---|
type |
string | O tipo de entrada de trabalho. Especifique mltable para dados de entrada que apontem para um local onde tenha o metaarquivo mltable ou uri_folder para dados de entrada que apontem para uma fonte de pasta. |
mltable , uri_folder |
uri_folder |
path |
string | O caminho para os dados a serem usados como entrada. O valor 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 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 . Para obter mais informações, consulte Sintaxe yaml principal 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 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 download o modo, os dados serão baixados para o destino de computação. O Azure Machine Learning resolverá a entrada para o caminho baixado. Se você quiser apenas a URL do local de armazenamento do(s) artefato(s) de dados em vez de montar ou baixar os dados em si, você pode usar o direct modo. Ele passará 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. |
ro_mount , download , direct |
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 corresponderá a uma pasta. |
uri_folder |
uri_folder |
mode |
string | Modo de como o(s) arquivo(s) de saída será(ão) entregue(s) ao armazenamento de destino. Para o modo de montagem de leitura-gravação (rw_mount ), o diretório de saída será um diretório montado. Para o modo de upload, o(s) arquivo(s) escrito(s) será(ão) carregado(s) no final do trabalho. |
rw_mount , upload |
rw_mount |
Argumentos predefinidos para trabalho paralelo
Chave | Description | Valores permitidos | Default value |
---|---|---|---|
--error_threshold |
O limite de itens com falha. Os itens com falha são contados pela diferença numérica entre entradas e retornos de cada minilote. Se a soma dos itens com falha for maior que esse limite, o trabalho paralelo será marcado como reprovado. Nota: "-1" é o número padrão, o que significa ignorar todas as falhas durante o trabalho paralelo. |
[-1, int.max] | -1 |
--allowed_failed_percent |
Semelhante a mini_batch_error_threshold mas usa a porcentagem de minilotes com falha em vez da contagem. |
[0, 100] | 100 |
--task_overhead_timeout |
O tempo limite em segundo para inicialização de cada minilote. Por exemplo, carregue dados de minilote e passe-os para a função run(). | (0, 259200] | 30 |
--progress_update_timeout |
O tempo limite em segundo para monitorar o progresso da execução de minilotes. Se nenhuma atualização de progresso for recebida dentro dessa configuração de tempo limite, o trabalho paralelo será marcado como falha. | (0, 259200] | Calculado dinamicamente por outras configurações. |
--first_task_creation_timeout |
O tempo limite em segundo para monitorar o tempo entre o início do trabalho e a execução do primeiro minilote. | (0, 259200] | 600 |
--copy_logs_to_parent |
Opção booleana para copiar o progresso, a visão geral e os logs do trabalho para o trabalho de pipeline pai. | True, False | False |
--metrics_name_prefix |
Forneça o prefixo personalizado de suas métricas neste trabalho paralelo. | ||
--push_metrics_to_parent |
Opção booleana para enviar métricas por push para o trabalho de pipeline pai. | True, False | False |
--resource_monitor_interval |
O intervalo de tempo em segundos para despejar o uso de recursos do nó (por exemplo, cpu, memória) para a pasta de log no caminho "logs/sys/perf". Nota: Os logs de recursos de despejo frequentes diminuirão ligeiramente a velocidade de execução do seu minilote. Defina esse valor como "0" para parar de despejar o uso de recursos. |
[0, int.max] | 600 |
Observações
Os az ml job
comandos podem ser usados para gerenciar trabalhos do Azure Machine Learning.
Exemplos
Exemplos estão disponíveis no repositório GitHub de exemplos. Vários são mostrados abaixo.
YAML: Usando trabalho paralelo no pipeline
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: iris-batch-prediction-using-parallel
description: The hello world pipeline job with inline parallel job
tags:
tag: tagvalue
owner: sdkteam
settings:
default_compute: azureml:cpu-cluster
jobs:
batch_prediction:
type: parallel
compute: azureml:cpu-cluster
inputs:
input_data:
type: mltable
path: ./neural-iris-mltable
mode: direct
score_model:
type: uri_folder
path: ./iris-model
mode: download
outputs:
job_output_file:
type: uri_file
mode: rw_mount
input_data: ${{inputs.input_data}}
mini_batch_size: "10kb"
resources:
instance_count: 2
max_concurrency_per_instance: 2
logging_level: "DEBUG"
mini_batch_error_threshold: 5
retry_settings:
max_retries: 2
timeout: 60
task:
type: run_function
code: "./script"
entry_script: iris_prediction.py
environment:
name: "prs-env"
version: 1
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: ./environment/environment_parallel.yml
program_arguments: >-
--model ${{inputs.score_model}}
--error_threshold 5
--allowed_failed_percent 30
--task_overhead_timeout 1200
--progress_update_timeout 600
--first_task_creation_timeout 600
--copy_logs_to_parent True
--resource_monitor_interva 20
append_row_to: ${{outputs.job_output_file}}