Delen via


Zelfstudie: modelontwikkeling op een cloudwerkstation

In dit artikel wordt beschreven hoe u een trainingsscript ontwikkelt met behulp van een notebook op een Azure Machine Learning-cloudwerkstation. In de zelfstudie worden de basisstappen beschreven die u nodig hebt om aan de slag te gaan:

  • Het cloudwerkstation instellen en configureren. Uw cloudwerkstation wordt mogelijk gemaakt door een Azure Machine Learning-rekenproces, dat vooraf is geconfigureerd met omgevingen ter ondersteuning van uw modelontwikkelingsbehoeften.
  • Ontwikkelomgevingen in de cloud gebruiken.
  • Gebruik MLflow om de metrische gegevens van uw model bij te houden.

Vereisten

Als u Azure Machine Learning wilt gebruiken, hebt u een werkruimte nodig. Als u er nog geen hebt, voltooit u Resources maken die u nodig hebt om aan de slag te gaan met het maken van een werkruimte en meer informatie over het gebruik ervan.

Belangrijk

Als uw Azure Machine Learning-werkruimte is geconfigureerd met een beheerd virtueel netwerk, moet u mogelijk uitgaande regels toevoegen om toegang tot de openbare Python-pakketopslagplaatsen toe te staan. Zie Scenario: Toegang tot openbare machine learning-pakketten voor meer informatie.

Berekening maken of starten

U kunt rekenresources maken in de sectie Compute in uw werkruimte. Een rekenproces is een cloudwerkstation dat volledig wordt beheerd door Azure Machine Learning. In deze reeks zelfstudies wordt een rekenproces gebruikt. U kunt deze ook gebruiken om uw eigen code uit te voeren en modellen te ontwikkelen en te testen.

  1. Meld u aan bij Azure Machine Learning Studio.
  2. Selecteer uw werkruimte als deze nog niet is geopend.
  3. Selecteer Compute in het linkerdeelvenster.
  4. Als u geen rekenproces hebt, ziet u nieuw in het midden van de pagina. Selecteer Nieuw en vul het formulier in. U kunt alle standaardinstellingen gebruiken.
  5. Als u een rekenproces hebt, selecteert u deze in de lijst. Als deze is gestopt, selecteert u Start.

Visual Studio Code (VS Code) openen

Nadat u een draaiende rekeninstantie hebt, kunt u er op verschillende manieren toegang toe krijgen. In deze zelfstudie wordt beschreven hoe u het rekenproces van Visual Studio Code gebruikt. Visual Studio Code biedt een volledige IDE (Integrated Development Environment) voor het maken van rekeninstanties.

Selecteer in de lijst met rekeninstanties de koppeling VS Code (Web) of VS Code (Desktop) voor het rekenproces dat u wilt gebruiken. Als u VS Code (desktop) kiest, ziet u mogelijk een bericht waarin u wordt gevraagd of u de toepassing wilt openen.

Schermopname van koppelingen voor het starten van Visual Studio Code (web of bureaublad).

Dit Visual Studio Code-exemplaar is gekoppeld aan uw rekenproces en uw werkruimtebestandssysteem. Zelfs als u het op uw bureaublad opent, zijn de bestanden die u ziet bestanden in uw werkruimte.

Een nieuwe omgeving instellen voor prototypen

Als u uw script wilt uitvoeren, moet u werken in een omgeving die is geconfigureerd met de afhankelijkheden en bibliotheken die de code verwacht. Deze sectie helpt u bij het maken van een omgeving die is afgestemd op uw code. Als u de nieuwe Jupyter-kernel wilt maken waarmee uw notebook verbinding maakt, gebruikt u een YAML-bestand waarmee de afhankelijkheden worden gedefinieerd.

  • Een bestand uploaden.

    Bestanden die u uploadt, worden opgeslagen in een Azure-bestandsshare en deze bestanden worden gekoppeld aan elk rekenproces en gedeeld in de werkruimte.

    1. Ga naar azureml-examples/tutorials/get-started-notebooks/workstation_env.yml.

    2. Download het Conda-omgevingsbestand workstation_env.yml naar uw computer door de knop met het beletselteken (...) in de rechterbovenhoek van de pagina te selecteren en vervolgens Downloaden te selecteren.

    3. Sleep het bestand van uw computer naar het Visual Studio Code-venster. Het bestand wordt geüpload naar uw werkruimte.

    4. Verplaats het bestand naar de map gebruikersnaam.

      Schermopname van het workstation_env.yml bestand in de map gebruikersnaam.

    5. Selecteer het bestand om een voorbeeld te bekijken. Controleer de afhankelijkheden die worden opgegeven. U zou iets moeten zien dat er ongeveer zo uitziet:

    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
    
  • Maak een kernel.

    Gebruik nu de terminal om een nieuwe Jupyter-kernel te maken die is gebaseerd op het workstation_env.yml-bestand .

    1. Selecteer Terminal > New Terminal in het menu bovenaan Visual Studio Code.

    Schermopname van het hulpprogramma Terminal openen op de werkbalk van het notitieblok.

    1. Bekijk uw huidige Conda-omgevingen. De actieve omgeving is gemarkeerd met een sterretje (*).

      conda env list
      
    2. Hiermee cd navigeert u naar de map waarin u het workstation_env.yml-bestand hebt geüpload. Als u deze bijvoorbeeld hebt geüpload naar uw gebruikersmap, gebruikt u deze opdracht:

      cd Users/myusername
      
    3. Zorg ervoor dat workstation_env.yml zich in de map bevindt.

      ls
      
    4. Maak de omgeving op basis van het opgegeven Conda-bestand. Het duurt enkele minuten om de omgeving te bouwen.

      conda env create -f workstation_env.yml
      
    5. Activeer de nieuwe omgeving.

      conda activate workstation_env
      

      Notitie

      Als u CommandNotFoundError ziet, volgt u de instructies om de terminal uit te voeren conda init bash, sluit u de terminal en opent u een nieuwe. Probeer vervolgens de conda activate workstation_env opdracht opnieuw.

    6. Controleer of de juiste omgeving actief is en zoek opnieuw naar de omgeving die is gemarkeerd met een *.

      conda env list
      
    7. Maak een nieuwe Jupyter-kernel die is gebaseerd op uw actieve omgeving.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    8. Sluit het terminalvenster.

