Share via


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 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 compute

Met de sectie Compute in uw werkruimte kunt u rekenresources maken. 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 linkernavigatievenster.
  4. Als u geen rekenproces hebt, ziet u nieuw in het midden van het scherm. 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

Zodra u een actief rekenproces hebt, kunt u het op verschillende manieren openen. In deze zelfstudie ziet u hoe u het rekenproces van VS Code gebruikt. VS Code biedt u een volledige IDE (Integrated Development Environment) met de kracht van Azure Machine Learning-resources.

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 pop-upvenster waarin u wordt gevraagd of u de toepassing wilt openen.

Schermopname van koppelingen voor het starten van VS Code (web) of (desktop).

Dit VS 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 (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.

    2. Sleep het bestand van uw computer naar het VS Code-venster. Het bestand wordt geüpload naar uw werkruimte.

    3. Verplaats het bestand onder uw gebruikersnaammap.

      Schermopname van het uploaden van een bestand.

    4. Selecteer dit bestand om een voorbeeld van het bestand te bekijken en bekijk welke afhankelijkheden het opgeeft. 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 terminal om een nieuwe Jupyter-kernel te maken op basis van het workstation_env.yml-bestand .

    1. Selecteer Terminal > New Terminal in de bovenste menubalk.

      Schermopname van het geopende terminalhulpprogramma op de werkbalk van het notitieblok.

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

      conda env list
      
    3. cd naar de map waar u het workstation_env.yml-bestand hebt geüpload. Als u deze bijvoorbeeld hebt geüpload naar uw gebruikersmap:

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

      ls
      
    5. 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
      
    6. Activeer de nieuwe omgeving.

      conda activate workstation_env
      

      Notitie

      Als u een CommandNotFoundError ziet, volgt u de instructies voor het uitvoeren conda init bash, sluit u de terminal en opent u een nieuwe. Voer vervolgens de conda activate workstation_env opdracht opnieuw uit.

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

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

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    9. 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 de bovenste menubalk.
  2. Geef het nieuwe bestand de naam develop-tutorial.ipynb (of voer de gewenste naam in). Zorg ervoor dat u de .ipynb-extensie gebruikt.

De kernel instellen

  1. Selecteer in de rechterbovenhoek de optie Kernel selecteren.
  2. Selecteer een Azure ML-rekenproces (computeinstance-name).
  3. Selecteer de kernel die u hebt gemaakt, Zelfstudie Workstation Env. Als u dit niet ziet, selecteert u het hulpprogramma Vernieuwen in de rechterbovenhoek.

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. Ga terug naar uw werkruimte in de Azure Machine Learning-studio.

  2. Selecteer Taken in het linkernavigatievenster.

    Schermopname laat zien hoe u Taken selecteert in de navigatie.

  3. Selecteer de koppeling voor Ontwikkelen in de cloudzelfstudie.

  4. 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.

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

  6. 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.

  7. 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.)

    Schermopname met metrische gegevens voor een taak.

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

    Schermopname van afbeeldingen voor een taak.

  9. 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. Klik in het VS Code-venster met de rechtermuisknop op de bestandsnaam van het notitieblok en selecteer Notebook importeren in script.

  2. Gebruik het menu Bestand > opslaan om dit nieuwe scriptbestand op te slaan. Noem het train.py.

  3. 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()).
    • 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. 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, is die regel niet van toepassing 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.
  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 meer 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 deze en selecteer vervolgens de omgeving in het midden van het scherm.

    Schermopname van het selecteren van de nieuwe omgeving.

  2. Voer nu het Python-script uit. Gebruik het hulpprogramma Python-bestand uitvoeren rechtsboven.

    Schermopname van het hulpprogramma Python-bestand uitvoeren in de rechterbovenhoek van het scherm.

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 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 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. 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

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: