Condividi tramite


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_modelcustom_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.csvad 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_downloadeval_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.

Passaggi successivi