U hebt nu een nieuwe kernel. Vervolgens opent u een notebook en gebruikt u deze kernel.

Een notebook maken

  1. Selecteer Bestand > nieuw bestand in het menu bovenaan Visual Studio Code.
  2. Geef het nieuwe bestand de naam develop-tutorial.ipynb (of gebruik een andere naam). Zorg ervoor dat u de extensie .ipynb gebruikt.

De kernel instellen

  1. Selecteer Kernel in de rechterbovenhoek van het nieuwe bestand.
  2. Selecteer een Azure ML-rekenproces (computeinstance-name).
  3. Selecteer de kernel die u hebt gemaakt: Tutorial Workstation Env. Als u de kernel niet ziet, selecteert u de knop Vernieuwen boven de lijst.

Een trainingsscript ontwikkelen

In deze sectie ontwikkelt u een Python-trainingsscript dat wanbetalingen van creditcards voorspelt met behulp van de voorbereide test- en trainingsdatasets van de UCI-dataset.

Deze code gebruikt sklearn voor training en MLflow voor het vastleggen van metrische gegevens.

  1. Begin met code waarmee de pakketten en bibliotheken worden geïmporteerd die u in het trainingsscript gaat gebruiken.

    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
  2. Vervolgens laadt en verwerkt u de gegevens voor het experiment. In deze zelfstudie leest u de gegevens uit een bestand op 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,
    )
  3. Bereid de gegevens voor op de 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
  4. Voeg code toe om autologging met MLflow te starten, zodat u de metrische gegevens en resultaten kunt bijhouden. Met de iteratieve aard van modelontwikkeling helpt MLflow u bij het vastleggen van modelparameters en -resultaten. Raadpleeg verschillende uitvoeringen om te vergelijken en te begrijpen hoe uw model presteert. De logboeken bieden ook context wanneer u klaar bent om over te stappen van de ontwikkelingsfase naar de trainingsfase van uw werkstromen in Azure Machine Learning.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. Een model trainen.

    # 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()

    Notitie

    U kunt de MLflow-waarschuwingen negeren. De resultaten die u nodig hebt, worden nog steeds bijgehouden.

  6. Selecteer Alles uitvoeren boven de code.

Herhalen

Nu u modelresultaten hebt, wijzigt u iets en voert u het model opnieuw uit. Probeer bijvoorbeeld een andere classificatietechniek:

# 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()

Notitie

U kunt de MLflow-waarschuwingen negeren. De resultaten die u nodig hebt, worden nog steeds bijgehouden.

Selecteer Alles uitvoeren om het model uit te voeren.

De resultaten bekijken

Nu u twee verschillende modellen hebt geprobeerd, gebruikt u de resultaten die door MLFfow worden bijgehouden om te bepalen welk model beter is. U kunt verwijzen naar metrische gegevens, zoals nauwkeurigheid of andere indicatoren die het belangrijkst zijn voor uw scenario's. U kunt deze resultaten gedetailleerder bekijken door de taken te bekijken die door MLflow zijn gemaakt.

  1. Ga terug naar uw werkruimte in de Azure Machine Learning-studio.

  2. Selecteer Jobs in het linkerdeelvenster.

    Schermopname van het item Jobs in het linkerdeelvenster.

  3. Selecteer Ontwikkelen op de cloud handleiding.

  4. Er worden twee taken weergegeven, één voor elk van de modellen die u hebt geprobeerd. De namen worden automatisch gegenereerd. Als u de naam van de taak wilt wijzigen, plaatst u de muisaanwijzer op de naam en selecteert u de potloodknop ernaast.

  5. Selecteer de koppeling voor de eerste taak. De naam wordt boven aan de pagina weergegeven. U kunt de naam hier ook wijzigen met behulp van de potloodknop.

  6. Op de pagina worden taakdetails weergegeven, zoals eigenschappen, uitvoer, tags en parameters. Onder Tags ziet u de estimator_name, waarin het type model wordt beschreven.

  7. Selecteer het tabblad Metrische gegevens om de metrische gegevens weer te geven die zijn vastgelegd door MLflow. (Uw resultaten zijn anders omdat u een andere trainingsset hebt.)

    Schermopname van metrische gegevens voor een taak.

  8. Selecteer het tabblad Afbeeldingen om de afbeeldingen weer te geven die zijn gegenereerd door MLflow.

    Schermafbeelding die afbeeldingen voor een functie toont.

  9. Ga terug en bekijk de metrische gegevens en afbeeldingen voor het andere model.

