Sdílet prostřednictvím


Monitorování výkonu modelů nasazených do produkčního prostředí

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Ve službě Azure Machine Learning můžete pomocí monitorování modelů průběžně sledovat výkon modelů strojového učení v produkčním prostředí. Monitorování modelů poskytuje široký pohled na monitorovací signály. Upozorní vás také na potenciální problémy. Když monitorujete signály a metriky výkonu modelů v produkčním prostředí, můžete kriticky vyhodnotit základní rizika vašich modelů. Můžete také identifikovat slepé skvrny, které by mohly nepříznivě ovlivnit vaši firmu.

V tomto článku se dozvíte, jak provádět následující úlohy:

  • Nastavení předkonfigurovaného a pokročilého monitorování pro modely nasazené do online koncových bodů platform služby Azure Machine Learning
  • Monitorování metrik výkonu pro modely v produkčním prostředí
  • Monitorování modelů nasazených mimo Azure Machine Learning nebo nasazených do dávkových koncových bodů služby Azure Machine Learning
  • Nastavení vlastních signálů a metrik pro použití při monitorování modelů
  • Interpretace výsledků monitorování
  • Integrace monitorování modelu Azure Machine Learning s Azure Event Gridem

Požadavky

  • Uživatelský účet, který má alespoň jednu z následujících rolí řízení přístupu na základě role v Azure (Azure RBAC):

    • Role Vlastník pro pracovní prostor Azure Machine Learning
    • Role Přispěvatel pro pracovní prostor Azure Machine Learning
    • Vlastní role s Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* oprávněními

    Další informace najdete v tématu Správa přístupu k pracovním prostorům Azure Machine Learning.

  • Monitorování online koncového bodu spravovaného službou Azure Machine Learning nebo online koncového bodu Kubernetes:

  • Monitorování modelu nasazeného do dávkového koncového bodu služby Azure Machine Learning nebo nasazeného mimo Azure Machine Learning:

    • Prostředek pro shromažďování produkčních dat a jejich registraci jako datového assetu služby Azure Machine Learning
    • Prostředek pro průběžné aktualizace registrovaného datového prostředku pro monitorování modelů
    • (Doporučeno) Registrace modelu v pracovním prostoru Azure Machine Learning pro sledování rodokmenu

Konfigurace bezserverového výpočetního fondu Sparku

Úlohy monitorování modelů se plánují tak, aby běžely na bezserverových výpočetních fondech Sparku. Podporují se následující typy instancí virtuálních počítačů Azure:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

Pokud chcete zadat typ instance virtuálního počítače, když budete postupovat podle postupů v tomto článku, postupujte takto:

Když k vytvoření monitorování použijete Azure CLI, použijete konfigurační soubor YAML. V daném souboru nastavte create_monitor.compute.instance_type hodnotu na typ, který chcete použít.

Nastavení připraveného monitorování modelů

Představte si scénář, ve kterém nasadíte model do produkčního prostředí v online koncovém bodu služby Azure Machine Learning a povolíte shromažďování dat v době nasazení. V tomto případě Azure Machine Learning shromažďuje produkční data odvozování a automaticky je ukládá do služby Azure Blob Storage. Monitorování modelu Azure Machine Learning můžete použít k nepřetržitému monitorování těchto produkčních dat odvozování.

K předběžnému nastavení monitorování modelů můžete použít Azure CLI, Sadu Python SDK nebo studio. Předefinovaná konfigurace monitorování modelu poskytuje následující možnosti monitorování:

  • Azure Machine Learning automaticky rozpozná produkční datový prostředek odvozování, který je přidružený k online nasazení služby Azure Machine Learning, a použije datový asset pro monitorování modelu.
  • Referenční datový asset porovnání je nastaven jako nedávný, minulý produkční odvozovací datový prostředek.
  • Nastavení monitorování automaticky zahrnuje a sleduje následující integrované monitorovací signály: posun dat, posun předpovědi a kvalitu dat. Pro každý signál monitorování azure Machine Learning používá:
    • Nedávný, minulý produkční odvozování datového assetu jako referenční referenční datový prostředek porovnání.
    • Inteligentní výchozí hodnoty pro metriky a prahové hodnoty
  • Úloha monitorování je nakonfigurovaná tak, aby běžela podle běžného plánu. Tato úloha získává monitorovací signály a vyhodnocuje každý výsledek metriky s odpovídající prahovou hodnotou. Když dojde k překročení jakékoli prahové hodnoty, Azure Machine Learning ve výchozím nastavení pošle uživateli, který monitor nastavil, e-mail s upozorněním.

Pokud chcete nastavit připravené monitorování modelu, proveďte následující kroky.

V Azure CLI použijete az ml schedule, abyste naplánovali úlohu monitorování.

  1. Vytvořte definici monitorování v souboru YAML. Ukázkovou předem připravenou definici najdete v následujícím kódu YAML, který je k dispozici také v úložišti azureml-examples.

    Před použitím této definice upravte hodnoty tak, aby vyhovovaly vašemu prostředí. Pro endpoint_deployment_id, použít hodnotu ve formátu azureml:<endpoint-name>:<deployment-name>.

    # out-of-box-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: credit_default_model_monitoring
    display_name: Credit default model monitoring
    description: Credit default model monitoring setup with minimal configurations
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
    
      compute: # specify a spark compute for monitoring job
        instance_type: standard_e4s_v3
        runtime_version: "3.4"
    
      monitoring_target: 
        ml_task: classification # model task type: [classification, regression, question_answering]
        endpoint_deployment_id: azureml:credit-default:main # azureml endpoint deployment id
    
      alert_notification: # emails to get alerts
        emails:
          - abc@example.com
          - def@example.com
    
  2. Spuštěním následujícího příkazu vytvořte model:

    az ml schedule create -f ./out-of-box-monitoring.yaml
    

Nastavení rozšířeného monitorování modelů

Azure Machine Learning poskytuje mnoho funkcí pro průběžné monitorování modelů. Úplný seznam těchto funkcí najdete v tématu Možnosti monitorování modelů. V mnoha případech je potřeba nastavit monitorování modelu, které podporuje pokročilé úlohy monitorování. Následující část obsahuje několik příkladů pokročilého monitorování:

  • Použití více monitorovacích signálů pro široké zobrazení
  • Použití historických trénovacích dat modelu nebo ověřovacích dat jako referenčního datového prostředku porovnání
  • Monitorování nejdůležitějších funkcí N a jednotlivých funkcí

Konfigurace důležitosti funkcí

Důležitost funkce představuje relativní důležitost jednotlivých vstupních funkcí pro výstup modelu. Například teplota může být pro předpověď modelu důležitější než zvýšení. Když zapnete důležitost funkcí, můžete získat přehled o funkcích, které nechcete v produkčním prostředí používat nebo které mají problémy s kvalitou dat.

Pokud chcete zapnout důležitost funkce u jakéhokoli signálu, jako je posun dat nebo kvalita dat, musíte zadat:

  • Váš tréninkový datový prostředek jako reference_data datový prostředek.
  • Vlastnost reference_data.data_column_names.target_column , což je název výstupního sloupce modelu nebo prediktivního sloupce.

Po zapnutí důležitosti funkcí uvidíte důležitost funkcí pro každou funkci, kterou monitorujete v nástroji Azure Machine Learning Studio.

Upozornění můžete zapnout nebo vypnout pro každý signál nastavením alert_enabled vlastnosti při použití sady Python SDK nebo Azure CLI.

K nastavení pokročilého monitorování modelů můžete použít Azure CLI, Sadu Python SDK nebo studio.

  1. Vytvořte definici monitorování v souboru YAML. Ukázkovou pokročilou definici najdete v následujícím kódu YAML, který je k dispozici také v úložišti azureml-examples.

    Před použitím této definice upravte následující nastavení a všechny ostatní tak, aby vyhovovaly potřebám vašeho prostředí:

    • Pro endpoint_deployment_id, použít hodnotu ve formátu azureml:<endpoint-name>:<deployment-name>.
    • Pro path v referenčních vstupních datových oddílech použijte hodnotu ve formátu azureml:<reference-data-asset-name>:<version>.
    • Použijte target_columnnázev výstupního sloupce, který obsahuje hodnoty, které model predikuje, například DEFAULT_NEXT_MONTH.
    • Seznamte si funkce, jako je features, SEX a EDUCATION, které chcete použít v rozšířeném signálu kvality dat pro AGE.
    • V části emailsUveďte e-mailové adresy, které chcete použít pro oznámení.
    # advanced-model-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: fraud_detection_model_monitoring
    display_name: Fraud detection model monitoring
    description: Fraud detection model monitoring with advanced configurations
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
    
      compute: 
        instance_type: standard_e4s_v3
        runtime_version: "3.4"
    
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:credit-default:main
      
      monitoring_signals:
        advanced_data_drift: # monitoring signal name, any user defined name works
          type: data_drift
          # reference_dataset is optional. By default referece_dataset is the production inference data associated with Azure Machine Learning online endpoint
          reference_data:
            input_data:
              path: azureml:credit-reference:1 # use training data as comparison reference dataset
              type: mltable
            data_context: training
            data_column_names:
              target_column: DEFAULT_NEXT_MONTH
          features: 
            top_n_feature_importance: 10 # monitor drift for top 10 features
          alert_enabled: true
          metric_thresholds:
            numerical:
              jensen_shannon_distance: 0.01
            categorical:
              pearsons_chi_squared_test: 0.02
        advanced_data_quality:
          type: data_quality
          # reference_dataset is optional. By default reference_dataset is the production inference data associated with Azure Machine Learning online endpoint
          reference_data:
            input_data:
              path: azureml:credit-reference:1
              type: mltable
            data_context: training
          features: # monitor data quality for 3 individual features only
            - SEX
            - EDUCATION
          alert_enabled: true
          metric_thresholds:
            numerical:
              null_value_rate: 0.05
            categorical:
              out_of_bounds_rate: 0.03
    
        feature_attribution_drift_signal:
          type: feature_attribution_drift
          # production_data: is not required input here
          # Please ensure Azure Machine Learning online endpoint is enabled to collected both model_inputs and model_outputs data
          # Azure Machine Learning model monitoring will automatically join both model_inputs and model_outputs data and used it for computation
          reference_data:
            input_data:
              path: azureml:credit-reference:1
              type: mltable
            data_context: training
            data_column_names:
              target_column: DEFAULT_NEXT_MONTH
          alert_enabled: true
          metric_thresholds:
            normalized_discounted_cumulative_gain: 0.9
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. Spuštěním následujícího příkazu vytvořte model:

    az ml schedule create -f ./advanced-model-monitoring.yaml
    

Nastavení monitorování výkonu modelu

Při použití monitorování modelů Azure Machine Learning můžete sledovat výkon modelů v produkčním prostředí pomocí výpočtu jejich metrik výkonu. Aktuálně se podporují následující metriky výkonu modelu:

  • Klasifikační modely:
    • Počet deset. míst
    • Přesnost
    • Odvolat
  • Pro regresní modely:
    • Střední absolutní chyba (MAE)
    • Střední kvadratická chyba (MSE)
    • Odmocněná střední kvadratická chyba (RMSE)

Požadavky pro monitorování výkonu modelu

  • Výstupní data pro produkční model (předpovědi modelu) s jedinečným ID pro každý řádek. Pokud ke shromažďování produkčních dat použijete kolektor dat Azure Machine Learning, je pro každý požadavek na odvozování poskytováno ID korelace. Kolektor dat také nabízí možnost protokolování vlastního jedinečného ID z vaší aplikace.

    Poznámka:

    Pro monitorování výkonu modelu Azure Machine Learning doporučujeme použít kolektor dat Azure Machine Learning k logování jedinečného ID ve vlastním sloupci.

  • Základní pravdivá data (skutečné hodnoty) s jedinečným ID pro každý řádek. Jedinečné ID pro daný řádek by se mělo shodovat s jedinečným ID pro výstupní data modelu pro konkrétní požadavek odvození. Toto jedinečné ID slouží ke spojení referenčních dat s výstupními daty modelu.

    Pokud nemáte základní pravdivá data, nemůžete provádět monitorování výkonu modelu. Základní pravdivá data jsou zjištěna na úrovni aplikace, takže je vaší zodpovědností je shromáždit, jakmile budou k dispozici. Měli byste také udržovat datový prostředek ve službě Azure Machine Learning, který obsahuje tato základní pravdivá data.

  • (Volitelné) Předem sloučený tabulkový datový soubor s výstupními daty modelu a skutečnými daty, která jsou už spojena.

Požadavky na monitorování výkonu modelu při použití kolektoru dat

Azure Machine Learning pro vás vygeneruje ID korelace, když splňujete následující kritéria:

Vygenerované ID korelace je součástí zaprotokolovaného objektu JSON. Kolekce dat však shromažďuje řádky, které jsou odesílány v krátkých časových intervalech mezi sebou. Dávkové řádky spadají do stejného objektu JSON. V každém objektu mají všechny řádky stejné ID korelace.

K rozlišení řádků v objektu JSON používá monitorování výkonu modelu Azure Machine Learning indexování k určení pořadí řádků v objektu. Pokud například dávka obsahuje tři řádky a ID korelace je test, první řádek má ID test_0, druhý řádek má ID test_1a třetí řádek má ID test_2. Pokud chcete spárovat jedinečné ID datového prostředku základní pravdy s ID vašich výstupních dat modelu odvozování v produkčním prostředí, odpovídajícím způsobem použijte index na každé ID korelace. Pokud má protokolovaný objekt JSON jenom jeden řádek, použijte correlationid_0 jako correlationid hodnotu.

Pokud se chcete vyhnout použití tohoto indexování, doporučujeme zaznamenat jedinečné ID do vlastního sloupce. Vložte tento sloupec do datového rámce pandas, který protokoly kolektoru dat služby Azure Machine Learning . V konfiguraci monitorování modelu pak můžete zadat název tohoto sloupce, který spojí výstupní data modelu s vašimi základními pravdivými daty. Pokud jsou ID každého řádku v obou datových prostředcích stejná, může monitorování modelu Azure Machine Learning provádět monitorování výkonu modelu.

Příklad pracovního postupu monitorování výkonu modelu

Abyste porozuměli konceptům přidruženým k monitorování výkonu modelu, zvažte následující ukázkový pracovní postup. Platí pro scénář, ve kterém nasadíte model, abyste mohli předpovědět, jestli jsou transakce platební karty podvodné:

  1. Nakonfigurujte nasazení tak, aby používalo kolektor dat ke shromažďování produkčních dat odvozování modelu (vstupní a výstupní data). Uložte výstupní data do sloupce s názvem is_fraud.
  2. Pro každý řádek shromážděných dat odvozování zapište jedinečné ID. Jedinečné ID může pocházet z vaší aplikace nebo můžete použít correlationid hodnotu, kterou Azure Machine Learning jedinečně vygeneruje pro každý protokolovaný objekt JSON.
  3. Pokud jsou k dispozici základní pravdivá (nebo skutečná) is_fraud data, zaznamenejte a přiřaďte každý řádek ke stejnému jedinečnému ID, které je zaznamenáno pro odpovídající řádek ve výstupních datech modelu.
  4. Zaregistrujte datový prostředek ve službě Azure Machine Learning a použijte ho ke shromažďování a správě základních pravdivých is_fraud dat.
  5. Vytvořte signál monitorování výkonu modelu, který pomocí jedinečných sloupců ID spojí produkční odvozování modelu a podkladové datové prostředky pravdivých informací.
  6. Vypočítá metriky výkonu modelu.

Jakmile splníte požadavky na monitorování výkonu modelu, nastavte monitorování modelu následujícím postupem:

  1. Vytvořte definici monitorování v souboru YAML. Následující ukázková specifikace definuje monitorování modelu s daty odvozování produkčního prostředí. Před použitím této definice upravte následující nastavení a všechny ostatní tak, aby vyhovovaly potřebám vašeho prostředí:

    • Pro endpoint_deployment_id, použít hodnotu ve formátu azureml:<endpoint-name>:<deployment-name>.
    • Pro každou path hodnotu v oddílu vstupních dat použijte hodnotu ve formátu azureml:<data-asset-name>:<version>.
    • prediction Jako hodnotu použijte název výstupního sloupce, který obsahuje hodnoty, které model predikuje.
    • actual Pro tuto hodnotu použijte název základního sloupce pravdy, který obsahuje skutečné hodnoty, které se model snaží předpovědět.
    • correlation_id Pro hodnoty použijte názvy sloupců, které se používají ke spojení výstupních dat a podkladových pravdivých dat.
    • V části emailsUveďte e-mailové adresy, které chcete použít pro oznámení.
    # model-performance-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: model_performance_monitoring
    display_name: Credit card fraud model performance
    description: Credit card fraud model performance
    
    trigger:
      type: recurrence
      frequency: day
      interval: 7 
      schedule: 
        hours: 10
        minutes: 15
    
    create_monitor:
      compute: 
        instance_type: standard_e8s_v3
        runtime_version: "3.3"
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:loan-approval-endpoint:loan-approval-deployment
    
      monitoring_signals:
        fraud_detection_model_performance: 
          type: model_performance 
          production_data:
            input_data:
              path: azureml:credit-default-main-model_outputs:1
              type: mltable
            data_column_names:
              prediction: is_fraud
              correlation_id: correlation_id
          reference_data:
            input_data:
              path: azureml:my_model_ground_truth_data:1
              type: mltable
            data_column_names:
              actual: is_fraud
              correlation_id: correlation_id
            data_context: ground_truth
          alert_enabled: true
          metric_thresholds: 
            tabular_classification:
              accuracy: 0.95
              precision: 0.8
      alert_notification: 
          emails: 
            - abc@example.com
    
  2. Spuštěním následujícího příkazu vytvořte model:

    az ml schedule create -f ./model-performance-monitoring.yaml
    

