Esquema YAML de trabalho paralelo CLI (v2)
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Importante
O trabalho paralelo só pode ser usado como uma etapa individual em um trabalho de pipeline do Azure Machine Learning. Portanto, 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.
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 | Type | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
type |
const | Obrigatórios. 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 em program_arguments usando a expressão ${{ inputs.<input_name> }} . Entradas de trabalho paralelas podem ser referenciadas por entradas de pipeline usando a expressão ${{ parent.inputs.<input_name> }} . Para saber como vincular as entradas de uma etapa paralela às entradas do pipeline, consulte a Sintaxe de expressão para vincular entradas e saídas entre etapas em um trabalho de pipeline. |
||
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 paralelo. A chave é um nome para a saída dentro do contexto do trabalho e o valor é a configuração de saída. Entradas de trabalho paralelo podem ser referenciadas por entradas de pipeline usando a expressão ${{ parents.outputs.<output_name> }} . Para saber como vincular as saídas de uma etapa paralela às saídas do pipeline, consulte a Sintaxe de expressão para vincular entradas e saídas entre etapas em um trabalho de pipeline. |
||
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 com base no seguinte caminho modelado: {settings.datastore}/azureml/{job-name}/{output-name}/ . 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. |
||
compute |
string | Nome do destino de computação no qual executar o trabalho. O valor pode ser uma referência a uma computação existente no espaço de trabalho (usando a sintaxeazureml:<compute_name> ) ou local para designar a execução local. Ao usar o trabalho paralelo no pipeline, você pode deixar essa configuração vazia, nesse caso, a computação será selecionada automaticamente pelo pipeline default_compute . |
local |
|
task |
objeto | Obrigatórios. O modelo para definir as tarefas distribuídas para trabalho paralelo. Consulte Atributos da chave task . |
||
input_data |
objeto | Obrigatórios. Defina quais dados de entrada serão divididos em mini-lotes para executar o trabalho paralelo. Aplicável somente para referenciar um dos trabalhos inputs paralelos usando a expressão ${{ inputs.<input_name> }} |
||
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 input_data for um dado tabular de mltable , esse número definirá o tamanho físico aproximado de cada minilote. Por exemplo, 100 kb, 100 mb. |
1 | |
partition_keys |
lista | As chaves usadas para particionar o conjuntos de dados em minilotes. Se especificado, os dados com a mesma chave serão particionados no mesmo minilote. Se ambos e partition_keys mini_batch_size forem especificados, as chaves de partição entrarão em vigor. |
||
mini_batch_error_threshold |
Número inteiro | Defina o número de minilotes com falha que podem ser ignorados neste trabalho paralelo. Se a contagem do minilote com falha for maior que esse limite, o trabalho paralelo será marcado como com falha. O minilote será marcado como com falha se: – a contagem de retorno de run() for menor que a contagem de entradas no minilote. – 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 os níveis de logs que serão despejados nos arquivos de log do usuário. | INFO, WARNING, DEBUG | INFO |
resources.instance_count |
inteiro | O número de nós que serão usados para o trabalho. | 1 | |
max_concurrency_per_instance |
inteiro | Defina o número de processos em cada nó de computação. Para uma computação de GPU, o valor padrão é 1. Para computação de CPU, o valor padrão é o número de núcleos. |
||
retry_settings.max_retries |
inteiro | Defina o número de repetições quando o minilote estiver com falha ou atingir o tempo limite. Se todas as novas tentativas falharem, o minilote será marcado como falha ao ser contado pelo cálculo mini_batch_error_threshold . |
2 | |
retry_settings.timeout |
inteiro | 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á anulado e marcado como um minilote com falha para disparar nova tentativa. | (0, 259200] | 60 |
environment_variables |
objeto | Dicionário de pares chave-valor da variável de ambiente a ser definido no processo em que o comando é executado. |
Atributos da chave task
Chave | Type | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
type |
const | Obrigatórios. O tipo de tarefa. Aplicável somente para run_function no momento.No modo run_function , é necessário fornecer code , entry_script e program_arguments para definir o script python com funções e argumentos executáveis. Observação: o trabalho paralelo só dá suporte ao script python nesse 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, veja Preparar o script de entrada para um trabalho paralelo. | ||
environment |
cadeia de caracteres ou objeto | Necessário O ambiente a ser usado para executar a tarefa. O valor pode ser uma referência para um ambiente com versão existente no workspace 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). Para definir um ambiente embutido, siga o Esquema do ambiente. Exclua as propriedades name e version , pois não há suporte para elas nos ambientes embutidos. |
||
program_arguments |
string | Os argumentos a serem passados para o script de entrada. Pode conter a referência> ${{inputs.<intput_name>}}" para 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, veja argumentos predefinidos para trabalho paralelo. |
||
append_row_to |
string | Agregar todos os retornos de cada execução do minilote e gerá-lo 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 | Type | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|---|
type |
string | O tipo de entrada de trabalho. Especifique mltable para dados de entrada que apontam para um local onde tem o meta-arquivo mltable ou uri_folder para dados de entrada que apontam 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 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 . Para obter mais informações, veja 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 . Ele passará a URL do local de armazenamento como entrada do trabalho. Nesse caso, você é totalmente responsável por identificar credenciais para acessar o armazenamento. |
ro_mount , download , direct |
ro_mount |
Saídas de trabalho
Chave | Type | 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 |
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 |
Argumentos predefinidos para trabalho paralelo
Chave | Descrição | Valores permitidos | Valor padrão |
---|---|---|---|
--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 de itens com falha for maior que esse limite, o trabalho paralelo será marcado como com falha. Observação: "-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 o percentual 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 os dados do 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 do minilote. 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 para execução do primeiro minilote. | (0, 259200] | 600 |
--copy_logs_to_parent |
Opção booliana para copiar o progresso, a visão geral e os logs de trabalho do pipeline pai. | Verdadeiro, Falso | Falso |
--metrics_name_prefix |
Forneça o prefixo personalizado de suas métricas neste trabalho paralelo. | ||
--push_metrics_to_parent |
Opção booleana para efetuar push em métricas para o trabalho de pipeline pai. | Verdadeiro, Falso | Falso |
--resource_monitor_interval |
O intervalo de tempo em segundos para despejar o uso de recursos do nó (por exemplo, cpu, memória) para registrar a pasta no caminho "logs/sys/perf". Observação: os logs de recursos de despejo frequentes reduzirão ligeiramente a velocidade de execução do minilote. Defina esse valor como "0" para interromper o uso de recursos de despejo. |
[0, int.max] | 600 |
Comentários
Os comandos az ml job
podem ser usados 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: Usar o 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}}