Een Python-script maken

U maakt nu een Python-script op basis van uw notebook voor modeltraining.

  1. Klik in Visual Studio Code met de rechtermuisknop op de bestandsnaam van het notitieblok en selecteer Notebook importeren in script.

  2. Selecteer Bestand > opslaan om het nieuwe scriptbestand op te slaan. Noem het train.py.

  3. Bekijk het bestand en verwijder code die u niet wilt in het trainingsscript. Bewaar bijvoorbeeld de code voor het model dat u wilt gebruiken en verwijder code voor het model dat u niet wilt gebruiken.

    • Zorg ervoor dat u de code bewaart die het automatisch loggen start (mlflow.sklearn.autolog()).
    • Wanneer u het Python-script interactief uitvoert (zoals u hier doet), kunt u de regel behouden waarmee de naam van het experiment (mlflow.set_experiment("Develop on cloud tutorial")) wordt gedefinieerd. U kunt het ook een andere naam geven zodat het als een andere vermelding wordt weergegeven in de sectie Banen. Maar wanneer u het script voorbereidt voor een trainingstaak, wordt die regel niet toegepast en moet deze worden weggelaten: de taakdefinitie bevat de naam van het experiment.
    • Wanneer u één model traint, zijn de regels voor het starten en beëindigen van een uitvoering (mlflow.start_run() en mlflow.end_run()) niet nodig (ze hebben geen effect), maar u kunt ze binnenlaten.
  4. Sla het bestand op wanneer u klaar bent met uw bewerkingen.

U hebt nu een Python-script dat u kunt gebruiken voor het trainen van uw voorkeursmodel.

Het Python-script uitvoeren

Op dit moment voert u deze code uit op uw rekenproces. Dit is uw Azure Machine Learning-ontwikkelomgeving. Zelfstudie: Een model trainen laat zien hoe u een trainingsscript op een schaalbare manier kunt uitvoeren op krachtigere rekenresources.

  1. Selecteer de omgeving die u eerder in deze zelfstudie hebt gemaakt als uw Python-versie (workstations_env). In de rechterbenedenhoek van het notitieblok ziet u de naam van de omgeving. Selecteer het en selecteer vervolgens de omgeving bovenaan in Visual Studio Code.

    Schermopname van het selecteren van de nieuwe omgeving.

  2. Voer het Python-script uit door de knop Alles uitvoeren boven de code te selecteren.

    Schermopname van de knop Uitvoeren.

Notitie

U kunt de MLflow-waarschuwingen negeren. U krijgt nog steeds alle metrische gegevens en afbeeldingen van automatisch afmelden.

De scriptresultaten bekijken

Ga terug naar Taken in uw werkruimte in Azure Machine Learning-studio om de resultaten van uw trainingsscript weer te geven. Houd er rekening mee dat de trainingsgegevens bij elke splitsing worden gewijzigd, zodat de resultaten verschillen tussen uitvoeringen.

Resources opschonen

Als u van plan bent om door te gaan met andere zelfstudies, gaat u verder met volgende stappen.

Het rekenproces stoppen

Als u deze nu niet gaat gebruiken, stopt u het rekenproces:

  1. Selecteer Compute in de studio in het linkerdeelvenster.
  2. Selecteer aan de bovenkant van de pagina Rekeninstanties.
  3. Selecteer het rekenexemplaar in de lijst.
  4. Selecteer Stoppen boven aan de pagina.

Alle resources verwijderen

Belangrijk

De resources die u hebt gemaakt, kunnen worden gebruikt als de vereisten voor andere Azure Machine Learning-zelfstudies en artikelen met procedures.

Als u niet van plan bent om een van de resources te gebruiken die u hebt gemaakt, verwijdert u deze zodat er geen kosten in rekening worden gebracht:

  1. Voer in azure Portal in het zoekvak resourcegroepen in en selecteer deze in de resultaten.

  2. Selecteer de resourcegroep die u hebt gemaakt uit de lijst.

  3. Selecteer op de pagina Overzicht de optie Resourcegroep verwijderen.

    Schermopname van de selecties voor het verwijderen van een resourcegroep in de Azure-portal.

  4. Voer de naam van de resourcegroup in. Selecteer daarna Verwijderen.

Volgende stappen

Zie deze informatiebronnen voor meer informatie:

In deze zelfstudie ziet u de vroege stappen voor het maken van een model en het maken van prototypen op dezelfde computer waarin de code zich bevindt. Voor uw productietraining leert u hoe u dat trainingsscript kunt gebruiken voor krachtigere externe rekenresources: