Zelfstudie: Modelontwikkeling op een cloudwerkstation

Leer hoe u een trainingsscript ontwikkelt met een notebook op een Azure Machine Learning-cloudwerkstation. In deze zelfstudie worden de basisbeginselen besproken 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 verschillende modelontwikkelingsbehoeften.
  • Ontwikkelomgevingen in de cloud gebruiken.
  • Gebruik MLflow om uw metrische modelgegevens bij te houden, allemaal vanuit een notebook.

Vereisten

Als u Azure Machine Learning wilt gebruiken, hebt u eerst 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.

Beginnen met notebooks

De sectie Notebooks in uw werkruimte is een goede plek om te leren over Azure Machine Learning en de mogelijkheden ervan. Hier kunt u verbinding maken met rekenresources, werken met een terminal en Jupyter Notebooks en scripts bewerken en uitvoeren.

  1. Meld u aan bij Azure Machine Learning Studio.

  2. Selecteer uw werkruimte als deze nog niet is geopend.

  3. Selecteer Notitieblokken in het linkernavigatievenster.

  4. Als u geen rekenproces hebt, ziet u 'Berekening maken ' in het midden van het scherm. Selecteer Rekenproces maken en vul het formulier in. U kunt alle standaardinstellingen gebruiken. (Als u al een rekenproces hebt, ziet u in plaats daarvanTerminal op die plek. Verderop in deze zelfstudie gebruikt u Terminal .)

    Screenshot shows how to create a compute instance.

Een nieuwe omgeving instellen voor prototypen (optioneel)

Als u het 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. Download dit conda-omgevingsbestand workstation_env.yml naar uw computer met behulp van de knop Onbewerkt bestand downloaden in de rechterbovenhoek.
    1. Selecteer Bestanden toevoegen en selecteer vervolgens Bestanden uploaden om deze naar uw werkruimte te uploaden.

      Screenshot shows how to upload files to your workspace.

    2. Selecteer Bladeren en selecteer een of meer bestanden.

    3. Selecteer workstation_env.yml-bestand dat u hebt gedownload.

    4. Selecteer Uploaden.

    U ziet het bestand workstation_env.yml onder uw gebruikersnaammap op het tabblad Bestanden . Selecteer dit bestand om een voorbeeld van het bestand te bekijken en kijk welke afhankelijkheden het aangeeft. De inhoud ziet er als volgt uit:

    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 Azure Machine Learning-terminal om een nieuwe Jupyter-kernel te maken op basis van het bestand workstation_env.yml .

    1. Selecteer Terminal om een terminalvenster te openen. U kunt de terminal ook openen vanaf de linkeropdrachtbalk:

      Screenshot shows open terminal tool in notebook toolbar.

    2. Als het rekenproces is gestopt, selecteert u Rekenproces starten en wacht u totdat het wordt uitgevoerd.

      Screenshot shows how to start compute if it's stopped.

    3. Zodra de berekening wordt uitgevoerd, ziet u een welkomstbericht in de terminal en kunt u beginnen met het typen van opdrachten.

    4. Bekijk uw huidige Conda-omgevingen. De actieve omgeving is gemarkeerd met een *.

      conda env list
      
    5. Als u een submap voor deze zelfstudie hebt gemaakt, cd gaat u nu naar die map.

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

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

       conda activate workstation_env
      
    8. Controleer of de juiste omgeving actief is en zoek opnieuw naar de omgeving die is gemarkeerd met een *.

      conda env list
      
    9. Maak een nieuwe Jupyter-kernel op basis van uw actieve omgeving.

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

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

Een notebook maken

  1. Selecteer Bestanden toevoegen en kies Nieuw bestand maken.

    Screenshot: Create new file.

  2. Geef uw nieuwe notebook de naam develop-tutorial.ipynb (of voer de gewenste naam in).

  3. Als het rekenproces is gestopt, selecteert u Rekenproces starten en wacht u totdat het wordt uitgevoerd.

    Screenshot shows how to start compute if it's stopped.

  4. U ziet dat het notebook is verbonden met de standaardkernel in de rechterbovenhoek. Schakel over naar de zelfstudiewerkstation-env-kernel als u de kernel hebt gemaakt.

Een trainingsscript ontwikkelen

In deze sectie ontwikkelt u een Python-trainingsscript waarmee standaardbetalingen van creditcards worden voorspeld met behulp van de voorbereide test- en trainingsgegevenssets uit de UCI-gegevensset.

Deze code wordt gebruikt sklearn voor training en MLflow voor het vastleggen van de 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 dit 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. De gegevens voorbereiden op 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 automatisch in te loggen, MLflowzodat u de metrische gegevens en resultaten kunt bijhouden. Met de iteratieve aard van modelontwikkeling MLflow kunt u modelparameters en resultaten vastleggen. Raadpleeg deze 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. U krijgt nog steeds alle resultaten die u nodig hebt.

Herhalen

Nu u modelresultaten hebt, kunt u iets wijzigen en het opnieuw proberen. 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. U krijgt nog steeds alle resultaten die u nodig hebt.

Resultaten onderzoeken

Nu u twee verschillende modellen hebt geprobeerd, gebruikt u de resultaten die zijn bijgehouden om MLFfow 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 te kijken naar de taken die zijn gemaakt door MLflow.

  1. Selecteer Taken in het linkernavigatievenster.

    Screenshot shows how to select Jobs in the navigation.

  2. Selecteer de koppeling voor Ontwikkelen in de cloudzelfstudie.

  3. Er worden twee verschillende taken weergegeven, één voor elk van de modellen die u hebt geprobeerd. Deze namen worden automatisch gegenereerd. Wanneer u de muisaanwijzer op een naam plaatst, gebruikt u het potloodhulpmiddel naast de naam als u de naam ervan wilt wijzigen.

  4. Selecteer de koppeling voor de eerste taak. De naam wordt bovenaan weergegeven. U kunt de naam hier ook wijzigen met het potloodhulpmiddel.

  5. Op de pagina ziet u details van de taak, zoals eigenschappen, uitvoer, tags en parameters. Onder Tags ziet u de estimator_name, waarin het type model wordt beschreven.

  6. Selecteer het tabblad Metrische gegevens om de metrische gegevens weer te geven die zijn vastgelegd door MLflow. (Verwacht dat uw resultaten verschillen, omdat u een andere trainingsset hebt.)

    Screenshot shows metrics for a job.

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

    Screenshot shows images for a job.

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

Een Python-script maken

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

  1. Selecteer het menu op de werkbalk van het notitieblok.

  2. Selecteer Exporteren als> Python.

    Screenshot shows exporting a Python file from the notebook.

  3. Geef het bestand een naam train.py.

  4. Bekijk dit bestand en verwijder de code die u niet wilt gebruiken 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 automatisch wordt aangemeld (mlflow.sklearn.autolog()).
    • U kunt de automatisch gegenereerde opmerkingen verwijderen en meer van uw eigen opmerkingen toevoegen.
    • Wanneer u het Python-script interactief uitvoert (in een terminal of notebook), kunt u de regel behouden waarmee de naam van het experiment (mlflow.set_experiment("Develop on cloud tutorial")) wordt gedefinieerd. Of geef het een andere naam om het te zien als een andere vermelding in de sectie Taken . Maar wanneer u het script voorbereidt op een trainingstaak, werkt die regel niet 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()) ook niet nodig (ze hebben geen effect), maar kunnen desgewenst overblijven.
  5. 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 meer schaalbare manier kunt uitvoeren op krachtigere rekenresources.

  1. Selecteer aan de linkerkant Terminal openen om een terminalvenster te openen.

    Screenshot shows how to open a terminal window.

  2. Bekijk uw huidige Conda-omgevingen. De actieve omgeving is gemarkeerd met een *.

    conda env list
    
  3. Als u een nieuwe kernel hebt gemaakt, activeert u deze nu:

    conda activate workstation_env
    
  4. Als u een submap voor deze zelfstudie hebt gemaakt, cd gaat u nu naar die map.

  5. Voer uw trainingsscript uit.

    python train.py
    

Notitie

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

Scriptresultaten onderzoeken

Ga terug naar Taken om de resultaten van uw trainingsscript te bekijken. Houd er rekening mee dat de trainingsgegevens bij elke splitsing veranderen, zodat de resultaten ook verschillen tussen uitvoeringen.

Resources opschonen

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

Rekenproces stoppen

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

  1. Selecteer Compute in het linkernavigatiegebied in de studio.
  2. Selecteer op de bovenste tabbladen Rekeninstanties
  3. Selecteer het rekenproces in de lijst.
  4. Selecteer Stoppen op de bovenste werkbalk.

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. Selecteer Resourcegroepen links in Azure Portal.

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

  3. Selecteer Resourcegroep verwijderen.

    Screenshot of the selections to delete a resource group in the Azure portal.

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

Volgende stappen

Meer informatie over:

In deze zelfstudie hebt u de vroege stappen getoond 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: