Övervaka prestanda för modeller som distribuerats till produktion

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

I Azure Machine Learning kan du använda modellövervakning för att kontinuerligt spåra prestanda för maskininlärningsmodeller i produktion. Modellövervakning ger dig en bred vy över övervakningssignaler. Du får också en avisering om potentiella problem. När du övervakar signaler och prestandamått för modeller i produktion kan du kritiskt utvärdera de inneboende riskerna med dina modeller. Du kan också identifiera blinda fläckar som kan påverka din verksamhet negativt.

I den här artikeln ser du hur du utför följande uppgifter:

  • Konfigurera inbyggda och avancerade övervakningar för modeller som distribueras till Azure Machine Learning-slutpunkter online
  • Övervaka prestandamått för modeller i produktion
  • Övervaka modeller som distribueras utanför Azure Machine Learning eller distribueras till Azure Machine Learning-batchslutpunkter
  • Konfigurera anpassade signaler och mått som ska användas i modellövervakning
  • Tolka övervakningsresultat
  • Integrera Azure Machine Learning-modellövervakning med Azure Event Grid

Förutsättningar

  • Azure CLI och ml tillägget till Azure CLI har installerats och konfigurerats. Mer information finns i Installera och konfigurera CLI (v2).

  • Ett Bash-gränssnitt eller ett kompatibelt gränssnitt, till exempel ett gränssnitt på ett Linux-system eller Windows-undersystem för Linux. Azure CLI-exemplen i den här artikeln förutsätter att du använder den här typen av gränssnitt.

  • En Azure Machine Learning-arbetsyta. Anvisningar för hur du skapar en arbetsyta finns i Konfigurera.

  • Ett användarkonto som har minst en av följande rollbaserade åtkomstkontrollroller i Azure (Azure RBAC):

    • En ägarroll för Azure Machine Learning-arbetsytan
    • En deltagarroll för Azure Machine Learning-arbetsytan
    • En anpassad roll som har Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* behörigheter

    Mer information finns i Hantera åtkomst till Azure Machine Learning-arbetsytor.

  • För övervakning av en Azure Machine Learning-hanterad onlineslutpunkt eller Kubernetes onlineslutpunkt:

  • För övervakning av en modell som distribueras till en Azure Machine Learning-batchslutpunkt eller distribueras utanför Azure Machine Learning:

    • Ett sätt att samla in produktionsdata och registrera dem som en Azure Machine Learning-datatillgång
    • Ett sätt att kontinuerligt uppdatera den registrerade datatillgången för modellövervakning
    • (Rekommenderas) Registrering av modellen på en Azure Machine Learning-arbetsyta för ursprungsspårning

Konfigurera en serverlös Spark-beräkningspool

Modellövervakningsjobb är schemalagda att köras på serverlösa Spark-beräkningspooler. Följande typer av Azure Virtual Machines-instanser stöds:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

Utför följande steg för att ange en typ av virtuell datorinstans när du följer procedurerna i den här artikeln:

När du använder Azure CLI för att skapa en övervakare använder du en YAML-konfigurationsfil. I filen anger du värdet create_monitor.compute.instance_type till den typ som du vill använda.

Konfigurera övervakning av färdiga modeller

Tänk dig ett scenario där du distribuerar din modell till produktion i en Azure Machine Learning-slutpunkt online och aktiverar datainsamling vid distributionstillfället. I det här fallet samlar Azure Machine Learning in produktionsinferensdata och lagrar dem automatiskt i Azure Blob Storage. Du kan använda Azure Machine Learning-modellövervakning för att kontinuerligt övervaka dessa produktionsinferensdata.

Du kan använda Azure CLI, Python SDK eller studio för en inbyggd konfiguration av modellövervakning. Den färdiga modellövervakningskonfigurationen innehåller följande övervakningsfunktioner:

  • Azure Machine Learning identifierar automatiskt den datatillgång för produktionsinferens som är associerad med en Azure Machine Learning-onlinedistribution och använder datatillgången för modellövervakning.
  • Jämförelsereferensdatatillgången anges som den senaste, tidigare datatillgången för produktionsinferens.
  • Övervakningskonfigurationen innehåller och spårar automatiskt följande inbyggda övervakningssignaler: dataavvikelse, förutsägelseavvikelse och datakvalitet. För varje övervakningssignal använder Azure Machine Learning:
    • Den senaste datatillgången för tidigare produktionsinferens som jämförelsereferensdatatillgång.
    • Smarta standardvärden för mått och tröskelvärden.
  • Ett övervakningsjobb är konfigurerat att köras enligt ett regelbundet schema. Det jobbet hämtar övervakningssignaler och utvärderar varje måttresultat mot motsvarande tröskelvärde. När ett tröskelvärde överskrids skickar Azure Machine Learning som standard ett e-postmeddelande till den användare som har konfigurerat övervakaren.

Utför följande steg för att konfigurera övervakning av färdiga modeller.

I Azure CLI använder az ml schedule du för att schemalägga ett övervakningsjobb.

  1. Skapa en övervakningsdefinition i en YAML-fil. En exempeldefinition finns i följande YAML-kod, som också är tillgänglig på lagringsplatsen azureml-examples.

    Innan du använder den här definitionen justerar du värdena så att de passar din miljö. För endpoint_deployment_idanvänder du ett värde i formatet 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. Kör följande kommando för att skapa modellen:

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

Konfigurera avancerad modellövervakning

Azure Machine Learning har många funktioner för kontinuerlig modellövervakning. En omfattande lista över den här funktionen finns i Funktioner för modellövervakning. I många fall måste du konfigurera modellövervakning som stöder avancerade övervakningsuppgifter. Följande avsnitt innehåller några exempel på avancerad övervakning:

  • Användning av flera övervakningssignaler för en bred vy
  • Användning av historiska modellträningsdata eller valideringsdata som jämförelsereferensdatatillgång
  • Övervakning av N viktigaste funktionerna och enskilda funktioner

Konfigurera funktionsvikt

Funktionsvikt representerar den relativa betydelsen av varje indatafunktion för en modells utdata. Temperatur kan till exempel vara viktigare för en modells förutsägelse än förhöjning. När du aktiverar funktionsviktning kan du ge insyn i vilka funktioner du inte vill ska driva eller ha problem med datakvaliteten i produktionen.

Om du vill aktivera funktionsviktning för någon av dina signaler, till exempel dataavvikelse eller datakvalitet, måste du ange:

  • Din träningsdatatillgång som reference_data datatillgång.
  • Egenskapen reference_data.data_column_names.target_column, som är namnet på modellens utdatakolumn eller prognoskolumn.

När du har aktiverat funktionsvikt visas en funktionsvikt för varje funktion som du övervakar i Azure Machine Learning Studio.

Du kan aktivera eller inaktivera aviseringar för varje signal genom att ange alert_enabled egenskapen när du använder Python SDK eller Azure CLI.

Du kan använda Azure CLI, Python SDK eller studio för att konfigurera avancerad modellövervakning.

  1. Skapa en övervakningsdefinition i en YAML-fil. En avancerad exempeldefinition finns i följande YAML-kod, som också är tillgänglig på lagringsplatsen azureml-examples.

    Innan du använder den här definitionen justerar du följande inställningar och andra för att uppfylla behoven i din miljö:

    • För endpoint_deployment_idanvänder du ett värde i formatet azureml:<endpoint-name>:<deployment-name>.
    • Använd ett värde i formatet pathför azureml:<reference-data-asset-name>:<version> i referensindataavsnitt.
    • För target_columnanvänder du namnet på den utdatakolumn som innehåller värden som modellen förutsäger, till exempel DEFAULT_NEXT_MONTH.
    • För featureslistar du funktioner som SEX, EDUCATIONoch AGE som du vill använda i en avancerad datakvalitetssignal.
    • Under emailslistar du de e-postadresser som du vill använda för meddelanden.
    # 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. Kör följande kommando för att skapa modellen:

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

Konfigurera prestandaövervakning av modeller

När du använder Azure Machine Learning-modellövervakning kan du spåra prestanda för dina modeller i produktion genom att beräkna deras prestandamått. Följande modellprestandamått stöds för närvarande:

  • För klassificeringsmodeller:
    • Noggrannhet
    • Noggrannhet
    • Återkalla
  • För regressionsmodeller:
    • Genomsnittligt absolut fel (MAE)
    • Genomsnittligt kvadratfel (MSE)
    • RMSE (Root Mean Squared Error)

Krav för övervakning av modellprestanda

  • Utdata för produktionsmodellen (modellens förutsägelser) med ett unikt ID för varje rad. Om du använder Azure Machine Learning-datainsamlaren för att samla in produktionsdata tillhandahålls ett korrelations-ID för varje slutsatsdragningsbegäran åt dig. Datainsamlaren erbjuder också möjligheten att logga ditt eget unika ID från ditt program.

    Kommentar

    För prestandaövervakning av Azure Machine Learning-modeller rekommenderar vi att du använder Azure Machine Learning-datainsamlaren för att logga ditt unika ID i en egen kolumn.

  • Jorda sanningsdata (faktiska) med ett unikt ID för varje rad. Det unika ID:t för en viss rad ska matcha det unika ID:t för modellens utdata för den specifika slutsatsdragningsbegäran. Det här unika ID:t används för att koppla din grundsanningsdatatillgång till modellens utdata.

    Om du inte har grundsanningsdata kan du inte utföra prestandaövervakning av modeller. Grund sanningsdata påträffas på programnivå, så det är ditt ansvar att samla in dem när de blir tillgängliga. Du bör också underhålla en datatillgång i Azure Machine Learning som innehåller dessa grundläggande sanningsdata.

  • (Valfritt) En föransluten tabelldatatillgång med modellutdata och marksanningsdata som redan är sammansatta.

Krav för övervakning av modellprestanda när du använder datainsamlaren

Azure Machine Learning genererar ett korrelations-ID åt dig när du uppfyller följande kriterier:

Det genererade korrelations-ID:t ingår i det loggade JSON-objektet. Datainsamlaren batchar dock rader som skickas inom korta tidsintervall för varandra. Batchade rader hamnar inom samma JSON-objekt. I varje objekt har alla rader samma korrelations-ID.

För att skilja mellan raderna i ett JSON-objekt använder Prestandaövervakning i Azure Machine Learning-modellen indexering för att fastställa ordningen på raderna i objektet. Om en batch till exempel innehåller tre rader och korrelations-ID:t är testhar den första raden ett ID test_0för , den andra raden har ett ID test_1för och den tredje raden har ett ID för test_2. För att matcha de unika ID:erna för din grunddata med ID:erna för det insamlade data från produktionsmodellen för inferens, använd ett index för varje korrelations-ID på rätt sätt. Om ditt loggade JSON-objekt bara har en rad använder du correlationid_0 som correlationid värde.

För att undvika att använda den här indexeringen rekommenderar vi att du loggar ditt unika ID i en egen kolumn. Placera kolumnen i pandas-dataramen som Azure Machine Learning-datainsamlaren loggar. I modellövervakningskonfigurationen kan du sedan ange namnet på den här kolumnen för att koppla dina modellutdata till dina grundsanningsdata. Så länge ID:na för varje rad i båda datatillgångarna är desamma kan Azure Machine Learning-modellövervakning utföra modellprestandaövervakning.

Exempelarbetsflöde för övervakning av modellprestanda

Tänk på följande exempelarbetsflöde för att förstå de begrepp som är associerade med övervakning av modellprestanda. Det gäller för ett scenario där du distribuerar en modell för att förutsäga om kreditkortstransaktioner är bedrägliga:

  1. Konfigurera distributionen så att datainsamlaren används för att samla in modellens produktionsinferensdata (indata och utdata). Lagra utdata i en kolumn med namnet is_fraud.
  2. För varje rad i insamlade slutsatsdragningsdata loggar du ett unikt ID. Det unika ID:t kan komma från ditt program, eller så kan du använda värdet correlationid som Azure Machine Learning unikt genererar för varje loggat JSON-objekt.
  3. När markinformationen (eller faktiska) is_fraud data är tillgänglig loggar och mappar du varje rad till samma unika ID som loggas för motsvarande rad i modellens utdata.
  4. Registrera en datatillgång i Azure Machine Learning och använd den för att samla in och underhålla grundsanningsdata is_fraud .
  5. Skapa en modellprestandaövervakningssignal som använder de unika ID-kolumnerna för att koppla modellens produktionsinferens och verkliga datatillgångar.
  6. Beräkna modellens prestandamått.

När du uppfyller kraven för övervakning av modellprestanda utför du följande steg för att konfigurera modellövervakning:

  1. Skapa en övervakningsdefinition i en YAML-fil. Följande exempelspecifikation definierar modellövervakning med produktionsinferensdata. Innan du använder den här definitionen justerar du följande inställningar och andra för att uppfylla behoven i din miljö:

    • För endpoint_deployment_idanvänder du ett värde i formatet azureml:<endpoint-name>:<deployment-name>.
    • För varje path värde i ett avsnitt med indata använder du ett värde i formatet azureml:<data-asset-name>:<version>.
    • För värdet prediction använder du namnet på den utdatakolumn som innehåller värden som modellen förutsäger.
    • För värdet actual använder du namnet på kolumnen ground truth som innehåller de faktiska värden som modellen försöker förutsäga.
    • correlation_id För värdena använder du namnen på de kolumner som används för att koppla utdata och grundsanningsdata.
    • Under emailslistar du de e-postadresser som du vill använda för meddelanden.
    # 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. Kör följande kommando för att skapa modellen:

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

