Spuštění, monitorování a sledování historie spuštění
PLATÍ PRO: Python SDK azureml v1
PLATÍ PRO: Rozšíření Azure CLI ml v1
Sada Azure Machine Learning SDK pro Python v1 a Rozhraní příkazového řádku služby Machine Learning poskytuje různé metody pro monitorování, uspořádání a sledování spuštění pro trénování a experimentování. Historie spuštění ML je důležitou součástí vysvětlitelného a opakovatelného procesu vývoje ML.
Tip
Informace o používání studia najdete v tématu Sledování, monitorování a analýza spuštění pomocí studia.
Pokud používáte sadu Azure Machine Learning SDK v2, projděte si následující články:
V tomto článku se dozvíte, jak provádět následující úlohy:
- Monitorování výkonu spuštění
- Označte a vyhledejte spuštění.
- Spusťte vyhledávání v historii spuštění.
- Spuštění zrušit nebo selhat
- Vytvoření podřízených spuštění
- Sledujte stav spuštění e-mailem.
Tip
Pokud hledáte informace o monitorování služby Azure Machine Learning a přidružených služeb Azure, přečtěte si téma Monitorování služby Azure Machine Learning. Pokud hledáte informace o modelech monitorování nasazených jako webové služby, přečtěte si téma Shromažďování dat modelu a monitorování pomocí Application Insights.
Požadavky
Budete potřebovat následující položky:
Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Pracovní prostor Azure Machine Learning.
Sada Azure Machine Learning SDK pro Python (verze 1.0.21 nebo novější) Pokud chcete nainstalovat nebo aktualizovat nejnovější verzi sady SDK, přečtěte si téma Instalace nebo aktualizace sady SDK.
Pokud chcete zkontrolovat verzi sady Azure Machine Learning SDK, použijte následující kód:
print(azureml.core.VERSION)
Rozšíření Azure CLI a rozhraní příkazového řádku pro Azure Machine Learning
Důležité
Některé příkazy Azure CLI v tomto článku používají
azure-cli-ml
rozšíření (nebo v1) pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data budete moct nainstalovat a používat rozšíření v1.Doporučujeme přejít na
ml
rozšíření (nebo v2) před 30. zářím 2025. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure ML CLI a Python SDK v2.
Monitorování výkonu spuštění
Spuštění a jeho proces protokolování
PLATÍ PRO: Python SDK azureml v1
Nastavte experiment importem tříd Workspace, Experiment, Run a ScriptRunConfig z balíčku 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")
Spusťte spuštění a jeho proces protokolování pomocí
start_logging()
metody.notebook_run = exp.start_logging() notebook_run.log(name="message", value="Hello from run!")
Monitorování stavu spuštění
PLATÍ PRO: Python SDK azureml v1
Získejte stav spuštění pomocí
get_status()
metody.print(notebook_run.get_status())
K získání ID spuštění, doby provádění a dalších podrobností o spuštění použijte metodu
get_details()
.print(notebook_run.get_details())
Po úspěšném dokončení spuštění ji označte
complete()
jako dokončenou pomocí metody.notebook_run.complete() print(notebook_run.get_status())
Pokud použijete vzor návrhu
with...as
Pythonu, spuštění se po vypršení rozsahu automaticky označí jako dokončené. Spuštění nemusíte ručně označit jako dokončené.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())
Označování a hledání spuštění
Ve službě Azure Machine Learning můžete pomocí vlastností a značek uspořádat a dotazovat spuštění na důležité informace.
Přidání vlastností a značek
PLATÍ PRO: Python SDK azureml v1
Pokud chcete do spuštění přidat prohledávatelná metadata, použijte metodu
add_properties()
. Například následující kód přidá"author"
vlastnost do spuštění:local_run.add_properties({"author":"azureml-user"}) print(local_run.get_properties())
Vlastnosti jsou neměnné, takže vytvoří trvalý záznam pro účely auditování. Následující příklad kódu způsobí chybu, protože jsme již přidali
"azureml-user"
jako"author"
hodnotu vlastnosti v předchozím kódu:try: local_run.add_properties({"author":"different-user"}) except Exception as e: print(e)
Na rozdíl od vlastností jsou značky proměnlivé. Pokud chcete přidat prohledávatelné a smysluplné informace pro uživatele experimentu, použijte metodu
tag()
.local_run.tag("quality", "great run") print(local_run.get_tags()) local_run.tag("quality", "fantastic run") print(local_run.get_tags())
Můžete také přidat jednoduché značky řetězců. Když se tyto značky zobrazí ve slovníku značek jako klíče, mají hodnotu
None
.local_run.tag("worth another look") print(local_run.get_tags())
Vlastnosti a značky dotazu
Spuštěním dotazu v rámci experimentu můžete vrátit seznam spuštění, která odpovídají konkrétním vlastnostem a značek.
PLATÍ PRO: 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"))
Zrušení nebo selhání spuštění
Pokud si všimnete chyby nebo pokud dokončení běhu trvá příliš dlouho, můžete spuštění zrušit.
PLATÍ PRO: Python SDK azureml v1
Pokud chcete zrušit spuštění pomocí sady SDK, použijte metodu cancel()
:
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())
Pokud se spuštění dokončí, ale obsahuje chybu (například byl použit nesprávný trénovací skript), můžete ji pomocí fail()
metody označit jako neúspěšnou.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Vytvoření podřízených spuštění
PLATÍ PRO: Python SDK azureml v1
Vytvořte podřízená spuštění, která seskupí související spuštění, například pro různé iterace ladění hyperparametrů.
Poznámka:
Podřízená spuštění je možné vytvořit pouze pomocí sady SDK.
Tento příklad kódu používá hello_with_children.py
skript k vytvoření dávky pěti podřízených spuštění z odeslaného spuštění pomocí child_run()
metody:
!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)
Poznámka:
Když se přesunou mimo rozsah, podřízená spuštění se automaticky označí jako dokončená.
Pokud chcete efektivně vytvořit mnoho podřízených spuštění, použijte metodu create_children()
. Vzhledem k tomu, že každé vytvoření vede k volání sítě, je vytvoření dávky spuštění efektivnější než jejich vytvoření po druhém.
Odesílání podřízených spuštění
Podřízená spuštění je možné odeslat také z nadřazeného spuštění. Díky tomu můžete vytvářet hierarchie nadřazených a podřízených spuštění. Nelze vytvořit podřízené spuštění bez nadřazeného objektu: i když nadřazené spuštění nedělá nic, ale spouští podřízené běhy, je stále nutné vytvořit hierarchii. Stavy všech spuštění jsou nezávislé: Nadřazený objekt může být v "Completed"
úspěšném stavu, i když byla zrušena nebo selhala jedna nebo více podřízených spuštění.
Možná budete chtít, aby spuštění vašeho dítěte používalo jinou konfiguraci spuštění než nadřazené spuštění. Pro nadřazený objekt můžete například použít méně výkonnou konfiguraci založenou na procesoru při použití konfigurací založených na GPU pro vaše podřízené objekty. Dalším běžným přáním je předání jednotlivých podřízených argumentů a dat. Chcete-li přizpůsobit podřízené spuštění, vytvořte ScriptRunConfig
objekt pro podřízené spuštění.
Důležité
Pokud chcete odeslat podřízené spuštění z nadřazeného spuštění na vzdáleném výpočetním objektu, musíte se nejdřív přihlásit k pracovnímu prostoru v nadřazeného kódu spuštění. Ve výchozím nastavení kontextový objekt spuštění ve vzdáleném spuštění nemá přihlašovací údaje pro odesílání podřízených spuštění. Přihlaste se pomocí instančního objektu nebo přihlašovacích údajů spravované identity. Další informace o ověřování najdete v tématu nastavení ověřování.
Následující kód:
- Načte výpočetní prostředek pojmenovaný
"gpu-cluster"
z pracovního prostoru.ws
- Iteruje hodnoty různých argumentů, které mají být předány podřízeným
ScriptRunConfig
objektům. - Vytvoří a odešle nové podřízené spuštění pomocí vlastního výpočetního prostředku a argumentu.
- Blokuje, dokud se nespustí všechna podřízená spuštění.
# 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()
Pokud chcete vytvořit mnoho podřízených spuštění s identickými konfiguracemi, argumenty a vstupy efektivně, použijte metodu create_children()
. Vzhledem k tomu, že každé vytvoření vede k volání sítě, je vytvoření dávky spuštění efektivnější než jejich vytvoření po druhém.
V rámci podřízeného spuštění můžete zobrazit ID nadřazeného spuštění:
## In child run script
child_run = Run.get_context()
child_run.parent.id
Dotazování podřízených spuštění
K dotazování podřízených spuštění konkrétního nadřazeného objektu použijte metodu get_children()
.
Argument recursive = True
umožňuje dotazovat se na vnořený strom dětí a vnoučat.
print(parent_run.get_children())
Přihlášení k nadřazené nebo kořenovému spuštění
Pole můžete použít Run.parent
pro přístup ke spuštění, které spustilo aktuální podřízené spuštění. Běžným případem použití pro použití Run.parent
je sloučení výsledků protokolu na jednom místě. Podřízená spuštění se spouští asynchronně a neexistuje žádná záruka řazení ani synchronizace nad rámec schopnosti nadřazeného objektu čekat na dokončení podřízených spuštění.
# 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}")
Monitorování stavu spuštění e-mailem
Na webu Azure Portal na levém navigačním panelu vyberte kartu Monitorování .
Vyberte Nastavení diagnostiky a pak vyberte + Přidat nastavení diagnostiky.
V nastavení diagnostiky
- v části Podrobnosti o kategorii vyberte AmlRunStatusChangedEvent.
- V podrobnostech cíle vyberte pracovní prostor Odeslat do služby Log Analytics a zadejte pracovní prostor Předplatné a Log Analytics.
Poznámka:
Pracovní prostor Služby Azure Log Analytics je jiný typ prostředku Azure než pracovní prostor služby Azure Machine Learning. Pokud v seznamu nejsou žádné možnosti, můžete vytvořit pracovní prostor služby Log Analytics.
Na kartě Protokoly přidejte nové pravidlo upozornění.
Zjistěte , jak vytvářet a spravovat upozornění protokolu pomocí služby Azure Monitor.
Příklady poznámkových bloků
Následující poznámkové bloky ukazují koncepty v tomto článku:
Další informace o rozhraních API protokolování najdete v poznámkovém bloku rozhraní API protokolování.
Další informace o správě spuštění pomocí sady Azure Machine Learning SDK najdete v poznámkovém bloku pro správu spuštění.
Další kroky
- Informace o tom, jak protokolovat metriky pro experimenty, najdete v tématu Metriky protokolů během trénovacích běhů.
- Informace o monitorování prostředků a protokolů ze služby Azure Machine Learning najdete v tématu Monitorování služby Azure Machine Learning.