Självstudie: Komma igång med ett Python-skript i Azure Machine Learning (del 1 av 3)
I den här självstudien kör du ditt första Python-skript i molnet med Azure Machine Learning. Den här självstudien är del 1 i en självstudieserie i tre delar.
I den här självstudien undviker du komplexiteten med att träna en maskininlärningsmodell. Du kommer att köra ett "Hello World" Python-skript i molnet. Du får lära dig hur ett kontrollskript används för att konfigurera och skapa en körning i Azure Machine Learning.
I de här självstudierna får du:
- Skapa och kör en "Hello world!" Python-skript.
- Skapa ett Python-kontrollskript för att skicka "Hello world!" för att Azure Machine Learning.
- Förstå de Azure Machine Learning begreppen i kontrollskriptet.
- Skicka och kör "Hello world!" Skript.
- Visa dina kodutdata i molnet.
Förutsättningar
- Slutför snabbstart: Konfigurera din arbetsyta för att komma igång med Azure Machine Learning för att skapa en arbetsyta, en beräkningsinstans och ett beräkningskluster som ska användas i den här självstudieserien.
Skapa och köra ett Python-skript
I den här självstudien används beräkningsinstansen som utvecklingsdator. Skapa först några mappar och skriptet:
- Logga in på Azure Machine Learning Studio och välj din arbetsyta om du uppmanas att göra det.
- Till vänster väljer du Notebooks
- I verktygsfältet Filer väljer du + och sedan Skapa ny mapp.
- Ge mappen namnet get-started.
- Till höger om mappnamnet använder du ... för att skapa en annan mapp under kom igång.
- Ge den nya mappen namnet src. Använd länken Redigera plats om filplatsen inte är korrekt.
- Till höger om mappen src använder du ... för att skapa en ny fil i mappen src.
- Ge filen namnet hello.py. Växla Filtyp till Python (.py)*.
Kopiera den här koden till filen:
# src/hello.py
print("Hello world!")
Projektmappstrukturen kommer nu att se ut så här:
Testa skriptet
Du kan köra koden lokalt, vilket i det här fallet innebär på beräkningsinstansen. Att köra kod lokalt har fördelen med interaktiv felsökning av kod.
Om du tidigare har stoppat beräkningsinstansen startar du den nu med verktyget Starta beräkning till höger om listrutan beräkning. Vänta ungefär en minut för att tillståndet ska ändras till Körs.
Välj Spara och kör skriptet i terminalen för att köra skriptet.
Du ser utdata från skriptet i terminalfönstret som öppnas. Stäng fliken och välj Avsluta för att stänga sessionen.
Skapa ett kontrollskript
Med ett kontrollskript kan du köra skriptet hello.py på olika beräkningsresurser. Du använder kontrollskriptet för att styra hur och var maskininlärningskoden körs.
Välj mappen ... i slutet av mappen kom igång för att skapa en ny fil. Skapa en Python-fil run-hello.py och kopiera/klistra in följande kod i filen:
# 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)
Tips
Om du använde ett annat namn när du skapade beräkningsklustret ska du även justera namnet i compute_target='cpu-cluster' koden.
Förstå koden
Här är en beskrivning av hur kontrollskriptet fungerar:
ws = Workspace.from_config()
Arbetsytan ansluter till Azure Machine Learning arbetsyta så att du kan kommunicera med Azure Machine Learning resurser.
experiment = Experiment( ... )
Experiment ger ett enkelt sätt att organisera flera körningar under ett enda namn. Senare kan du se hur experiment gör det enkelt att jämföra mått mellan dussintals körningar.
config = ScriptRunConfig( ... )
ScriptRunConfig omsluter hello.py koden och skickar den till din arbetsyta. Som namnet antyder kan du använda den här klassen för att konfigurera hur du vill att skriptet ska köras i Azure Machine Learning. Den anger också vilket beräkningsmål skriptet ska köras på. I den här koden är målet det beräkningskluster som du skapade i installationskursen.
run = experiment.submit(config)
Skickar skriptet. Den här överföringen kallas för en körning. En körning kapslar in en enda körning av koden. Använd en körning för att övervaka skriptförloppet, samla in utdata, analysera resultaten, visualisera mått med mera.
aml_url = run.get_portal_url()
-objektet run ger en referens för körningen av din kod. Övervaka förloppet från Azure Machine Learning studio med url:en som skrivs ut från Python-skriptet.
Skicka och köra din kod i molnet
Välj Spara och kör skriptet i terminalen för att köra kontrollskriptet, som i sin tur körs på beräkningsklustret som du skapade i
hello.pyinstallationskursen.I terminalen kan du bli ombedd att logga in för att autentisera. Kopiera koden och följ länken för att slutföra det här steget.
När du har autentiserats visas en länk i terminalen. Välj länken för att visa körningen.
Anteckning
Du kan se några varningar som börjar med Fel vid inläsning av azureml_run_type_providers.... Du kan ignorera dessa varningar. Använd länken längst ned i de här varningarna för att visa dina utdata.
Visa utdata
- På sidan som öppnas visas körningsstatusen.
- När statusen för körningen är Slutförd väljer du Utdata + loggar överst på sidan.
- Välj 70_driver_log.txt för att visa utdata för körningen.
Övervaka din kod i molnet i studio
Utdata från skriptet innehåller en länk till studio som ser ut ungefär så här: https://ml.azure.com/experiments/hello-world/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name> .
Följ länken. Först visas statusen Queued (I kö) eller Preparing (Förbereda). Den allra första körningen tar 5–10 minuter att slutföra. Detta beror på att följande inträffar:
- En Docker-avbildning är inbyggd i molnet
- Beräkningsklustrets storlek ändras från 0 till 1 nod
- Docker-avbildningen laddas ned till beräkningen.
Efterföljande körningar går mycket snabbare (~15 sekunder) eftersom Docker-avbildningen cachelagras på beräkningen. Du kan testa detta genom att skicka koden igen när den första körningen har slutförts.
Vänta i ungefär 10 minuter. Du ser ett meddelande om att körningen har slutförts. Använd sedan Uppdatera för att se statusändringen till Slutfört. När jobbet har slutförts går du till fliken Utdata + loggar. Där kan du se en 70_driver_log.txt fil som ser ut så här:
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__
På rad 8 ser du "Hello world!" Produktionen.
Filen 70_driver_log.txt innehåller standardutdata från en körning. Den här filen kan vara användbar när du felsöker fjärrkörningar i molnet.
Nästa steg
I den här självstudien tog du en enkel "Hello world!" och körde det på Azure. Du har sett hur du ansluter Azure Machine Learning din arbetsyta, skapar ett experiment och skickar hello.py koden till molnet.
I nästa självstudie bygger du vidare på dessa lärdomar genom att köra något mer intressant än print("Hello world!") .
Anteckning
Om du vill slutföra självstudieserien här och inte gå vidare till nästa steg ska du komma ihåg att rensa dina resurser.