Konfigurera modellövervakning av produktionsdata

Du kan också övervaka modeller som du distribuerar till Azure Machine Learning-batchslutpunkter eller som du distribuerar utanför Azure Machine Learning. Om du inte har någon distribution men har produktionsdata kan du använda data för att utföra kontinuerlig modellövervakning. Om du vill övervaka dessa modeller måste du kunna:

  • Samla in produktionsinferensdata från modeller som distribuerats i produktion.
  • Registrera produktionsinferensdata som en Azure Machine Learning-datatillgång och se till att data uppdateras kontinuerligt.
  • Ange en komponent för förbearbetning av anpassade data och registrera den som en Azure Machine Learning-komponent om du inte använder datainsamlaren för att samla in data. Utan den här komponenten för förbearbetning av anpassade data kan azure Machine Learning-modellövervakningssystemet inte bearbeta dina data till ett tabellformulär som stöder tidsfönster.

Din anpassade förbearbetningskomponent måste ha följande signaturer för in- och utdata:

Indata eller utdata Signaturnamn Typ Beskrivning Exempelvärde
indata data_window_start literal, sträng Starttiden för datafönstret i ISO8601 format 2023-05-01T04:31:57.012Z
indata data_window_end literal, sträng Datafönstrets sluttid i ISO8601 format 2023-05-01T04:31:57.012Z
indata input_data uri_folder Insamlade produktionsinferensdata, som är registrerade som en Azure Machine Learning-datatillgång azureml:myproduction_inference_data:1
utdata preprocessed_data mltable En tabelldatatillgång som matchar en delmängd av referensdataschemat

Ett exempel på en komponent för förbearbetning av anpassade data finns i custom_preprocessing i GitHub-lagringsplatsen azuremml-examples.

Anvisningar för hur du registrerar en Azure Machine Learning-komponent finns i Registrera komponenten på din arbetsyta.

När du har registrerat dina produktionsdata och förbearbetningskomponenten kan du konfigurera modellövervakning.

  1. Skapa en YAML-fil för övervakningsdefinition som liknar följande. Innan du använder den här definitionen justerar du följande inställningar och andra för att uppfylla behoven i din miljö:

    • För endpoint_deployment_idanvänder du ett värde i formatet azureml:<endpoint-name>:<deployment-name>.
    • För pre_processing_componentanvänder du ett värde i formatet azureml:<component-name>:<component-version>. Ange den exakta versionen, till exempel 1.0.0, inte 1.
    • För varje pathanvänder du ett värde i formatet azureml:<data-asset-name>:<version>.
    • För värdet target_column använder du namnet på den utdatakolumn som innehåller värden som modellen förutsäger.
    • Under emailslistar du de e-postadresser som du vill använda för meddelanden.
    # 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. Kör följande kommando för att skapa modellen.

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

Konfigurera modellövervakning med anpassade signaler och mått

När du använder Azure Machine Learning-modellövervakning kan du definiera en anpassad signal och implementera valfritt mått för att övervaka din modell. Du kan registrera din anpassade signal som en Azure Machine Learning-komponent. När modellövervakningsjobbet körs enligt det angivna schemat beräknas de mått som definieras i din anpassade signal, precis som för de fördefinierade signalerna för dataavvikelse, förutsägelseavvikelse och datakvalitet.

Om du vill konfigurera en anpassad signal som ska användas för modellövervakning måste du först definiera den anpassade signalen och registrera den som en Azure Machine Learning-komponent. Azure Machine Learning-komponenten måste ha följande signaturer för in- och utdata.

Signatur för komponentindata

Indataramen för komponenten bör innehålla följande objekt:

  • En mltable struktur som innehåller bearbetade data från förbearbetningskomponenten.
  • Valfritt antal literaler, som var och en representerar ett implementerat mått som en del av den anpassade signalkomponenten. Om du till exempel implementerar måttet std_deviation behöver du indata för std_deviation_threshold. Generellt sett bör det finnas en inmatning med namnet <metric-name>_threshold för varje mått.
