Schema YAML del componente comando dell'interfaccia della riga di comando (v2)

SI APPLICA A: estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

Lo schema JSON di origine è disponibile in https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json.

Nota

La sintassi YAML descritta in dettaglio in questo documento si basa sullo schema JSON per la versione più recente dell'estensione dell'interfaccia della riga di comando di Machine Learning v2. Il funzionamento di questa sintassi è garantito solo con la versione più recente dell'estensione dell'interfaccia della riga di comando di Machine Learning v2. È possibile trovare gli schemi per le versioni di estensione precedenti in https://azuremlschemasprod.azureedge.net/.

Sintassi YAML

Chiave Type Descrizione Valori consentiti Valore predefinito
$schema string Schema YAML. Se si usa l'estensione Azure Machine Learning per Visual Studio Code per creare il file YAML, l'inclusione di $schema nella parte superiore del file consente di richiamare i completamenti dello schema e delle risorse.
type const Tipo di componente. command command
name string Obbligatorio. Nome del componente. Deve iniziare con una lettera minuscola. I caratteri consentiti sono lettere minuscole, numeri e caratteri di sottolineatura(_). La lunghezza massima consentita è di 255 caratteri.
version string Versione del componente. Se omesso, Azure Machine Learning genera automaticamente una versione.
display_name string Nome visualizzato del componente nell'interfaccia utente di Studio. Può essere non univoco all'interno dell'area di lavoro.
description string Descrizione del componente.
tags oggetto Dizionario dei tag per il componente.
is_deterministic boolean Questa opzione determina se il componente produrrà lo stesso output per gli stessi dati di input. È in genere consigliabile impostare questa opzione su false per i componenti che caricano dati da origini esterne, ad esempio l'importazione di dati da un URL. Ciò è dovuto al fatto che i dati nell'URL potrebbero cambiare nel tempo. true
command string Obbligatorio. Comando da eseguire.
code string Percorso locale della directory del codice sorgente da caricare e usare per il componente.
environment stringa o oggetto Obbligatorio. Ambiente da usare per il componente. Questo valore può essere un riferimento a un ambiente con controllo delle versioni esistente nell'area di lavoro o a una specifica dell'ambiente inline.

Per fare riferimento a un ambiente personalizzato esistente, usare la azureml:<environment-name>:<environment-version> sintassi . Per fare riferimento a un ambiente curato, usare la azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> sintassi . Per altre informazioni su come fare riferimento agli ambienti, vedere Come gestire gli ambienti

Per definire un ambiente inline, seguire lo schema Ambiente. Escludere le name proprietà e version perché non sono supportate per gli ambienti inline.
distribution oggetto Configurazione di distribuzione per scenari di training distribuiti. Uno di MpiConfiguration, PyTorchConfiguration o TensorFlowConfiguration.
resources.instance_count integer Numero di nodi da usare per il processo. 1
inputs oggetto Dizionario degli input del componente. La chiave è un nome per l'input nel contesto del componente e il valore è la definizione di input del componente.

È possibile fare riferimento agli input nell'oggetto command usando l'espressione ${{ inputs.<input_name> }} .
inputs.<input_name> oggetto Definizione di input del componente. Vedere Input del componente per il set di proprietà configurabili.
outputs oggetto Dizionario degli output del componente. La chiave è un nome per l'output nel contesto del componente e il valore è la definizione di output del componente.

È possibile fare riferimento agli output nell'oggetto command usando l'espressione ${{ outputs.<output_name> }} .
outputs.<output_name> oggetto Definizione di output del componente. Vedere Output del componente per il set di proprietà configurabili.

Configurazioni di distribuzione

MpiConfiguration

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di distribuzione. mpi
process_count_per_instance integer Obbligatorio. Numero di processi per nodo da avviare per il processo.

PyTorchConfiguration

Chiave Type Descrizione Valori consentiti Default value
type const Obbligatorio. Tipo di distribuzione. pytorch
process_count_per_instance integer Numero di processi per nodo da avviare per il processo. 1

TensorFlowConfiguration

Chiave Type Descrizione Valori consentiti Default value
type const Obbligatorio. Tipo di distribuzione. tensorflow
worker_count integer Numero di ruoli di lavoro da avviare per il processo. Il valore predefinito è resources.instance_count.
parameter_server_count integer Numero di server di parametri da avviare per il processo. 0

Input del componente

Chiave Type Descrizione Valori consentiti Valore predefinito
type string Obbligatorio. Tipo di input del componente. Altre informazioni sull'accesso ai dati number, integer, boolean, stringuri_file, uri_folder, , mltablemlflow_model
description string Descrizione dell'input.
default number, integer, boolean o string Valore predefinito per l'input.
optional boolean Indica se l'input è obbligatorio. Se è impostato su true, è necessario usare il comando include input facoltativi con $[[]] false
min integer o numero Valore minimo accettato per l'input. Questo campo può essere specificato solo se type il campo è number o integer.
max integer o numero Valore massimo accettato per l'input. Questo campo può essere specificato solo se type il campo è number o integer.
enum array Elenco di valori consentiti per l'input. Applicabile solo se type il campo è string.

Output del componente

Chiave Type Descrizione Valori consentiti Valore predefinito
type string Obbligatorio. Tipo di output del componente. uri_file, uri_folder, mltablemlflow_model
description string Descrizione dell'output.

Osservazioni:

I az ml component comandi possono essere usati per la gestione dei componenti di Azure Machine Learning.

Esempi

Gli esempi di componenti di comando sono disponibili nel repository GitHub di esempi. Di seguito sono riportati esempi di selezione.

Gli esempi sono disponibili nel repository GitHub di esempi. Di seguito sono riportati alcuni esempi.

YAML: componente di comando Hello world

$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 con tipi di input diversi

$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}}

Definire input facoltativi nella riga di comando

Quando l'input viene impostato come optional = true, è necessario usare $[[]] per adottare la riga di comando con gli input. Ad esempio, $[[--input1 ${{inputs.input1}}]. La riga di comando in fase di esecuzione può avere input diversi.

  • Se si usano solo i parametri e model_output obbligatoritraining_data, la riga di comando sarà simile alla seguente:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Se non viene specificato alcun valore in fase di esecuzione learning_rate e learning_rate_schedule userà il valore predefinito.

  • Se tutti gli input/output forniscono valori durante il runtime, la riga di comando sarà simile alla seguente:
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

Errori e raccomandazioni comuni

Di seguito sono riportati alcuni errori comuni e i suggerimenti consigliati corrispondenti quando si definisce un componente.

Chiave Errori Elemento consigliato
Comando 1. Solo gli input facoltativi possono trovarsi in $[[]]
2. L'uso di \ per creare una nuova riga non è supportato nel comando.
3. Gli input o gli output non vengono trovati.
1. Verificare che tutti gli input o gli output usati nel comando siano già definiti nelle inputs sezioni e outputs e usare il formato corretto per gli input facoltativi $[[]] o quelli ${{}}obbligatori.
2. Non usare \ per creare una nuova riga.
dell'ambiente di 1. Nessuna definizione esiste per la versione {envVersion}dell'ambiente {envName} .
2. Nessun ambiente esiste per il nome {envName}, versione {envVersion}.
3. Impossibile trovare l'asset con ID {envAssetId}.
1. Verificare che il nome dell'ambiente e la versione a cui si fa riferimento nella definizione del componente esista.
2. È necessario specificare la versione se si fa riferimento a un ambiente registrato.
input/output 1. I nomi di input/output sono in conflitto con i parametri riservati del sistema.
2. Nomi duplicati di input o output.
1. Non usare nessuno di questi parametri riservati come nome di input/output: path, ld_library_path, userlogname, home, pwd. shell
2. Assicurarsi che i nomi degli input e degli output non siano duplicati.

Passaggi successivi