Schema YAML del processo di 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/commandJob.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 ML v2. Questa sintassi è garantita solo per funzionare con la versione più recente dell'estensione dell'interfaccia della riga di comando di ML v2. È possibile trovare gli schemi per le versioni di estensione precedenti all'indirizzo https://azuremlschemasprod.azureedge.net/.
Sintassi YAML
Chiave | Tipo | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
$schema |
string | Schema YAML. Se si usa l'estensione VS Code di Azure Machine Learning per creare il file YAML, incluso $schema nella parte superiore del file, è possibile richiamare il completamento dello schema e delle risorse. |
||
type |
const | Tipo di processo. | command |
command |
name |
string | Nome del processo. Deve essere univoco in tutti i processi nell'area di lavoro. Se omesso, Azure Machine Learning genera automaticamente un GUID per il nome. | ||
display_name |
string | Nome visualizzato del processo nell'interfaccia utente di Studio. Può essere non univoco all'interno dell'area di lavoro. Se omesso, Azure Machine Learning genererà automaticamente un identificatore aggettivo-sostantivo leggibile per il nome visualizzato. | ||
experiment_name |
string | Nome dell'esperimento in cui organizzare il processo. Il record di esecuzione di ogni processo verrà organizzato nell'esperimento corrispondente nella scheda "Esperimenti" dello studio. Se omesso, Per impostazione predefinita, Azure Machine Learning verrà assegnato al nome della directory di lavoro in cui è stato creato il processo. | ||
description |
string | Descrizione del processo. | ||
tags |
object | Dizionario dei tag per il processo. | ||
command |
string | Obbligatorio (se non si usa il component campo). Comando da eseguire. |
||
code |
string | Percorso locale della directory del codice sorgente da caricare e usare per il processo. | ||
environment |
stringa o oggetto | Obbligatorio (se non si usa il component campo). Ambiente da usare per il processo. Può trattarsi di un riferimento a un ambiente con controllo delle versioni esistente nell'area di lavoro o in una specifica dell'ambiente inline. Per fare riferimento a un ambiente esistente, usare la azureml:<environment_name>:<environment_version> sintassi o azureml:<environment_name>@latest (per fare riferimento alla versione più recente di un ambiente). Per definire un ambiente inline, seguire lo schema Ambiente. Escludere le name proprietà e version perché non sono supportate per gli ambienti inline. |
||
environment_variables |
object | Dizionario delle coppie chiave-valore della variabile di ambiente da impostare nel processo in cui viene eseguito il comando. | ||
distribution |
object | Configurazione di distribuzione per gli scenari di training distribuiti. Uno di MpiConfiguration, PyTorchConfiguration o TensorFlowConfiguration. | ||
compute |
string | Nome della destinazione di calcolo in cui eseguire il processo. Può trattarsi di un riferimento a un calcolo esistente nell'area di lavoro (usando la sintassi) o local di designare l'esecuzione azureml:<compute_name> locale. Nota: i processi nella pipeline non sono supportati local come compute |
local |
|
resources.instance_count |
numero intero | Numero di nodi da usare per il processo. | 1 |
|
resources.instance_type |
string | Tipo di istanza da usare per il processo. Applicabile per i processi in esecuzione nel calcolo Kubernetes abilitato per Azure Arc (dove la destinazione di calcolo specificata nel compute campo è di type: kubernentes ). Se omesso, per impostazione predefinita verrà utilizzato il tipo di istanza predefinito per il cluster Kubernetes. Per altre informazioni, vedere Creare e selezionare Tipi di istanza kubernetes. |
||
resources.shm_size |
string | Dimensioni del blocco di memoria condivisa del contenitore Docker. Deve essere nel formato in cui il numero deve essere maggiore di <number><unit> 0 e l'unità può essere uno di b (byte), (kilobyte), k m (megabyte) o g (gigabyte). |
2g |
|
limits.timeout |
numero intero | Tempo massimo in secondi consentito per l'esecuzione del processo. Una volta raggiunto questo limite, il sistema annulla il processo. | ||
inputs |
object | Dizionario di input per il processo. La chiave è un nome per l'input all'interno del contesto del processo e il valore è il valore di input. È possibile fare riferimento agli input nell'oggetto command usando l'espressione ${{ inputs.<input_name> }} . |
||
inputs.<input_name> |
number, integer, boolean, string o object | Uno di un valore letterale (di tipo number, integer, booleano o stringa) o un oggetto contenente una specifica dei dati di input del processo. | ||
outputs |
object | Dizionario delle configurazioni di output del processo. La chiave è un nome per l'output all'interno del contesto del processo e il valore è la configurazione di output. È possibile fare riferimento agli output nell'oggetto command utilizzando l'espressione ${{ outputs.<output_name> }} . |
||
outputs.<output_name> |
object | È possibile lasciare vuoto l'oggetto. In questo caso, per impostazione predefinita, l'output sarà di tipo uri_folder e Azure Machine Learning genererà un percorso di output per l'output. I file nella directory di output verranno scritti tramite montaggio di lettura/scrittura. Se si vuole specificare una modalità diversa per l'output, specificare un oggetto contenente la specifica dell'output del processo. |
||
identity |
object | L'identità viene usata per l'accesso ai dati. Può essere UserIdentityConfiguration, ManagedIdentityConfiguration o Nessuno. Se si tratta di UserIdentityConfiguration, verrà usata l'identità del mittente del processo per accedere ai dati di input e scrivere i risultati nella cartella di output. In caso contrario, verrà usata l'identità gestita della destinazione di calcolo. |
Configurazioni di distribuzione
MpiConfiguration
Chiave | Tipo | Descrizione | Valori consentiti |
---|---|---|---|
type |
const | Obbligatorio. Tipo di distribuzione. | mpi |
process_count_per_instance |
numero intero | Obbligatorio. Numero di processi per nodo da avviare per il processo. |
PyTorchConfiguration
Chiave | Tipo | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
type |
const | Obbligatorio. Tipo di distribuzione. | pytorch |
|
process_count_per_instance |
numero intero | Numero di processi per nodo da avviare per il processo. | 1 |
TensorFlowConfiguration
Chiave | Tipo | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
type |
const | Obbligatorio. Tipo di distribuzione. | tensorflow |
|
worker_count |
numero intero | Numero di ruoli di lavoro da avviare per il processo. | Il valore predefinito è resources.instance_count . |
|
parameter_server_count |
numero intero | Numero di server di parametri da avviare per il processo. | 0 |
Input del processo
Chiave | Tipo | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
type |
string | Tipo di input del processo. Specificare uri_file per i dati di input che puntano a una singola origine file o uri_folder per i dati di input che puntano a un'origine cartella. |
uri_file , uri_folder , mlflow_model , custom_model |
uri_folder |
path |
string | Percorso dei dati da usare come input. Questa opzione può essere specificata in alcuni modi: - Percorso locale del file o della cartella dell'origine dati, ad esempio path: ./iris.csv . I dati verranno caricati durante l'invio del processo. - URI di un percorso cloud del file o della cartella da usare come input. I tipi URI supportati sono azureml , https , wasbs , abfss , adl . Per altre informazioni su come usare il azureml:// formato URI, vedere sintassi yaml di base. - Asset di dati di Azure Machine Learning registrato esistente da usare come input. Per fare riferimento a un asset di dati registrato, usare la azureml:<data_name>:<data_version> sintassi o azureml:<data_name>@latest (per fare riferimento alla versione più recente dell'asset di dati), ad esempio path: azureml:cifar10-data:1 o path: azureml:cifar10-data@latest . |
||
mode |
string | Modalità di recapito dei dati alla destinazione di calcolo. Per il montaggio di sola lettura ( ro_mount ), i dati verranno utilizzati come percorso di montaggio. Una cartella verrà montata come cartella e un file verrà montato come file. Azure Machine Learning risolverà l'input nel percorso di montaggio. Per download la modalità i dati verranno scaricati nella destinazione di calcolo. Azure Machine Learning risolverà l'input nel percorso scaricato. Se si vuole solo l'URL della posizione di archiviazione degli artefatti dati anziché montare o scaricare i dati stessi, è possibile usare la direct modalità . Verrà passato l'URL della posizione di archiviazione come input del processo. Si noti che in questo caso si è completamente responsabili della gestione delle credenziali per accedere all'archiviazione. Le eval_mount modalità e eval_download sono univoche per MLTable e monta i dati come percorso o scaricano i dati nella destinazione di calcolo. Per altre informazioni sulle modalità, vedere Accedere ai dati in un processo |
ro_mount , download , direct , eval_download , eval_mount |
ro_mount |
Output del processo
Chiave | Tipo | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
type |
string | Tipo di output del processo. Per il tipo predefinito uri_folder , l'output corrisponderà a una cartella. |
uri_folder , mlflow_model , custom_model |
uri_folder |
mode |
string | Modalità di recapito dei file di output nella risorsa di archiviazione di destinazione. Per la modalità di montaggio in lettura/scrittura (rw_mount ) la directory di output sarà una directory montata. Per la modalità di caricamento, i file scritti verranno caricati alla fine del processo. |
rw_mount , upload |
rw_mount |
Configurazioni di identità
UserIdentityConfiguration
Chiave | Tipo | Descrizione | Valori consentiti |
---|---|---|---|
type |
const | Obbligatorio. Tipo di identità. | user_identity |
ManagedIdentityConfiguration
Chiave | Tipo | Descrizione | Valori consentiti |
---|---|---|---|
type |
const | Obbligatorio. Tipo di identità. | managed o managed_identity |
Commenti
Il az ml job
comando può essere usato per la gestione dei processi di Azure Machine Learning.
Esempio
Gli esempi sono disponibili nel repository GitHub degli esempi. Di seguito sono riportati diversi elementi.
YAML: hello world
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
YAML: nome visualizzato, nome dell'esperimento, descrizione e tag
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
tags:
hello: world
display_name: hello-world-example
experiment_name: hello-world-example
description: |
# Azure Machine Learning "hello world" job
This is a "hello world" job running in the cloud via Azure Machine Learning!
## Description
Markdown is supported in the studio for job descriptions! You can edit the description there or via CLI.
YAML: variabili di ambiente
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo $hello_env_var
environment:
image: library/python:latest
environment_variables:
hello_env_var: "hello world"
YAML: codice sorgente
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
image: library/python:latest
YAML: input letterali
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo ${{inputs.hello_string}}
echo ${{inputs.hello_number}}
environment:
image: library/python:latest
inputs:
hello_string: "hello world"
hello_number: 42
YAML: scrittura in output predefiniti
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
image: library/python:latest
YAML: scrivere nell'output dei dati denominati
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ${{outputs.hello_output}}/helloworld.txt
outputs:
hello_output:
environment:
image: python
YAML: input del file URI dell'archivio dati
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
YAML: input della cartella URI dell'archivio dati
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: azureml://datastores/workspaceblobstore/paths/example-data/
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
YAML: input del file URI
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
YAML: input della cartella URI
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
YAML: Notebook via papermill
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
pip install ipykernel papermill
papermill hello-notebook.ipynb outputs/out.ipynb -k python
code: src
environment:
image: library/python:3.11.6
YAML: training del modello Python di base
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
--C ${{inputs.C}}
--kernel ${{inputs.kernel}}
--coef0 ${{inputs.coef0}}
inputs:
iris_csv:
type: uri_file
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
C: 0.8
kernel: "rbf"
coef0: 0.1
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
compute: azureml:cpu-cluster
display_name: sklearn-iris-example
experiment_name: sklearn-iris-example
description: Train a scikit-learn SVM on the Iris dataset.
YAML: training del modello R di base con il contesto di compilazione Docker locale
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
Rscript train.R
--data_folder ${{inputs.iris}}
code: src
inputs:
iris:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
build:
path: docker-context
compute: azureml:cpu-cluster
display_name: r-iris-example
experiment_name: r-iris-example
description: Train an R model on the Iris dataset.
YAML: PyTorch distribuito
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--learning-rate ${{inputs.learning_rate}}
--data-dir ${{inputs.cifar}}
inputs:
epochs: 1
learning_rate: 0.2
cifar:
type: uri_folder
path: azureml:cifar-10-example@latest
environment: azureml:AzureML-acpt-pytorch-1.13-cuda11.7@latest
compute: azureml:gpu-cluster
distribution:
type: pytorch
process_count_per_instance: 1
resources:
instance_count: 2
display_name: pytorch-cifar-distributed-example
experiment_name: pytorch-cifar-distributed-example
description: Train a basic convolutional neural network (CNN) with PyTorch on the CIFAR-10 dataset, distributed via PyTorch.
YAML: distributed TensorFlow
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--model-dir ${{inputs.model_dir}}
inputs:
epochs: 1
model_dir: outputs/keras-model
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: tensorflow
worker_count: 2
display_name: tensorflow-mnist-distributed-example
experiment_name: tensorflow-mnist-distributed-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via TensorFlow.
YAML: MPI distribuito
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
inputs:
epochs: 1
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: mpi
process_count_per_instance: 1
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.