Signaturnamn Typ Beskrivning Exempelvärde
production_data mltable En tabelldatatillgång som matchar en delmängd av referensdataschemat
std_deviation_threshold literal, sträng Respektive tröskelvärde för det implementerade måttet 2

Signatur för komponentutdata

Komponentens utdataport bör ha följande signatur:

Signaturnamn Typ Beskrivning
signal_metrics mltable Mltable-strukturen som innehåller de beräknade måtten. Schemat för den här signaturen finns i nästa avsnitt signal_metrics schema.

signalmetrikschema

Komponentens utdataram ska innehålla fyra kolumner: group, metric_name, metric_valueoch threshold_value.

Signaturnamn Typ Beskrivning Exempelvärde
group literal, sträng Den logiska grupperingen på den översta nivån som ska tillämpas på det anpassade måttet Transaktionsbelopp
metric_name literal, sträng Namnet på det anpassade måttet standardavvikelse
metric_value numerisk Värdet för det anpassade måttet 44,896.082
threshold_value numerisk Tröskelvärdet för det anpassade måttet 2

I följande tabell visas exempelutdata från en anpassad signalkomponent som beräknar måttet std_deviation :

grupp värde för måttenhet metriknamn tröskelvärde
Transaktionsbelopp 44,896.082 standardavvikelse 2
LOCALHOUR 3.983 standardavvikelse 2
TRANSAKTIONSBELOPPUSD 54 004,902 standardavvikelse 2
DIGITALITEMCOUNT 7.238 standardavvikelse 2
PHYSICALITEMCOUNT 5.509 standardavvikelse 2

Ett exempel på en anpassad signalkomponentdefinition och måttberäkningskod finns i custom_signal i lagringsplatsen azureml-examples.

Anvisningar för hur du registrerar en Azure Machine Learning-komponent finns i Registrera komponenten på din arbetsyta.

När du har skapat och registrerat din anpassade signalkomponent i Azure Machine Learning utför du följande steg för att konfigurera modellövervakning:

  1. Skapa en övervakningsdefinition i en YAML-fil som liknar följande. Innan du använder den här definitionen justerar du följande inställningar och andra för att uppfylla behoven i din miljö:

    • För component_idanvänder du ett värde i formatet azureml:<custom-signal-name>:1.0.0.
    • I avsnittet indata path använder du ett värde i formatet azureml:<production-data-asset-name>:<version>.
    • För pre_processing_component:
      • Om du använder datainsamlaren för att samla in dina data kan du utelämna egenskapen pre_processing_component .
      • Om du inte använder datainsamlaren och vill använda en komponent för att förbearbeta produktionsdata använder du ett värde i formatet azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • Under emailslistar du de e-postadresser som du vill använda för meddelanden.
    # 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. Kör följande kommando för att skapa modellen:

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

Tolka övervakningsresultat

När du har konfigurerat modellövervakaren och den första körningen är klar kan du visa resultatet i Azure Machine Learning Studio.

  1. I studion går du till Hantera och väljer Övervakning. På sidan Övervakning väljer du namnet på modellövervakaren för att se dess översiktssida. Den här sidan visar övervakningsmodellen, slutpunkten och distributionen. Den innehåller också detaljerad information om konfigurerade signaler. Följande bild visar en övervakningsöversiktssida som innehåller dataavvikelser och datakvalitetssignaler.

    Skärmbild av övervakningssidan för en modell med Övervakning markerat. Information om fel- och passfrekvenser är synlig för två signaler.

  2. Titta i avsnittet Meddelanden på översiktssidan. I det här avsnittet kan du se funktionen för varje signal som bryter mot det konfigurerade tröskelvärdet för respektive mått.

  3. I avsnittet Signaler väljer du data_drift för att se detaljerad information om dataavvikelsesignalen. På informationssidan kan du se måttvärdet för dataavvikelser för varje numerisk och kategorisk funktion som din övervakningskonfiguration innehåller. Om din övervakning har fler än en mätning, visas en trendlinje för varje funktion.

    Skärmbild som visar detaljerad information om dataavvikelsesignalen, inklusive ett funktionsdataavvikelsediagram och en funktionsuppdelning.

  4. På informationssidan väljer du namnet på en enskild funktion. En detaljerad vy öppnas som visar produktionsdistributionen jämfört med referensdistributionen. Du kan också använda den här vyn för att spåra drift över tid för funktionen.

    Skärmbild som visar detaljerad information om en funktion, inklusive ett histogram och ett diagram som visar drift över tid.

  5. Gå tillbaka till övervakningsöversiktssidan. I avsnittet Signaler väljer du data_quality för att visa detaljerad information om den här signalen. På den här sidan kan du se frekvenser av null-värde, gränsöverskridande frekvenser och datatypfel-frekvenser för varje egenskap som du övervakar.

    Skärmbild som visar detaljerad information om datakvalitetssignalen, inklusive fel- och passfrekvenser och en funktionsuppdelning.

