Sdílet prostřednictvím


Aktivace aplikací, procesů nebo pracovních postupů CI/CD na základě událostí služby Azure Machine Learning

V tomto článku se dozvíte, jak nastavit aplikace, procesy nebo pracovní postupy CI/CD řízené událostmi na základě událostí služby Azure Machine Learning. Například e-maily s oznámením o selhání nebo spuštění kanálu ML, když se pomocí služby Azure Event Grid zjistí určité podmínky.

Azure Machine Learning spravuje celý životní cyklus procesu strojového učení, včetně trénování modelu, nasazení modelu a monitorování. Event Grid můžete použít k reakci na události Azure Machine Learning, jako je například dokončení trénovacích běhů, registrace a nasazení modelů a detekce posunů dat pomocí moderních bezserverových architektur. Pak se můžete přihlásit k odběru a využívat události, jako je změna stavu spuštění, dokončení spuštění, registrace modelu, nasazení modelu a detekce odchylek dat v rámci pracovního prostoru.

Kdy použít Event Grid pro akce řízené událostmi:

  • Odeslání e-mailů při selhání spuštění a dokončení spuštění
  • Použití funkce Azure po registraci modelu
  • Streamování událostí ze služby Azure Machine Learning do různých koncových bodů
  • Aktivace kanálu ML při zjištění posunu

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Požadavky

Pokud chcete používat Event Grid, potřebujete přístup přispěvatele nebo vlastníka k pracovnímu prostoru Azure Machine Learning, pro který vytváříte události.

Model událostí a typy

Azure Event Grid čte události ze zdrojů, jako jsou Azure Machine Learning a další služby Azure. Tyto události se pak posílají do obslužných rutin událostí, jako jsou Azure Event Hubs, Azure Functions, Logic Apps a další. Následující diagram znázorňuje, jak Event Grid spojuje zdroje a obslužné rutiny, ale není úplný seznam podporovaných integrací.

Funkční model Azure Event Gridu

Další informace o zdrojích událostí a obslužných rutinách událostí najdete v tématu Co je Event Grid?

Typy událostí pro službu Azure Machine Learning

Azure Machine Learning nabízí události v různých fázích životního cyklu strojového učení:

Typ události Popis
Microsoft.MachineLearningServices.RunCompleted Vyvolá se při dokončení spuštění experimentu strojového učení.
Microsoft.MachineLearningServices.ModelRegistered (Preview) Vyvolá se při registraci modelu strojového učení v pracovním prostoru.
Microsoft.MachineLearningServices.ModelDeployed (Preview) Vyvolá se při dokončení nasazení služby odvozování s jedním nebo více modely.
Microsoft.MachineLearningServices.DatasetDriftDetected (Preview) Vyvolá se při dokončení úlohy detekce posunu dat pro dvě datové sady.
Microsoft.MachineLearningServices.RunStatusChanged Vyvolá se při změně stavu spuštění

Filtrování a přihlášení k odběru událostí

Tyto události se publikují prostřednictvím služby Azure Event Grid. Z webu Azure Portal, PowerShellu nebo Azure CLI se můžete snadno přihlásit k odběru událostí zadáním jednoho nebo více typů událostí a filtrováním podmínek.

Při nastavování událostí můžete použít filtry, které se aktivují jenom u konkrétních dat událostí. V následujícím příkladu můžete pro události změny stavu spuštění filtrovat podle typů spuštění. Událost se aktivuje pouze při splnění kritérií. Další informace o datech událostí, která můžete filtrovat, najdete ve schématu služby Azure Machine Learning Event Grid.

Předplatná pro události Azure Machine Learning jsou chráněná řízením přístupu na základě role v Azure (Azure RBAC). Odběry událostí můžou vytvářet, aktualizovat a odstraňovat jenom přispěvatelé nebo vlastník pracovního prostoru. Filtry lze použít u odběrů událostí buď během vytváření odběru událostí, nebo později.

  1. Přejděte na web Azure Portal, vyberte nové předplatné nebo existující předplatné.

  2. V levé navigační oblasti vyberte položku Události a pak vyberte + Odběr události.

  3. Vyberte kartu filtry a posuňte se dolů k rozšířeným filtrům. Jako klíč a hodnota zadejte typy vlastností, podle které chcete filtrovat. Tady uvidíte triggery událostí, když je typ spuštění kanálu nebo spuštění kroku kanálu.

    filtrování událostí

  • Filtrovat podle typu události: Odběr události může zadat jeden nebo více typů událostí Služby Azure Machine Learning.

  • Filtrování podle předmětu události: Azure Event Grid podporuje filtry předmětu podle začátku a končí na shodách, aby se události s odpovídajícím předmětem doručily odběrateli. Různé události strojového učení mají jiný formát předmětu.

    Typ události Formát předmětu Ukázkový předmět
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (Preview) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (Preview) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (Preview) datadrift/{data.DataDriftId}/run/{data.RunId} datadrift/4e694bf5-712e-4e40-b06a-d2a2755212d4/run/my_driftrun1_1550564444_fbbcdc0f
    Microsoft.MachineLearningServices.RunStatusChanged experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
  • Pokročilé filtrování: Azure Event Grid také podporuje rozšířené filtrování na základě publikovaného schématu událostí. Podrobnosti schématu událostí služby Azure Machine Learning najdete ve schématu událostí Služby Azure Event Grid pro Azure Machine Learning. Pokud Microsoft.MachineLearningServices.ModelRegistered chcete filtrovat hodnotu značky modelu, v případě události:

    --advanced-filter data.ModelTags.key1 StringIn ('value1')
    

    Další informace o tom, jak použít filtry, najdete v tématu Filtrování událostí pro Event Grid.

Využívání událostí služby Machine Learning

Aplikace, které zpracovávají události machine learningu, by měly dodržovat několik doporučených postupů:

  • Vzhledem k tomu, že ke směrování událostí do stejné obslužné rutiny události je možné nakonfigurovat několik odběrů, je důležité nepředpokládá, že události pocházejí z určitého zdroje, ale pokud chcete zkontrolovat téma zprávy, abyste měli jistotu, že pochází z pracovního prostoru strojového učení, který očekáváte.
  • Podobně zkontrolujte, jestli je eventType jeden, který jste připraveni zpracovat, a nepředpokládáte, že všechny události, které obdržíte, budou typy, které očekáváte.
  • Vzhledem k tomu, že zprávy můžou dorazit mimo pořadí a po nějaké prodlevě, použijte pole etag, abyste pochopili, jestli jsou vaše informace o objektech stále aktuální. Pole sequenceru také použijte k pochopení pořadí událostí u libovolného konkrétního objektu.
  • Ignorujte pole, kterým nerozumíte. Tento postup vám pomůže udržet odolnost proti novým funkcím, které by mohly být přidány v budoucnu.
  • Neúspěšné nebo zrušené operace služby Azure Machine Learning neaktivují událost. Pokud například nasazení modelu selže, Microsoft.MachineLearningServices.ModelDeployed se neaktivuje. Při návrhu aplikací zvažte takový režim selhání. Kdykoli můžete pomocí sady Azure Machine Learning SDK, rozhraní příkazového řádku nebo portálu zkontrolovat stav operace a porozumět podrobným důvodům selhání.

Azure Event Grid umožňuje zákazníkům vytvářet oddělené obslužné rutiny zpráv, které můžou aktivovat události služby Azure Machine Learning. Mezi velmi vhodné příklady obslužných rutin zpráv patří:

  • Azure Functions
  • Azure Logic Apps
  • Azure Event Hubs
  • Kanál služby Azure Data Factory
  • Obecné webhooky, které můžou být hostované na platformě Azure nebo jinde

Nastavení na webu Azure Portal

  1. Otevřete web Azure Portal a přejděte do pracovního prostoru Služby Azure Machine Learning.

  2. Na levém panelu vyberte Události a pak vyberte Odběry událostí.

    Snímek obrazovky s výběrem odběru událostí

  3. Vyberte typ události, kterou chcete použít.

    Snímek obrazovky s formulářem Vytvořit odběr události

  4. Vyberte koncový bod, do které chcete událost publikovat. Na následujícím snímku obrazovky je vybraným koncovým bodem centrum událostí:

    Snímek obrazovky znázorňující podokno Vytvořit odběr událostí s otevřeným výběrem centra událostí

Jakmile výběr potvrdíte, vyberte Vytvořit. Po konfiguraci se tyto události nasdílí do vašeho koncového bodu.

Nastavení pomocí rozhraní příkazového řádku

Můžete buď nainstalovat nejnovější Azure CLI, nebo použít Azure Cloud Shell, který je součástí vašeho předplatného Azure.

K instalaci rozšíření Event Grid použijte následující příkaz z rozhraní příkazového řádku:

az extension add --name eventgrid

Následující příklad ukazuje, jak vybrat předplatné Azure a vytvořit nové předplatné události pro Azure Machine Learning:

# Select the Azure subscription that contains the workspace
az account set --subscription "<name or ID of the subscription>"

# Subscribe to the machine learning workspace. This example uses EventHub as a destination. 
az eventgrid event-subscription create --name {eventGridFilterName} \
  --source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName} \
  --endpoint-type eventhub \
  --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1 \
  --included-event-types Microsoft.MachineLearningServices.ModelRegistered \
  --subject-begins-with "models/mymodelname"

Příklady

Příklad: Odesílání e-mailových upozornění