Nastavení monitorování modelů produkčních dat

Můžete také monitorovat modely, které nasadíte do dávkových koncových bodů služby Azure Machine Learning nebo které nasadíte mimo Azure Machine Learning. Pokud nemáte nasazení, ale máte produkční data, můžete je použít k provádění průběžného monitorování modelu. Abyste mohli monitorovat tyto modely, musíte být schopni:

  • Shromážděte produkční data odvozování z modelů nasazených v produkčním prostředí.
  • Zaregistrujte produkční data odvozování jako datový prostředek služby Azure Machine Learning a zajistěte průběžné aktualizace dat.
  • Pokud ke shromažďování dat nepoužíváte kolektor dat , zadejte vlastní komponentu předběžného zpracování dat a zaregistrujte ji jako komponentu Azure Machine Learning. Bez této vlastní komponenty předběžného zpracování dat nemůže systém monitorování modelů Azure Machine Learning zpracovávat data do tabulkového formuláře, který podporuje časové intervaly.

Vlastní komponenta předběžného zpracování musí obsahovat následující vstupní a výstupní podpisy:

Vstup nebo výstup Název podpisu Typ Popis Příklad hodnoty
vstup data_window_start literál, řetězec Čas spuštění okna dat ve formátu ISO8601 2023-05-01T04:31:57.012Z
vstup data_window_end literál, řetězec Koncový čas okna dat ve formátu ISO8601 2023-05-01T04:31:57.012Z
vstup input_data uri_folder Shromážděná produkční data odvozování, která jsou zaregistrovaná jako datový prostředek služby Azure Machine Learning azureml:myproduction_inference_data:1
výstup preprocessed_data mltable Tabulkový datový prostředek, který odpovídá podmnožině schématu referenčních dat

Příklad vlastní komponenty předběžného zpracování dat najdete v custom_preprocessing v úložišti Azuremml-examples Na GitHubu.

Pokyny k registraci komponenty Azure Machine Learning najdete v tématu Registrace komponenty v pracovním prostoru.

Po registraci produkčních dat a součásti předběžného zpracování můžete nastavit monitorování modelu.

  1. Vytvořte soubor YAML definice monitorování, který je podobný následujícímu souboru. Před použitím této definice upravte následující nastavení a všechny ostatní tak, aby vyhovovaly potřebám vašeho prostředí:

    • Pro endpoint_deployment_id, použít hodnotu ve formátu azureml:<endpoint-name>:<deployment-name>.
    • Pro pre_processing_component, použít hodnotu ve formátu azureml:<component-name>:<component-version>. Zadejte přesnou verzi, například 1.0.0, nikoli 1.
    • Pro každou pathz nich použijte hodnotu ve formátu azureml:<data-asset-name>:<version>.
    • target_column Jako hodnotu použijte název výstupního sloupce, který obsahuje hodnoty, které model predikuje.
    • V části emailsUveďte e-mailové adresy, které chcete použít pro oznámení.
    # model-monitoring-with-collected-data.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: fraud_detection_model_monitoring
    display_name: Fraud detection model monitoring
    description: Fraud detection model monitoring with your own production data
    
    trigger:
      # perform model monitoring activity daily at 3:15am
      type: recurrence
      frequency: day #can be minute, hour, day, week, month
      interval: 1 # #every day
      schedule: 
        hours: 3 # at 3am
        minutes: 15 # at 15 mins after 3am
    
    create_monitor:
      compute: 
        instance_type: standard_e4s_v3
        runtime_version: "3.4"
      monitoring_target:
        ml_task: classification
        endpoint_deployment_id: azureml:fraud-detection-endpoint:fraud-detection-deployment
      
      monitoring_signals:
    
        advanced_data_drift: # monitoring signal name, any user defined name works
          type: data_drift
          # define production dataset with your collected data
          production_data:
            input_data:
              path: azureml:my_production_inference_data_model_inputs:1  # your collected data is registered as Azure Machine Learning asset
              type: uri_folder
            data_context: model_inputs
            pre_processing_component: azureml:production_data_preprocessing:1.0.0
          reference_data:
            input_data:
              path: azureml:my_model_training_data:1 # use training data as comparison baseline
              type: mltable
            data_context: training
            data_column_names:
              target_column: is_fraud
          features: 
            top_n_feature_importance: 20 # monitor drift for top 20 features
          alert_enabled: true
          metric_thresholds:
            numerical:
              jensen_shannon_distance: 0.01
            categorical:
              pearsons_chi_squared_test: 0.02
    
        advanced_prediction_drift: # monitoring signal name, any user defined name works
          type: prediction_drift
          # define production dataset with your collected data
          production_data:
            input_data:
              path: azureml:my_production_inference_data_model_outputs:1  # your collected data is registered as Azure Machine Learning asset
              type: uri_folder
            data_context: model_outputs
            pre_processing_component: azureml:production_data_preprocessing:1.0.0
          reference_data:
            input_data:
              path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
              type: mltable
            data_context: validation
          alert_enabled: true
          metric_thresholds:
            categorical:
              pearsons_chi_squared_test: 0.02
      
      alert_notification:
        emails:
          - abc@example.com
          - def@example.com
    
  2. Spuštěním následujícího příkazu vytvořte model.

    az ml schedule create -f ./model-monitoring-with-collected-data.yaml
    

