Självstudie: Modellutveckling på en molnarbetsstation
Lär dig hur du utvecklar ett träningsskript med en notebook-fil på en Azure Machine Learning-molnarbetsstation. Den här självstudien beskriver grunderna du behöver för att komma igång:
- Konfigurera och konfigurera molnarbetsstationen. Din molnarbetsstation drivs av en Azure Machine Learning-beräkningsinstans som är förkonfigurerad med miljöer för att stödja dina olika modellutvecklingsbehov.
- Använd molnbaserade utvecklingsmiljöer.
- Använd MLflow för att spåra dina modellmått, allt från en notebook-fil.
Förutsättningar
Om du vill använda Azure Machine Learning behöver du först en arbetsyta. Om du inte har någon slutför du Skapa resurser som du behöver för att komma igång med att skapa en arbetsyta och lära dig mer om hur du använder den.
Börja med notebook-filer
Avsnittet Notebooks på din arbetsyta är ett bra ställe att börja lära dig mer om Azure Machine Learning och dess funktioner. Här kan du ansluta till beräkningsresurser, arbeta med en terminal och redigera och köra Jupyter Notebooks och skript.
Logga in på Azure Machine Learning-studio.
Välj din arbetsyta om den inte redan är öppen.
I det vänstra navigeringsfältet väljer du Notebooks.
Om du inte har någon beräkningsinstans visas Skapa beräkning mitt på skärmen. Välj Skapa beräkning och fyll i formuläret. Du kan använda alla standardvärden. (Om du redan har en beräkningsinstans visas i ställetTerminalen på den platsen. Du kommer att använda Terminal senare i den här självstudien.)
Konfigurera en ny miljö för prototyper (valfritt)
För att skriptet ska kunna köras måste du arbeta i en miljö som konfigurerats med de beroenden och bibliotek som koden förväntar sig. Det här avsnittet hjälper dig att skapa en miljö som är anpassad efter din kod. Om du vill skapa den nya Jupyter-kerneln som notebook-filen ansluter till använder du en YAML-fil som definierar beroendena.
Ladda upp en fil.
Filer som du laddar upp lagras i en Azure-filresurs och dessa filer monteras på varje beräkningsinstans och delas på arbetsytan.
- Ladda ned den här conda-miljöfilen workstation_env.yml till datorn med hjälp av knappen Ladda ned råfil längst upp till höger.
Välj Lägg till filer och välj sedan Ladda upp filer för att ladda upp dem till din arbetsyta.
Välj Bläddra och välj filer.
Välj workstation_env.yml-fil som du laddade ned.
Välj överför.
Filen workstation_env.yml visas under din användarnamnsmapp på fliken Filer. Välj den här filen om du vill förhandsgranska den och se vilka beroenden den anger. Du ser innehållet så här:
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
Skapa en kernel.
Använd nu Azure Machine Learning-terminalen för att skapa en ny Jupyter-kernel baserat på filen workstation_env.yml .
Välj Terminal för att öppna ett terminalfönster. Du kan också öppna terminalen från det vänstra kommandofältet:
Om beräkningsinstansen har stoppats väljer du Starta beräkning och väntar tills den körs.
När beräkningen körs visas ett välkomstmeddelande i terminalen och du kan börja skriva kommandon.
Visa dina aktuella conda-miljöer. Den aktiva miljön är markerad med *.
conda env list
Om du har skapat en undermapp för den här självstudien,
cd
till den mappen nu.Skapa miljön baserat på den angivna conda-filen. Det tar några minuter att skapa den här miljön.
conda env create -f workstation_env.yml
Aktivera den nya miljön.
conda activate workstation_env
Verifiera att rätt miljö är aktiv och leta efter miljön som markerats med *.
conda env list
Skapa en ny Jupyter-kernel baserat på din aktiva miljö.
python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env"
Stäng terminalfönstret.
Nu har du en ny kernel. Därefter öppnar du en notebook-fil och använder den här kerneln.
Skapa en notebook-fil
Välj Lägg till filer och välj Skapa ny fil.
Ge den nya anteckningsboken namnet develop-tutorial.ipynb (eller ange önskat namn).
Om beräkningsinstansen har stoppats väljer du Starta beräkning och väntar tills den körs.
Du ser att notebook-filen är ansluten till standardkärnan längst upp till höger. Växla om du vill använda kerneln Tutorial Workstation Env om du har skapat kerneln.
Utveckla ett träningsskript
I det här avsnittet utvecklar du ett Python-träningsskript som förutsäger standardbetalningar för kreditkort med hjälp av förberedda test- och träningsdatauppsättningar från UCI-datauppsättningen.
Den här koden används sklearn
för träning och MLflow för att logga måtten.
Börja med kod som importerar de paket och bibliotek som du ska använda i träningsskriptet.
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
Läs sedan in och bearbeta data för det här experimentet. I den här självstudien läser du data från en fil på 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, )
Förbered data för träning:
# 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
Lägg till kod för att starta automatisk loggning med
MLflow
, så att du kan spåra mått och resultat. Med den iterativa karaktären hos modellutvecklingMLflow
kan du logga modellparametrar och resultat. Gå tillbaka till dessa körningar för att jämföra och förstå hur din modell presterar. Loggarna ger också kontext för när du är redo att gå från utvecklingsfasen till träningsfasen för dina arbetsflöden i Azure Machine Learning.# set name for logging mlflow.set_experiment("Develop on cloud tutorial") # enable autologging with MLflow mlflow.sklearn.autolog()
Träna en modell.
# 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()
Kommentar
Du kan ignorera mlflow-varningarna. Du får fortfarande alla resultat som du behöver spåra.
Upprepa
Nu när du har modellresultat kanske du vill ändra något och försöka igen. Prova till exempel en annan klassificerarteknik:
# 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()
Kommentar
Du kan ignorera mlflow-varningarna. Du får fortfarande alla resultat som du behöver spåra.
Granska resultat
Nu när du har provat två olika modeller använder du de resultat som spåras av MLFfow
för att avgöra vilken modell som är bättre. Du kan referera till mått som noggrannhet eller andra indikatorer som är viktigast för dina scenarier. Du kan gå in närmare på dessa resultat genom att titta på jobben som skapats av MLflow
.
I det vänstra navigeringsfältet väljer du Jobb.
Välj länken för självstudien Utveckla i molnet.
Det finns två olika jobb som visas, ett för var och en av de modeller som du provade. Dessa namn genereras automatiskt. När du hovra över ett namn använder du pennverktyget bredvid namnet om du vill byta namn på det.
Välj länken för det första jobbet. Namnet visas överst. Du kan också byta namn på det här med pennverktyget.
Sidan visar information om jobbet, till exempel egenskaper, utdata, taggar och parametrar. Under Taggar visas estimator_name, som beskriver typen av modell.
Välj fliken Mått för att visa de mått som loggades av
MLflow
. (Förvänta dig att dina resultat skiljer sig åt eftersom du har en annan träningsuppsättning.)Välj fliken Bilder för att visa de bilder som genereras av
MLflow
.Gå tillbaka och granska mått och bilder för den andra modellen.
Skapa ett Python-skript
Skapa nu ett Python-skript från anteckningsboken för modellträning.
Välj menyn i verktygsfältet för anteckningsboken.
Välj Exportera som> Python.
Ge filen namnet train.py.
Titta igenom den här filen och ta bort den kod som du inte vill använda i träningsskriptet. Behåll till exempel koden för den modell som du vill använda och ta bort kod för den modell som du inte vill använda.
- Se till att du behåller koden som startar automatisk loggning (
mlflow.sklearn.autolog()
). - Du kanske vill ta bort de autogenererade kommentarerna och lägga till fler egna kommentarer.
- När du kör Python-skriptet interaktivt (i en terminal eller notebook-fil) kan du behålla den rad som definierar experimentnamnet (
mlflow.set_experiment("Develop on cloud tutorial")
). Eller till och med ge det ett annat namn för att se det som en annan post i avsnittet Jobb . Men när du förbereder skriptet för ett träningsjobb fungerar inte den raden och bör utelämnas – jobbdefinitionen innehåller experimentnamnet. - När du tränar en enskild modell är linjerna för att starta och avsluta en körning (
mlflow.start_run()
ochmlflow.end_run()
) inte heller nödvändiga (de har ingen effekt), men kan lämnas kvar om du vill.
- Se till att du behåller koden som startar automatisk loggning (
Spara filen när du är klar med dina redigeringar.
Nu har du ett Python-skript som du kan använda för att träna önskad modell.
Kör Python-skriptet
För tillfället kör du den här koden på din beräkningsinstans, som är din Azure Machine Learning-utvecklingsmiljö. Självstudie: Träna en modell visar hur du kör ett träningsskript på ett mer skalbart sätt på mer kraftfulla beräkningsresurser.
Till vänster väljer du Öppna terminal för att öppna ett terminalfönster.
Visa dina aktuella conda-miljöer. Den aktiva miljön är markerad med *.
conda env list
Om du har skapat en ny kernel aktiverar du den nu:
conda activate workstation_env
Om du har skapat en undermapp för den här självstudien,
cd
till den mappen nu.Kör träningsskriptet.
python train.py
Kommentar
Du kan ignorera mlflow-varningarna. Du får fortfarande alla mått och bilder från automatisk loggning.
Granska skriptresultat
Gå tillbaka till Jobb för att se resultatet av ditt träningsskript. Tänk på att träningsdata ändras med varje delning, så resultaten skiljer sig också mellan körningarna.
Rensa resurser
Om du planerar att fortsätta nu till andra självstudier går du vidare till Nästa steg.
Stoppa beräkningsinstans
Om du inte ska använda den nu stoppar du beräkningsinstansen:
- Välj Beräkning i det vänstra navigeringsområdet i studion.
- På de översta flikarna väljer du Beräkningsinstanser
- Välj beräkningsinstansen i listan.
- I det övre verktygsfältet väljer du Stoppa.
Ta bort alla resurser
Viktigt!
De resurser som du har skapat kan användas som förutsättningar för andra Azure Machine Learning-självstudier och instruktionsartiklar.
Om du inte planerar att använda någon av de resurser som du har skapat tar du bort dem så att du inte debiteras några avgifter:
I Azure-portalen väljer du Resursgrupper längst till vänster.
I listan väljer du den resursgrupp som du skapade.
Välj Ta bort resursgrupp.
Ange resursgruppsnamnet. Välj sedan ta bort.
Nästa steg
Läs mer om:
- Från artefakter till modeller i MLflow
- Använda Git med Azure Machine Learning
- Köra Jupyter Notebooks på din arbetsyta
- Arbeta med en beräkningsinstansterminal på din arbetsyta
- Hantera notebook- och terminalsessioner
Den här självstudien visade de tidiga stegen för att skapa en modell, prototyper på samma dator där koden finns. För produktionsträningen lär du dig hur du använder träningsskriptet på mer kraftfulla fjärrberäkningsresurser: