De uitvoeringsgeschiedenis starten, bewaken en bijhouden
VAN TOEPASSING OP:Python SDK azureml v1
VAN TOEPASSING OP:Azure CLI ml-extensie v1
De Azure Machine Learning SDK voor Python v1 en Machine Learning CLI bieden verschillende methoden voor het bewaken, organiseren en bijhouden van uw uitvoeringen voor training en experimenten. Uw ML-uitvoeringsgeschiedenis is een belangrijk onderdeel van een verklaarbaar en herhaalbaar ML-ontwikkelingsproces.
Tip
Zie Uitvoeringen bijhouden, bewaken en analyseren met Studio voor meer informatie over het gebruik van Studio.
Als u azure Machine Learning SDK v2 gebruikt, raadpleegt u de volgende artikelen:
In dit artikel wordt beschreven hoe u de volgende taken uitvoert:
- Prestaties van de uitvoering bewaken.
- Uitvoeringen taggen en zoeken.
- Voer de zoekactie uit op uw uitvoeringsgeschiedenis.
- Uitvoeringen annuleren of mislukken.
- Onderliggende uitvoeringen maken.
- Bewaak de uitvoeringsstatus per e-mailmelding.
Tip
Als u op zoek bent naar informatie over het bewaken van de Azure Machine Learning-service en de bijbehorende Azure-services, raadpleegt u Azure Machine Learning bewaken. Als u op zoek bent naar informatie over bewakingsmodellen die zijn geïmplementeerd als webservices, raadpleegt u Modelgegevens verzamelen en Bewaken met Application Insights.
Vereisten
U hebt de volgende items nodig:
Een Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint. Probeer vandaag nog de gratis of betaalde versie van Azure Machine Learning.
De Azure Machine Learning SDK voor Python (versie 1.0.21 of hoger). Zie De SDK installeren of bijwerken om de nieuwste versie van de SDK te installeren of bij te werken.
Gebruik de volgende code om uw versie van de Azure Machine Learning SDK te controleren:
print(azureml.core.VERSION)
De Azure CLI en CLI-extensie voor Azure Machine Learning.
Belangrijk
Sommige Azure CLI-opdrachten in dit artikel maken gebruik van de
azure-cli-ml
extensie , of v1 voor Azure Machine Learning. Ondersteuning voor de v1-extensie eindigt op 30 september 2025. Tot die datum kunt u de extensie v1 installeren en gebruiken.U wordt aangeraden vóór 30 september 2025 over te stappen op de
ml
extensie , of v2. Zie Azure ML CLI-extensie en Python SDK v2 voor meer informatie over de v2-extensie.
Uitvoeringsprestaties bewaken
Een uitvoering en het bijbehorende logboekregistratieproces starten
VAN TOEPASSING OP:Python SDK azureml v1
Stel uw experiment in door de klassen Workspace, Experiment, Run en ScriptRunConfig te importeren uit het pakket 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")
Start een uitvoering en het bijbehorende logboekregistratieproces met de
start_logging()
-methode.notebook_run = exp.start_logging() notebook_run.log(name="message", value="Hello from run!")
De status van een uitvoering bewaken
VAN TOEPASSING OP:Python SDK azureml v1
Haal de status van een uitvoering op met de
get_status()
-methode.print(notebook_run.get_status())
Gebruik de methode om de uitvoerings-id, uitvoeringstijd en andere details over de uitvoering op te
get_details()
halen.print(notebook_run.get_details())
Wanneer de uitvoering is voltooid, gebruikt u de
complete()
methode om deze als voltooid te markeren.notebook_run.complete() print(notebook_run.get_status())
Als u het ontwerppatroon van
with...as
Python gebruikt, wordt de uitvoering automatisch gemarkeerd als voltooid wanneer de uitvoering buiten het bereik valt. U hoeft de uitvoering niet handmatig als voltooid te markeren.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())
Uitvoeringen taggen en zoeken
In Azure Machine Learning kunt u eigenschappen en tags gebruiken om uw uitvoeringen te ordenen en er query's op uit te voeren voor belangrijke informatie.
Eigenschappen en tags toevoegen
VAN TOEPASSING OP:Python SDK azureml v1
Gebruik de
add_properties()
methode om doorzoekbare metagegevens toe te voegen aan uw uitvoeringen. Met de volgende code wordt bijvoorbeeld de"author"
eigenschap toegevoegd aan de uitvoering:local_run.add_properties({"author":"azureml-user"}) print(local_run.get_properties())
Eigenschappen zijn onveranderbaar, dus ze maken een permanente record voor controledoeleinden. Het volgende codevoorbeeld resulteert in een fout, omdat we al als de
"author"
eigenschapswaarde in de voorgaande code hebben toegevoegd"azureml-user"
:try: local_run.add_properties({"author":"different-user"}) except Exception as e: print(e)
In tegenstelling tot eigenschappen zijn tags veranderlijk. Gebruik de
tag()
methode om doorzoekbare en zinvolle informatie toe te voegen voor gebruikers van uw experiment.local_run.tag("quality", "great run") print(local_run.get_tags()) local_run.tag("quality", "fantastic run") print(local_run.get_tags())
U kunt ook eenvoudige tekenreekstags toevoegen. Wanneer deze tags als sleutels in de tagwoordenlijst worden weergegeven, hebben ze de waarde
None
.local_run.tag("worth another look") print(local_run.get_tags())
Query-eigenschappen en -tags
U kunt een query uitvoeren binnen een experiment om een lijst met uitvoeringen te retourneren die overeenkomen met specifieke eigenschappen en tags.
VAN TOEPASSING OP: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"))
Uitvoeringen annuleren of mislukken
Als u een fout ziet of als het te lang duurt voordat de uitvoering is voltooid, kunt u de uitvoering annuleren.
VAN TOEPASSING OP:Python SDK azureml v1
Als u een uitvoering wilt annuleren met behulp van de SDK, gebruikt u de cancel()
methode:
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())
Als de uitvoering is voltooid, maar deze een fout bevat (bijvoorbeeld dat het onjuiste trainingsscript is gebruikt), kunt u de methode gebruiken om deze fail()
als mislukt te markeren.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Onderliggende uitvoeringen maken
VAN TOEPASSING OP:Python SDK azureml v1
Maak onderliggende uitvoeringen om gerelateerde uitvoeringen te groeperen, bijvoorbeeld voor verschillende iteraties voor het afstemmen van hyperparameters.
Notitie
Onderliggende uitvoeringen kunnen alleen worden gemaakt met behulp van de SDK.
In dit codevoorbeeld wordt het hello_with_children.py
script gebruikt om een batch van vijf onderliggende uitvoeringen te maken vanuit een verzonden uitvoering met behulp van de child_run()
methode :
!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)
Notitie
Wanneer ze buiten het bereik vallen, worden onderliggende uitvoeringen automatisch gemarkeerd als voltooid.
Gebruik de create_children()
methode om veel onderliggende uitvoeringen efficiënt te maken. Omdat elke creatie resulteert in een netwerkoproep, is het maken van een batch uitvoeringen efficiënter dan ze een voor een te maken.
Onderliggende uitvoeringen verzenden
Onderliggende uitvoeringen kunnen ook worden verzonden vanuit een bovenliggende uitvoering. Hiermee kunt u hiërarchieën maken van bovenliggende en onderliggende uitvoeringen. U kunt geen bovenliggende onderliggende uitvoering maken: zelfs als de bovenliggende uitvoering alleen maar onderliggende uitvoeringen start, is het nog steeds nodig om de hiërarchie te maken. De statussen van alle uitvoeringen zijn onafhankelijk: een bovenliggend item kan de "Completed"
status Geslaagd hebben, zelfs als een of meer onderliggende uitvoeringen zijn geannuleerd of mislukt.
Mogelijk wilt u dat uw kind een andere uitvoeringsconfiguratie gebruikt dan de bovenliggende uitvoering. U kunt bijvoorbeeld een minder krachtige, OP CPU gebaseerde configuratie gebruiken voor het bovenliggende item, terwijl u gpu-configuraties gebruikt voor uw kinderen. Een andere veel voorkomende wens is om elk kind verschillende argumenten en gegevens door te geven. Als u een onderliggende uitvoering wilt aanpassen, maakt u een ScriptRunConfig
object voor de onderliggende uitvoering.
Belangrijk
Als u een onderliggende uitvoering van een bovenliggende uitvoering op een externe berekening wilt verzenden, moet u zich eerst aanmelden bij de werkruimte in de bovenliggende uitvoeringscode. Standaard heeft het uitvoeringscontextobject in een externe uitvoering geen referenties voor het verzenden van onderliggende uitvoeringen. Gebruik een service-principal of referenties voor beheerde identiteit om u aan te melden. Zie Verificatie instellen voor meer informatie over verificatie.
De onderstaande code:
- Haalt een rekenresource met de naam
"gpu-cluster"
op uit de werkruimtews
- Itereert verschillende argumentwaarden die moeten worden doorgegeven aan de onderliggende
ScriptRunConfig
objecten - Maakt en verzendt een nieuwe onderliggende uitvoering met behulp van de aangepaste rekenresource en het argument
- Blokkeert totdat alle onderliggende uitvoeringen zijn voltooid
# 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()
Gebruik de create_children()
methode om veel onderliggende uitvoeringen met identieke configuraties, argumenten en invoer efficiënt te maken. Omdat elke creatie resulteert in een netwerkoproep, is het maken van een batch uitvoeringen efficiënter dan ze een voor een te maken.
Binnen een onderliggende uitvoering kunt u de bovenliggende uitvoerings-id weergeven:
## In child run script
child_run = Run.get_context()
child_run.parent.id
Onderliggende uitvoeringen van query's uitvoeren
Gebruik de methode om een query uit te voeren op de get_children()
onderliggende uitvoeringen van een specifiek bovenliggend item.
Met recursive = True
het argument kunt u een query uitvoeren op een geneste boom van kinderen en kleinkinderen.
print(parent_run.get_children())
Aanmelden bij bovenliggende of hoofduitvoering
U kunt het Run.parent
veld gebruiken voor toegang tot de uitvoering waarmee de huidige onderliggende uitvoering is gestart. Een veelvoorkomende use-case voor gebruik Run.parent
is het combineren van logboekresultaten op één plaats. Onderliggende uitvoeringen worden asynchroon uitgevoerd en er is geen garantie voor volgorde of synchronisatie buiten de mogelijkheid van het bovenliggende item om te wachten tot de onderliggende uitvoeringen zijn voltooid.
# 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}")
De uitvoeringsstatus bewaken via e-mailmelding
Selecteer in de Azure Portal in de linkernavigatiebalk het tabblad Monitor.
Selecteer Diagnostische instellingen en selecteer vervolgens + Diagnostische instelling toevoegen.
In de diagnostische instelling,
- selecteer onder Categoriedetails de optie AmlRunStatusChangedEvent.
- Selecteer in de doeldetails de werkruimte Verzenden naar Log Analytics en geef de werkruimte Abonnement en Log Analytics op.
Notitie
De Azure Log Analytics-werkruimte is een ander type Azure-resource dan de Azure Machine Learning Service-werkruimte. Als deze lijst geen opties bevat, kunt u een Log Analytics-werkruimte maken.
Voeg op het tabblad Logboeken een nieuwe waarschuwingsregel toe.
Meer informatie over het maken en beheren van logboekwaarschuwingen met behulp van Azure Monitor.
Voorbeeldnotebooks
De volgende notebooks laten de concepten in dit artikel zien:
Zie het notebook voor de logboekregistratie-API voor meer informatie over de api's voor logboekregistratie.
Zie de notebook Uitvoeringen beheren voor meer informatie over het beheren van uitvoeringen met de Azure Machine Learning SDK.
Volgende stappen
- Zie Metrische gegevens vastleggen tijdens trainingsuitvoeringen voor meer informatie over het vastleggen van metrische gegevens voor uw experimenten.
- Zie Azure Machine Learning bewaken voor meer informatie over het bewaken van resources en logboeken van Azure Machine Learning.