Nastavení monitorování modelů s využitím vlastních signálů a metrik

Když používáte monitorování modelu Azure Machine Learning, můžete definovat vlastní signál a implementovat libovolnou metriku podle vašeho výběru pro monitorování modelu. Vlastní signál můžete zaregistrovat jako součást služby Azure Machine Learning. Když úloha monitorování modelu běží podle zadaného plánu, vypočítá metriky definované v rámci vašeho vlastního signálu stejně jako u předem připravených signálů posunu dat, posunu předpovědí a kvality dat.

Pokud chcete nastavit vlastní signál pro monitorování modelů, musíte nejprve definovat vlastní signál a zaregistrovat ho jako komponentu Azure Machine Learning. Komponenta Azure Machine Learning musí obsahovat následující vstupní a výstupní podpisy.

Podpis vstupu komponenty

Vstupní datový rámec komponenty by měl obsahovat následující položky:

  • Struktura mltable , která obsahuje zpracovaná data z komponenty předběžného zpracování.
  • Libovolný počet literálů, z nichž každý představuje implementovanou metriku jako součást vlastní komponenty signálu. Pokud například implementujete metriku std_deviation , potřebujete vstup pro std_deviation_threshold. Obecně platí, že pro každou metriku by měl být jeden vstup s názvem <metric-name>_threshold .
Název podpisu Typ Popis Příklad hodnoty
production_data mltable Tabulkový datový prostředek, který odpovídá podmnožině schématu referenčních dat
std_deviation_threshold literál, řetězec Odpovídající prahová hodnota implementované metriky 2

Podpis výstupu komponenty

Výstupní port komponenty by měl mít následující podpis:

Název podpisu Typ Popis
signal_metrics mltable Struktura mltable, která obsahuje vypočítané metriky. Schéma tohoto podpisu najdete v další části, schématu signal_metrics.

schéma signal_metrics

Výstupní datový rámec komponenty by měl obsahovat čtyři sloupce: group, metric_name, metric_valuea threshold_value.

Název podpisu Typ Popis Příklad hodnoty
group literál, řetězec Logické seskupení nejvyšší úrovně, které se použije na vlastní metriku ČÁSTKA TRANSAKCE
metric_name literál, řetězec Název vlastní metriky std_deviation
metric_value číselný Hodnota vlastní metriky 44,896.082
threshold_value číselný Prahová hodnota pro vlastní metriku 2

Následující tabulka ukazuje příklad výstupu z vlastní komponenty signálu, která vypočítá metriku std_deviation :

seskupit hodnota metriky název metriky prahová_hodnota
ČÁSTKA TRANSAKCE 44,896.082 std_deviation 2
Místní hodina 3.983 std_deviation 2
Částka transakce (USD) 54 004,902 std_deviation 2
DIGITALITEMCOUNT 7.238 std_deviation 2
Fyzický počet položek 5.509 std_deviation 2

