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 TIPO Descrizione Valori consentiti Valore predefinito
$schema corda 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 corda 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 corda 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 corda 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 corda 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 corda 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 corda 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 corda 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 TIPO Descrizione Valori consentiti Valore predefinito
type Const Obbligatorio. Tipo di algoritmo di campionamento. random
seed numero intero Valore di inizializzazione casuale da usare per inizializzare la generazione di numeri casuali. Se omesso, il valore di inizializzazione predefinito è Null.
rule corda 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 TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di algoritmo di campionamento. grid

BayesianSamplingAlgorithm

Chiave TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di algoritmo di campionamento. bayesian

Criteri di interruzione anticipata

BanditPolicy

Chiave TIPO Descrizione Valori consentiti Valore predefinito
type Const Obbligatorio. Tipo di criterio. bandit
slack_factor numero Rapporto usato per calcolare la distanza consentita dalla versione di valutazione con prestazioni migliori. Uno di slack_factor o slack_amount è obbligatorio.
slack_amount numero Distanza assoluta consentita dalla versione di valutazione con prestazioni migliori. Uno di slack_factor o slack_amount è obbligatorio.
evaluation_interval numero intero Frequenza per l'applicazione dei criteri. 1
delay_evaluation numero intero 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 TIPO Descrizione Valori consentiti Valore predefinito
type Const Obbligatorio. Tipo di criterio. median_stopping
evaluation_interval numero intero Frequenza per l'applicazione dei criteri. 1
delay_evaluation numero intero 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 TIPO Descrizione Valori consentiti Valore predefinito
type Const Obbligatorio. Tipo di criterio. truncation_selection
truncation_percentage numero intero Obbligatorio. Percentuale di processi di valutazione da annullare a ogni intervallo di valutazione.
evaluation_interval numero intero Frequenza per l'applicazione dei criteri. 1
delay_evaluation numero intero 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 TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di espressione. choice
values elenco Obbligatorio. Elenco di valori discreti da cui scegliere.

Randint

Chiave TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di espressione. randint
upper numero intero Obbligatorio. Limite superiore esclusivo per l'intervallo di interi.

Qlognormal, qnormal

Chiave TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di espressione. qlognormal, qnormal
mu numero Obbligatorio. Media della distribuzione normale.
sigma numero Obbligatorio. Deviazione standard della distribuzione normale.
q numero intero Obbligatorio. Fattore di smussamento.

Qloguniform, quniform

Chiave TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di espressione. qloguniform, quniform
min_value numero Obbligatorio. Valore minimo nell'intervallo (inclusivo).
max_value numero Obbligatorio. Valore massimo nell'intervallo (inclusivo).
q numero intero Obbligatorio. Fattore di smussamento.

Lognormal, normale

Chiave TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di espressione. lognormal, normal
mu numero Obbligatorio. Media della distribuzione normale.
sigma numero Obbligatorio. Deviazione standard della distribuzione normale.

Loguniform

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

Uniforme

Chiave TIPO Descrizione Valori consentiti
type Const Obbligatorio. Tipo di espressione. uniform
min_value numero Obbligatorio. Valore minimo nell'intervallo (inclusivo).
max_value numero Obbligatorio. Valore massimo nell'intervallo (inclusivo).

Attributi della limits chiave

Chiave TIPO Descrizione Valore predefinito
max_total_trials numero intero Numero massimo di processi di valutazione. 1000
max_concurrent_trials numero intero Numero massimo di processi di valutazione che possono essere eseguiti simultaneamente. Il valore predefinito è max_total_trials.
timeout numero intero 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 numero intero 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 TIPO Descrizione Valore predefinito
command corda Obbligatorio. Comando da eseguire.
code corda 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 numero intero Numero di nodi da usare per il processo. 1

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 corda 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 corda 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 corda 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 TIPO Descrizione Valori consentiti Valore predefinito
type corda 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 corda 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 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 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