Ke konfiguraci e-mailů pro všechny události použijte Azure Logic Apps . Přizpůsobte si podmínky a určete příjemce, aby se umožnila spolupráce a povědomí napříč týmy, které spolupracují.

  1. Na webu Azure Portal přejděte do pracovního prostoru Služby Azure Machine Learning a na levém panelu vyberte kartu události. Tady vyberte Aplikace logiky.

    Snímek obrazovky znázorňující výběr Logic Apps

  2. Přihlaste se k uživatelskému rozhraní aplikace logiky a jako typ tématu vyberte službu Machine Learning.

    Snímek obrazovky s dialogovým oknem Při výskytu události prostředku s vybraným typem prostředku strojového učení

  3. Vyberte událost, pro kterou chcete být upozorněni. Například následující snímek obrazovky RunCompleted.

    Snímek obrazovky se službou Machine Learning jako typem prostředku

  4. V dalším kroku přidejte krok pro zpracování této události a vyhledejte e-mail. K příjmu událostí můžete použít několik různých poštovních účtů. Můžete také nakonfigurovat podmínky, kdy odeslat e-mailové upozornění.

    Snímek obrazovky zobrazuje dialogové okno Zvolit akci s e-mailem zadaným na vyhledávacím řádku.

  5. Vyberte Odeslat e-mail a vyplňte parametry. V předmětu můžete zahrnout typ události a téma , které vám pomůžou filtrovat události. Můžete také zahrnout odkaz na stránku pracovního prostoru pro spuštění v textu zprávy.

    Pokud chcete tuto akci uložit, vyberte Uložit jako v levém rohu stránky.

    Snímek obrazovky s dialogovým oknem Odeslat e-mail s tématem a typem události přidaným do řádku předmětu ze seznamu vpravo

Příklad: Opětovné trénování triggerů posunu dat

Důležité

Tento příklad spoléhá na funkci (posun dat), která je k dispozici pouze při použití sady Azure Machine Learning SDK v1 nebo rozšíření Azure CLI v1 pro Azure Machine Learning. Další informace najdete v tématu Co je Azure Machine Learning CLI & SDK verze 2.

Modely se v průběhu času zastaralou a nezůstanou užitečné v kontextu, ve kterém běží. Jedním ze způsobů, jak zjistit, jestli je čas model znovu natrénovat, zjišťuje posun dat.

Tento příklad ukazuje, jak pomocí Event Gridu s aplikací logiky Azure aktivovat opětovné trénování. Příklad aktivuje kanál Azure Data Factory, když dojde k posunu dat mezi trénováním modelu a obsluhou datových sad.

Než začnete, proveďte následující akce:

V tomto příkladu se jednoduchý kanál Data Factory používá ke kopírování souborů do úložiště objektů blob a spuštění publikovaného kanálu Machine Learning. Další informace o tomto scénáři najdete v tématu nastavení kroku služby Machine Learning ve službě Azure Data Factory.

Snímek obrazovky znázorňující trénovací kanál ve službě Azure Data Factory

  1. Začněte vytvořením aplikace logiky. Přejděte na web Azure Portal, vyhledejte Logic Apps a vyberte Vytvořit.

    search-logic-app

  2. Vyplňte požadované informace. Pokud chcete prostředí zjednodušit, použijte stejné předplatné a skupinu prostředků jako váš pracovní prostor Azure Data Factory Pipeline a Azure Machine Learning.

    Snímek obrazovky s podoknem Vytvoření aplikace logiky

  3. Jakmile vytvoříte aplikaci logiky, vyberte Při výskytu události prostředku Event Gridu.

    Snímek obrazovky znázorňující Návrháře pro Logic Apps s běžnými možnostmi triggeru, včetně události Při výskytu události prostředku Event Gridu

  4. Přihlaste se a vyplňte podrobnosti události. Nastavte název prostředku na název pracovního prostoru. Nastavte typ události na DatasetDriftDetected.

    Snímek obrazovky znázorňující položku typu události posunu dat

  5. Přidejte nový krok a vyhledejte Azure Data Factory. Vyberte Vytvořit spuštění kanálu.

    Snímek obrazovky znázorňující podokno Zvolit akci s vybranou možností Vytvořit spuštění kanálu

  6. Přihlaste se a zadejte publikovaný kanál služby Azure Data Factory, který se má spustit.

    Snímek obrazovky znázorňující podokno Vytvořit spuštění kanálu s různými hodnotami

  7. Aplikaci logiky uložte a vytvořte pomocí tlačítka Uložit v levém horním rohu stránky. Pokud chcete zobrazit aplikaci, přejděte na webu Azure Portal do svého pracovního prostoru a vyberte Události.

    Snímek obrazovky znázorňující události se zvýrazněnou aplikací logiky

Kanál datové továrny se teď aktivuje, když dojde k posunu. Zobrazení podrobností o spuštění posunu dat a kanálu strojového učení v studio Azure Machine Learning

Snímek obrazovky znázorňující koncové body kanálu

Další kroky

Přečtěte si další informace o Event Gridu a vyzkoušejte události služby Azure Machine Learning: