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 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 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 genera 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 è organizzato sotto l'esperimento corrispondente nella scheda "Esperimenti" dello studio. Se omesso, Azure Machine Learning lo imposta come predefinito come nome della directory di lavoro in cui è stato creato il processo. | ||
description |
string | Descrizione del processo. | ||
tags |
oggetto | Dizionario dei tag per il processo. | ||
command |
string | Comando da eseguire. | ||
code |
string | Percorso locale della directory del codice sorgente da caricare e usare per il processo. | ||
environment |
stringa o oggetto | Ambiente da usare per il processo. 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 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 |
oggetto | Dizionario delle coppie chiave-valore della variabile di ambiente da impostare nel processo in cui viene eseguito il comando. | ||
distribution |
oggetto | Configurazione di distribuzione per scenari di training distribuiti. Uno di MpiConfiguration, PyTorchConfiguration o TensorFlowConfiguration. | ||
compute |
string | Nome della destinazione di calcolo in cui eseguire il processo. Può essere un riferimento a un calcolo esistente nell'area di lavoro (usando la sintassi) o local per designare l'esecuzione azureml:<compute_name> locale. Nota: i processi nella pipeline non sono supportati local come compute |
local |
|
resources.instance_count |
integer | Numero di nodi da usare per il processo. | 1 |
|
resources.instance_type |
string | Tipo di istanza da utilizzare 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 viene 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 condiviso del contenitore Docker. Deve essere nel formato in <number><unit> cui il numero deve essere maggiore di 0 e l'unità può essere uno di b (byte), (kilobyte), k (megabyte) m o g (gigabyte). |
2g |
|
limits.timeout |
integer | Tempo massimo in secondi consentito per l'esecuzione del processo. Quando viene raggiunto questo limite, il sistema annulla il processo. | ||
inputs |
oggetto | Dizionario di input per il processo. La chiave è un nome per l'input nel 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 dei valori letterali (di tipo number, integer, boolean o string) o un oggetto contenente una specifica dei dati di input del processo. | ||
outputs |
oggetto | Dizionario delle configurazioni di output del processo. La chiave è un nome per l'output nel contesto del processo e il valore è la configurazione di output. È possibile fare riferimento agli output nell'oggetto command usando l'espressione ${{ outputs.<output_name> }} . |
||
outputs.<output_name> |
oggetto | È possibile lasciare vuoto l'oggetto, nel qual caso per impostazione predefinita l'output è di tipo uri_folder e Azure Machine Learning genera un percorso di output per l'output. I file nella directory di output vengono scritti tramite montaggio in lettura/scrittura. Se si vuole specificare una modalità diversa per l'output, specificare un oggetto contenente la specifica dell'output del processo. |
||
identity |
oggetto | L'identità viene usata per l'accesso ai dati. Può essere UserIdentityConfiguration, ManagedIdentityConfiguration o Nessuno. Se UserIdentityConfiguration, l'identità del mittente del processo viene usata per accedere, immettere i dati e scrivere i risultati nella cartella di output. In caso contrario, viene usata l'identità gestita della destinazione di calcolo. |
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 processo
Chiave | Type | 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. È possibile specificare in alcuni modi: - Percorso locale del file o della cartella dell'origine dati, path: ./iris.csv ad esempio . I dati vengono 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 di tale asset di dati), ad esempio path: azureml:cifar10-data:1 o path: azureml:cifar10-data@latest . |
||
mode |
string | Modalità di distribuzione dei dati alla destinazione di calcolo. Per il montaggio di sola lettura ( ro_mount ), i dati vengono utilizzati come percorso di montaggio. Una cartella viene montata come cartella e un file viene montato come file. Azure Machine Learning risolve l'input nel percorso di montaggio. Per download la modalità, i dati vengono scaricati nella destinazione di calcolo. Azure Machine Learning risolve l'input nel percorso scaricato. Se si vuole solo l'URL della posizione di archiviazione degli artefatti di dati anziché montare o scaricare i dati stessi, è possibile usare la direct modalità . Questa modalità passa l'URL della posizione di archiviazione come input del processo. 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 scarica 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 | Type | Descrizione | Valori consentiti | Valore predefinito |
---|---|---|---|---|
type |
string | Tipo di output del processo. Per il tipo predefinito uri_folder , l'output corrisponde a una cartella. |
uri_folder , mlflow_model , custom_model |
uri_folder |
mode |
string | Modalità di distribuzione dei file di output nell'archiviazione di destinazione. Per la modalità di montaggio in lettura/scrittura (rw_mount ), la directory di output è una directory montata. Per la modalità di caricamento, i file scritti vengono caricati alla fine del processo. |
rw_mount , upload |
rw_mount |
Configurazioni di identità
UserIdentityConfiguration
Chiave | Type | Descrizione | Valori consentiti |
---|---|---|---|
type |
const | Obbligatorio. Tipo di identità. | user_identity |
ManagedIdentityConfiguration
Chiave | Type | Descrizione | Valori consentiti |
---|---|---|---|
type |
const | Obbligatorio. Tipo di identità. | managed oppure managed_identity |
Osservazioni:
Il az ml job
comando può essere usato per la gestione dei processi di Azure Machine Learning.
Esempi
Gli esempi sono disponibili nel repository GitHub di esempi. Le sezioni seguenti illustrano alcuni esempi.
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: scrivere 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.5/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.5/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.5/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.5/labels/latest
YAML: Notebook tramite 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.5/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 di base del modello R 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: distributed PyTorch
$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-2.2-cuda12.1@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: TensorFlow distribuito
$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.16-cuda12@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.