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 , string uri_file , uri_folder , , mltable mlflow_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 , mltable mlflow_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 , user logname , home , pwd . shell 2. Assicurarsi che i nomi degli input e degli output non siano duplicati. |