Esercitazione: Sviluppo di modelli in una workstation cloud
Informazioni su come sviluppare uno script di training con un notebook in una workstation cloud di Azure Machine Learning. Questa esercitazione illustra le nozioni di base necessarie per iniziare:
- Configurare e configurare la workstation cloud. La workstation cloud è basata su un'istanza di calcolo di Azure Machine Learning, preconfigurato con ambienti per supportare le varie esigenze di sviluppo del modello.
- Usare ambienti di sviluppo basati sul cloud.
- Usare MLflow per tenere traccia delle metriche del modello, tutte provenienti da un notebook.
Prerequisiti
Per usare Azure Machine Learning, è prima necessario un'area di lavoro. Se non ne hai uno, completare La creazione di risorse necessarie per iniziare a creare un'area di lavoro e altre informazioni sull'uso.
Iniziare con i notebook
La sezione Notebooks nell'area di lavoro è un buon posto per iniziare a conoscere Azure Machine Learning e le relative funzionalità. Qui è possibile connettersi alle risorse di calcolo, usare un terminale e modificare ed eseguire Jupyter Notebooks e script.
Accedere ad Azure Machine Learning Studio.
Selezionare l'area di lavoro se non è già aperta.
Nel riquadro di spostamento a sinistra selezionare Notebook.
Se non si dispone di un'istanza di calcolo, verrà visualizzato Crea calcolo al centro della schermata. Selezionare Crea calcolo e compilare il modulo. È possibile usare tutte le impostazioni predefinite. Se si dispone già di un'istanza di calcolo, verrà invece visualizzato Terminale in quel punto. In questa esercitazione si userà il terminale .
Configurare un nuovo ambiente per la prototipazione (facoltativo)
Per eseguire lo script, è necessario lavorare in un ambiente configurato con le dipendenze e le librerie previsto dal codice. Questa sezione consente di creare un ambiente personalizzato per il codice. Per creare il nuovo kernel Jupyter a cui si connette il notebook, si userà un file YAML che definisce le dipendenze.
Caricare un file.
I file caricati vengono archiviati in una condivisione file di Azure e questi file vengono montati in ogni istanza di calcolo e condivisa all'interno dell'area di lavoro.
Scaricare questo file di ambiente conda, workstation_env.yml nel computer.
Selezionare Aggiungi file e quindi carica file per caricarlo nell'area di lavoro.
Selezionare Sfoglia e selezionare file.
Selezionare workstation_env.yml file scaricato.
Selezionare Carica.
Verrà visualizzato il file workstation_env.yml nella cartella nome utente nella scheda File . Selezionare questo file per visualizzarlo in anteprima e visualizzare le dipendenze specificate.
Creare un kernel.
Usare ora il terminale di Azure Machine Learning per creare un nuovo kernel Jupyter, in base al file workstation_env.yml .
Selezionare Terminale per aprire una finestra del terminale. È anche possibile aprire il terminale dalla barra dei comandi a sinistra:
Se l'istanza di calcolo viene arrestata, selezionare Avvia calcolo e attendere fino a quando non è in esecuzione.
Dopo aver eseguito il calcolo, viene visualizzato un messaggio di benvenuto nel terminale e è possibile avviare la digitazione dei comandi.
Visualizzare gli ambienti conda correnti. L'ambiente attivo è contrassegnato con un oggetto *.
conda env list
Se è stata creata una sottocartella per questa esercitazione,
cd
a questa cartella ora.Creare l'ambiente in base al file conda fornito. Sono necessari alcuni minuti per compilare questo ambiente.
conda env create -f workstation_env.yml
Attivare il nuovo ambiente.
conda activate workstation_env
Verificare che l'ambiente corretto sia attivo, cercando di nuovo l'ambiente contrassegnato con un oggetto *.
conda env list
Creare un nuovo kernel Jupyter in base all'ambiente attivo.
python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env"
Chiudere la finestra del terminale.
A questo momento è disponibile un nuovo kernel. Si aprirà quindi un notebook e si userà questo kernel.
Creare un notebook
Selezionare Aggiungi file e scegliere Crea nuovo file.
Assegnare un nome al nuovo notebook develop-tutorial.ipynb (o immettere il nome preferito).
Se l'istanza di calcolo viene arrestata, selezionare Avvia calcolo e attendere fino a quando non è in esecuzione.
Verrà visualizzato che il notebook è connesso al kernel predefinito in alto a destra. Passare all'uso del kernel Env della workstation esercitazione .
Sviluppare uno script di training
In questa sezione si sviluppa uno script di training Python che stima i pagamenti predefiniti della carta di credito usando i set di dati di test e training preparati dal set di dati UCI.
Questo codice usa sklearn
per il training e MLflow per registrare le metriche.
Iniziare con il codice che importa i pacchetti e le librerie che verranno usati nello script di training.
import os import argparse import pandas as pd import mlflow import mlflow.sklearn from sklearn.ensemble import GradientBoostingClassifier from sklearn.metrics import classification_report from sklearn.model_selection import train_test_split
Caricare ed elaborare quindi i dati per questo esperimento. In questa esercitazione si legge i dati da un file su Internet.
# load the data credit_df = pd.read_csv( "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv", header=1, index_col=0, ) train_df, test_df = train_test_split( credit_df, test_size=0.25, )
Ottenere i dati pronti per il training:
# Extracting the label column y_train = train_df.pop("default payment next month") # convert the dataframe values to array X_train = train_df.values # Extracting the label column y_test = test_df.pop("default payment next month") # convert the dataframe values to array X_test = test_df.values
Aggiungere codice per avviare l'assegnazione automatica con
MLflow
, in modo che sia possibile tenere traccia delle metriche e dei risultati. Con la natura iterativa dello sviluppo di modelli,MLflow
consente di registrare i parametri e i risultati del modello. Fare riferimento a queste esecuzioni per confrontare e comprendere le prestazioni del modello. I log forniscono anche un contesto per quando si è pronti a passare dalla fase di sviluppo alla fase di training dei flussi di lavoro all'interno di Azure Machine Learning.# set name for logging mlflow.set_experiment("Develop on cloud tutorial") # enable autologging with MLflow mlflow.sklearn.autolog()
Eseguire il training di un modello.
# Train Gradient Boosting Classifier print(f"Training with data of shape {X_train.shape}") mlflow.start_run() clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) print(classification_report(y_test, y_pred)) # Stop logging for this model mlflow.end_run()
Scorrere
Dopo aver ottenuto risultati del modello, è possibile modificare qualcosa e riprovare. Ad esempio, provare una tecnica di classificatore diversa:
# Train AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier
print(f"Training with data of shape {X_train.shape}")
mlflow.start_run()
ada = AdaBoostClassifier()
ada.fit(X_train, y_train)
y_pred = ada.predict(X_test)
print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()
Esaminare i risultati
Dopo aver provato due modelli diversi, usare i risultati rilevati per MLFfow
decidere quale modello è meglio. È possibile fare riferimento a metriche come accuratezza o altri indicatori che usano la maggior parte degli scenari. È possibile esaminare questi risultati in modo più dettagliato esaminando i processi creati da MLflow
.
Nella barra di spostamento a sinistra selezionare Processi.
Selezionare il collegamento per l'esercitazione Sviluppo nel cloud.
Sono visualizzati due processi diversi, uno per ognuno dei modelli provato. Questi nomi vengono generati automaticamente. Quando si passa il puntatore del mouse su un nome, usare lo strumento di matita accanto al nome se si vuole rinominarlo.
Selezionare il collegamento per il primo processo. Il nome viene visualizzato nella parte superiore. È anche possibile rinominarla qui con lo strumento a matita.
La pagina mostra i dettagli del processo, ad esempio proprietà, output, tag e parametri. In Tag verrà visualizzato il estimator_name, che descrive il tipo di modello.
Selezionare la scheda Metriche per visualizzare le metriche registrate da
MLflow
. Si prevede che i risultati siano diversi, in quanto si dispone di un set di training diverso.Selezionare la scheda Immagini per visualizzare le immagini generate da
MLflow
.Indietro e esaminare le metriche e le immagini per l'altro modello.
Creare uno script Python
Creare ora uno script Python dal notebook per il training del modello.
Nella barra degli strumenti del notebook selezionare il menu.
Selezionare Esporta come> Python.
Assegnare un nome al file train.py.
Esaminare questo file ed eliminare il codice che non si vuole nello script di training. Ad esempio, mantenere il codice per il modello che si vuole usare ed eliminare il codice per il modello che non si vuole.
- Assicurarsi di mantenere il codice che avvia l'assegnazione automatica (
mlflow.sklearn.autolog()
). - È possibile eliminare i commenti generati automaticamente e aggiungere altri commenti.
- Quando si esegue lo script Python in modo interattivo (in un terminale o in un notebook), è possibile mantenere la riga che definisce il nome dell'esperimento (
mlflow.set_experiment("Develop on cloud tutorial")
). In alternativa, assegnargli un nome diverso per vederlo come una voce diversa nella sezione Processi . Ma quando si prepara lo script per un processo di training, tale riga non funzionerà e deve essere omessa: la definizione del processo include il nome dell'esperimento. - Quando si esegue il training di un singolo modello, le righe per avviare e terminare un'esecuzione (
mlflow.start_run()
emlflow.end_run()
) non sono necessarie (non avranno alcun effetto), ma possono essere lasciate in se si desidera.
- Assicurarsi di mantenere il codice che avvia l'assegnazione automatica (
Al termine delle modifiche, salvare il file.
È ora disponibile uno script Python da usare per il training del modello preferito.
Eseguire lo script Python
Per il momento, si esegue questo codice nell'istanza di calcolo, ovvero l'ambiente di sviluppo di Azure Machine Learning. Esercitazione: eseguire il training di un modello illustra come eseguire uno script di training in modo più scalabile sulle risorse di calcolo più potenti.
A sinistra selezionare Apri terminale per aprire una finestra del terminale.
Visualizzare gli ambienti conda correnti. L'ambiente attivo è contrassegnato con un oggetto *.
conda env list
Attivare il kernel:
conda activate workstation_env
Se è stata creata una sottocartella per questa esercitazione,
cd
a questa cartella ora.Eseguire lo script di training.
python train.py
Esaminare i risultati dello script
Indietro a Processi per visualizzare i risultati dello script di training. Tenere presente che i dati di training cambiano con ogni divisione, quindi i risultati differiscono anche tra le esecuzioni.
Pulire le risorse
Se si prevede di continuare ora ad altre esercitazioni, passare a Passaggi successivi.
Arrestare l'istanza di calcolo
Se non lo si userà ora, arrestare l'istanza di calcolo:
- In studio, nell'area di spostamento a sinistra selezionare Calcolo.
- Nelle schede principali selezionare Istanze di calcolo
- Selezionare l'istanza di calcolo nell'elenco.
- Nella barra degli strumenti superiore selezionare Arresta.
Eliminare tutte le risorse
Importante
Le risorse create possono essere usate come prerequisiti per altre esercitazioni e procedure dettagliate per Azure Machine Learning.
Se non si prevede di usare alcuna delle risorse create, eliminarle in modo da non comportare addebiti:
Nel portale di Azure fare clic su Gruppi di risorse all'estrema sinistra.
Nell'elenco selezionare il gruppo di risorse creato.
Selezionare Elimina gruppo di risorse.
Immettere il nome del gruppo di risorse. Selezionare Elimina.
Passaggi successivi
Altre informazioni su:
- Da artefatti a modelli in MLflow
- Using Git with Azure Machine Learning (Uso di Git con Azure Machine Learning)
- Esecuzione di notebook Jupyter nell'area di lavoro
- Uso di un terminale dell'istanza di calcolo nell'area di lavoro
- Gestire le sessioni notebook e terminale
Questa esercitazione illustra i primi passaggi della creazione di un modello, la creazione di prototipi nello stesso computer in cui risiede il codice. Per il training di produzione, informazioni su come usare lo script di training su risorse di calcolo remote più potenti: