Delen via


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

VAN TOEPASSING OP:Python SDK azureml v1

In deze zelfstudie voert u uw eerste Python-script uit in de cloud met Azure Machine Learning. Deze zelfstudie is deel 1 van een driedelige reeks zelfstudies.

In deze zelfstudie voorkomt u de complexiteit van het trainen van een machine learning-model. U voert een Python-script 'Hallo wereld' uit in de cloud. U leert hoe een besturingsscript wordt gebruikt voor het configureren en maken van een uitvoering in Azure Machine Learning.

In deze zelfstudie leert u het volgende:

  • Een 'Hallo wereld!' maken en uitvoeren Python-script.
  • Maak een Python-besturingsscript om 'Hallo wereld!' in te dienen bij Azure Machine Learning.
  • Inzicht krijgen in de Azure Machine Learning-concepten in het besturingsscript
  • Verzend het script 'Hallo wereld!' en voer het uit.
  • De code-uitvoer weergeven in de cloud.

Vereisten

Een Python-script maken en uitvoeren

In deze zelfstudie wordt het rekenproces gebruikt als uw ontwikkelcomputer. Maak eerst enkele mappen en het script:

  1. Meld u aan bij de Azure Machine Learning-studio en selecteer uw werkruimte als u hierom wordt gevraagd.
  2. Selecteer aan de linkerkant Notitieblokken
  3. Selecteer in de werkbalk Bestanden de optie +en selecteer vervolgens Nieuwe map maken. Schermopname van het maken van een nieuw maphulpprogramma op de werkbalk.
  4. Geef de map de naam Aan de slag.
  5. Gebruik rechts van de mapnaam de ... om een andere map te maken onder aan de slag. Schermopname van het menu Een submap maken.
  6. Geef de nieuwe map de naam 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. Geef het bestand de naam hello.py. Schakel het bestandstype over naar Python (.py)*.

Kopieer deze code naar uw bestand:

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

De projectmapstructuur ziet er nu als volgt uit:

Mapstructuur toont hello.py in de submap src.

Uw script testen

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

Als u uw rekenproces eerder hebt gestopt, start u het nu met het rekenprogramma starten rechts van de vervolgkeuzelijst Rekenproces starten. Wacht ongeveer een minuut totdat de status is gewijzigd in Actief.

Schermopname van het starten van het rekenproces als deze is gestopt

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

Schermopname van het opslaan en uitvoeren van het 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 controlescript kunt u uw hello.py script uitvoeren op verschillende rekenresources. Met het besturingsscript kunt u bepalen hoe en waar uw machine learning-code wordt uitgevoerd.

Selecteer de ... aan het einde van de map Aan de slag om een nieuw bestand te maken. Maak een Python-bestand met de naam 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 taken onder één naam te organiseren. Later ziet u hoe u met behulp van experimenten eenvoudig metrische gegevens kunt vergelijken tussen tientallen taken.

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. In v2 is de naam gewijzigd in een taak. Een uitvoering/taak omvat één uitvoering van uw code. Gebruik een taak 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 in de cloud verzenden en uitvoeren

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

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

  3. Zodra u bent geverifieerd, ziet u een koppeling in de terminal. Selecteer de koppeling om de taak weer te geven.

    Notitie

    Tijdens het laden van azureml_run_type_providers ziet u mogelijk enkele waarschuwingen die beginnen met Fout. U kunt deze waarschuwingen negeren. Gebruik de koppeling onderaan deze waarschuwingen om de uitvoer weer te geven.

De uitvoer weergeven

  1. Op de pagina die wordt geopend, ziet u de taakstatus.
  2. Wanneer de status van de taak Voltooid is, selecteert u Uitvoer + logboeken bovenaan de pagina.
  3. Selecteer std_log.txt om de uitvoer van uw taak 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 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 taken zijn veel sneller (~15 seconden) omdat de docker-installatiekopieën op de rekenkracht in de cache worden opgeslagen. U kunt dit testen door de onderstaande code opnieuw in te dienen nadat de eerste taak is voltooid.

Wacht ongeveer 10 minuten. U ziet een bericht dat de taak 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 std_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 Job 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 job...
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 Job 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 uitvoer 'Hallo wereld!'.

Het 70_driver_log.txt bestand bevat de standaarduitvoer van een taak. Dit bestand kan handig zijn bij het opsporen van fouten in externe taken in de cloud.

Volgende stappen

In deze zelfstudie hebt u een eenvoudig 'Hallo wereld!'-script 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