Configurare il training AutoML per i dati tabulari con l'interfaccia della riga di comando di Azure Machine Learning e Python SDK
SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
Questo articolo illustra come configurare un processo di training di Machine Learning automatizzato (AutoML) con Azure Machine Learning Python SDK v2. Machine Learning automatizzato seleziona automaticamente un algoritmo e iperparametri, e genera un modello pronto per la distribuzione. Questo articolo fornisce informazioni dettagliate sulle varie opzioni che è possibile usare per configurare esperimenti di Machine Learning automatizzati.
Se si preferisce un'esperienza senza codice, è anche possibile configurare il training automatico di Machine Learning senza codice per i dati tabulari con l'interfaccia utente di Studio.
Prerequisiti
- Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. Provare la versione gratuita o a pagamento di Azure Machine Learning.
- Un'area di lavoro di Azure Machine Learning. Se non è disponibile, vedere Creare risorse per iniziare.
Per usare le informazioni sull'SDK, installare SDK v2 per Python di Azure Machine Learning.
Per installare l'SDK, è possibile:
- Creare un'istanza di calcolo, che ha già la versione più recente di Azure Machine Learning Python SDK ed è configurata per i flussi di lavoro di Machine Learning. Per altre informazioni, vedere Creare un'istanza di ambiente di calcolo di Azure Machine Learning.
- Installare l'SDK nel computer locale.
Configurare l'area di lavoro
Per connettersi a un'area di lavoro, è necessario fornire una sottoscrizione, un gruppo di risorse e un'area di lavoro.
I dettagli dell'area di lavoro vengono usati nel MLClient
da azure.ai.ml
per ottenere un punto di controllo per l'area di lavoro di Azure Machine Learning necessaria.
L'esempio seguente usa l'autenticazione di Azure predefinita con la configurazione o la configurazione predefinita dell'area di lavoro da un config.json
file nella struttura delle cartelle. Se non trova alcun elemento config.json
, è necessario introdurre manualmente l'ID sottoscrizione, il gruppo di risorse e l'area di lavoro quando si crea .MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient
credential = DefaultAzureCredential()
ml_client = None
try:
ml_client = MLClient.from_config(credential)
except Exception as ex:
print(ex)
# Enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
ml_client = MLClient(credential, subscription_id, resource_group, workspace)
Specificare l'origine dati e il formato
Per fornire i dati di training in SDK v2, è necessario caricarli nel cloud tramite mlTable.
Requisiti per il caricamento dei dati in un oggetto MLTable:
- I dati devono essere in formato tabulare.
- Il valore da stimare, la colonna di destinazione, deve essere nei dati.
I dati di training devono essere accessibili dal calcolo remoto. ML v2 automatizzato (Python SDK e CLI/YAML) accetta asset di dati MLTable (v2). Per la compatibilità con le versioni precedenti, supporta anche set di dati tabulari v1 dalla versione 1, un set di dati tabulare registrato, tramite le stesse proprietà del set di dati di input. È consigliabile usare MLTable, disponibile nella versione 2. In questo esempio i dati vengono archiviati nel percorso locale, ./train_data/bank_marketing_train_data.csv.
È possibile creare un oggetto MLTable usando mltable Python SDK, come illustrato nell'esempio seguente:
import mltable
paths = [
{'file': './train_data/bank_marketing_train_data.csv'}
]
train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')
Questo codice crea un nuovo file, ./train_data/MLTable, che contiene il formato di file e le istruzioni di caricamento.
La cartella ./train_data include ora il file di definizione MLTable più il file di dati bank_marketing_train_data.csv.
Per altre informazioni su MLTable, vedere Uso delle tabelle in Azure Machine Learning.
Training, convalida e test dei dati
È possibile specificare set di dati di training e di convalida separati. I dati di training devono essere forniti al training_data
parametro nella funzione factory del processo di Machine Learning automatizzato.
Se non si specifica in modo esplicito un validation_data
parametro o n_cross_validation
, Machine Learning automatizzato applica tecniche predefinite per determinare come viene eseguita la convalida. Questa determinazione dipende dal numero di righe nel set di dati assegnato al parametro training_data
.
Dimensioni dei dati di training | Tecnica di convalida |
---|---|
Più di 20.000 righe | Viene applicata la suddivisione dei dati di training e convalida. Per impostazione predefinita, come set di convalida viene considerato il 10% del set di dati di training iniziale. A sua volta, il set di convalida viene usato per il calcolo delle metriche. |
Minore o uguale a 20.000 righe | Viene applicato l'approccio di convalida incrociata. Il numero predefinito di riduzioni dipende dal numero di righe. Se il set di dati è inferiore a 1.000 righe, vengono usate dieci riduzioni. Se le righe sono uguali o comprese tra 1.000 e 20.000, vengono utilizzate tre riduzioni. |
Calcolo per eseguire l'esperimento
I processi di Machine Learning automatizzati con Python SDK v2 (o l'interfaccia della riga di comando v2) sono attualmente supportati solo nel cluster di calcolo remoto di Azure Machine Learning o nell'istanza di calcolo. Per altre informazioni sulla creazione di risorse di calcolo con Python SDKv2 o CLIv2, vedere Eseguire il training di modelli con l'interfaccia della riga di comando di Azure Machine Learning, l'SDK e l'API REST.
Configurare le impostazioni di esperimento
Per configurare l'esperimento di Machine Learning automatizzato sono disponibili varie opzioni. Questi parametri di configurazione vengono impostati nel metodo dell'attività. È anche possibile impostare le impostazioni di training del processo e i criteri di uscita con le impostazioni training
e limits
.
L'esempio seguente mostra i parametri obbligatori per un'attività di classificazione che specifica l'accuratezza come metrica primaria e cinque riduzioni di convalida incrociata .
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input
# note that this is a code snippet -- you might have to modify the variable values to run it successfully
# make an Input object for the training data
my_training_data_input = Input(
type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)
# configure the classification job
classification_job = automl.classification(
compute=my_compute_name,
experiment_name=my_exp_name,
training_data=my_training_data_input,
target_column_name="y",
primary_metric="accuracy",
n_cross_validations=5,
enable_model_explainability=True,
tags={"my_custom_tag": "My custom value"}
)
# Limits are all optional
classification_job.set_limits(
timeout_minutes=600,
trial_timeout_minutes=20,
max_trials=5,
enable_early_termination=True,
)
# Training properties are optional
classification_job.set_training(
blocked_training_algorithms=["logistic_regression"],
enable_onnx_compatible_models=True
)
Selezionare il tipo di attività di Machine Learning
Prima di poter inviare il processo di Machine Learning automatizzato, determinare il tipo di problema di Machine Learning che si vuole risolvere. Questo problema determina la funzione usata dal processo e gli algoritmi del modello applicati.
Machine Learning automatizzato supporta diversi tipi di attività:
Attività basate sui dati tabulari
- classificazione
- Regressione
- previsione
Attività di visione artificiale, tra cui
- Classificazione immagini
- Rilevamento oggetti
Attività di elaborazione del linguaggio naturale, tra cui
- Classificazione testo
- Riconoscimento delle entità
Per altre informazioni, vedere Tipi di attività. Per altre informazioni sulla configurazione dei processi di previsione, vedere Configurare AutoML per eseguire il training di un modello di previsione di serie temporali.
Algoritmi supportati
Il Machine Learning automatizzato prova modelli e algoritmi diversi durante il processo di automazione e ottimizzazione. Gli utenti non devono specificare l'algoritmo.
Il metodo task determina l'elenco di algoritmi o modelli da applicare. Per modificare ulteriormente le iterazioni con i modelli disponibili da includere o escludere, usare i allowed_training_algorithms
parametri o blocked_training_algorithms
nella training
configurazione del processo.
Nella tabella seguente esplorare gli algoritmi supportati per ogni attività di Machine Learning.
Con altri algoritmi:
- Algoritmi multi-classe di classificazione immagini
- Algoritmi con più etichette di classificazione delle immagini
- Algoritmi di rilevamento oggetti immagine
- Algoritmi con più etichette di classificazione di testo con elaborazione del linguaggio naturale
- Algoritmi di riconoscimento entità denominata (NER) di testi con elaborazione del linguaggio naturale
Ad esempio, i notebook di ogni tipo di attività, vedere automl-standalone-jobs.
Primary metric (Metrica principale)
Il parametro primary_metric
determina la metrica da usare durante il training del modello per l'ottimizzazione. Il tipo di attività scelto determina le metriche che è possibile selezionare.
La scelta di una metrica primaria per l'apprendimento automatico da ottimizzare dipende da molti fattori. È consigliabile scegliere una metrica che rappresenti al meglio le esigenze aziendali. Valutare quindi se la metrica è adatta per il profilo del set di dati, incluse le dimensioni dei dati, l'intervallo e la distribuzione di classi. Le sezioni seguenti riepilogano le metriche principali consigliate in base al tipo di attività e allo scenario aziendale.
Per informazioni sulle definizioni specifiche di queste metriche, vedere Valutare i risultati dell'esperimento di Machine Learning automatizzato.
Metriche per gli scenari di classificazione multi-classe
Queste metriche si applicano a tutti gli scenari di classificazione, inclusi dati tabulari, immagini o visione artificiale e testo di elaborazione del linguaggio naturale (NLP-Text).
Le metriche dipendenti dalla soglia, ad esempio accuracy
, recall_score_weighted
, norm_macro_recall
e precision_score_weighted
potrebbero non essere ottimizzate anche per i set di dati di piccole dimensioni, hanno un'asimmetria di classe di grandi dimensioni (squilibrio di classe) o quando il valore della metrica previsto è molto vicino a 0,0 o 1,0. In questi casi, AUC_weighted
può essere una scelta migliore per la metrica primaria. Al termine dell'apprendimento automatico, è possibile scegliere il modello vincente in base alla metrica più adatta alle esigenze aziendali.
Metric | Caso d'uso di esempio |
---|---|
accuracy |
Classificazione delle immagini, analisi della valutazione, stima dell'abbandono |
AUC_weighted |
Rilevamento delle frodi, classificazione delle immagini, rilevamento anomalie/rilevamento della posta indesiderata |
average_precision_score_weighted |
Analisi valutazione |
norm_macro_recall |
Previsione abbandono |
precision_score_weighted |
Metriche per scenari di classificazione con più etichette
Per la classificazione del testo con più etichette, attualmente "Accuratezza" è l'unica metrica primaria supportata.
Per Classificazione immagini con più etichette, le metriche principali supportate sono definite nell'enumerazione ClassificationMultilabelPrimaryMetrics
.
Metriche per scenari di riconoscimento di entità denominate testo NLP
Per NLP Text Named Entity Recognition (NER), attualmente 'Accuracy' è l'unica metrica primaria supportata.
Metriche per i modelli di regressione
r2_score
, normalized_mean_absolute_error
e normalized_root_mean_squared_error
stanno tentando di ridurre al minimo gli errori di stima. r2_score
e normalized_root_mean_squared_error
riducono al minimo gli errori quadratici medi mentre normalized_mean_absolute_error
riduce al minimo il valore assoluto medio degli errori. Il valore assoluto tratta gli errori in tutte le dimensioni e gli errori quadrati hanno una penalità molto maggiore per gli errori con valori assoluti più grandi. A seconda che gli errori più grandi debbano essere puniti più o meno, è possibile scegliere di ottimizzare l'errore quadrato o l'errore assoluto.
La differenza principale tra r2_score
e normalized_root_mean_squared_error
è il modo in cui vengono normalizzati e i loro significati. normalized_root_mean_squared_error
è la radice errore quadratico medio normalizzata per intervallo e può essere interpretata come la grandezza dell'errore medio per la stima. r2_score
è un errore quadratico medio normalizzato da una stima della varianza dei dati. È la proporzione di variazione che il modello può acquisire.
Nota
Anche r2_score
e normalized_root_mean_squared_error
si comportano in modo analogo come metriche primarie. Se viene applicato un set di convalida fisso, queste due metriche ottimizzano la stessa destinazione, l'errore quadratico medio e vengono ottimizzate dallo stesso modello. Quando è disponibile solo un set di training e viene applicata la convalida incrociata, il normalizzatore per normalized_root_mean_squared_error
è fisso come intervallo di training impostato, ma il normalizzatore per r2_score
varia per ogni riduzione in quanto è la varianza per ogni riduzione.
Se la classificazione, anziché il valore esatto, è di interesse, spearman_correlation
può essere una scelta migliore. Misura la correlazione di rango tra valori reali e stime.
Machine Learning automatizzato attualmente non supporta metriche primarie che misurano la differenza relativa tra stime e osservazioni. Le metriche r2_score
, normalized_mean_absolute_error
e normalized_root_mean_squared_error
sono tutte misure di differenza assoluta. Ad esempio, se una stima è diversa da un'osservazione di 10 unità, queste metriche calcolano lo stesso valore se l'osservazione è di 20 unità o 20.000 unità. Al contrario, una differenza percentuale, che è una misura relativa, restituisce gli errori rispettivamente del 50% e dello 0,05%. Per ottimizzare la differenza relativa, è possibile eseguire Machine Learning automatizzato con una metrica primaria supportata e quindi selezionare il modello con il valore migliore mean_absolute_percentage_error
o root_mean_squared_log_error
. Queste metriche sono indefinite quando i valori di osservazione sono zero, quindi potrebbero non essere sempre scelte valide.
Metric | Caso d'uso di esempio |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
Previsione dei prezzi (casa/prodotto/mancia), Previsione del punteggio della recensione |
r2_score |
Ritardo della compagnia aerea, stima dello stipendio, tempo di risoluzione dei bug |
normalized_mean_absolute_error |
Metriche per gli scenari di previsione delle serie temporali
Le raccomandazioni sono simili alle raccomandazioni per gli scenari di regressione.
Metric | Caso d'uso di esempio |
---|---|
normalized_root_mean_squared_error |
Stima dei prezzi (previsione), ottimizzazione dell'inventario, previsione della domanda |
r2_score |
Stima dei prezzi (previsione), ottimizzazione dell'inventario, previsione della domanda |
normalized_mean_absolute_error |
Metriche per scenari di rilevamento oggetti immagine
Per Rilevamento oggetti immagine, le metriche principali supportate sono definite nell'enumerazione ObjectDetectionPrimaryMetrics
.
Metriche per scenari di segmentazione istanze immagine
Per gli scenari di segmentazione dell'istanza di immagine, le metriche principali supportate sono definite nell'enumerazione InstanceSegmentationPrimaryMetrics
.
Definizione delle funzionalità dei dati
In ogni esperimento di Machine Learning automatizzato i dati vengono trasformati automaticamente in numeri e vettori di numeri. I dati vengono anche ridimensionati e normalizzati per aiutare gli algoritmi sensibili alle funzionalità su scale diverse. Queste trasformazioni dei dati sono denominate definizione delle funzionalità.
Nota
I passaggi di definizione delle funzionalità di Machine Learning automatizzati, ad esempio la normalizzazione delle funzionalità, la gestione dei dati mancanti e la conversione del testo in numeri, diventano parte del modello sottostante. Quando si usa il modello per le stime, gli stessi passaggi di definizione delle caratteristiche applicati durante il training vengono applicati automaticamente ai dati di input.
Quando si configurano processi di Machine Learning automatizzati, è possibile abilitare o disabilitare le featurization
impostazioni.
La tabella seguente illustra le impostazioni accettate per la definizione delle funzionalità.
Configurazione della definizione delle funzionalità | Descrizione |
---|---|
"mode": 'auto' |
Indica che, come parte della pre-elaborazione, i controlli dei dati e i passaggi di definizione delle caratteristiche vengono eseguiti automaticamente. Questo valore è l'impostazione predefinita. |
"mode": 'off' |
Indica che il passaggio di definizione delle caratteristiche non deve essere eseguito automaticamente. |
"mode": 'custom' |
Indica che deve essere usata la definizione delle funzionalità personalizzata. |
Il codice seguente illustra come fornire la definizione delle funzionalità personalizzata in questo caso per un processo di regressione.
from azure.ai.ml.automl import ColumnTransformer
transformer_params = {
"imputer": [
ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
],
}
regression_job.set_featurization(
mode="custom",
transformer_params=transformer_params,
blocked_transformers=["LabelEncoding"],
column_name_and_types={"CHMIN": "Categorical"},
)
Criteri di uscita
Sono disponibili alcune opzioni che è possibile definire nella set_limits()
funzione per terminare l'esperimento prima del completamento del processo.
Criteri | description |
---|---|
Nessun criterio | Se non si definiscono parametri di uscita, l'esperimento continua fino a quando non vengono apportati ulteriori progressi sulla metrica primaria. |
timeout |
Definisce per quanto tempo, in minuti, l'esperimento deve continuare a essere eseguito. Se non specificato, il timeout totale del processo predefinito è di sei giorni (8.640 minuti). Per specificare un timeout inferiore o uguale a 1 ora (60 minuti), assicurarsi che le dimensioni del set di dati non siano maggiori di 10.000.000 (righe di colonna) o si verificherà un errore. Questo timeout include l'installazione, la definizione delle caratteristiche e le esecuzioni di training, ma non include le esecuzioni di entità e spiegazione del modello alla fine del processo, perché queste azioni devono essere eseguite dopo aver completato tutte le prove (processi figlio). |
trial_timeout_minutes |
Tempo massimo in minuti per cui ogni prova (processo figlio) può essere eseguita prima che termini. Se non specificato, viene utilizzato un valore di 1 mese o 43200 minuti. |
enable_early_termination |
Indica se terminare il processo se il punteggio non migliora a breve termine. |
max_trials |
Numero massimo di prove/esecuzioni ognuna con una combinazione diversa di algoritmi e iper parametri da provare durante un processo. Se non specificato, il valore predefinito è 1.000 versioni di valutazione. Se si usa enable_early_termination , il numero di versioni di valutazione usate può essere inferiore. |
max_concurrent_trials |
Rappresenta il numero massimo di prove (processi figlio) che verrebbero eseguite in parallelo. È consigliabile associare questo numero al numero di nodi del cluster. |
Eseguire esperimento
Avviare l'esperimento per eseguire e generare un modello.
Nota
Se si esegue un esperimento con le stesse impostazioni di configurazione e la metrica primaria più volte, è possibile che si verifichino variazioni in ogni esperimento il punteggio finale delle metriche e i modelli generati. Gli algoritmi utilizzati da Machine Learning automatizzato hanno una casualità intrinseca che può causare lievi variazioni nell'output dei modelli dall'esperimento e il punteggio finale delle metriche del modello consigliato, ad esempio l'accuratezza. È anche possibile che vengano visualizzati risultati con lo stesso nome del modello, ma vengono usati parametri iper-parametri diversi.
Avviso
Se sono state impostate regole nel firewall o nel gruppo di sicurezza di rete nell'area di lavoro, verificare che le autorizzazioni necessarie vengano concesse al traffico di rete in ingresso e in uscita come definito in Configurare il traffico di rete in ingresso e in uscita.
Dopo aver creato MLClient
nei prerequisiti, è possibile eseguire il comando seguente nell'area di lavoro.
# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
classification_job
) # submit the job to the backend
print(f"Created job: {returned_job}")
# Get a URL for the status of the job
returned_job.services["Studio"].endpoint
Più esecuzioni figlio nei cluster
Le esecuzioni figlio dell'esperimento di Machine Learning automatizzato possono essere eseguite in un cluster che esegue già un altro esperimento. Tuttavia, la tempistica dipende dal numero di nodi del cluster e se tali nodi sono disponibili per eseguire un esperimento diverso.
Ogni nodo del cluster funge da singola macchina virtuale (VM) che può eseguire una singola esecuzione di training. Per Machine Learning automatizzato, questo significa infatti un'esecuzione figlio. Se tutti i nodi sono occupati, viene accodato un nuovo esperimento. Se sono presenti nodi liberi, il nuovo esperimento esegue l'esecuzione figlio in parallelo nei nodi o nelle macchine virtuali disponibili.
Per gestire le esecuzioni figlio e quando possono essere eseguite, è consigliabile creare un cluster dedicato per esperimento e associare il numero di max_concurrent_iterations
esperimenti al numero di nodi nel cluster. In questo modo, si usano tutti i nodi del cluster contemporaneamente con il numero di esecuzioni figlio simultanee e iterazioni desiderate.
Configurare max_concurrent_iterations
nella configurazione limits
. Se non è configurata, per impostazione predefinita è consentita una sola esecuzione/iterazione figlio simultanea per esperimento. Per un'istanza di calcolo, max_concurrent_trials
può essere impostato come uguale al numero di core nella macchina virtuale dell'istanza di calcolo.
Esplorare modelli e metriche
Il Machine Learning automatizzato offre opzioni per monitorare e valutare i risultati del training.
Per definizioni ed esempi dei grafici delle prestazioni e delle metriche fornite per ogni esecuzione, vedere Valutare i risultati dell'esperimento di Machine Learning automatizzato.
Per ottenere un riepilogo delle caratteristiche e comprendere quali funzionalità sono state aggiunte a un modello specifico, vedere Trasparenza delle funzionalità.
Dall'interfaccia utente di Azure Machine Learning nella pagina del modello, è anche possibile visualizzare i parametri hyper-parameter usati quando si esegue il training di un modello specifico e anche visualizzare e personalizzare il codice di training del modello interno usato.
Registrare e distribuire modelli
Dopo aver testato un modello e aver confermato di voler usarlo nell'ambiente di produzione, è possibile registrarlo per usarlo in un secondo momento.
Suggerimento
Per i modelli registrati, è possibile usare la distribuzione con un clic usando il studio di Azure Machine Learning. Vedere Distribuire il modello.
Usare AutoML nelle pipeline
Per usare Machine Learning automatizzato nei flussi di lavoro delle operazioni di Machine Learning, è possibile aggiungere i passaggi del processo AutoML alle pipeline di Azure Machine Learning. Questo approccio consente di automatizzare l'intero flusso di lavoro associando gli script di preparazione dei dati a Machine Learning automatizzato. Registrare e convalidare quindi il modello migliore risultante.
Questo codice è una pipeline di esempio con un componente di classificazione di Machine Learning automatizzato e un componente di comando che mostra l'output risultante. Il codice fa riferimento agli input (dati di training e convalida) e agli output (modello migliore) in passaggi diversi.
# Define pipeline
@pipeline(
description="AutoML Classification Pipeline",
)
def automl_classification(
classification_train_data,
classification_validation_data
):
# define the automl classification task with automl function
classification_node = classification(
training_data=classification_train_data,
validation_data=classification_validation_data,
target_column_name="y",
primary_metric="accuracy",
# currently need to specify outputs "mlflow_model" explictly to reference it in following nodes
outputs={"best_model": Output(type="mlflow_model")},
)
# set limits and training
classification_node.set_limits(max_trials=1)
classification_node.set_training(
enable_stack_ensemble=False,
enable_vote_ensemble=False
)
command_func = command(
inputs=dict(
automl_output=Input(type="mlflow_model")
),
command="ls ${{inputs.automl_output}}",
environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
)
show_output = command_func(automl_output=classification_node.outputs.best_model)
pipeline_job = automl_classification(
classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)
# set pipeline level compute
pipeline_job.settings.default_compute = compute_name
# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
pipeline_job,
experiment_name=experiment_name
)
returned_pipeline_job
# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline
Per altri esempi su come includere Machine Learning automatizzato nelle pipeline, vedere il repository di esempi.
Usare AutoML su larga scala: training distribuito
Per scenari di dati di grandi dimensioni, Machine Learning automatizzato supporta il training distribuito per un set limitato di modelli:
Algoritmo distribuito | Attività supportate | Limite delle dimensioni dei dati (approssimativo) |
---|---|---|
LightGBM | Classificazione, regressione | 1 TB |
TCNForecaster | Previsioni | 200 GB |
Gli algoritmi di training distribuiti partizionano e distribuiscono automaticamente i dati tra più nodi di calcolo per il training del modello.
Nota
La convalida incrociata, i modelli ensemble, il supporto ONNX e la generazione di codice non sono attualmente supportati nella modalità di training distribuita. Inoltre, Machine Learning automatico può effettuare scelte come limitare le funzionalità disponibili e i dati di sotto campionamento usati per la convalida, la spiegazione e la valutazione del modello.
Training distribuito per la classificazione e la regressione
Per usare il training distribuito per la classificazione o la regressione, impostare le training_mode
proprietà e max_nodes
dell'oggetto processo.
Proprietà | Descrizione |
---|---|
training_mode | Indica la modalità di training: distributed o non_distributed . Il valore predefinito è non_distributed . |
max_nodes | Numero di nodi da usare per il training da ogni versione di valutazione. Questa impostazione deve essere maggiore o uguale a 4. |
L'esempio di codice seguente illustra un esempio di queste impostazioni per un processo di classificazione:
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
classification_job.set_training(
allowed_training_algorithms=["LightGBM"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes for each trial
classification_job.set_limits(
max_nodes=4,
# other limit settings
)
Nota
Il training distribuito per le attività di classificazione e regressione attualmente non supporta più versioni di valutazione simultanee. Le prove del modello sono eseguite in sequenza con ogni prova usando max_nodes
nodi. Al momento l'impostazione del limite max_concurrent_trials
viene ignorata.
Training distribuito per la previsione
Per informazioni sul funzionamento del training distribuito per le attività di previsione, vedere Previsione su larga scala. Per usare il training distribuito per la previsione, è necessario impostare le proprietà training_mode
, enable_dnn_training
, max_nodes
e facoltativamente max_concurrent_trials
dell'oggetto processo.
Proprietà | Descrizione |
---|---|
training_mode | Indica la modalità di training; distributed o non_distributed . Il valore predefinito è non_distributed . |
enable_dnn_training | Flag per abilitare i modelli di rete neurale profonda. |
max_concurrent_trials | Questo valore è il numero massimo di modelli di valutazione di cui eseguire il training in parallelo. Assume il valore predefinito 1. |
max_nodes | Il numero totale di nodi da usare per il training. Questa impostazione deve essere maggiore o uguale a 2. Per le attività di previsione, ogni modello di prova viene sottoposto a training usando i nodi $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$. |
L'esempio di codice seguente illustra un esempio di queste impostazioni per un processo di previsione:
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
forecasting_job.set_training(
enable_dnn_training=True,
allowed_training_algorithms=["TCNForecaster"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
max_concurrent_trials=2,
max_nodes=4,
# other limit settings
)
Per esempi di codice di configurazione completo, vedere le sezioni precedenti relative alla configurazione e all'invio di processi.
Contenuto correlato
- Altre informazioni su come e dove distribuire un modello.
- Altre informazioni su come configurare AutoML per eseguire il training di un modello di previsione di serie temporali.