Esquema YAML do componente 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/commandComponent.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 componente. command command
name string Obrigatório. Nome do componente. Deve começar com letra minúscula. Os caracteres permitidos são letras minúsculas, números e sublinhado(_). O comprimento máximo é de 255 caracteres.
version string Versão do componente. Se omitido, o Azure Machine Learning gerará automaticamente uma versão.
display_name string Nome de exibição do componente na interface do usuário do estúdio. Pode não ser exclusivo dentro do espaço de trabalho.
description string Descrição do componente.
tags objeto Dicionário de tags para o componente.
is_deterministic boolean Esta opção determina se o componente produzirá a mesma saída para os mesmos dados de entrada. Normalmente, você deve definir isso como false para componentes que carregam dados de fontes externas, como a importação de dados de uma URL. Isso ocorre porque os dados na URL podem mudar ao longo do tempo. true
command string Obrigatório. O comando a ser executado.
code string Caminho local para o diretório do código-fonte a ser carregado e usado para o componente.
environment string ou objeto Obrigatório. O ambiente a ser usado para o componente. Esse 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 personalizado existente, use a azureml:<environment-name>:<environment-version> sintaxe. Para fazer referência a um ambiente com curadoria, use a azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> sintaxe. Para obter mais informações sobre como fazer referência a ambientes, consulte Como gerenciar ambientes

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.
distribution objeto A configuração de distribuição para cenários de treinamento distribuído. Um de MpiConfiguration, PyTorchConfiguration ou TensorFlowConfiguration.
resources.instance_count integer O número de nós a serem usados para o trabalho. 1
inputs objeto Dicionário de entradas de componentes. A chave é um nome para a entrada dentro do contexto do componente e o valor é a definição de entrada do componente.

As entradas podem ser referenciadas command no uso da ${{ inputs.<input_name> }} expressão.
inputs.<input_name> objeto A definição de entrada do componente. Consulte Entrada de componentes para obter o conjunto de propriedades configuráveis.
outputs objeto Dicionário de saídas de componentes. A chave é um nome para a saída dentro do contexto do componente e o valor é a definição de saída do componente.

As saídas podem ser referenciadas no command uso da ${{ outputs.<output_name> }} expressão.
outputs.<output_name> objeto A definição de saída do componente. Consulte Saída do componente para o conjunto de propriedades configuráveis.

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

Entrada de componentes

Chave Tipo Description Valores permitidos Default value
type string Obrigatório. O tipo de entrada de componente. Saiba mais sobre o acesso a dados number, integer, , boolean, uri_filestring, uri_folder, mltable,mlflow_model
description string Descrição da entrada.
default número, inteiro, booleano ou cadeia de caracteres O valor padrão para a entrada.
optional boolean Se a entrada é necessária. Se definido como true, você precisa usar o comando inclui entradas opcionais com $[[]] false
min inteiro ou número O valor mínimo aceito para a entrada. Este campo só pode ser especificado se type o campo for number ou integer.
max inteiro ou número O valor máximo aceito para a entrada. Este campo só pode ser especificado se type o campo for number ou integer.
enum matriz A lista de valores permitidos para a entrada. Aplicável apenas se type o campo for string.

Saída do componente

Chave Tipo Description Valores permitidos Default value
type string Obrigatório. O tipo de saída do componente. uri_file, uri_folder, mltable, mlflow_model
description string Descrição da saída.

Observações

Os az ml component comandos podem ser usados para gerenciar componentes do Azure Machine Learning.

Exemplos

Exemplos de componentes de comando estão disponíveis nos exemplos de repositório GitHub. Selecione exemplos para são mostrados abaixo.

Exemplos estão disponíveis no repositório GitHub de exemplos. Vários são mostrados abaixo.

YAML: Olá componente de comando mundial

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command

name: hello_python_world
display_name: Hello_Python_World
version: 1

code: ./src

environment: 
  image: python

command: >-
  python hello.py

YAML: Componente com diferentes tipos de entrada

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
  author: azureml-sdk-team
type: command
inputs:
  training_data: 
    type: uri_folder
  max_epocs:
    type: integer
    optional: true
  learning_rate: 
    type: number
    default: 0.01
    optional: true
  learning_rate_schedule: 
    type: string
    default: time-based
    optional: true
outputs:
  model_output:
    type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
  python train.py 
  --training_data ${{inputs.training_data}} 
  $[[--max_epocs ${{inputs.max_epocs}}]]
  $[[--learning_rate ${{inputs.learning_rate}}]]
  $[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
  --model_output ${{outputs.model_output}}

Definir entradas opcionais na linha de comando

Quando a entrada é definida como optional = true, você precisa usar $[[]] para abraçar a linha de comando com entradas. Por exemplo, $[[--input1 ${{inputs.input1}}]. A linha de comando em tempo de execução pode ter entradas diferentes.

  • Se você estiver usando apenas especificar os parâmetros necessários training_data e model_output necessários, a linha de comando terá a seguinte aparência:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Se nenhum valor for especificado no tempo de execução learning_rate e learning_rate_schedule usará o valor padrão.

  • Se todas as entradas/saídas fornecerem valores durante o tempo de execução, a linha de comando terá a seguinte aparência:
python train.py --training_data some_input_path --max_epocs 10 --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Erros comuns e recomendações

A seguir estão alguns erros comuns e sugestões recomendadas correspondentes quando você define um componente.

Chave Erros Recomendação
comando 1. Apenas entradas opcionais podem estar em $[[]]
2. Usar \ para criar uma nova linha não é suportado no comando.
3. Entradas ou saídas não são encontradas.
1. Verifique se todas as entradas ou saídas usadas no comando já estão definidas nas inputs seções e outputs e use o formato correto para entradas $[[]] opcionais ou necessárias ${{}}.
2. Não use \ para fazer uma nova linha.
ambiente 1. Não existe uma definição para a versão {envVersion}do ambiente{envName}.
2. Não existe ambiente para o nome {envName}, versão {envVersion}.
3. Não foi possível encontrar o ativo com ID {envAssetId}.
1. Certifique-se de que o nome do ambiente e a versão a que se refere na definição do componente existem.
2. Você precisa especificar a versão se você se referir a um ambiente registrado.
entradas/saídas 1. Os nomes de entradas/saídas entram em conflito com os parâmetros reservados do sistema.
2. Nomes duplicados de entradas ou saídas.
1. Não use nenhum desses parâmetros reservados como seu nome de entradas/saídas: , , , , lognamehome, pwd, shell. userld_library_pathpath
2. Certifique-se de que os nomes das entradas e saídas não são duplicados.

Próximos passos