Esperimenti di apprendimento automatico in Microsoft Fabric
Un esperimento di apprendimento automatico è l'unità primaria di organizzazione e controllo per tutte le esecuzioni di apprendimento automatico correlate. Un'esecuzione corrisponde a una singola esecuzione del codice dei modelli. In MLflow il rilevamento si basa su esperimenti ed esecuzioni.
Gli esperimenti di apprendimento automatico consentono agli scienziati dei dati di registrare parametri, versioni del codice, metriche e file di output durante l'esecuzione del codice di apprendimento automatico. Gli esperimenti consentono anche di visualizzare, cercare e confrontare le esecuzioni, nonché scaricare i file di esecuzione e i metadati per l'analisi in altri strumenti.
Questo articolo illustra come gli scienziati dei dati possono interagire e usare esperimenti di apprendimento automatico per organizzare il processo di sviluppo e tenere traccia di più esecuzioni.
Prerequisiti
- Una sottoscrizione di Power BI Premium. Se non è disponibile, vedere Come acquistare Power BI Premium.
- Un'area di lavoro di Power BI con capacità Premium assegnata.
Creare un esperimento
È possibile creare un esperimento di Machine Learning direttamente dall'interfaccia utente dell'infrastruttura o scrivendo codice che usa l'API MLflow.
Creare un esperimento usando l'interfaccia utente
Per creare un esperimento di Machine Learning dall'interfaccia utente:
- Creare una nuova area di lavoro o selezionare una esistente.
- È possibile creare un nuovo elemento tramite l'area di lavoro o tramite Crea.
- Specificare un nome dell'esperimento e selezionare Crea. Questa azione crea un esperimento vuoto all'interno dell'area di lavoro.
Dopo aver creato l'esperimento, è possibile iniziare ad aggiungere esecuzioni per tenere traccia delle metriche e dei parametri di esecuzione.
Creare un esperimento usando l'API MLflow
È anche possibile creare un esperimento di apprendimento automatico direttamente dall'esperienza di creazione usando le API mlflow.create_experiment()
o mlflow.set_experiment()
. Nel codice seguente sostituire <EXPERIMENT_NAME>
con il nome dell'esperimento.
import mlflow
# This will create a new experiment with the provided name.
mlflow.create_experiment("<EXPERIMENT_NAME>")
# This will set the given experiment as the active experiment.
# If an experiment with this name does not exist, a new experiment with this name is created.
mlflow.set_experiment("<EXPERIMENT_NAME>")
Gestire le esecuzioni all'interno di un esperimento
Un esperimento di apprendimento automatico contiene una raccolta di esecuzioni per il rilevamento e il confronto semplificati. All'interno di un esperimento, uno scienziato dei dati può spostarsi tra diverse esecuzioni ed esplorare i parametri e le metriche sottostanti. Gli scienziati dei dati possono anche confrontare le esecuzioni all'interno di un esperimento di apprendimento automatico per identificare quale subset di parametri produce le prestazioni del modello desiderate.
Tenere traccia delle esecuzioni
Un'esecuzione di apprendimento automatico corrisponde a una singola esecuzione del codice dei modelli.
Screenshot della pagina dei dettagli dell'esecuzione di apprendimento automatico.
Ogni esecuzione include le informazioni seguenti:
- Origine: nome del notebook che ha creato l'esecuzione.
- Versione registrata: indica se l'esecuzione è stata salvata come modello di apprendimento automatico.
- Data di inizio: ora di inizio dell'esecuzione.
- Stato: stato dell'esecuzione.
- Iperparametri: gli iperparametri salvati come coppie chiave-valore. Entrambe le chiavi e i valori sono stringhe.
- Metriche: metriche di esecuzione salvate come coppie chiave-valore. Il valore è numerico.
- File di output: i file di output in qualsiasi formato. Ad esempio, è possibile registrare immagini, ambiente, modelli e file di dati.
- Tag: metadati come coppie chiave-valore da eseguire.
Visualizzazione delle esecuzioni recenti
È anche possibile visualizzare le esecuzioni recenti per un esperimento selezionando elenco delle esecuzioni. Questa visualizzazione consente di tenere traccia delle attività recenti, passare rapidamente all'applicazione Spark correlata e applicare filtri in base allo stato dell’esecuzione.
Confrontare e filtrare le esecuzioni
Per confrontare e valutare la qualità delle esecuzioni di apprendimento automatico, è possibile confrontare i parametri, le metriche e i metadati tra le esecuzioni selezionate all'interno di un esperimento.
Applicare tag alle esecuzioni
L'etichettatura MLflow per le esecuzioni degli esperimenti consente agli utenti di aggiungere metadati personalizzati sotto forma di coppie chiave-valore ai loro run. Questi tag consentono di classificare, filtrare e cercare esecuzioni in base a attributi specifici, semplificando la gestione e l'analisi degli esperimenti all'interno della piattaforma MLflow. Gli utenti possono usare tag per etichettare le esecuzioni con informazioni quali tipi di modello, parametri o qualsiasi identificatore pertinente, migliorando l'organizzazione complessiva e la tracciabilità degli esperimenti.
Questo frammento di codice avvia un'esecuzione MLflow, registra alcuni parametri e metriche e aggiunge tag per classificare e fornire contesto aggiuntivo per l'esecuzione.
import mlflow
import mlflow.sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import fetch_california_housing
# Autologging
mlflow.autolog()
# Load the California housing dataset
data = fetch_california_housing(as_frame=True)
X = data.data
y = data.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Start an MLflow run
with mlflow.start_run() as run:
# Train the model
model = LinearRegression()
model.fit(X_train, y_train)
# Predict and evaluate
y_pred = model.predict(X_test)
# Add tags
mlflow.set_tag("model_type", "Linear Regression")
mlflow.set_tag("dataset", "California Housing")
mlflow.set_tag("developer", "Bob")
Dopo aver applicato i tag, è possibile visualizzare i risultati direttamente dal widget MLflow inline o dalla pagina dei dettagli dell'esecuzione.
Avvertimento
Avviso : Limitazioni sull'applicazione di tag alle esecuzioni degli esperimenti MLflow in Fabric
- tag non vuoti: i nomi dei tag o i valori non possono essere vuoti. Se si tenta di applicare un tag con un nome o un valore vuoto, l'operazione avrà esito negativo.
- nomi di tag: i nomi dei tag possono avere una lunghezza massima di 250 caratteri.
- valori tag: i valori dei tag possono avere una lunghezza massima di 5000 caratteri.
-
nomi di tag con restrizioni: i nomi dei tag che iniziano con determinati prefissi non sono supportati. In particolare, i nomi di tag che iniziano con
synapseml
,mlflow
otrident
sono limitati e non verranno accettati.
Confrontare visivamente le esecuzioni
È possibile confrontare visivamente e filtrare le esecuzioni all'interno di un esperimento esistente. Il confronto visivo consente di spostarsi facilmente tra più esecuzioni e ordinarle.
Screenshot che mostra un elenco di esecuzioni e la visualizzazione del grafico.
Per confrontare le esecuzioni:
- Selezionare un esperimento di apprendimento automatico esistente che contiene più esecuzioni.
- Selezionare la scheda Visualizza e quindi passare alla visualizzazione Elenco di esecuzioni. In alternativa, è possibile selezionare l'opzione per visualizzare l’elenco di esecuzioni direttamente dalla visualizzazione Dettagli esecuzione.
- Personalizzare le colonne all'interno della tabella espandendo il riquadro Personalizza colonne. Qui è possibile selezionare le proprietà, le metriche, i tag e gli iperparametri da visualizzare.
- Espandere il riquadro Filtro per restringere i risultati in base a determinati criteri selezionati.
- Selezionare più esecuzioni per confrontare i risultati nel riquadro di confronto delle metriche. Da questo riquadro è possibile personalizzare i grafici modificando il titolo del grafico, il tipo di visualizzazione, l'asse X, l'asse Y e altro ancora.
Confrontare le esecuzioni con l'API MLflow
Gli scienziati dei dati possono anche usare MLflow per eseguire query e ricerche tra le esecuzioni all'interno di un esperimento. È possibile esplorare altre API MLflow per la ricerca, i filtri e il confronto delle esecuzioni consultando la documentazione di MLflow.
Ottenere tutte le esecuzioni
È possibile usare l'API di ricerca MLflow mlflow.search_runs()
per ottenere tutte le esecuzioni in un esperimento sostituendo <EXPERIMENT_NAME>
con il nome dell'esperimento o <EXPERIMENT_ID>
con l'ID esperimento nel codice seguente:
import mlflow
# Get runs by experiment name:
mlflow.search_runs(experiment_names=["<EXPERIMENT_NAME>"])
# Get runs by experiment ID:
mlflow.search_runs(experiment_ids=["<EXPERIMENT_ID>"])
Suggerimento
È possibile eseguire ricerche su più esperimenti fornendo un elenco di ID esperimento al parametro experiment_ids
. Analogamente, fornendo un elenco di nomi di esperimento al parametro experiment_names
, MLflow potrà eseguire la ricerca in più esperimenti. Ciò può essere utile se si vogliono confrontare le esecuzioni all'interno di esperimenti diversi.
Ordine e limite delle esecuzioni
Usare il parametro max_results
da search_runs
per limitare il numero di esecuzioni restituite. Il parametro order_by
consente di elencare le colonne in base a un ordine e può contenere un valore DESC
o ASC
facoltativo. Nell'esempio seguente, viene restituita l'ultima esecuzione di un esperimento:
mlflow.search_runs(experiment_ids=[ "1234-5678-90AB-CDEFG" ], max_results=1, order_by=["start_time DESC"])
Confrontare le esecuzioni all'interno di un notebook di Fabric
È possibile usare il widget di creazione MLflow all'interno dei notebook di Fabric per tenere traccia delle esecuzioni di MLflow generate all'interno di ogni cella del notebook. Il widget consente di tenere traccia delle esecuzioni, delle metriche associate, dei parametri e delle proprietà fino al livello di cella individuale.
Per ottenere un confronto visivo, è anche possibile passare alla visualizzazione Esegui confronto. Questa visualizzazione presenta i dati graficamente, agevolando l'identificazione rapida di criteri o deviazioni in esecuzioni diverse.
Screenshot che mostra come usare il widget di creazione di MLflow.
Salvare l'esecuzione come modello di apprendimento automatico
Una volta che un'esecuzione restituisce il risultato desiderato, è possibile salvare l'esecuzione come modello per il rilevamento avanzato dei modelli e per la distribuzione del modello selezionando Salva come modello di Machine Learning.
Screenshot che mostra dove selezionare Crea un nuovo modello.
Monitorare gli esperimenti di ML (anteprima)
Gli esperimenti di Machine Learning sono integrati direttamente in Monitoraggio. Questa funzionalità è progettata per fornire maggiori informazioni sulle applicazioni Spark e sugli esperimenti di Machine Learning generati, semplificando la gestione e il debug di questi processi.
Tenere traccia delle esecuzioni dal monitoraggio
Gli utenti possono tenere traccia delle esecuzioni degli esperimenti direttamente dal monitor, fornendo una visione unificata di tutte le loro attività. Questa integrazione include opzioni di filtro, consentendo agli utenti di concentrarsi sugli esperimenti o sulle esecuzioni create negli ultimi 30 giorni o in altri periodi specificati.
Traccia le esecuzioni degli esperimenti di Machine Learning correlati dall'applicazione Spark
Gli esperimenti ML sono integrati direttamente in Monitor, dove è possibile selezionare un'applicazione Spark specifica e accedere agli snapshot degli elementi. Qui è disponibile un elenco di tutti gli esperimenti e le esecuzioni generate da tale applicazione.