Tutorial: Modellentwicklung auf einer Cloudarbeitsstation
Erfahren Sie, wie Sie ein Trainingsskript mit einem Notebook auf einer Azure Machine Learning-Cloudarbeitsstation entwickeln. In diesem Tutorial werden die Grundlagen behandelt, die Sie für die ersten Schritte benötigen:
- Richten Sie die Cloudarbeitsstation ein und konfigurieren Sie sie. Ihre Cloudarbeitsstation basiert auf einer Azure Machine Learning-Compute-Instanz, die mit Umgebungen vorkonfiguriert ist, um Ihre verschiedenen Modellentwicklungsanforderungen zu unterstützen.
- Verwenden Sie cloudbasierte Entwicklungsumgebungen.
- Verwenden Sie MLflow, um Ihre Modellmetriken in einem Notebook nachzuverfolgen.
Voraussetzungen
Um Azure Machine Learning verwenden zu können, benötigen Sie zunächst einen Arbeitsbereich. Wenn Sie noch keinen haben, schließen Sie Erstellen von Ressourcen, die Sie für die ersten Schritte benötigen ab, um einen Arbeitsbereich zu erstellen, und mehr über dessen Verwendung zu erfahren.
Notebooks
Der Abschnitt „Notebooks“ in Ihrem Arbeitsbereich ist ein guter Ausgangspunkt, um sich mit Azure Machine Learning und den zugehörigen Funktionen vertraut zu machen. Hier können Sie eine Verbindung mit Computeressourcen herstellen, mit einem Terminal arbeiten und Jupyter Notebooks sowie Skripts bearbeiten und ausführen.
Melden Sie sich bei Azure Machine Learning Studio an.
Wählen Sie Ihren Arbeitsbereich aus, wenn er noch nicht geöffnet ist.
Wählen Sie im Navigationsbereich auf der linken Seite die Option Notebooks aus.
Wenn Sie keine Compute-Instanz haben, wird in der Mitte des Bildschirms Compute erstellen angezeigt. Wählen Sie Compute erstellen aus, und füllen Sie das Formular aus. Sie können alle Standardwerte verwenden. (Wenn Sie bereits über eine Compute-Instanz verfügen, wird stattdessen an dieser Stelle Terminal angezeigt. Sie verwenden Terminal später in diesem Tutorial.)
Einrichten einer neuen Umgebung für die Prototyperstellung (optional)
Damit Ihr Skript ausgeführt werden kann, müssen Sie in einer Umgebung arbeiten, die mit den vom Code erwarteten Abhängigkeiten und Bibliotheken konfiguriert ist. In diesem Abschnitt können Sie eine Umgebung erstellen, die auf Ihren Code zugeschnitten ist. Um den neuen Jupyter-Kernel zu erstellen, mit dem Ihr Notebook eine Verbindung herstellt, verwenden Sie eine YAML-Datei, die die Abhängigkeiten definiert.
Laden Sie eine Datei hoch.
Dateien, die Sie hochladen, werden in einer Azure-Dateifreigabe gespeichert, und diese Dateien werden in jede Compute-Instanz eingebunden und innerhalb des Arbeitsbereichs freigegeben.
Laden Sie die Conda-Umgebungsdatei workstation_env.yml auf Ihren Computer herunter.
Wählen Sie Dateien hinzufügen und dann Dateien hochladen aus, um sie in Ihren Arbeitsbereich hochzuladen.
Wählen Sie Datei(en) durchsuchen und auswählen aus.
Wählen Sie die Datei workstation_env.yml aus, die Sie heruntergeladen haben.
Wählen Sie die Option Hochladen.
Die Datei workstation_env.yml wird in Ordner mit Ihrem Benutzernamen auf der Registerkarte Dateien angezeigt. Wählen Sie diese Datei aus, um eine Vorschau anzuzeigen, und sehen Sie, welche Abhängigkeiten sie angibt.
Erstellen Sie einen Kernel.
Verwenden Sie nun das Azure Machine Learning-Terminal, um einen neuen Jupyter-Kernel basierend auf der Datei workstation_env.yml zu erstellen.
Klicken Sie auf Terminal, um ein Terminalfenster zu öffnen. Sie können das Terminal auch über die linke Befehlsleiste öffnen:
Wenn die Compute-Instanz beendet wurde, wählen Sie Compute starten aus, und warten Sie, bis sie ausgeführt wird.
Sobald der Compute ausgeführt wird, wird im Terminal eine Willkommensmeldung angezeigt, und Sie können mit der Eingabe von Befehlen beginnen.
Zeigen Sie Ihre aktuellen Conda-Umgebungen an. Die aktive Umgebung ist mit einem * gekennzeichnet.
conda env list
Wenn Sie einen Unterordner für dieses Tutorial erstellt haben,
cd
Sie jetzt zu diesem Ordner.Erstellen Sie die Umgebung basierend auf der bereitgestellten Conda-Datei. Die Erstellung dieser Umgebung dauert einige Minuten.
conda env create -f workstation_env.yml
Aktivieren Sie die neue Umgebung.
conda activate workstation_env
Überprüfen Sie, ob die richtige Umgebung (mit * gekennzeichnet) aktiv ist.
conda env list
Erstellen Sie einen neuen Jupyter-Kernel basierend auf Ihrer aktiven Umgebung.
python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env"
Schließen Sie das Terminalfenster.
Sie verfügen jetzt über einen neuen Kernel. Als Nächstes öffnen Sie ein Notebook und verwenden diesen Kernel.
Erstellen eines Notebooks
Wählen Sie Dateien hinzufügen und dann Neue Datei erstellen aus.
Nennen Sie Ihr neues Notebook develop-tutorial.ipynb (oder geben Sie Ihren bevorzugten Namen ein).
Wenn die Compute-Instanz beendet wurde, wählen Sie Compute starten aus, und warten Sie, bis sie ausgeführt wird.
Oben rechts sehen Sie, dass das Notebook mit dem Standardkernel verbunden ist. Wechseln Sie, um den Tutorial Workstation Env-Kernel zu verwenden.
Entwickeln eines Trainingsskripts
In diesem Abschnitt entwickeln Sie ein Python-Trainingsskript, das Zahlungsverzug bei Kreditkartenzahlungen vorhersagt, indem Sie die vorbereiteten Test- und Trainingsdatasets aus dem UCI-Dataset verwenden.
Dieser Code verwendet sklearn
für das Training und MLflow zum Protokollieren der Metriken.
Beginnen Sie mit Code, der die Pakete und Bibliotheken importiert, die Sie im Trainingsskript verwenden.
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
Laden und verarbeiten Sie als Nächstes die Daten für dieses Experiment. In diesem Tutorial lesen Sie die Daten aus einer Datei im 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, )
Bereiten Sie die Daten für das Training vor:
# 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
Fügen Sie Code hinzu, um die automatische Protokollierung mit
MLflow
zu starten, damit Sie die Metriken und Ergebnisse nachverfolgen können. Dank der iterativen Modellentwicklung können Sie mitMLflow
Modellparameter und Ergebnisse protokollieren. Sehen Sie sich diese Ausführungen an, um die Leistung Ihres Modells zu vergleichen und zu verstehen. Die Protokolle liefern auch den Kontext dafür, wann Sie bereit sind, von der Entwicklungsphase zur Trainingsphase Ihrer Workflows in Azure Machine Learning überzugehen.# set name for logging mlflow.set_experiment("Develop on cloud tutorial") # enable autologging with MLflow mlflow.sklearn.autolog()
Trainieren des Modells.
# 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()
Durchlaufen
Nachdem Sie nun die Modellergebnisse erhalten haben, können Sie etwas ändern und es erneut versuchen. Probieren Sie beispielsweise ein anderes Klassifizierungsverfahren aus:
# 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()
Untersuchen der Ergebnisse
Nachdem Sie nun zwei verschiedene Modelle ausprobiert haben, verwenden Sie die von MLFfow
nachverfolgten Ergebnisse, um zu entscheiden, welches Modell besser ist. Sie können auf Metriken wie Genauigkeit oder andere Indikatoren verweisen, die für Ihre Szenarien am wichtigsten sind. Sie können diese Ergebnisse ausführlicher untersuchen, indem Sie sich die von MLflow
erstellten Aufträge ansehen.
Wählen Sie im linken Navigationsbereich Aufträge aus.
Wählen Sie den Link zum Tutorial Entwickeln in der Cloud aus.
Es werden zwei verschiedene Aufträge angezeigt, einer für jedes der Modelle, die Sie ausprobiert haben. Diese Namen werden automatisch generiert. Verwenden Sie das Stifttool neben dem Namen, das angezeigt wird, wenn Sie mit dem Mauszeiger auf einen Namen zeigen, wenn Sie ihn umbenennen möchten.
Wählen Sie den Link für den ersten Auftrag aus. Der Name wird oben angezeigt. Sie können es auch hier mit dem Stifttool umbenennen.
Auf der Seite werden Details des Auftrags angezeigt, z. B. Eigenschaften, Ausgaben, Tags und Parameter. Unter Tags wird „estimator_name“ angezeigt, der den Typ des Modells beschreibt.
Wählen Sie die Registerkarte Metriken aus, um die Metriken anzuzeigen, die von
MLflow
protokolliert wurden. (Die Ergebnisse unterscheiden sich von Ihren, da Sie über einen anderen Trainingssatz verfügen.)Wählen Sie die Registerkarte Images aus, um die von
MLflow
generierten Bilder anzuzeigen.Gehen Sie zurück und überprüfen Sie die Metriken und Images für das andere Modell.
Erstellen eines Python-Skripts
Erstellen Sie nun ein Python-Skript aus Ihrem Notebook für das Modelltraining.
Wählen Sie auf der Symbolleiste des Notebooks das Menü aus.
Wählen Sie Exportieren als> Python aus.
Nennen Sie die Datei train.py.
Durchsuchen Sie diese Datei, und löschen Sie den Code, den Sie nicht im Trainingsskript verwenden möchten. Behalten Sie beispielsweise den Code für das Modell bei, das Sie verwenden möchten, und löschen Sie Code für das Modell, das Sie nicht möchten.
- Stellen Sie sicher, dass Sie den Code beibehalten, der die automatische Protokollierung (
mlflow.sklearn.autolog()
) startet. - Sie können die automatisch generierten Kommentare löschen und weitere eigene Kommentare hinzufügen.
- Wenn Sie das Python-Skript interaktiv (in einem Terminal oder Notebook) ausführen, können Sie die Zeile beibehalten, die den Experimentnamen definiert (
mlflow.set_experiment("Develop on cloud tutorial")
). Sie können ihm sogar einen anderen Namen geben, um ihn als einen anderen Eintrag im Abschnitt Aufträge zu sehen. Wenn Sie jedoch das Skript für einen Trainingsauftrag vorbereiten, funktioniert diese Zeile nicht und sollte weggelassen werden. Die Auftragsdefinition enthält den Namen des Experiments. - Wenn Sie ein einzelnes Modell trainieren, sind die Linien zum Starten und Beenden einer Ausführung (
mlflow.start_run()
undmlflow.end_run()
) ebenfalls nicht erforderlich (sie haben keine Auswirkung), können aber beibehalten werden.
- Stellen Sie sicher, dass Sie den Code beibehalten, der die automatische Protokollierung (
Wenn Sie mit den Bearbeitungen fertig sind, speichern Sie die Datei.
Sie verfügen jetzt über ein Python-Skript, das Sie zum Trainieren Ihres bevorzugten Modells verwenden können.
Ausführen des Python-Skripts
Vorerst führen Sie diesen Code auf Ihrer Compute-Instanz aus, d. h. auf Ihrer Azure Machine Learning-Entwicklungsumgebung. Im Tutorial: Trainieren eines Modells erfahren Sie, wie Sie ein Trainingsskript auf skalierbare Weise auf leistungsstärkere Computeressourcen ausführen.
Wählen Sie auf der linken Seite Terminal öffnen aus, um ein Terminalfenster zu öffnen.
Zeigen Sie Ihre aktuellen Conda-Umgebungen an. Die aktive Umgebung ist mit einem * gekennzeichnet.
conda env list
Aktivieren Sie Ihren Kernel:
conda activate workstation_env
Wenn Sie einen Unterordner für dieses Tutorial erstellt haben,
cd
Sie jetzt zu diesem Ordner.Führen Sie Ihr Trainingsskript aus.
python train.py
Untersuchen der Skriptergebnisse
Wechseln Sie zurück zu Aufträge, um die Ergebnisse Ihres Trainingsskripts anzuzeigen. Beachten Sie, dass sich die Trainingsdaten mit jeder Aufteilung ändern, sodass sich die Ergebnisse auch zwischen den Ausführungen unterscheiden.
Bereinigen von Ressourcen
Wenn Sie nun mit dem anderen Tutorials fortfahren möchten, wechseln Sie zu Nächste Schritte.
Beenden der Compute-Instanz
Wenn Sie die Compute-Instanz jetzt nicht verwenden möchten, beenden Sie sie:
- Wählen Sie im Studio im linken Navigationsbereich Compute aus.
- Wählen Sie auf den oberen Registerkarten Compute-Instanzen aus.
- Wählen Sie in der Liste die Compute-Instanz aus.
- Wählen Sie auf der oberen Symbolleiste Beenden aus.
Löschen aller Ressourcen
Wichtig
Die von Ihnen erstellten Ressourcen können ggf. auch in anderen Azure Machine Learning-Tutorials und -Anleitungen verwendet werden.
Wenn Sie die erstellten Ressourcen nicht mehr benötigen, löschen Sie diese, damit Ihnen keine Kosten entstehen:
Wählen Sie ganz links im Azure-Portal Ressourcengruppen aus.
Wählen Sie in der Liste die Ressourcengruppe aus, die Sie erstellt haben.
Wählen Sie die Option Ressourcengruppe löschen.
Geben Sie den Ressourcengruppennamen ein. Wählen Sie anschließend die Option Löschen.
Nächste Schritte
Weitere Informationen:
- Von Artefakten zu Modellen in MLflow
- Using Git with Azure Machine Learning (Verwenden von Git mit Azure Machine Learning)
- Ausführen von Jupyter Notebooks in Ihrem Arbeitsbereich
- Arbeiten mit einem Compute-Instanzterminal in Ihrem Arbeitsbereich
- Verwalten von Notebook- und Terminalsitzungen
In diesem Tutorial wurden die ersten Schritte zum Erstellen eines Modells gezeigt, wobei der Prototyp auf demselben Rechner erstellt wurde, auf dem sich auch der Code befindet. Erfahren Sie für Ihr Produktionstraining, wie Sie dieses Trainingsskript für leistungsfähigere Remotecomputeressourcen verwenden: