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 apprendimento automatico direttamente dalla home page della data science nell'interfaccia utente di Power BI 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 di data science o selezionarne una esistente.
Selezionare Esperimento nella sezione "Nuovo”.
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.
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.
Visualizzazione delle esecuzioni recenti
È anche possibile visualizzare le esecuzioni recenti per un esperimento direttamente dalla visualizzazione elenco dell'area di lavoro. 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.
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.
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 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.
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.