Modellövervakning är en kontinuerlig process. När du använder Azure Machine Learning-modellövervakning kan du konfigurera flera övervakningssignaler för att få en bred överblick över prestanda för dina modeller i produktion.

Integrera Azure Machine Learning-modellövervakning med Event Grid

När du använder Event Grid kan du konfigurera händelser som genereras av Azure Machine Learning-modellövervakning för att utlösa program, processer och CI/CD-arbetsflöden. Du kan använda händelser via olika händelsehanterare, till exempel Azure Event Hubs, Azure Functions och Azure Logic Apps. När dina övervakare identifierar drift kan du vidta åtgärder programmatiskt, till exempel genom att köra en maskininlärningspipeline för att träna om en modell och distribuera om den.

Utför stegen i följande avsnitt för att integrera azure machine learning-modellövervakning med Event Grid.

Skapa ett systemämne

Om du inte har ett Event Grid-systemämne att använda för övervakning skapar du ett. Anvisningar finns i Avsnittet om att skapa, visa och hantera Event Grid-system i Azure-portalen.

Skapa en händelseprenumeration

  1. I Azure-portalen går du till din Azure Machine Learning-arbetsyta.

  2. Välj Händelser och välj sedan Händelseprenumeration.

    Skärmbild som visar händelsesidan för en Azure Machine Learning-arbetsyta. Händelser och händelseprenumeration är markerade.

  3. Bredvid Namn anger du ett namn för din händelseprenumeration, till exempel MonitoringEvent.

  4. Under Händelsetyper väljer du endast Kör status ändrad.

    Varning

    Välj endast Körstatus ändrad för händelsetypen. Välj inte Identifierad datauppsättningsdrift, vilket gäller för dataavvikelse v1, inte för övervakning av Azure Machine Learning-modeller.

  5. Välj fliken Filter . Under Avancerade filter väljer du Lägg till nytt filter och anger sedan följande värden:

    • Under Nyckel anger du data.RunTags.azureml_modelmonitor_threshold_breached.
    • Under Operator väljer du Sträng innehåller.
    • Under Värde, ange har misslyckats på grund av att en eller flera funktioner bryter mot metrikktrösklar.

    Skärmbild av sidan Skapa händelsebeskrivning i Azure-portalen. Fliken Filter och värdena under Nyckel, Operator och Värde är markerade.

    När du använder det här filtret genereras händelser när körningsstatusen för alla övervakare på din Azure Machine Learning-arbetsyta ändras. Körningsstatusen kan ändras från slutförd till misslyckad eller från misslyckad till slutförd.

    Om du vill filtrera på övervakningsnivå väljer du Lägg till nytt filter igen och anger sedan följande värden:

    • Under Nyckel anger du data.RunTags.azureml_modelmonitor_threshold_breached.
    • Under Operator väljer du Sträng innehåller.
    • Under Värde anger du namnet på en övervakningssignal som du vill filtrera händelser för, till exempel credit_card_fraud_monitor_data_drift. Namnet som du anger måste matcha namnet på din övervakningssignal. Alla signaler som du använder i filtreringen ska ha ett namn i formatet <monitor-name>_<signal-description> som innehåller namnet på monitorn och en beskrivning av signalen.
  6. Välj fliken Grundläggande . Konfigurera den slutpunkt som du vill fungera som händelsehanterare, till exempel Event Hubs.

  7. Välj Skapa för att skapa händelseprenumerationen.

Visa händelser

När du har avbildat händelser kan du visa dem på sidan för händelsehanterarens slutpunkt:

Skärmbild av en händelseprenumerationssida som använder en Event Hubs-slutpunkt och ett Azure Machine Learning-arbetsyteavsnitt. Ett diagram visas.

Du kan också visa händelser på fliken Azure Monitor Metrics :

Skärmbild av sidan Övervaka mått. Ett linjediagram visar totalt tre händelser under den senaste timmen.