Pokud chcete zobrazit příklad vlastní definice komponenty signálu a výpočetního kódu metrik, podívejte se na custom_signal v úložišti azureml-examples.

Pokyny k registraci komponenty Azure Machine Learning najdete v tématu Registrace komponenty v pracovním prostoru.

Po vytvoření a registraci vlastní komponenty signálu ve službě Azure Machine Learning proveďte následující kroky a nastavte monitorování modelu:

  1. Vytvořte definici monitorování v souboru YAML, který je podobný následujícímu. Před použitím této definice upravte následující nastavení a všechny ostatní tak, aby vyhovovaly potřebám vašeho prostředí:

    • Pro component_id, použít hodnotu ve formátu azureml:<custom-signal-name>:1.0.0.
    • V path části vstupních dat použijte hodnotu ve formátu azureml:<production-data-asset-name>:<version>.
    • Pro pre_processing_component:
      • Pokud ke shromažďování dat použijete kolektor dat , můžete vlastnost vynechat pre_processing_component .
      • Pokud kolekci dat nepoužíváte a chcete použít komponentu k předběžnému zpracování produkčních dat, použijte hodnotu ve formátu azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • V části emailsUveďte e-mailové adresy, které chcete použít pro oznámení.
    # custom-monitoring.yaml
    $schema:  http://azureml/sdk-2-0/Schedule.json
    name: my-custom-signal
    trigger:
      type: recurrence
      frequency: day # Possible frequency values include "minute," "hour," "day," "week," and "month."
      interval: 7 # Monitoring runs every day when you use the value 1.
    create_monitor:
      compute:
        instance_type: "standard_e4s_v3"
        runtime_version: "3.3"
      monitoring_signals:
        customSignal:
          type: custom
          component_id: azureml:my_custom_signal:1.0.0
          input_data:
            production_data:
              input_data:
                type: uri_folder
                path: azureml:my_production_data:1
              data_context: test
              data_window:
                lookback_window_size: P30D
                lookback_window_offset: P7D
              pre_processing_component: azureml:custom_preprocessor:1.0.0
          metric_thresholds:
            - metric_name: std_deviation
              threshold: 2
      alert_notification:
        emails:
          - abc@example.com
    
  2. Spuštěním následujícího příkazu vytvořte model:

    az ml schedule create -f ./custom-monitoring.yaml
    

Interpretace výsledků monitorování

Jakmile nakonfigurujete monitorování modelu a dokončí se první spuštění, můžete zobrazit výsledky v nástroji Azure Machine Learning Studio.

  1. V sadě Studio v části Spravovat vyberte Monitorování. Na stránce Monitorování vyberte název monitoru vašeho modelu a zobrazíte stránku přehledu. Tato stránka zobrazuje model monitorování, koncový bod a nasazení. Poskytuje také podrobné informace o nakonfigurovaných signálech. Následující obrázek ukazuje stránku přehledu monitorování, která zahrnuje signály pro posun dat a kvalitu dat.

    Snímek obrazovky se stránkou monitorování pro model se zvýrazněnou možností Monitorování Informace o selhání a rychlosti průchodu jsou viditelné pro dva signály.

  2. Podívejte se do části Oznámení na stránce přehledu. V této části uvidíte funkci pro každý signál, který porušuje nakonfigurovanou prahovou hodnotu pro příslušnou metriku.

  3. V části Signály vyberte data_drift , abyste zobrazili podrobné informace o signálu posunu dat. Na stránce podrobností uvidíte hodnotu metrik posunu dat pro každou číselnou a kategorickou funkci, kterou zahrnuje konfigurace monitorování. Pokud má monitor více spuštění, objeví se trendová čára pro každou vlastnost.

    Snímek obrazovky znázorňující podrobné informace o signálu posunu dat, včetně grafu posunu dat funkcí a rozpisu funkcí

  4. Na stránce podrobností vyberte název jednotlivé funkce. Otevře se podrobné zobrazení, které zobrazuje produkční distribuci v porovnání s referenční distribucí. Toto zobrazení můžete také použít ke sledování posunu v průběhu času pro tuto funkci.

    Snímek obrazovky znázorňující podrobné informace o funkci, včetně histogramu a grafu, který zobrazuje posun v průběhu času

  5. Vraťte se na stránku přehledu monitorování. V části Signály vyberte data_quality , abyste zobrazili podrobné informace o tomto signálu. Na této stránce uvidíte míry hodnot null, míry chyb mimo hranice a chybovost datových typů pro každou funkci, kterou monitorujete.

    Snímek obrazovky znázorňující podrobné informace o signálu kvality dat, včetně neúspěšných a průchozích sazeb a rozpisu funkcí

