Condividi tramite


Schema YAML del processo sweep 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/sweepJob.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 VS Code di Azure Machine Learning per creare il file YAML, è possibile richiamare i completamenti dello schema e delle risorse se si include $schema nella parte superiore del file.
type const Obbligatorio. Tipo di processo. sweep sweep
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 Organizzare il processo sotto il nome dell'esperimento. Il record di esecuzione di ogni processo è organizzato nell'esperimento corrispondente nella scheda "Esperimenti" dello studio. Se omesso, Per impostazione predefinita, Azure Machine Learning corrisponde experiment_name al nome della directory di lavoro in cui è stato creato il processo.
description string Descrizione del processo.
tags oggetto Dizionario dei tag per il processo.
sampling_algorithm oggetto Obbligatorio. Algoritmo di campionamento degli iperparametri da usare su search_space. Uno di RandomSamplingAlgorithm, GridSamplingAlgorithm o BayesianSamplingAlgorithm.
search_space oggetto Obbligatorio. Dizionario dello spazio di ricerca degli iperparametri. Il nome dell'iperparametro è la chiave e il valore è l'espressione di parametro.

È possibile fare riferimento agli iperparametri in trial.command con l'espressione ${{ search_space.<hyperparameter> }} .
search_space.<hyperparameter> oggetto Vedere Espressioni di parametro per il set di espressioni possibili da usare.
objective.primary_metric string Obbligatorio. Nome della metrica primaria segnalata da ogni processo di valutazione. La metrica deve essere registrata nello script di training dell'utente, usando mlflow.log_metric() con lo stesso nome della metrica corrispondente.
objective.goal string Obbligatorio. Obiettivo di ottimizzazione di objective.primary_metric. maximize, minimize
early_termination oggetto Criteri di terminazione anticipata da usare. Un processo di valutazione viene annullato quando vengono soddisfatti i criteri dei criteri specificati. Se omesso, non viene applicato alcun criterio di terminazione anticipata. Uno di BanditPolicy, MedianStoppingPolicy o TruncationSelectionPolicy.
limits oggetto Limiti per il processo di sweep. Vedere Attributi della limits chiave.
compute string Obbligatorio. Nome della destinazione di calcolo in cui eseguire il processo, con la azureml:<compute_name> sintassi .
trial oggetto Obbligatorio. Modello di processo per ogni versione di valutazione. Ogni processo di valutazione viene fornito con una combinazione diversa di valori degli iperparametri campionati dal sistema da search_space. Visitare Attributi della trial chiave.
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 Un valore letterale (di tipo number, integer, boolean o string) o un oggetto che contiene 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 e, in tal caso, per impostazione predefinita l'output è di uri_folder tipo e il sistema di Azure Machine Learning genera un percorso di output per l'output. Tutti i file nella directory di output vengono scritti tramite il montaggio in lettura/scrittura. Per 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ò trattarsi di configurazione dell'identità utente, configurazione dell'identità gestita o Nessuno. Per UserIdentityConfiguration, l'identità del mittente del processo viene usata per accedere ai dati di input e scrivere i risultati nella cartella di output. In caso contrario, viene usata l'identità gestita della destinazione di calcolo.

Algoritmi di campionamento

RandomSamplingAlgorithm

Chiave Type Descrizione Valori consentiti Default value
type const Obbligatorio. Tipo di algoritmo di campionamento. random
seed integer Valore di inizializzazione casuale da usare per inizializzare la generazione di numeri casuali. Se omesso, il valore di inizializzazione predefinito è Null.
rule string Tipo di campionamento casuale da usare. Il valore predefinito, random, usa un semplice campionamento casuale uniforme, mentre sobol usa la sequenza quasi casuale di Sobol. random, sobol random

GridSamplingAlgorithm

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di algoritmo di campionamento. grid

BayesianSamplingAlgorithm

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di algoritmo di campionamento. bayesian

Criteri di interruzione anticipata

BanditPolicy

