Zelfstudie: Aan de slag met een Python-script in Azure Machine Learning (deel 1 van 3)

In deze zelfstudie gaat u uw eerste Python-script in de cloud uitvoeren met Azure Machine Learning. Deze zelfstudie is deel 1 van een driedelige zelfstudiereeks.

In deze zelfstudie wordt de complexiteit vermeden van het trainen van machine learning model. U gaat een Python Hallo wereld script uitvoeren in de cloud. U leert hoe een besturingsscript wordt gebruikt voor het configureren en maken van een run in Azure Machine Learning.

In deze zelfstudie leert u het volgende:

  • Een lokaal 'Hallo wereld'-script maken en Python-script.
  • Een Python-besturingsscript maken om 'Hallo wereld' te verzenden naar Azure Machine Learning.
  • Inzicht krijgen in de Azure Machine Learning-concepten in het besturingsscript
  • Het 'Hallo wereld'-script verzenden en uitvoeren.
  • De code-uitvoer weergeven in de cloud.

Vereisten

  • Quickstart: Stel uw werkruimte in om aan de slag te gaan met Azure Machine Learning om een werkruimte, reken exemplaar en rekencluster te maken voor gebruik in deze reeks zelfstudies.

Een Python-script maken en uitvoeren

In deze zelfstudie wordt het reken-exemplaar gebruikt als uw ontwikkelcomputer. Maak eerst een paar mappen en het script:

  1. Meld u aan bij Azure Machine Learning Studio en selecteer uw werkruimte als u hier om wordt gevraagd.
  2. Selecteer aan de linkerkant Notebooks
  3. Selecteer in de werkbalk Bestanden + de optie en selecteer vervolgens Nieuwe map maken. Schermopname van het maken van een nieuw hulpprogramma voor mappen op de werkbalk.
  4. Noem de map get-started.
  5. Gebruik rechts van de mapnaam de ... om een andere map te maken onder aan de slag. Schermopname van het maken van een submapmenu.
  6. Noem de nieuwe map src. Gebruik de koppeling Locatie bewerken als de bestandslocatie niet juist is.
  7. Gebruik rechts van de map src de ... om een nieuw bestand te maken in de map src.
  8. Noem uw bestand hello.py. Schakel het bestandstype over naar Python (.py)*.

Kopieer deze code naar uw bestand:

# src/hello.py
print("Hello world!")

De structuur van uw projectmap ziet er nu als volgende uit:

Mapstructuur toont hello.py in de submap src.

Uw script testen

U kunt uw code lokaal uitvoeren, wat in dit geval betekent op de reken-instantie. Code lokaal uitvoeren biedt het voordeel van interactieve foutopsporing.

Als u uw reken-exemplaar eerder hebt gestopt, start u deze nu met het rekenhulpprogramma Starten rechts van de vervolgkeuzekeuze selecteren. Wacht ongeveer een minuut totdat de status is gewijzigd in Wordt uitgevoerd.

Schermopname van het starten van de reken-instantie als deze is gestopt

Selecteer Script opslaan en uitvoeren in de terminal om het script uit te voeren.

Schermopname van het opslaan en uitvoeren van een script in het terminalhulpprogramma op de werkbalk

U ziet de uitvoer van het script in het terminalvenster dat wordt geopend. Sluit het tabblad en selecteer Beëindigen om de sessie te sluiten.

Een besturingsscript maken

Met een besturingsscript kunt u uw hello.py script uitvoeren op verschillende rekenbronnen. Met het besturingsscript kunt u bepalen hoe en waar uw machine learning-code wordt uitgevoerd.

Selecteer de map ... aan het einde van de map Aan de slag om een nieuw bestand te maken. Maak een Python-bestand met run-hello.py en kopieer/plak de volgende code in dat bestand:

# get-started/run-hello.py
from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig

ws = Workspace.from_config()
experiment = Experiment(workspace=ws, name='day1-experiment-hello')

config = ScriptRunConfig(source_directory='./src', script='hello.py', compute_target='cpu-cluster')

run = experiment.submit(config)
aml_url = run.get_portal_url()
print(aml_url)

Tip

Als u een andere naam hebt gebruikt bij het maken van uw rekencluster, moet u ook de naam in de code compute_target='cpu-cluster' aanpassen.

De code begrijpen

Hier volgt een beschrijving van hoe het besturingsscript werkt:

ws = Workspace.from_config()

Werkruimte maakt verbinding met uw Azure Machine Learning-werkruimte, zodat u kunt communiceren met uw Azure Machine Learning-resources.

experiment = Experiment( ... )

Experiment biedt een eenvoudige manier om meerdere uitvoeringen onder één naam te organiseren. Later kunt u zien hoe experimenten het eenvoudig maken om metrische gegevens te vergelijken tussen tientallen uitvoeringen.

config = ScriptRunConfig( ... )

Met ScriptRunConfig wordt uw hello.py-code ingepakt en doorgegeven aan uw werkruimte. Zoals de naam suggereert, kunt u deze klasse gebruiken om te configureren hoe u wilt dat uw script wordt uitgevoerd in Azure Machine Learning. Het specificeert ook op welk rekendoel het script wordt uitgevoerd. In deze code is het doel het rekencluster dat u hebt gemaakt in de installatiezelfstudie.

run = experiment.submit(config)

Hiermee wordt het script verzonden. Deze inzending wordt een uitvoering genoemd. Een uitvoering bevat één uitvoering van uw code. Gebruik een uitvoering om de voortgang van het script te bewaken, de uitvoer vast te leggen, de resultaten te analyseren, metrische gegevens te visualiseren en meer.

aml_url = run.get_portal_url()

Het run-object biedt een ingang voor de uitvoering van uw code. Bewaak de voortgang vanuit de Azure Machine Learning Studio met de URL die wordt afgedrukt vanuit het Python-script.

Uw code verzenden en uitvoeren in de cloud

  1. Selecteer Script opslaan en uitvoeren in de terminal om uw besturingsscript uit te voeren, dat op zijn beurt wordt uitgevoerd op het rekencluster dat u hebt gemaakt in de hello.py installatiezelfstudie.

  2. In de terminal wordt u mogelijk gevraagd om u aan te melden voor verificatie. Kopieer de code en volg de koppeling om deze stap te voltooien.

  3. Nadat u bent geverifieerd, ziet u een koppeling in de terminal. Selecteer de koppeling om de run te bekijken.

    Notitie

    Mogelijk ziet u enkele waarschuwingen die beginnen met Fout tijdens het laden azureml_run_type_providers.... U kunt deze waarschuwingen negeren. Gebruik de koppeling onder aan deze waarschuwingen om uw uitvoer weer te geven.

De uitvoer weergeven

  1. Op de pagina die wordt geopend, ziet u de status van de run.
  2. Wanneer de status van de run Voltooid is, selecteert u Uitvoer en logboeken boven aan de pagina.
  3. Selecteer 70_driver_log.txt om de uitvoer van uw run weer te geven.

Uw code bewaken in de cloud in de studio

De uitvoer uit het script bevat een koppeling naar de studio die er ongeveer als volgt uitziet: https://ml.azure.com/experiments/hello-world/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name>.

Volg de koppeling. In eerste instantie ziet u de status In de wachtrij of Voorbereiden. De allereerste uitvoering duurt 5-10 minuten. Dit komt doordat het volgende gebeurt:

  • Er wordt een Docker-installatiekopie gemaakt in de cloud
  • De grootte van het berekeningscluster wordt gewijzigd van 0 naar 1 knooppunt
  • De Docker-installatiekopie wordt gedownload naar de berekening.

Volgende uitvoeringen verlopen veel sneller (~15 seconden), omdat de Docker-installatiekopie wordt opgeslagen in de cache van het rekenknooppunt. U kunt dit testen door de onderstaande code opnieuw te verzenden nadat de eerste uitvoering is voltooid.

Wacht ongeveer 10 minuten. U ziet een bericht dat de run is voltooid. Gebruik vervolgens Vernieuwen om de status te wijzigen in Voltooid. Als de taak is voltooid, gaat u naar het tabblad Uitvoer en logboeken. Hier ziet u een bestand 70_driver_log.txt, dat er als volgt uitziet:

 1: [2020-08-04T22:15:44.407305] Entering context manager injector.
 2: [context_manager_injector.py] Command line Options: Namespace(inject=['ProjectPythonPath:context_managers.ProjectPythonPath', 'RunHistory:context_managers.RunHistory', 'TrackUserError:context_managers.TrackUserError', 'UserExceptions:context_managers.UserExceptions'], invocation=['hello.py'])
 3: Starting the daemon thread to refresh tokens in background for process with pid = 31263
 4: Entering Run History Context Manager.
 5: Preparing to call script [ hello.py ] with arguments: []
 6: After variable expansion, calling script [ hello.py ] with arguments: []
 7:
 8: Hello world!
 9: Starting the daemon thread to refresh tokens in background for process with pid = 31263
10:
11:
12: The experiment completed successfully. Finalizing run...
13: Logging experiment finalizing status in history service.
14: [2020-08-04T22:15:46.541334] TimeoutHandler __init__
15: [2020-08-04T22:15:46.541396] TimeoutHandler __enter__
16: Cleaning up all outstanding Run operations, waiting 300.0 seconds
17: 1 items cleaning up...
18: Cleanup took 0.1812913417816162 seconds
19: [2020-08-04T22:15:47.040203] TimeoutHandler __exit__

Op regel 8 ziet u de 'Hallo wereld!' uitvoer.

Het 70_driver_log.txt-bestand bevat de standaarduitvoer van een uitvoering. Dit bestand kan handig zijn bij het opsporen van fouten op externe uitvoeringen in de cloud.

Volgende stappen

In deze zelfstudie hebt u een eenvoudig 'Hallo wereld'-script gemaakt en dit uitgevoerd in Azure. U hebt gezien hoe u verbinding maakt met uw Azure Machine Learning-werkruimte, een experiment maakt en uw hello.py-code naar de cloud verzendt.

In de volgende zelfstudie maakt u gebruik van de opgedane kennis en voert u iets interessanters uit dan print("Hello world!").

Notitie

Als u de reeks zelfstudies nu wilt voltooien en niet wilt doorgaan met de volgende stap, moet u uw resources opschonen