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:
- Impostare e configurare la workstation cloud. La workstation cloud è basata su un'istanza di ambiente di calcolo di Azure Machine Learning, preconfigurata con ambienti per supportare le diverse esigenze di sviluppo dei modelli.
- Usare ambienti di sviluppo basati sul cloud.
- Usare MLflow per tenere traccia delle metriche dei modelli direttamente da un notebook.
Prerequisiti
Per usare Azure Machine Learning, è necessaria un'area di lavoro. Se non è disponibile, completare Creare le risorse necessarie per iniziare creare un'area di lavoro e ottenere maggiori informazioni su come usarla.
Iniziare con il calcolo
La sezione Calcolo nell'area di lavoro consente di creare risorse di calcolo. Un'istanza di ambiente di calcolo è una workstation basata sul cloud completamente gestita da Azure Machine Learning. Questa serie di esercitazioni usa un'istanza di ambiente di calcolo. È anche possibile usarla per eseguire codice personalizzato e per sviluppare e testare modelli.
- Accedere ad Azure Machine Learning Studio.
- Selezionare l'area di lavoro, se non è già aperta.
- Nel riquadro di spostamento a sinistra selezionare Calcolo.
- Se non è disponibile un'istanza di ambiente di calcolo, verrà visualizzato il comando Nuovo al centro dello schermo. Selezionare Nuovo e compilare il modulo. È possibile usare tutte le impostazioni predefinite.
- Se è disponibile un'istanza di ambiente di calcolo, selezionarla nell'elenco. Se è arrestata, selezionare Avvia.
Aprire Visual Studio Code (VS Code)
Quando è disponibile un'istanza di calcolo in esecuzione, è possibile accedervi in diversi modi. Questa esercitazione illustra l'uso dell'istanza di ambiente di calcolo di VS Code. VS Code fornisce un ambiente di sviluppo integrato (IDE) completo con la potenza delle risorse di Azure Machine Learning.
Nell'elenco delle istanze di ambiente di calcolo selezionare il collegamento VS Code (Web) o VS Code (Desktop) per l'istanza di ambiente di calcolo da usare. Se si sceglie VS Code (Desktop), potrebbe essere visualizzato un popup che chiede se si vuole aprire l'applicazione.
Questa istanza di VS Code è collegata all'istanza di ambiente di calcolo e al file system dell'area di lavoro. Anche se la si apre sul desktop, i file visualizzati sono file nell'area di lavoro.
Configurare un nuovo ambiente per la creazione di prototipi (facoltativo)
Per consentire l'esecuzione dello script, è necessario lavorare in un ambiente configurato con le dipendenze e le librerie previste dal codice. Questa sezione illustra come 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, montati in ogni istanza di ambiente di calcolo e condivisi all'interno dell'area di lavoro.
Scaricare questo file di ambiente conda, workstation_env.yml, nel computer usando il pulsante Scarica file non elaborato in alto a destra.
Trascinare il file dal computer alla finestra di VS Code. Il file viene caricato nell'area di lavoro.
Spostare il file nella cartella username.
Selezionare questo file per visualizzare l'anteprima ed esaminare le dipendenze specificate. Il contenuto sarà simile al seguente:
name: workstation_env # This file serves as an example - you can update packages or versions to fit your use case dependencies: - python=3.8 - pip=21.2.4 - scikit-learn=0.24.2 - scipy=1.7.1 - pandas>=1.1,<1.2 - pip: - mlflow-skinny - azureml-mlflow - psutil>=5.8,<5.9 - ipykernel~=6.0 - matplotlib
Creare un kernel.
Usare ora il terminale per creare un nuovo kernel Jupyter, basato sul file workstation_env.yml.
Nella barra dei menu in alto selezionare Terminale > Nuovo terminale.
Visualizzare gli ambienti conda correnti. L'ambiente attivo è contrassegnato con *.
conda env list
cd
nella cartella in cui è stato caricato il file di workstation_env.yml. Ad esempio, se è stato caricato nella cartella utente:cd Users/myusername
Assicurarsi che il workstation_env.yml si trovi in questa cartella.
ls
Creare l'ambiente in base al file conda fornito. La creazione dell'ambiente richiede alcuni minuti.
conda env create -f workstation_env.yml
Attivare il nuovo ambiente.
conda activate workstation_env
Nota
Se viene visualizzato CommandNotFoundError, seguire le istruzioni per eseguire
conda init bash
, chiudere il terminale e aprirne uno nuovo. Quindi eseguire di nuovo il comandoconda activate workstation_env
.Verificare che l'ambiente corretto sia attivo, cercando di nuovo l'ambiente contrassegnato con *.
conda env list
Creare un nuovo kernel Jupyter basato sull'ambiente attivo.
python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env"
Chiudere la finestra del terminale.
Sarà ora disponibile un nuovo kernel. Si aprirà quindi un notebook e si userà questo kernel.
Creare un notebook
- Nella barra dei menu in alto selezionare File > Nuovo file.
- Assegnare al nuovo file il nome develop-tutorial.ipynb o immettere il nome preferito. Assicurarsi di usare l'estensione .ipynb.
Impostare il kernel
- In alto a destra selezionare Seleziona un kernel.
- Selezionare Istanza di ambiente di calcolo di Azure ML (computeinstance-name).
- Selezionare il kernel creato, Tutorial Workstation Env. Se non viene visualizzato, selezionare lo strumento Aggiorna in alto a destra.
Sviluppare uno script di training
In questa sezione viene sviluppato uno script di training Python che stima i pagamenti predefiniti con carta di credito usando i set di dati di test e di training preparati dal set di dati UCI.
Questo codice usa sklearn
per il training e MLflow per registrare le metriche.
Iniziare con il codice per l'importazione dei pacchetti e delle 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 questo esempio si leggono i dati da un file in 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 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 il codice per avviare la registrazione automatica con
MLflow
, in modo da poter tenere traccia delle metriche e dei risultati. Vista la natura iterativa dello sviluppo di modelli,MLflow
consente di registrare i parametri e i risultati dei modelli. Fare riferimento a queste esecuzioni per confrontare e comprendere le prestazioni di un modello. I log forniscono anche il contesto per quando si è pronti per passare dalla fase di sviluppo a quella di training dei flussi di lavoro in 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()
Nota
Gli avvisi di MLflow possono essere ignorati. Si otterranno comunque tutti i risultati necessari.
Iterare
Ora che sono disponibili i risultati del modello, è possibile apportare alcune modifiche e riprovare. Provare ad esempio una tecnica di classificazione 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()
Nota
Gli avvisi di MLflow possono essere ignorati. Si otterranno comunque tutti i risultati necessari.
Esaminare i risultati
Dopo aver provato due modelli diversi, usare i risultati rilevati da MLFfow
per decidere quale sia il migliore. È possibile fare riferimento a metriche come l'accuratezza o altri indicatori più importanti per gli scenari specifici. È possibile approfondire questi risultati esaminando i processi creati da MLflow
.
Tornare all'area di lavoro nello studio di Azure Machine Learning.
Nel riquadro di spostamento a sinistra selezionare Processi.
Selezionare il collegamento per l'esercitazione per lo sviluppo nel cloud.
Verranno visualizzati due processi diversi, uno per ognuno dei modelli analizzati. I nomi vengono generati automaticamente. Quando si passa il puntatore su un nome, è possibile usare lo strumento matita accanto al nome per modificarlo.
Selezionare il collegamento per il primo processo. Il nome verrà visualizzato nella parte superiore. È anche possibile modificare il nome con lo strumento matita in questa posizione.
La pagina mostra i dettagli del processo, ad esempio proprietà, output, tag e parametri. In Tag sarà presente estimator_name, che descrive il tipo di modello.
Selezionare la scheda Metriche per visualizzare le metriche registrate da
MLflow
. I risultati effettivi saranno diversi, in quanto si dispone di un set di training diverso.Selezionare la scheda Immagini per visualizzare le immagini generate da
MLflow
.Tornare indietro ed 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 finestra di VS Code fare clic con il pulsante destro del mouse sul nome file del notebook e selezionare Importa notebook in script.
Usare il menu File > Salva per salvare il nuovo file di script. Assegnare al file il nome train.py.
Esaminare il file ed eliminare il codice non desiderato nello script di training. Mantenere ad esempio il codice per il modello che si vuole usare ed eliminare il codice per il modello che non si vuole usare.
- Assicurarsi di mantenere il codice che avvia la registrazione automatica (
mlflow.sklearn.autolog()
). - Quando si esegue lo script Python in modo interattivo, come in questo caso, è possibile mantenere la riga che definisce il nome dell'esperimento (
mlflow.set_experiment("Develop on cloud tutorial")
). È anche possibile assegnare un nome diverso per visualizzarlo come voce diversa nella sezione Processi. Tuttavia, quando si prepara lo script per un processo di training, tale riga non è applicabile e deve essere omessa. Il nome dell'esperimento è incluso nella definizione del processo. - Quando si esegue il training di un singolo modello, anche 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 nel codice, se lo si desidera.
- Assicurarsi di mantenere il codice che avvia la registrazione automatica (
Dopo aver apportato tutte le modifiche, salvare il file.
A questo punto si dispone di uno script Python da usare per il training del modello preferito.
Eseguire lo script Python
Per il momento, questo codice viene eseguito nell'istanza di ambiente di calcolo, ovvero l'ambiente di sviluppo di Azure Machine Learning. In Esercitazione: Eseguire il training di un modello viene illustrato come eseguire uno script di training in modo più scalabile su risorse di calcolo più potenti.
Selezionare l'ambiente creato in precedenza in questa esercitazione come versione di Python (workstations_env). Nell'angolo inferiore destro del notebook verrà visualizzato il nome dell'ambiente. Selezionarlo, quindi selezionare l'ambiente al centro della schermata.
Eseguire ora lo script Python. Usare lo strumento Esegui file Python in alto a destra.
Nota
Gli avvisi di MLflow possono essere ignorati. Si otterranno comunque tutte le metriche e le immagini dalla registrazione automatica.
Esaminare i risultati dello script
Tornare a Processi nell'area di lavoro nello studio di Azure Machine Learning per visualizzare i risultati dello script di training. Tenere presente che i dati di training cambiano con ogni suddivisione, quindi i risultati differiscono anche tra le esecuzioni.
Pulire le risorse
Se si prevede di continuare con altre esercitazioni, procedere direttamente a Passaggi successivi.
Arrestare l'istanza di ambiente di calcolo
Se non si prevede di usare subito l'istanza di ambiente di calcolo, arrestarla:
- Nell'area di spostamento a sinistra nello studio selezionare Ambiente di calcolo.
- Nelle schede in alto selezionare Istanze di ambiente di calcolo
- Selezionare l'istanza di ambiente di calcolo nell'elenco.
- Sulla barra degli strumenti in alto 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 le risorse create non servono più, eliminarle per evitare addebiti:
Nella casella di ricerca della portale di Azure immettere Gruppi di risorse e selezionarlo nei risultati.
Nell'elenco selezionare il gruppo di risorse creato.
Nella pagina Panoramica selezionare Elimina gruppo di risorse.
Immettere il nome del gruppo di risorse. Quindi seleziona 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)
- Eseguire notebook Jupyter nell'area di lavoro
- Accedere a un terminale dell'istanza di ambiente di calcolo nell'area di lavoro
- Gestire le sessioni del notebook e del terminale
Questa esercitazione ha illustrato i primi passaggi per la creazione di un modello e la creazione di prototipi nello stesso computer in cui si trova il codice. Per il training nell'ambiente di produzione, vedere come usare lo script di training su risorse di calcolo remote più potenti: