Configurare il training autoML con Python
SI APPLICA A:Python SDK azureml v1
Questa guida illustra come configurare un machine learning automatizzato, AutoML, eseguire il training con Azure Machine Learning Python SDK usando Azure Machine Learning Automated ML. Machine Learning automatizzato seleziona automaticamente un algoritmo e gli iperparametri e genera un modello pronto per la distribuzione. Questa guida fornisce informazioni dettagliate sulle varie opzioni che è possibile usare per configurare esperimenti di Machine Learning automatizzati.
Per un esempio end-to-end, vedere Esercitazione: Modello di regressione di training AutoML- .
Se si preferisce un'esperienza senza codice, è anche possibile configurare il training AutoML senza codice nel studio di Azure Machine Learning.
Prerequisiti
Per questo articolo è necessario,
Un'area di lavoro di Azure Machine Learning. Per creare l'area di lavoro, vedere Creare le risorse dell'area di lavoro.
Azure Machine Learning Python SDK installato. Per installare l'SDK, è possibile,
Creare un'istanza di calcolo, che installa automaticamente l'SDK ed è preconfigurata per i flussi di lavoro di Machine Learning. Per altre informazioni , vedere Creare e gestire un'istanza di calcolo di Azure Machine Learning .
Installare manualmente il
automl
pacchetto, che include l'installazione predefinita dell'SDK .
Importante
I comandi Python in questo articolo richiedono la versione più recente
azureml-train-automl
del pacchetto.- Installare il pacchetto più recente
azureml-train-automl
nell'ambiente locale. - Per informazioni dettagliate sul pacchetto più recente
azureml-train-automl
, vedere le note sulla versione.
Avviso
Python 3.8 non è compatibile con
automl
.
Selezionare il tipo di esperimento
Prima di iniziare l'esperimento, è necessario determinare il tipo di problema di machine learning da risolvere. Machine Learning automatizzato supporta i tipi di attività , classification
regression
e forecasting
. Altre informazioni sui tipi di attività.
Nota
Supporto per le attività di elaborazione del linguaggio naturale (NLP): la classificazione delle immagini (multiclasse e multi-etichetta) e il riconoscimento delle entità denominate è disponibile in anteprima pubblica. Altre informazioni sulle attività NLP in Machine Learning automatizzato.
Queste funzionalità di anteprima vengono fornite senza un contratto di servizio. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.
Il codice seguente usa il task
parametro nel AutoMLConfig
costruttore per specificare il tipo di esperimento come classification
.
from azureml.train.automl import AutoMLConfig
# task can be one of classification, regression, forecasting
automl_config = AutoMLConfig(task = "classification")
Origine dati e formato
Il processo di Machine Learning automatizzato supporta dati presenti nel desktop locale o nel cloud, ad esempio Archiviazione BLOB di Azure. I dati possono essere letti in un dataframe Pandas o in un TabularDataset di Azure Machine Learning. Altre informazioni sui set di dati.
Requisiti per i dati di training in Machine Learning:
- I dati devono essere in formato tabulare.
- Il valore da stimare, la colonna di destinazione, deve essere presente nei dati.
Importante
Gli esperimenti di Machine Learning automatizzati non supportano il training con set di dati che usano l'accesso ai dati basato sull'identità.
Per gli esperimenti remoti, i dati di training devono essere accessibili dal calcolo remoto. Machine Learning automatizzato accetta solo i tabulari tabulari di Azure Machine Learning quando si lavora su un ambiente di calcolo remoto.
I seti di dati di Azure Machine Learning espongono la funzionalità per:
- Trasferire facilmente i dati da file statici o origini URL nell'area di lavoro.
- rendere i dati disponibili per gli script di training durante l'esecuzione in risorse di calcolo sul cloud. Vedere Come eseguire il training con i set di dati per un esempio di uso della
Dataset
classe per montare i dati nella destinazione di calcolo remota.
Il codice seguente crea un oggetto TabularDataset da un URL Web. Vedere Creare un oggetto TabularDataset per esempi di codice su come creare set di dati da altre origini, ad esempio file locali e archivi dati.
from azureml.core.dataset import Dataset
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
Per gli esperimenti di calcolo locali, è consigliabile usare i dataframe pandas per tempi di elaborazione più rapidi.
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv("your-local-file.csv")
train_data, test_data = train_test_split(df, test_size=0.1, random_state=42)
label = "label-col-name"
Training, convalida e test dei dati
È possibile specificare set di dati di training e di convalida separati direttamente nel AutoMLConfig
costruttore. Altre informazioni su come configurare i dati di training, convalida, convalida incrociata e test per gli esperimenti AutoML.
Se non si specifica in modo esplicito un validation_data
parametro o n_cross_validation
, Machine Learning automatizzato applica le tecniche predefinite per determinare come viene eseguita la convalida. Questa determinazione dipende dal numero di righe nel set di dati assegnato al training_data
parametro.
Dimensioni dei dati di training | Tecnica di convalida |
---|---|
Più grande di 20.000 righe | Viene applicata la suddivisione dei dati di training/convalida. L'impostazione predefinita consiste nell'accettare il 10% del set di dati di training iniziale come set di convalida. A sua volta, tale set di convalida viene usato per il calcolo delle metriche. |
Più piccolo di 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 è minore di 1.000 righe, vengono usate 10 riduzioni. Se le righe sono comprese tra 1.000 e 20.000, vengono usate tre riduzioni. |
Suggerimento
È possibile caricare i dati di test (anteprima) per valutare i modelli generati automaticamente dal Machine Learning automatizzato. Queste funzionalità sono funzionalità di anteprima sperimentale e possono cambiare in qualsiasi momento. Viene illustrato come:
- Passare i dati di test all'oggetto AutoMLConfig.
- Testare i modelli generati dal Machine Learning automatizzato per l'esperimento.
Se si preferisce un'esperienza senza codice, vedere il passaggio 12 in Configurare AutoML con l'interfaccia utente di Studio
Dati di grandi dimensioni
Machine Learning automatizzato supporta un numero limitato di algoritmi per il training su dati di grandi dimensioni che possono creare correttamente modelli per Big Data in macchine virtuali di piccole dimensioni. L'euristica di MACHINE Learning automatizzata dipende da proprietà come le dimensioni dei dati, le dimensioni della memoria della macchina virtuale, il timeout dell'esperimento e le impostazioni di definizione delle caratteristiche per determinare se è necessario applicare questi algoritmi di dati di grandi dimensioni. Altre informazioni sui modelli supportati in Machine Learning automatizzato.
Per la regressione, regressore della discesa del gradiente online e regressore lineare rapido
Per la classificazione, classificatore medio perceptron e classificatore SVM lineare; dove il classificatore Linear SVM include sia dati di grandi dimensioni che versioni di dati di piccole dimensioni.
Se si vuole eseguire l'override di queste euristiche, applicare le impostazioni seguenti:
Attività | Impostazione | Note |
---|---|---|
Bloccare gli algoritmi di streaming dei dati | blocked_models AutoMLConfig nell'oggetto e elencare i modelli che non si desidera utilizzare. |
Restituisce un errore di esecuzione o un tempo di esecuzione lungo |
Usare algoritmi di streaming dei dati | allowed_models nell'oggetto AutoMLConfig e elencare i modelli da usare. |
|
Usare algoritmi di streaming dei dati (esperimenti dell'interfaccia utente di Studio) |
Bloccare tutti i modelli ad eccezione degli algoritmi Big Data che si desidera usare. |
Calcolo per eseguire l'esperimento
Successivamente, determinare dove verrà eseguito il training del modello. Un esperimento di training di Machine Learning automatizzato può essere eseguito nelle opzioni di calcolo seguenti.
Scegliere un computer locale: se lo scenario riguarda le esplorazioni iniziali o le demo che usano dati di piccole dimensioni e training di breve durata, ovvero secondi o pochi minuti per ogni esecuzione figlio, il training sul computer locale potrebbe essere la scelta migliore. Non sono presenti tempi di installazione, le risorse dell'infrastruttura (PC o macchina virtuale) sono direttamente disponibili. Vedere questo notebook per un esempio di calcolo locale.
Scegliere un cluster di calcolo ml remoto: se si esegue il training con set di dati più grandi, ad esempio nel training di produzione, i modelli che necessitano di training più lunghi, il calcolo remoto offrirà prestazioni end-to-end molto migliori perché
AutoML
parallelizzeranno i training tra i nodi del cluster. In un calcolo remoto, il tempo di avvio per l'infrastruttura interna aggiungerà circa 1,5 minuti per esecuzione figlio, oltre a minuti aggiuntivi per l'infrastruttura del cluster se le macchine virtuali non sono ancora in esecuzione. Azure Machine Learning Managed Compute è un servizio gestito che consente di eseguire il training di modelli di Machine Learning nei cluster di macchine virtuali di Azure. L'istanza di calcolo è supportata anche come destinazione di calcolo.Un cluster di Azure Databricks nella sottoscrizione di Azure. Per informazioni dettagliate, vedere Configurare un cluster di Azure Databricks per machine learning automatizzato. Visitare il sito GitHub per esempi di notebook con Azure Databricks.
Quando si sceglie la destinazione di calcolo, tenere in considerazione i fattori seguenti:
Vantaggi | Svantaggi | |
---|---|---|
Destinazione di calcolo locale | ||
Cluster di elaborazione di Machine Learning remoti |
Configurare le impostazioni di esperimento
Esistono diverse opzioni che è possibile usare per configurare l'esperimento di Machine Learning automatizzato. Questi parametri vengono impostati creando un oggetto AutoMLConfig
. Vedere la Classe AutoMLConfig per un elenco completo dei parametri.
L'esempio seguente è per un'attività di classificazione. L'esperimento usa L'AUC ponderato come metrica primaria e ha un timeout dell'esperimento impostato su 30 minuti e 2 volte di convalida incrociata.
automl_classifier=AutoMLConfig(task='classification',
primary_metric='AUC_weighted',
experiment_timeout_minutes=30,
blocked_models=['XGBoostClassifier'],
training_data=train_data,
label_column_name=label,
n_cross_validations=2)
È anche possibile configurare le attività di previsione, che richiedono un'installazione aggiuntiva. Per altre informazioni, vedere l'articolo Configurare AutoML per la previsione delle serie temporali .
time_series_settings = {
'time_column_name': time_column_name,
'time_series_id_column_names': time_series_id_column_names,
'forecast_horizon': n_test_periods
}
automl_config = AutoMLConfig(
task = 'forecasting',
debug_log='automl_oj_sales_errors.log',
primary_metric='normalized_root_mean_squared_error',
experiment_timeout_minutes=20,
training_data=train_data,
label_column_name=label,
n_cross_validations=5,
path=project_folder,
verbosity=logging.INFO,
**time_series_settings
)
Modelli supportati
Machine Learning automatizzato prova diversi modelli e algoritmi durante il processo di automazione e ottimizzazione. Come utente, non è necessario specificare l'algoritmo.
I tre valori dei parametri diversi task
determinano l'elenco di algoritmi o modelli da applicare. Usare i parametri allowed_models
o blocked_models
per modificare ulteriormente le iterazioni con i modelli disponibili da includere o escludere.
La tabella seguente riepiloga i modelli supportati in base al tipo di attività.
Nota
Se si prevede di esportare i modelli di MACHINE automatizzati in un modello ONNX, solo gli algoritmi indicati con un * (asterisco) possono essere convertiti nel formato ONNX. Altre informazioni sulla conversione di modelli in ONNX.
Si noti anche che in questo momento ONNX supporta solo le attività di classificazione e regressione.
Primary metric (Metrica principale)
Il primary_metric
parametro determina la metrica da usare durante il training del modello per l'ottimizzazione. Le metriche disponibili che è possibile selezionare sono determinate dal tipo di attività scelto.
La scelta di una metrica primaria per machine learning automatizzata da ottimizzare dipende da molti fattori. È consigliabile scegliere una metrica che rappresenta meglio le esigenze aziendali. Valutare quindi se la metrica è adatta per il profilo del set di dati (dimensioni dei dati, intervallo, distribuzione di classi e così via). Le sezioni seguenti riepilogano le metriche primarie consigliate in base al tipo di attività e allo scenario aziendale.
Per informazioni sulle definizioni specifiche di queste metriche, vedere Risultati del Machine Learning automatizzato.
Metriche per scenari di classificazione
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 una classe molto grande (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'automazione di ML, è possibile scegliere il modello vincente in base alla metrica più adatta alle esigenze aziendali.
Metrica | Casi d'uso di esempio |
---|---|
accuracy |
Classificazione delle immagini, analisi del sentiment, stima di churn |
AUC_weighted |
Rilevamento delle frodi, classificazione delle immagini, rilevamento anomalie/rilevamento della posta indesiderata |
average_precision_score_weighted |
Analisi del sentiment |
norm_macro_recall |
Stima della varianza |
precision_score_weighted |
Metriche per i modelli di regressione
r2_score
normalized_root_mean_squared_error
e normalized_mean_absolute_error
stanno tutti tentando di ridurre al minimo gli errori di stima. r2_score
e normalized_root_mean_squared_error
sono entrambi che riducono al minimo gli errori quadrati medi mentre normalized_mean_absolute_error
riduce il valore assoluto medio degli errori. Il valore assoluto tratta gli errori in tutte le dimensioni e gli errori quadratici avranno una penalità molto più grande 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 sono normalizzati e i loro significati. normalized_root_mean_squared_error
è l'errore quadratico radice normalizzato in base all'intervallo e può essere interpretato come la grandezza media degli errori per la stima. r2_score
è un errore quadrato normalizzato da una stima della varianza dei dati. È la proporzione di variazione che può essere acquisita dal modello.
Nota
r2_score
e normalized_root_mean_squared_error
si comportano anche in modo simile alle metriche primarie. Se viene applicato un set di convalida fisso, queste due metriche ottimizzano la stessa destinazione, l'errore quadrato medio e verrà ottimizzato dallo stesso modello. Quando è disponibile solo un set di training e viene applicata la convalida incrociata, essi sarebbero leggermente diversi come normalizzatore per normalized_root_mean_squared_error
è fisso come intervallo di training impostato, ma il normalizzatore per r2_score
variare per ogni piega come è la varianza per ogni piega.
Se la classificazione, anziché il valore esatto è di interesse, spearman_correlation
può essere una scelta migliore in quanto misura la correlazione di classificazione tra valori reali e stime.
Tuttavia, attualmente nessuna metrica primaria per gli indirizzi di regressione fa differenza relativa. r2_score
Tutti , normalized_mean_absolute_error
e normalized_root_mean_squared_error
considerano un errore di stima $20k lo stesso per un lavoratore con un stipendio di $ 30k come un lavoratore che effettua $20M, se questi due punti dati appartengono allo stesso set di dati per la regressione o la stessa serie temporale specificata dall'identificatore della serie temporale. Mentre in realtà, stimando solo $20k off da un stipendio di $20M è molto vicino (una piccola differenza relativa del 0,1%), mentre $20k off da $30k non è vicino (un grande 67% differenza relativa). Per risolvere il problema della differenza relativa, è possibile eseguire il training di un modello con le metriche primarie disponibili e quindi selezionare il modello con la migliore mean_absolute_percentage_error
o root_mean_squared_log_error
.
Metrica | Casi d'uso di esempio |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
Stima dei prezzi (casa/prodotto/suggerimento), Stima punteggio di revisione |
r2_score |
Ritardo della compagnia aerea, stima dello stipendio, tempo di risoluzione dei bug |
normalized_mean_absolute_error |
Metriche per scenari di previsione delle serie temporali
Le raccomandazioni sono simili a quelle indicate per gli scenari di regressione.
Metrica | Casi 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 |
Definizione delle funzionalità dei dati
In ogni esperimento di Machine Learning automatizzato, i dati vengono automaticamente ridimensionati e normalizzati per aiutare determinati algoritmi sensibili alle funzionalità che si trovano su scalabilità diverse. Questa scalabilità e normalizzazione viene definita funzionalità. Per altri dettagli e esempi di codice, vedere Funzionalità in AutoML .
Nota
I passaggi di definizione delle funzionalità di Machine Learning automatizzato (normalizzazione delle funzionalità, gestione dei dati mancanti, conversione dei valori di testo in formato numerico e così via) diventano parte del modello sottostante. Quando si usa il modello per le previsioni, gli stessi passaggi di definizione delle funzionalità applicati durante il training vengono automaticamente applicati ai dati di input.
Quando si configurano gli esperimenti nell'oggetto AutoMLConfig
, è possibile abilitare/disabilitare l'impostazione featurization
. Nella tabella seguente vengono illustrate le impostazioni accettate per la funzionalità nell'oggetto AutoMLConfig.
Configurazione della definizione delle funzionalità | Descrizione |
---|---|
"featurization": 'auto' |
Indica che i passaggi di protezione dati e definizione delle funzionalità vengono eseguiti automaticamente come parte della pre-elaborazione. Impostazione predefinita. |
"featurization": 'off' |
Indica che il passaggio di funzionalità non deve essere eseguito automaticamente. |
"featurization": 'FeaturizationConfig' |
Indica che deve essere usata la definizione delle funzionalità personalizzata. Informazioni su come personalizzare la definizione delle funzionalità. |
Configurazione Ensemble
I modelli di ensemble sono abilitati per impostazione predefinita e vengono visualizzati come iterazioni di esecuzione finale in un'esecuzione AutoML. Attualmente VotingEnsemble e StackEnsemble sono supportati.
Il voto implementa la votazione temporanea, che usa medie ponderate. L'implementazione dello stacking usa un'implementazione a due livelli, in cui il primo livello ha gli stessi modelli dell'ensemble di voto e il secondo modello di livello viene usato per trovare la combinazione ottimale dei modelli dal primo livello.
Se si usano modelli ONNX o si dispone di una spiegazione del modello abilitata, lo stacking è disabilitato e viene usato solo il voto.
Il training dell'ensemble può essere disabilitato usando i enable_voting_ensemble
parametri booleani e enable_stack_ensemble
.
automl_classifier = AutoMLConfig(
task='classification',
primary_metric='AUC_weighted',
experiment_timeout_minutes=30,
training_data=data_train,
label_column_name=label,
n_cross_validations=5,
enable_voting_ensemble=False,
enable_stack_ensemble=False
)
Per modificare il comportamento di ensemble predefinito, sono disponibili più argomenti predefiniti che possono essere forniti come kwargs
in un AutoMLConfig
oggetto.
Importante
I parametri seguenti non sono parametri espliciti della classe AutoMLConfig.
ensemble_download_models_timeout_sec
: Durante la generazione dei modelli VotingEnsemble e StackEnsemble vengono scaricati più modelli adattati delle esecuzioni figlio precedenti. Se si verifica questo errore:AutoMLEnsembleException: Could not find any models for running ensembling
, potrebbe essere necessario fornire più tempo per il download dei modelli. Il valore predefinito è 300 secondi per il download di questi modelli in parallelo e non è previsto un limite massimo di timeout. Se è necessario più tempo, configurare questo parametro con un valore superiore a 300 secondi.Nota
Se viene raggiunto il timeout e sono stati scaricati modelli, l'Ensemble procede con il numero di modelli scaricati. Non è necessario che tutti i modelli vengano scaricati per terminare prima del timeout. I parametri seguenti si applicano solo ai modelli StackEnsemble:
stack_meta_learner_type
: il meta-apprendimento è un modello di cui è stato eseguito il training nell'output dei singoli modelli eterogenei. I modelli di meta-apprendimento predefiniti sonoLogisticRegression
per le attività di classificazione (oppureLogisticRegressionCV
se è abilitata la convalida incrociata) eElasticNet
per le attività di regressione o previsione (oppureElasticNetCV
se è abilitata la convalida incrociata). Questo parametro può essere una delle stringhe seguenti:LogisticRegression
,LogisticRegressionCV
,LightGBMClassifier
,ElasticNet
,ElasticNetCV
,LightGBMRegressor
oLinearRegression
.stack_meta_learner_train_percentage
: specifica la proporzione del set di training (quando si sceglie il tipo training e convalida) da riservare per il training del meta-apprendimento. Il valore predefinito è0.2
.stack_meta_learner_kwargs
: parametri facoltativi da passare all'inizializzatore del meta-apprendimento. Questi parametri e tipi di parametro rispecchiano i parametri e i tipi di parametro del costruttore del modello corrispondente e vengono trasmessi al costruttore del modello.
Il codice seguente mostra un esempio di specifica di un comportamento Ensemble personalizzato in un oggetto AutoMLConfig
.
ensemble_settings = {
"ensemble_download_models_timeout_sec": 600
"stack_meta_learner_type": "LogisticRegressionCV",
"stack_meta_learner_train_percentage": 0.3,
"stack_meta_learner_kwargs": {
"refit": True,
"fit_intercept": False,
"class_weight": "balanced",
"multi_class": "auto",
"n_jobs": -1
}
}
automl_classifier = AutoMLConfig(
task='classification',
primary_metric='AUC_weighted',
experiment_timeout_minutes=30,
training_data=train_data,
label_column_name=label,
n_cross_validations=5,
**ensemble_settings
)
Criteri uscita
Esistono alcune opzioni che è possibile definire nell'esperimento AutoMLConfig.
Criteri | description |
---|---|
Nessun criterio | Se non si definiscono parametri di uscita, l'esperimento continua fino a quando non viene effettuato alcun ulteriore avanzamento sulla metrica primaria. |
Dopo un periodo di tempo | Usare experiment_timeout_minutes nelle impostazioni per definire quanto tempo, in minuti, l'esperimento deve continuare a essere eseguito. Per evitare errori di timeout degli esperimenti, è previsto un minimo di 15 minuti o 60 minuti se la dimensione della riga per colonna supera 10 milioni. |
È stato raggiunto un punteggio | L'uso experiment_exit_score completa l'esperimento dopo che è stato raggiunto un punteggio di metrica primario specificato. |
Eseguire esperimento
Avviso
Se si esegue un esperimento con le stesse impostazioni di configurazione e la metrica primaria più volte, è probabile che venga visualizzata la variazione in ogni esperimento finale dei punteggi delle metriche e dei modelli generati. Gli algoritmi automatizzati di ML utilizzano una casualità intrinseca che può causare una leggera variazione nell'output dei modelli dall'esperimento e il punteggio delle metriche finali del modello consigliato, ad esempio l'accuratezza. È probabile che vengano visualizzati anche i risultati con lo stesso nome del modello, ma vengono usati iperparametri diversi.
Per il Machine Learning automatizzato, si crea un oggetto Experiment
che è un oggetto denominato in una Workspace
usata per eseguire gli esperimenti.
from azureml.core.experiment import Experiment
ws = Workspace.from_config()
# Choose a name for the experiment and specify the project folder.
experiment_name = 'Tutorial-automl'
project_folder = './sample_projects/automl-classification'
experiment = Experiment(ws, experiment_name)
Avviare l'esperimento per eseguire e generare un modello. Passare il AutoMLConfig
al metodo submit
per generare il modello.
run = experiment.submit(automl_config, show_output=True)
Nota
Le dipendenze vengono prima installate in un nuovo computer. Potrebbero occorrere fino a 10 minuti prima che venga visualizzato l'output.
Se si imposta show_output
su True
, l'output viene visualizzato nella console.
Più esecuzioni figlio nei cluster
Le esecuzioni figlio dell'esperimento ml 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 questi nodi sono disponibili per eseguire un esperimento diverso.
Ogni nodo nel cluster funge da singola macchina virtuale (VM) che può eseguire una singola esecuzione di training; per machine learning automatizzato questo significa un'esecuzione figlio. Se tutti i nodi sono occupati, il nuovo esperimento viene accodato. Tuttavia, se sono presenti nodi gratuiti, il nuovo esperimento eseguirà il figlio ml automatizzato in parallelo nei nodi/macchine virtuali disponibili.
Per gestire le esecuzioni figlio e quando possono essere eseguite, è consigliabile creare un cluster dedicato per esperimento e corrispondere al numero di max_concurrent_iterations
nodi del cluster. In questo modo, si usano tutti i nodi del cluster contemporaneamente con il numero di esecuzioni figlio simultanee/iterazioni desiderate.
Configurare max_concurrent_iterations
nell'oggetto AutoMLConfig
. Se non è configurato, per impostazione predefinita è consentito solo un'esecuzione/iterazione figlio simultanea per ogni esperimento.
Nel caso di istanza di calcolo, max_concurrent_iterations
è possibile impostare come numero di core nella macchina virtuale dell'istanza di calcolo.
Esplorare modelli e metriche
Machine Learning automatizzato offre opzioni per monitorare e valutare i risultati del training.
È possibile visualizzare i risultati del training in un widget o inline in un notebook. Per altre informazioni, vedere Monitorare le esecuzioni automatizzate di Machine Learning .
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 della funzionalità.
È possibile visualizzare gli iperparametri, le tecniche di ridimensionamento e normalizzazione e l'algoritmo applicati a un'esecuzione automatica di Machine Learning specifica con la soluzione di codice personalizzata, print_model()
.
Suggerimento
Machine Learning automatizzato consente inoltre di visualizzare il codice di training del modello generato per i modelli sottoposti a training automatico di Machine Learning. Questa funzionalità è in anteprima pubblica e può cambiare in qualsiasi momento.
Monitorare le esecuzioni automatizzate di Machine Learning
Per le esecuzioni automatizzate di ML, per accedere ai grafici da un'esecuzione precedente, sostituire <<experiment_name>>
con il nome dell'esperimento appropriato:
from azureml.widgets import RunDetails
from azureml.core.run import Run
experiment = Experiment (workspace, <<experiment_name>>)
run_id = 'autoML_my_runID' #replace with run_ID
run = Run(experiment, run_id)
RunDetails(run).show()
Modelli di test (anteprima)
Importante
Il test dei modelli con un set di dati di test per valutare i modelli generati da ML automatizzati è una funzionalità di anteprima. Questa funzionalità è una funzionalità di anteprima sperimentale e può cambiare in qualsiasi momento.
Avviso
Questa funzionalità non è disponibile per gli scenari di Machine Learning automatizzati seguenti
Il passaggio dei parametri o test_size
in AutoMLConfig
, attiva automaticamente un'esecuzione di test remota che usa i test_data
dati di test forniti per valutare il modello migliore consigliato da ML automatizzato al completamento dell'esperimento. Questa esecuzione di test remoto viene eseguita alla fine dell'esperimento, una volta determinato il modello migliore. Vedere come passare i dati di test nell'oggetto AutoMLConfig
.
Ottenere i risultati del processo di test
È possibile ottenere le stime e le metriche dal processo di test remoto dal studio di Azure Machine Learning o con il codice seguente.
best_run, fitted_model = remote_run.get_output()
test_run = next(best_run.get_children(type='automl.model_test'))
test_run.wait_for_completion(show_output=False, wait_post_processing=True)
# Get test metrics
test_run_metrics = test_run.get_metrics()
for name, value in test_run_metrics.items():
print(f"{name}: {value}")
# Get test predictions as a Dataset
test_run_details = test_run.get_details()
dataset_id = test_run_details['outputDatasets'][0]['identifier']['savedId']
test_run_predictions = Dataset.get_by_id(workspace, dataset_id)
predictions_df = test_run_predictions.to_pandas_dataframe()
# Alternatively, the test predictions can be retrieved via the run outputs.
test_run.download_file("predictions/predictions.csv")
predictions_df = pd.read_csv("predictions.csv")
Il processo di test del modello genera il file di predictions.csv archiviato nell'archivio dati predefinito creato con l'area di lavoro. Questo archivio dati è visibile a tutti gli utenti con la stessa sottoscrizione. I processi di test non sono consigliati per gli scenari se una delle informazioni usate per o creata dal processo di test deve rimanere privata.
Testare il modello di Ml automatizzato esistente
Per testare altri modelli di Machine Learning automatizzati esistenti creati, processi ottimali o processi figlio, usare ModelProxy()
per testare un modello dopo il completamento dell'esecuzione autoML principale. ModelProxy()
restituisce già le stime e le metriche e non richiede un'ulteriore elaborazione per recuperare gli output.
Nota
ModelProxy è una classe di anteprima sperimentale e può cambiare in qualsiasi momento.
Il codice seguente illustra come testare un modello da qualsiasi esecuzione usando il metodo ModelProxy.test(). Nel metodo test() è possibile specificare se si desidera visualizzare solo le stime dell'esecuzione del test con il include_predictions_only
parametro .
from azureml.train.automl.model_proxy import ModelProxy
model_proxy = ModelProxy(child_run=my_run, compute_target=cpu_cluster)
predictions, metrics = model_proxy.test(test_data, include_predictions_only= True
)
Registrare e distribuire modelli
Dopo aver testato un modello e confermare che si vuole usarlo in produzione, è possibile registrarlo per un uso successivo e
Per registrare un modello da un'esecuzione automatica di ML, usare il register_model()
metodo .
best_run = run.get_best_child()
print(fitted_model.steps)
model_name = best_run.properties['model_name']
description = 'AutoML forecast example'
tags = None
model = run.register_model(model_name = model_name,
description = description,
tags = tags)
Per informazioni dettagliate su come creare una configurazione di distribuzione e distribuire un modello registrato in un servizio Web, vedere come e dove distribuire un modello.
Suggerimento
Per i modelli registrati, la distribuzione con un clic è disponibile tramite il studio di Azure Machine Learning. Vedere come distribuire modelli registrati dallo studio.
Interpretabilità dei modelli
L'interpretabilità dei modelli consente di comprendere il motivo per cui i modelli hanno eseguito stime e i valori di importanza delle funzionalità sottostanti. L'SDK include diversi pacchetti per abilitare le funzionalità di interpretabilità dei modelli, sia in fase di training che di inferenza, per i modelli locali e distribuiti.
Vedere come abilitare le funzionalità di interpretazione in modo specifico all'interno di esperimenti di Machine Learning automatizzati.
Per informazioni generali sul modo in cui le spiegazioni dei modelli e l'importanza delle funzionalità possono essere abilitate in altre aree dell'SDK all'esterno di Machine Learning automatizzato, vedere l'articolo sul concetto sull'interpretazione .
Nota
Il modello ForecastTCN non è attualmente supportato dal client spiegazione. Questo modello non restituirà un dashboard di spiegazione se viene restituito come modello migliore e non supporta le esecuzioni di spiegazioni su richiesta.
Passaggi successivi
Altre informazioni su come e dove distribuire un modello.
Altre informazioni su come eseguire il training di un modello di regressione con Machine Learning automatizzato.
Risolvere i problemi relativi agli esperimenti automatizzati di ML.