Starta, övervaka och spåra körningshistorik
SDK Azure Machine Learning för Python, Machine Learning CLIoch Azure Machine Learning Studio innehåller olika metoder för att övervaka, organisera och spåra körningar för träning och experimentering. Din ML körningshistorik är en viktig del av en förklarande och repeterbar ML utvecklingsprocess.
Den här artikeln visar hur du utför följande uppgifter:
- Övervaka körningsprestanda.
- Lägg till visningsnamn för körning.
- Skapa en anpassad vy.
- Lägg till en körningsbeskrivning.
- Tagga och hitta körningar.
- Kör en sökning över din körningshistorik.
- Avbryt eller misslyckas körningar.
- Skapa underordnade körningar.
- Övervaka körningsstatusen via e-postavisering.
Tips
Information om hur du övervakar tjänsten Azure Machine Learning och associerade Azure-tjänster finns i Övervaka Azure Machine Learning. Om du letar efter information om övervakningsmodeller som distribueras som webbtjänster kan du se Samla in modelldata och Övervaka med Application Insights.
Krav
Du behöver följande:
En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen Azure Machine Learning idag.
Den Azure Machine Learning SDK för Python (version 1.0.21 eller senare). Information om hur du installerar eller uppdaterar till den senaste versionen av SDK finns i Installera eller uppdatera SDK.
Använd följande kod för att kontrollera Azure Machine Learning SDK-versionen:
print(azureml.core.VERSION)
Övervaka körningsprestanda
Starta en körning och dess loggningsprocess
Konfigurera experimentet genom att importera klasserna Workspace, Experiment, Runoch ScriptRunConfig från paketet azureml.core.
import azureml.core from azureml.core import Workspace, Experiment, Run from azureml.core import ScriptRunConfig ws = Workspace.from_config() exp = Experiment(workspace=ws, name="explore-runs")Starta en körning och dess loggningsprocess med
start_logging()metoden .notebook_run = exp.start_logging() notebook_run.log(name="message", value="Hello from run!")
Övervaka status för en körning
Hämta status för en körning med
get_status()metoden .print(notebook_run.get_status())Om du vill hämta körnings-ID, körningstid och annan information om körningen använder du
get_details()metoden .print(notebook_run.get_details())När körningen är klar använder du metoden
complete()för att markera den som slutförd.notebook_run.complete() print(notebook_run.get_status())Om du använder Pythons
with...asdesignmönster markeras körningen automatiskt som slutförd när körningen ligger utanför omfånget. Du behöver inte manuellt markera körningen som slutförd.with exp.start_logging() as notebook_run: notebook_run.log(name="message", value="Hello from run!") print(notebook_run.get_status()) print(notebook_run.get_status())
Kör visningsnamn
Körningens visningsnamn är ett valfritt och anpassningsbart namn som du kan ange för körningen. Så här redigerar du körningens visningsnamn:
Gå till körningslistan.
Välj körningen för att redigera visningsnamnet på sidan körningsinformation.
Välj knappen Redigera för att redigera körningens visningsnamn.
Anpassad vy
Så här visar du dina körningar i Studio:
Gå till fliken Experiment.
Välj antingen Alla experiment för att visa alla körningar i ett experiment eller välj Alla körningar för att visa alla körningar som skickats i arbetsytan.
På sidan Alla körningar kan du filtrera körningslistan efter taggar, experiment, beräkningsmål med mera för att bättre organisera och begränsa ditt arbete.
Gör anpassningar på sidan genom att välja körningar för att jämföra, lägga till diagram eller tillämpa filter. Dessa ändringar kan sparas som en anpassad vy så att du enkelt kan återgå till ditt arbete. Användare med arbetsytebehörigheter kan redigera eller visa den anpassade vyn. Dela även den anpassade vyn med gruppmedlemmar för förbättrat samarbete genom att välja Dela vy.
Om du vill visa körningsloggarna väljer du en specifik körning. På fliken Utdata + loggar hittar du diagnostik- och felloggar för körningen.
Körningsbeskrivning
En körningsbeskrivning kan läggas till i en körning för att ge körningen mer kontext och information. Du kan också söka efter dessa beskrivningar från körningslistan och lägga till körningsbeskrivningen som en kolumn i körningslistan.
Gå till sidan Körningsinformation för körningen och välj redigerings- eller pennikonen för att lägga till, redigera eller ta bort beskrivningar för körningen. Spara ändringarna i körningslistan genom att spara ändringarna i din befintliga anpassade vy eller en ny anpassad vy. Markdown-format stöds för körningsbeskrivningar, vilket gör att bilder kan bäddas in och djuplänkas enligt nedan.
Tagga och hitta körningar
I Azure Machine Learning kan du använda egenskaper och taggar för att organisera och fråga körningar efter viktig information.
Lägga till egenskaper och taggar
Om du vill lägga till sökbara metadata i dina körningar använder du
add_properties()metoden . Följande kod lägger till exempel till"author"egenskapen i körningen:local_run.add_properties({"author":"azureml-user"}) print(local_run.get_properties())Egenskaper är oföränderliga, så de skapar en permanent post i granskningssyfte. Följande kodexempel resulterar i ett fel, eftersom vi redan
"azureml-user"har lagt till som"author"egenskapsvärde i föregående kod:try: local_run.add_properties({"author":"different-user"}) except Exception as e: print(e)Till skillnad från egenskaper är taggar föränderliga. Om du vill lägga till sökbar och meningsfull information för experimentets användare använder du
tag()metoden .local_run.tag("quality", "great run") print(local_run.get_tags()) local_run.tag("quality", "fantastic run") print(local_run.get_tags())Du kan också lägga till enkla strängtaggar. När taggarna visas i taggordlistan som nycklar har de värdet
None.local_run.tag("worth another look") print(local_run.get_tags())Frågeegenskaper och taggar
Du kan köra frågor i ett experiment för att returnera en lista över körningar som matchar specifika egenskaper och taggar.
Avbryta eller misslyckas körningar
Om du upptäcker ett misstag eller om körningen tar för lång tid att slutföras kan du avbryta körningen.
Om du vill avbryta en körning med hjälp av SDK:n använder du cancel() metoden :
src = ScriptRunConfig(source_directory='.', script='hello_with_delay.py')
local_run = exp.submit(src)
print(local_run.get_status())
local_run.cancel()
print(local_run.get_status())
Om körningen är klar, men den innehåller ett fel (till exempel att det felaktiga träningsskriptet har använts), kan du använda metoden för fail() att markera den som misslyckad.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Skapa underordnade körningar
Skapa underordnade körningar för att gruppera relaterade körningar, till exempel för olika iterationer av hyperparametrar.
Anteckning
Underordnade körningar kan bara skapas med hjälp av SDK: n.
Det här kodexeskriptet använder skriptet för att skapa en batch med hello_with_children.py fem underordnade körningar inifrån en skickad körning med hjälp av child_run() metoden :
!more hello_with_children.py
src = ScriptRunConfig(source_directory='.', script='hello_with_children.py')
local_run = exp.submit(src)
local_run.wait_for_completion(show_output=True)
print(local_run.get_status())
with exp.start_logging() as parent_run:
for c,count in enumerate(range(5)):
with parent_run.child_run() as child:
child.log(name="Hello from child run", value=c)
Anteckning
När de flyttas utanför omfånget markeras underordnade körningar automatiskt som slutförda.
Om du vill skapa många underordnade körningar effektivt använder du create_children() metoden . Eftersom varje skapande resulterar i ett nätverks-anrop är det effektivare att skapa en batch med körningar än att skapa dem en i stället för en.
Skicka underordnade körningar
Underordnade körningar kan också skickas från en överordnad körning. På så sätt kan du skapa hierarkier med överordnade och underordnade körningar. Du kan inte skapa en överordnad underordnad körning: även om den överordnade körningen inte gör något, men startar underordnade körningar, är det fortfarande nödvändigt att skapa hierarkin. Statusen för alla körningar är oberoende: ett överordnat läge kan vara i ett lyckat tillstånd även om en eller flera underordnade "Completed" körningar avbröts eller misslyckades.
Du kanske vill att dina underordnade körningar ska använda en annan körningskonfiguration än den överordnade körningen. Du kan till exempel använda en mindre kraftfull, CPU-baserad konfiguration för den överordnade, när du använder GPU-baserade konfigurationer för dina underordnade konfigurationer. En annan vanlig önskemål är att skicka varje underordnade argument och data. Om du vill anpassa en underordnad körning skapar du ScriptRunConfig ett -objekt för den underordnade körningen.
Viktigt
Om du vill skicka en underordnad körning från en överordnad körning på en fjärrbearbetning måste du först logga in på arbetsytan i den överordnade körningskoden. Som standard har körningskontextobjektet i en fjärrkörning inga autentiseringsuppgifter för att skicka underordnade körningar. Använd tjänstens huvudnamn eller autentiseringsuppgifter för hanterad identitet för att logga in. Mer information om autentisering finns i Konfigurera autentisering.
Koden nedan:
- Hämtar en beräkningsresurs med
"gpu-cluster"namnet från arbetsytanws - Itererar över olika argumentvärden som ska skickas till underordnade
ScriptRunConfigobjekt - Skapar och skickar en ny underordnad körning med hjälp av den anpassade beräkningsresursen och argumentet
- Blockerar tills alla underordnade körningar har slutförts
# parent.py
# This script controls the launching of child scripts
from azureml.core import Run, ScriptRunConfig
compute_target = ws.compute_targets["gpu-cluster"]
run = Run.get_context()
child_args = ['Apple', 'Banana', 'Orange']
for arg in child_args:
run.log('Status', f'Launching {arg}')
child_config = ScriptRunConfig(source_directory=".", script='child.py', arguments=['--fruit', arg], compute_target=compute_target)
# Starts the run asynchronously
run.submit_child(child_config)
# Experiment will "complete" successfully at this point.
# Instead of returning immediately, block until child runs complete
for child in run.get_children():
child.wait_for_completion()
Om du vill skapa många underordnade körningar med identiska konfigurationer, argument och indata effektivt använder du create_children() metoden . Eftersom varje skapande resulterar i ett nätverks-anrop är det effektivare att skapa en batch med körningar än att skapa dem en i stället för en.
I en underordnad körning kan du visa det överordnade körnings-ID:t:
## In child run script
child_run = Run.get_context()
child_run.parent.id
Köra frågor mot underordnade körningar
Om du vill fråga efter underordnade körningar av en specifik överordnad använder du get_children() metoden . Med recursive = True argumentet kan du fråga ett kapslat träd med barn och grandchildren.
print(parent_run.get_children())
Logga in på överordnad körning eller rotkörning
Du kan använda fältet Run.parent för att komma åt körningen som startade den aktuella underordnade körningen. Ett vanligt användningsfall för användning Run.parent är att kombinera loggresultat på en enda plats. Underordnade körningar körs asynkront och det finns ingen garanti för ordning eller synkronisering utöver den överordnade körningens möjlighet att vänta tills dess underordnade körningar har slutförts.
# in child (or even grandchild) run
def root_run(self : Run) -> Run :
if self.parent is None :
return self
return root_run(self.parent)
current_child_run = Run.get_context()
root_run(current_child_run).log("MyMetric", f"Data from child run {current_child_run.id}")
Övervaka körningsstatusen via e-postavisering
I det Azure Portalnavigeringsfältet i det vänstra navigeringsfältet väljer du fliken Övervaka.
Välj Diagnostikinställningar och sedan + Lägg till diagnostikinställning.

I diagnostikinställningen
- under Kategoriinformation väljer du AmlRunStatusChangedEvent.
- I Målinformation väljer du arbetsytan Skicka till Log Analytics och anger prenumerationen och Log Analytics-arbetsytan.
Anteckning
Azure Log Analytics-arbetsytan är en annan typ av Azure-resurs än Azure Machine Learning-tjänstens arbetsyta. Om det inte finns några alternativ i listan kan du skapa en Log Analytics-arbetsyta.

På fliken Loggar lägger du till en Ny aviseringsregel.

Se hur du skapar och hanterar logga aviseringar med hjälp av Azure Monitor.
Exempelnotebook-filer
Följande notebook-datorer demonstrerar begreppen i den här artikeln:
Mer information om loggnings-API:er finns i loggnings-API-anteckningsboken.
Mer information om hur du hanterar körningar med Azure Machine Learning SDK finns i anteckningsboken för att hantera körningar.
Nästa steg
- Information om hur du loggar mått för dina experiment finns i Logga mått under träningskörningar.
- Information om hur du övervakar resurser och loggar från Azure Machine Learning finns i Monitoring Azure Machine Learning.