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), km (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.

Passaggi successivi