Starta, övervaka och spåra körningshistorik
GÄLLER FÖR: Python SDK azureml v1
GÄLLER FÖR: Azure CLI ml-tillägget v1
Azure Machine Learning SDK för Python v1 och Machine Learning CLI tillhandahåller olika metoder för att övervaka, organisera och spåra dina körningar för träning och experimentering. Din ML-körningshistorik är en viktig del av en förklarande och repeterbar ML-utvecklingsprocess.
Dricks
Information om hur du använder studio finns i Spåra, övervaka och analysera körningar med studio.
Om du använder Azure Machine Learning SDK v2 kan du läsa följande artiklar:
Den här artikeln visar hur du utför följande uppgifter:
- Övervaka körningsprestanda.
- Tagga och hitta körningar.
- Kör sökningen över körningshistoriken.
- Avbryt eller misslyckas.
- Skapa underordnade körningar.
- Övervaka körningsstatusen via e-postavisering.
Dricks
Information om hur du övervakar Azure Machine Learning-tjänsten och associerade Azure-tjänster finns i Övervaka Azure Machine Learning. Om du letar efter information om övervakningsmodeller som distribuerats som webbtjänster kan du läsa Samla in modelldata och Övervaka med Application Insights.
Förutsättningar
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 av Azure Machine Learning idag.
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 :t finns i Installera eller uppdatera SDK:t.
Om du vill kontrollera din version av Azure Machine Learning SDK använder du följande kod:
print(azureml.core.VERSION)
Azure CLI- och CLI-tillägget för Azure Machine Learning.
Viktigt!
Några av Azure CLI-kommandona i den här artikeln använder
azure-cli-ml
tillägget , eller v1, för Azure Machine Learning. Stödet för v1-tillägget upphör den 30 september 2025. Du kommer att kunna installera och använda v1-tillägget fram till det datumet.Vi rekommenderar att du övergår till
ml
tillägget , eller v2, före den 30 september 2025. Mer information om v2-tillägget finns i Azure ML CLI-tillägget och Python SDK v2.
Övervaka körningsprestanda
Starta en körning och dess loggningsprocess
GÄLLER FÖR: Python SDK azureml v1
Konfigurera experimentet genom att importera klasserna Workspace, Experiment, Run och ScriptRunConfig från azureml.core-paketet .
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
GÄLLER FÖR: Python SDK azureml v1
Hämta status för en körning med
get_status()
-metoden.print(notebook_run.get_status())
Använd metoden för att hämta körnings-ID, körningstid och annan information om körningen
get_details()
.print(notebook_run.get_details())
När körningen
complete()
har slutförts använder du metoden för att markera den som slutförd.notebook_run.complete() print(notebook_run.get_status())
Om du använder Pythons designmönster markeras
with...as
själva körningen automatiskt som slutförd när körningen är utanför omfånget. Du behöver inte markera körningen som slutförd manuellt.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())
Tagga och hitta körningar
I Azure Machine Learning kan du använda egenskaper och taggar för att organisera och fråga efter viktig information.
Lägga till egenskaper och taggar
GÄLLER FÖR: Python SDK azureml v1
Om du vill lägga till sökbara metadata i dina körningar använder du
add_properties()
metoden . Följande kod lägger"author"
till egenskapen till 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 har lagt till
"azureml-user"
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 användarna av experimentet
tag()
använder du 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 dessa taggar 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 mot körningar i ett experiment för att returnera en lista över körningar som matchar specifika egenskaper och taggar.
GÄLLER FÖR: Python SDK azureml v1
list(exp.get_runs(properties={"author":"azureml-user"},tags={"quality":"fantastic run"})) list(exp.get_runs(properties={"author":"azureml-user"},tags="worth another look"))
Avbryt eller misslyckas
Om du märker ett misstag eller om körningen tar för lång tid att slutföra kan du avbryta körningen.
GÄLLER FÖR: Python SDK azureml v1
Om du vill avbryta en körning med hjälp av SDK 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 det felaktiga träningsskriptet användes), kan du använda metoden för att markera den fail()
som misslyckad.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Skapa underordnade körningar
GÄLLER FÖR: Python SDK azureml v1
Skapa underordnade körningar för att gruppera relaterade körningar, till exempel för olika iterationer med hyperparameterjustering.
Kommentar
Underordnade körningar kan bara skapas med hjälp av SDK:et.
I det här kodexemplet används skriptet hello_with_children.py
för att skapa en batch med fem underordnade körningar inifrån en skickad körning med hjälp child_run()
av 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)
Kommentar
När de flyttas från omfånget markeras underordnade körningar automatiskt som slutförda.
Använd metoden för create_children()
att skapa många underordnade körningar effektivt. Eftersom varje skapande resulterar i ett nätverksanrop är det mer effektivt att skapa en batch med körningar än att skapa dem en i taget.
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 annat än att starta underordnade körningar är det fortfarande nödvändigt att skapa hierarkin. Statusen för alla körningar är oberoende: en överordnad "Completed"
kan vara i ett lyckat tillstånd även om en eller flera underordnade 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 konfigurationen när du använder GPU-baserade konfigurationer för dina underordnade. En annan vanlig önskan är att skicka olika argument och data för varje barn. Om du vill anpassa en underordnad körning skapar du ett ScriptRunConfig
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ärrberäkning måste du logga in på arbetsytan i den överordnade körningskoden först. Som standard har körningskontextobjektet i en fjärrkörning inte autentiseringsuppgifter för att skicka underordnade körningar. Använd autentiseringsuppgifterna för tjänstens huvudnamn eller hanterade identitet för att logga in. Mer information om autentisering finns i Konfigurera autentisering.
Koden nedan:
- Hämtar en beräkningsresurs med namnet
"gpu-cluster"
från arbetsytanws
- Itererar över olika argumentvärden som ska skickas till underordnade
ScriptRunConfig
objekt - 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ätverksanrop är det mer effektivt att skapa en batch med körningar än att skapa dem en i taget.
Inom 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
Fråga underordnade körningar
Om du vill köra frågor mot underordnade körningar av en viss överordnad get_children()
, använder du metoden .
Med recursive = True
argumentet kan du köra frågor mot ett kapslat träd med barn och barnbarn.
print(parent_run.get_children())
Logga till överordnad 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 möjligheten för den överordnade 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
Välj fliken Övervaka i det vänstra navigeringsfältet i Azure Portal.
Välj Diagnostikinställningar och välj sedan + Lägg till diagnostikinställning.
I diagnostikinställningen
- under Kategoriinformation väljer du AmlRunStatusChangedEvent.
- I målinformationen väljer du arbetsytan Skicka till Log Analytics och anger arbetsytan Prenumeration och Log Analytics.
Kommentar
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 loggaviseringar med Hjälp av Azure Monitor.
Exempelnotebook-filer
Följande notebook-filer visar begreppen i den här artikeln:
Mer information om loggnings-API:er finns i loggnings-API-notebook-filen.
Mer information om hur du hanterar körningar med Azure Machine Learning SDK finns i notebook-filen 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 Övervaka Azure Machine Learning.