Monitorování modelů je průběžný proces. Když používáte monitorování modelů Azure Machine Learning, můžete nakonfigurovat několik monitorovacích signálů, abyste získali široký přehled o výkonu modelů v produkčním prostředí.

Integrace monitorování modelu Azure Machine Learning s Event Gridem

Když používáte Event Grid, můžete nakonfigurovat události, které jsou generovány monitorováním modelu Azure Machine Learning, aby aktivovaly aplikace, procesy a pracovní postupy CI/CD. Události můžete využívat prostřednictvím různých obslužných rutin událostí, jako jsou Azure Event Hubs, Azure Functions a Azure Logic Apps. Když monitory detekují posun, můžete provádět akce prostřednictvím kódu programu, například spuštěním kanálu strojového učení, který model přetrénuje a znovu ho nasadí.

Pokud chcete integrovat monitorování modelu Azure Machine Learning s Event Gridem, postupujte podle kroků v následujících částech.

Vytvoření systémového tématu

Pokud nemáte systémové téma Event Gridu, které se má použít k monitorování, vytvořte ho. Pokyny najdete v tématu Vytvoření, zobrazení a správa systémových témat Event Gridu na webu Azure Portal.

Vytvoření odběru událostí

  1. Na webu Azure Portal přejděte do svého pracovního prostoru Azure Machine Learning.

  2. Vyberte Události a potom vyberte Předplatné události.

    Snímek obrazovky ukazuje stránku událostí pracovního prostoru Azure Machine Learning. Události a odběr událostí jsou zvýrazněny.

  3. Vedle názvu zadejte název odběru událostí, například MonitoringEvent.

  4. V části Typy událostí vyberte pouze Změna stavu spuštění.

    Upozorňující

    Pro typ události vyberte pouze změna stavu spuštění. Nevybírejte zjištěnou odchylku datové sady, která se vztahuje na posun dat v1, nikoli na monitorování modelu Azure Machine Learning.

  5. Vyberte kartu Filtry . V části Rozšířené filtry vyberte Přidat nový filtr a zadejte následující hodnoty:

    • Do pole Klíč zadejte data.RunTags.azureml_modelmonitor_threshold_breached.
    • V části Operátor vyberte Řetězec obsahuje.
    • V části Hodnota se zadání nezdařilo kvůli jedné nebo více funkcím, které porušují prahové hodnoty metriky.

    Snímek obrazovky se stránkou Vytvořit popis události na webu Azure Portal Karta Filtry a hodnoty v části Klíč, Operátor a Hodnota jsou zvýrazněné.

    Když použijete tento filtr, události se vygenerují, když se změní stav spuštění jakéhokoli monitoru v pracovním prostoru Azure Machine Learning. Stav spuštění se může změnit z dokončeného na neúspěšný nebo se nepodařilo dokončit.

    Pokud chcete filtrovat na úrovni monitorování, znovu vyberte Přidat nový filtr a zadejte následující hodnoty:

    • Do pole Klíč zadejte data.RunTags.azureml_modelmonitor_threshold_breached.
    • V části Operátor vyberte Řetězec obsahuje.
    • V části Hodnota zadejte název signálu monitoru, pro který chcete filtrovat události, například credit_card_fraud_monitor_data_drift. Zadaný název se musí shodovat s názvem vašeho monitorovacího signálu. Každý signál, který používáte při filtrování, by měl mít název ve formátu <monitor-name>_<signal-description> , který obsahuje název monitoru a popis signálu.
  6. Vyberte kartu Základy . Nakonfigurujte koncový bod, který chcete použít jako obslužnou rutinu události, jako je event Hubs.

  7. Výběrem možnosti Vytvořit vytvořte odběr události.

Zobrazit události

Po zachycení událostí je můžete zobrazit na stránce rozhraní obslužné rutiny události.

Snímek obrazovky stránky odběru událostí, která používá koncový bod Event Hubs a téma pracovního prostoru Azure Machine Learning. Graf je viditelný.

Události můžete zobrazit také na kartě Metriky služby Azure Monitor:

Snímek obrazovky se stránkou Monitorování metrik Spojnicový graf zobrazuje celkem tři události za poslední hodinu.