Chiave Type Descrizione Valori consentiti Default value
type const Obbligatorio. Tipo di criterio. bandit
slack_factor number Rapporto usato per calcolare la distanza consentita dalla versione di valutazione con prestazioni migliori. Uno di slack_factor o slack_amount è obbligatorio.
slack_amount number Distanza assoluta consentita dalla versione di valutazione con prestazioni migliori. Uno di slack_factor o slack_amount è obbligatorio.
evaluation_interval integer Frequenza per l'applicazione dei criteri. 1
delay_evaluation integer Numero di intervalli per i quali ritardare la prima valutazione dei criteri. Se specificato, il criterio si applica a ogni multiplo maggiore evaluation_interval o uguale a delay_evaluation. 0

MedianStoppingPolicy

Chiave Type Descrizione Valori consentiti Default value
type const Obbligatorio. Tipo di criterio. median_stopping
evaluation_interval integer Frequenza per l'applicazione dei criteri. 1
delay_evaluation integer Numero di intervalli per i quali ritardare la prima valutazione dei criteri. Se specificato, il criterio si applica a ogni multiplo maggiore evaluation_interval o uguale a delay_evaluation. 0

TruncationSelectionPolicy

Chiave Type Descrizione Valori consentiti Default value
type const Obbligatorio. Tipo di criterio. truncation_selection
truncation_percentage integer Obbligatorio. Percentuale di processi di valutazione da annullare a ogni intervallo di valutazione.
evaluation_interval integer Frequenza per l'applicazione dei criteri. 1
delay_evaluation integer Numero di intervalli per i quali ritardare la prima valutazione dei criteri. Se specificato, il criterio si applica a ogni multiplo maggiore evaluation_interval o uguale a delay_evaluation. 0

Espressioni di parametro

Scelta

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. choice
values array Obbligatorio. Elenco di valori discreti da cui scegliere.

Randint

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. randint
upper integer Obbligatorio. Limite superiore esclusivo per l'intervallo di interi.

Qlognormal, qnormal

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. qlognormal, qnormal
mu number Obbligatorio. Media della distribuzione normale.
sigma number Obbligatorio. Deviazione standard della distribuzione normale.
q integer Obbligatorio. Fattore di smussamento.

Qloguniform, quniform

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. qloguniform, quniform
min_value number Obbligatorio. Valore minimo nell'intervallo (inclusivo).
max_value number Obbligatorio. Valore massimo nell'intervallo (inclusivo).
q integer Obbligatorio. Fattore di smussamento.

Lognormal, normale

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. lognormal, normal
mu number Obbligatorio. Media della distribuzione normale.
sigma number Obbligatorio. Deviazione standard della distribuzione normale.

Loguniform

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. loguniform
min_value number Obbligatorio. Il valore minimo nell'intervallo è exp(min_value) (inclusivo).
max_value number Obbligatorio. Il valore massimo nell'intervallo è exp(max_value) (inclusivo).

Uniforme

Chiave Type Descrizione Valori consentiti
type const Obbligatorio. Tipo di espressione. uniform
min_value number Obbligatorio. Valore minimo nell'intervallo (inclusivo).
max_value number Obbligatorio. Valore massimo nell'intervallo (inclusivo).

Attributi della limits chiave

Chiave Type Descrizione Default value
max_total_trials integer Numero massimo di processi di valutazione. 1000
max_concurrent_trials integer Numero massimo di processi di valutazione che possono essere eseguiti simultaneamente. Il valore predefinito è max_total_trials.
timeout integer Tempo massimo in secondi consentito per l'esecuzione dell'intero processo di sweep. Una volta raggiunto questo limite, il sistema annulla il processo sweep, incluse tutte le prove. 5184000
trial_timeout integer Tempo massimo in secondi per l'esecuzione di ogni processo di valutazione. Una volta raggiunto questo limite, il sistema annulla la versione di valutazione.

Attributi della trial chiave

Chiave Type Descrizione Default value
command string Obbligatorio. Comando da eseguire.
code string Percorso locale della directory del codice sorgente da caricare e usare per il processo.
environment stringa o oggetto Obbligatorio. Ambiente da usare per il processo. 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 esistente, usare la sintassi azureml:<environment-name>:<environment-version>.

Per definire un ambiente inline, seguire lo schema Ambiente. Escludere le name proprietà e version perché gli ambienti inline non li supportano.
environment_variables oggetto Dizionario di coppie nome-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. Una delle configurazioni mpi, della configurazione di PyTorch o di TensorFlow.
resources.instance_count integer Numero di nodi da usare per il processo. 1

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. Per altre informazioni, vedere Altre informazioni sull'accesso ai dati. uri_file, uri_folder, mltablemlflow_model uri_folder
path string Percorso dei dati da usare come input. Questo valore può essere specificato in alcuni modi:

- Percorso locale del file o della cartella dell'origine dati, path: ./iris.csvad esempio . I dati si caricano 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 sull'uso azureml:// del 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.

Per solo l'URL del percorso di archiviazione dell'artefatto o degli artefatti di dati, invece di montare o scaricare i dati stessi, usare la direct modalità . In questo modo viene passato l'URL della posizione di archiviazione come input del processo. In questo caso, si è completamente responsabili della gestione delle credenziali per accedere all'archiviazione.
ro_mount, download, direct 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_file, uri_folder, mltablemlflow_model uri_folder
mode string Modalità di recapito del file di output o dei file nella risorsa di 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, tutti 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:

È possibile usare il az ml job comando per gestire i processi di Azure Machine Learning.

Esempi

Per esempi, visitare il repository GitHub di esempi. Di seguito sono riportati alcuni elementi:

YAML: hello sweep

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  command: >-
    python hello-sweep.py
    --A ${{inputs.A}}
    --B ${{search_space.B}}
    --C ${{search_space.C}}
  code: src
  environment: azureml:AzureML-sklearn-1.5@latest
inputs:
  A: 0.5
sampling_algorithm: random
search_space:
  B:
    type: choice
    values: ["hello", "world", "hello_world"]
  C:
    type: uniform
    min_value: 0.1
    max_value: 1.0
objective:
  goal: minimize
  primary_metric: random_metric
limits:
  max_total_trials: 4
  max_concurrent_trials: 2
  timeout: 3600
display_name: hello-sweep-example
experiment_name: hello-sweep-example
description: Hello sweep job example.

YAML: hello sweep usando sobol e un valore di inizializzazione

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  code: src
  command: >-
    python main.py
    --iris-csv ${{inputs.iris_csv}}
    --learning-rate ${{search_space.learning_rate}}
    --boosting ${{search_space.boosting}}
  environment: azureml:AzureML-lightgbm-3.3@latest
inputs:
  iris_csv:
    type: uri_file
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm:
  type: random
  rule: sobol
  seed: 123
search_space:
  learning_rate:
    type: uniform
    min_value: 0.01
    max_value: 0.9
  boosting:
    type: choice
    values: ["gbdt", "dart"]
objective:
  goal: minimize
  primary_metric: test-multi_logloss
limits:
  max_total_trials: 20
  max_concurrent_trials: 10
  timeout: 7200
display_name: lightgbm-iris-sweep-example
experiment_name: lightgbm-iris-sweep-example
description: Run a hyperparameter sweep job for LightGBM on Iris dataset.

YAML: ottimizzazione degli iperparametri del modello Python di base

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  code: src
  command: >-
    python main.py 
    --iris-csv ${{inputs.iris_csv}}
    --C ${{search_space.C}}
    --kernel ${{search_space.kernel}}
    --coef0 ${{search_space.coef0}}
  environment: azureml:AzureML-sklearn-1.5@latest
inputs:
  iris_csv: 
    type: uri_file
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm: random
search_space:
  C:
    type: uniform
    min_value: 0.5
    max_value: 0.9
  kernel:
    type: choice
    values: ["rbf", "linear", "poly"]
  coef0:
    type: uniform
    min_value: 0.1
    max_value: 1
objective:
  goal: minimize
  primary_metric: training_f1_score
limits:
  max_total_trials: 20
  max_concurrent_trials: 10
  timeout: 7200
display_name: sklearn-iris-sweep-example
experiment_name: sklearn-iris-sweep-example
description: Sweep hyperparemeters for training a scikit-learn SVM on the Iris dataset.

Passaggi successivi