Freigeben über


Überwachen der Leistung von Modellen, die für die Produktion bereitgestellt werden

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

In Azure Machine Learning können Sie die Modellüberwachung verwenden, um die Leistung von Machine Learning-Modellen in der Produktion kontinuierlich nachzuverfolgen. Die Modellüberwachung bietet Ihnen einen breiten Überblick über Überwachungssignale. Außerdem werden Sie auf potenzielle Probleme aufmerksam. Wenn Sie Signale und Leistungsmetriken von Modellen in der Produktion überwachen, können Sie die inhärenten Risiken Ihrer Modelle kritisch bewerten. Sie können auch blinde Flecken identifizieren, die sich negativ auf Ihr Unternehmen auswirken können.

In diesem Artikel erfahren Sie, wie Sie die folgenden Aufgaben ausführen:

  • Einrichten von sofort einsatzbereiten und erweiterten Überwachungen für Modelle, die für Azure Machine Learning-Onlineendpunkte bereitgestellt werden
  • Überwachen von Leistungsmetriken für Modelle in der Produktion
  • Überwachung für Modelle einrichten, die außerhalb von Azure Machine Learning oder an Batch-Endpunkten von Azure Machine Learning bereitgestellt werden
  • Einrichten von benutzerdefinierten Signalen und Metriken für die Modellüberwachung
  • Interpretieren von Überwachungsergebnissen
  • Integrieren der Azure Machine Learning-Modellüberwachung in Azure Event Grid

Voraussetzungen

  • Ein Benutzerkonto mit mindestens einer der folgenden rollenbasierten Azure-Zugriffssteuerungsrollen (Azure RBAC):

    • Eine Besitzerrolle für den Azure Machine Learning-Arbeitsbereich
    • Mitwirkenderrolle für den Azure Machine Learning-Arbeitsbereich
    • Eine benutzerdefinierte Rolle mit Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* Berechtigungen

    Weitere Informationen finden Sie unter Verwalten des Zugriffs auf Azure Machine Learning-Arbeitsbereiche.

  • Für die Überwachung eines von Azure Machine Learning verwalteten Online-Endpunkts oder Kubernetes-Onlineendpunkts:

  • Zum Überwachen eines Modells, das auf einem Azure Machine Learning-Batchendpunkt bereitgestellt oder außerhalb von Azure Machine Learning bereitgestellt wird:

    • Ein Mittel zum Sammeln von Produktionsdaten und zum Registrieren als Azure Machine Learning-Datenressource
    • Ein Mittel zum kontinuierlichen Aktualisieren der registrierten Datenressource für die Modellüberwachung
    • (Empfohlen) Registrierung des Modells in einem Azure Machine Learning-Arbeitsbereich für die Nachverfolgung von Linien

Konfigurieren eines serverlosen Spark-Computepools

Die Ausführung von Modellüberwachungsaufträgen ist für serverlose Spark-Computepools geplant. Die folgenden Azure Virtual Machines-Instanztypen werden unterstützt:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

Führen Sie die folgenden Schritte aus, um einen Instanztyp eines virtuellen Computers anzugeben, wenn Sie die in diesem Artikel beschriebenen Verfahren ausführen:

Wenn Sie die Azure CLI zum Erstellen eines Monitors verwenden, verwenden Sie eine YAML-Konfigurationsdatei. Legen Sie in dieser Datei den create_monitor.compute.instance_type Wert auf den Typ fest, den Sie verwenden möchten.

Einrichten der sofort einsatzbereiten Modellüberwachung

Ziehen Sie ein Szenario in Betracht, in dem Sie Ihr Modell in einem Azure Machine Learning-Onlineendpunkt bereitstellen und die Datensammlung während der Bereitstellung aktivieren. In diesem Fall sammelt Azure Machine Learning Produktions-Ableitungsdaten und speichert sie automatisch in Azure Blob Storage. Sie können die Azure Machine Learning-Modellüberwachung verwenden, um diese Produktionsferenzdaten kontinuierlich zu überwachen.

Sie können die Azure CLI, das Python SDK oder das Studio für eine sofort einsatzbereite Einrichtung der Modellüberwachung verwenden. Die vordefinierte Modellüberwachungskonfiguration bietet die folgenden Überwachungsfunktionen:

  • Azure Machine Learning erkennt automatisch die Produktionsdatenressource, die einer Azure Machine Learning-Onlinebereitstellung zugeordnet ist, und verwendet die Datenressource für die Modellüberwachung.
  • Die Verweisdatenobjekt des Vergleichs wird das Produktionsrückschluss-Datenobjekt der jüngsten Vergangenheit festgelegt.
  • Das Überwachungssetup umfasst und verfolgt automatisch die folgenden integrierten Überwachungssignale: Datendrift, Vorhersagedrift und Datenqualität. Für jedes Überwachungssignal verwendet Azure Machine Learning Folgendes:
    • Das Produktionsrückschluss-Datenobjekt der jüngsten Vergangenheit als Verweisdatenobjekt des Vergleichs.
    • Intelligente Standardwerte für Metriken und Schwellenwerte.
  • Ein Überwachungsauftrag ist so konfiguriert, dass er regelmäßig ausgeführt wird. Dieser Auftrag erfasst Überwachungssignale und wertet jedes Metrikergebnis anhand seines entsprechenden Schwellenwerts aus. Wenn ein Schwellenwert überschritten wird, sendet Azure Machine Learning standardmäßig eine Benachrichtigungs-E-Mail an den Benutzer, der den Monitor eingerichtet hat.

Führen Sie die folgenden Schritte aus, um die sofort einsatzbereite Modellüberwachung einzurichten.

In der Azure CLI verwenden Sie az ml schedule, um einen Überwachungsauftrag zu planen.

  1. Erstellen Sie eine Überwachungsdefinition in einer YAML-Datei. Eine vordefinierte Beispieldefinition finden Sie im folgenden YAML-Code, der auch im Repository „azureml-examples“ verfügbar ist.

    Bevor Sie diese Definition verwenden, passen Sie die Werte an Ihre Umgebung an. Verwenden Sie für endpoint_deployment_id einen Wert im Format 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. Führen Sie den folgenden Befehl aus, um das Modell zu erstellen:

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

Einrichten der erweiterten Modellüberwachung

Azure Machine Learning bietet viele Funktionen für die kontinuierliche Modellüberwachung. Eine umfassende Liste dieser Funktionen finden Sie unter "Funktionen der Modellüberwachung". In vielen Fällen müssen Sie die Modellüberwachung einrichten, die erweiterte Überwachungsaufgaben unterstützt. Im folgenden Abschnitt finden Sie einige Beispiele für die erweiterte Überwachung:

  • Verwendung mehrerer Überwachungssignale für eine breite Ansicht
  • Verwendung von Historischen Modellschulungsdaten oder Validierungsdaten als Vergleichsreferenzdatenressource
  • Überwachung der wichtigsten N-Features und einzelner Features

Konfigurieren der Featurerelevanz

Die Feature-Wichtigkeit stellt die relative Wichtigkeit jedes Eingabefeatures für die Ausgabe eines Modells dar. Die Temperatur kann z. B. für die Vorhersage eines Modells wichtiger sein als die Erhöhung. Wenn Sie Featurerelevanz aktivieren, können Sie festlegen, welche Features in der Produktion nicht abweichen oder Datenqualitätsprobleme aufweisen dürfen.

Um Featurerelevanz mit jedem Ihrer Signale (z. B. Datendrift oder Datenqualität) zu aktivieren, müssen Sie Folgendes bereitstellen:

  • Ihr Trainingsdatenobjekt als reference_data-Datenobjekt.
  • Die reference_data.data_column_names.target_column-Eigenschaft ist der Name der Ausgabespalte oder Vorhersagespalte Ihres Modells.

Nachdem Sie die Feature-Wichtigkeit aktiviert haben, wird für jedes Feature, das Sie im Azure Machine Learning Studio überwachen, eine Feature-Wichtigkeit angezeigt.

Sie können Benachrichtigungen für jedes Signal aktivieren oder deaktivieren, indem Sie die alert_enabled Eigenschaft festlegen, wenn Sie das Python SDK oder die Azure CLI verwenden.

Sie können die Azure CLI, das Python SDK oder das Studio verwenden, um die erweiterte Modellüberwachung einzurichten.

  1. Erstellen Sie eine Überwachungsdefinition in einer YAML-Datei. Eine erweiterte Beispieldefinition finden Sie im folgenden YAML-Code, der auch im Azureml-Beispiel-Repository verfügbar ist.

    Bevor Sie diese Definition verwenden, passen Sie die folgenden Einstellungen und alle anderen Einstellungen an die Anforderungen Ihrer Umgebung an:

    • Verwenden Sie für endpoint_deployment_id einen Wert im Format azureml:<endpoint-name>:<deployment-name>.
    • Verwenden Sie für path in Abschnitten der Verweiseingabedaten einen Wert im Format azureml:<reference-data-asset-name>:<version>.
    • Verwenden Sie für target_column den Namen der Ausgabespalte, die Werte enthält, die das Modell vorhersagt, wie beispielsweise DEFAULT_NEXT_MONTH.
    • Listen Sie die Features für features auf, wie SEX, EDUCATION, und AGE, die Sie in einem erweiterten Signal für Datenqualität verwenden möchten.
    • Listen Sie unter emails die E-Mail-Adressen auf, die Sie für Benachrichtigungen verwenden möchten.
    # 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. Führen Sie den folgenden Befehl aus, um das Modell zu erstellen:

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

Einrichten der Modellleistungsüberwachung

Wenn Sie die Azure Machine Learning-Modellüberwachung verwenden, können Sie die Leistung Ihrer Modelle in der Produktion nachverfolgen, indem Sie deren Leistungsmetriken berechnen. Die folgenden Modellleistungsmetriken werden derzeit unterstützt:

  • Für Klassifizierungsmodelle:
    • Präzision
    • Genauigkeit
    • Abruf
  • Für Regressionsmodelle:
    • Mittlerer absoluter Fehler (MAE)
    • Mittlerer quadratischer Fehler (MSE)
    • Mittlere quadratische Gesamtabweichung (RMSE)

Voraussetzungen für die Modellleistungsüberwachung

  • Ausgabedaten für das Produktionsmodell (die Vorhersagen des Modells) mit einer eindeutigen ID für jede Zeile. Wenn Sie den Azure Machine Learning-Datensammler zum Sammeln von Produktionsdaten verwenden, wird für jede Rückschlussanforderung für Sie eine Korrelations-ID bereitgestellt. Der Datensammler bietet auch die Möglichkeit, Ihre eigene eindeutige ID aus Ihrer Anwendung zu protokollieren.

    Hinweis

    Für die Leistungsüberwachung des Azure Machine Learning-Modells wird empfohlen, den Azure Machine Learning-Datensammler zu verwenden, um Ihre eindeutige ID in einer eigenen Spalte zu protokollieren.

  • Grundwahrheitsdaten (Ist-Werte) mit einer eindeutigen ID für jede Zeile. Die eindeutige ID für eine bestimmte Zeile sollte mit der eindeutigen ID für die Modellausgabedaten für diese bestimmte Ableitungsanforderung übereinstimmen. Diese eindeutige ID wird verwendet, um Ihren Grundwahrheitsdatensatz mit der Modelldaten-Ausgabe zu verknüpfen.

    Wenn Sie keine Bodendaten haben, können Sie keine Modellleistungsüberwachung durchführen. Da sich Grundwahrheitsdaten auf Anwendungsebene befinden, liegt es in Ihrer Verantwortung, sie zu sammeln, sobald sie verfügbar werden. Sie sollten auch eine Datenressource in Azure Machine Learning verwalten, die diese Grundwahrheitsdaten enthält.

  • (Optional) Eine vordefinierte tabellarische Datenressource mit Modellausgabedaten und Boden-Wahrheitsdaten, die bereits miteinander verbunden sind.

Anforderungen für die Modellleistungsüberwachung, wenn Sie den Datensammler verwenden

Azure Machine Learning generiert eine Korrelations-ID für Sie, wenn Sie die folgenden Kriterien erfüllen:

  • Sie verwenden den Azure Machine Learning-Datensammler , um Produktionsableitungsdaten zu sammeln.
  • Sie geben für jede Zeile keine eigene eindeutige ID als separate Spalte an.

Die generierte Korrelations-ID ist im protokollierten JSON-Objekt enthalten. Der Datensammler bündelt jedoch Zeilen, die innerhalb kurzer Zeitintervalle gesendet werden. Batchzeilen fallen in dasselbe JSON-Objekt. Innerhalb jedes Objekts weisen alle Zeilen dieselbe Korrelations-ID auf.

Um zwischen den Zeilen in einem JSON-Objekt zu unterscheiden, verwendet azure Machine Learning-Modellleistungsüberwachung die Indizierung, um die Reihenfolge der Zeilen innerhalb des Objekts zu bestimmen. Wenn ein Batch beispielsweise drei Zeilen enthält und die Korrelations-ID lautet test, hat die erste Zeile eine ID von test_0, die zweite Zeile hat eine ID von test_1, und die dritte Zeile hat eine ID von test_2. Um die eindeutigen IDs Ihrer Grundwahrheitsdaten mit den IDs Ihrer gesammelten Ausgabedaten Ihres Produktionsrückschlussmodells abzugleichen, wenden Sie auf jede Korrelations-ID einen geeigneten Index an. Wenn Ihr protokolliertes JSON-Objekt nur eine Zeile enthält, verwenden Sie correlationid_0 als Wert für correlationid.

Um diese Indizierung zu vermeiden, empfiehlt es sich, Ihre eindeutige ID in einer eigenen Spalte zu protokollieren. Platzieren Sie diese Spalte innerhalb des Pandas-Datenrahmens, den der Azure Machine Learning-Datensammler protokolliert. In Ihrer Modellüberwachungskonfiguration können Sie dann den Namen dieser Spalte angeben, um Ihre Modellausgabedaten mit Ihren Boden-Wahrheitsdaten zu verknüpfen. Solange die IDs für jede Zeile in beiden Datenbeständen identisch sind, kann die Azure Machine Learning-Modellüberwachung die Leistung des Modells überwachen.

Beispielworkflow für die Überwachung der Modellleistung

Um die Konzepte zu verstehen, die der Modellleistungsüberwachung zugeordnet sind, sollten Sie den folgenden Beispielworkflow berücksichtigen. Es gilt für ein Szenario, in dem Sie ein Modell bereitstellen, um vorherzusagen, ob Kreditkartentransaktionen betrügerisch sind:

  1. Konfigurieren Sie Ihre Bereitstellung so, dass der Datensammler verwendet wird, um die Produktionsrückschlussdaten (Eingabe- und Ausgabedaten) des Modells zu sammeln. Speichern Sie die Ausgabedaten in einer Spalte mit dem Namen is_fraud.
  2. Protokollieren Sie für jede Zeile der gesammelten Rückschlussdaten eine eindeutige ID. Die eindeutige ID kann aus Ihrer Anwendung stammen, oder Sie können den Wert verwenden, den correlationid Azure Machine Learning für jedes protokollierte JSON-Objekt eindeutig generiert.
  3. Wenn die Grundwahrheitsdaten is_fraud (oder Ist-Werte) verfügbar sind, protokollieren Sie jede Zeile und ordnen Sie sie derselben eindeutigen ID zu, die für die entsprechende Zeile in den Ausgabedaten des Modells protokolliert wurde.
  4. Registrieren Sie eine Datenressource in Azure Machine Learning, und verwenden Sie sie zum Sammeln und Verwalten der Boden-Wahrheitsdaten is_fraud .
  5. Erstellen Sie mithilfe der eindeutigen ID-Spalten ein Modellleistungsüberwachungssignal, das die Produktionsrückschluss- und Grundwahrheitsdatenobjekte des Modells verknüpft.
  6. Berechnen sie die Modellleistungsmetriken.

Nachdem Sie die Voraussetzungen für die Modellleistungsüberwachung erfüllt haben, führen Sie die folgenden Schritte aus, um die Modellüberwachung einzurichten:

  1. Erstellen Sie eine Überwachungsdefinition in einer YAML-Datei. Die folgende Beispielspezifikation definiert die Modellüberwachung mit Produktions-Ableitungsdaten. Bevor Sie diese Definition verwenden, passen Sie die folgenden Einstellungen und alle anderen Einstellungen an die Anforderungen Ihrer Umgebung an:

    • Für endpoint_deployment_id einen Wert im Format azureml:<endpoint-name>:<deployment-name> verwenden.
    • Verwenden Sie für jeden path Wert in einem Eingabedatenabschnitt einen Wert im Format azureml:<data-asset-name>:<version>.
    • Verwenden Sie für den prediction Wert den Namen der Ausgabespalte, die Werte enthält, die vom Modell vorhergesagt werden.
    • Verwenden Sie für den actual Wert den Namen der Ground-Truth-Spalte, die die tatsächlichen Werte enthält, die vom Modell vorhergesagt werden sollen.
    • Verwenden Sie für die correlation_id Werte die Namen der Spalten, die verwendet werden, um die Ausgabedaten und die Boden-Wahrheitsdaten zu verknüpfen.
    • Listen Sie unter emails die E-Mail-Adressen auf, die Sie für Benachrichtigungen verwenden möchten.
    # 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. Führen Sie den folgenden Befehl aus, um das Modell zu erstellen:

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

Einrichten der Modellüberwachung von Produktionsdaten

Sie können auch Modelle überwachen, die Sie auf Azure Machine Learning-Batchendpunkten bereitstellen oder die Sie außerhalb von Azure Machine Learning bereitstellen. Wenn Sie nicht über eine Bereitstellung verfügen, aber über Produktionsdaten verfügen, können Sie die Daten verwenden, um eine kontinuierliche Modellüberwachung durchzuführen. Um diese Modelle zu überwachen, müssen Sie folgende Möglichkeiten haben:

  • Sammeln Sie Produktionsinferenzdaten aus Modellen, die in der Produktionsumgebung bereitgestellt werden.
  • Registrieren Sie die Produktionsinferenzdaten als Azure Machine Learning-Datenressource, und stellen Sie eine kontinuierliche Aktualisierungen der Daten sicher.
  • Stellen Sie eine benutzerdefinierte Datenvorverarbeitungskomponente bereit, und registrieren Sie sie als Azure Machine Learning-Komponente, wenn Sie den Datensammler nicht zum Sammeln von Daten verwenden. Ohne diese benutzerdefinierte Datenvorverarbeitungskomponente kann das Azure Machine Learning-Modellüberwachungssystem Ihre Daten nicht in ein tabellarisches Formular verarbeiten, das zeitfenstern unterstützt.

Ihre benutzerdefinierte Vorverarbeitungskomponente muss über die folgenden Eingabe- und Ausgabesignaturen verfügen:

Eingabe oder Ausgabe Signaturname type Beschreibung Beispielswert
Eingabe data_window_start Literal, Zeichenfolge Startzeit des Datenfensters im ISO8601 Format 2023-05-01T04:31:57.012Z
Eingabe data_window_end Literal, Zeichenfolge Endzeit des Datenfensters im ISO8601 Format 2023-05-01T04:31:57.012Z
Eingabe input_data uri_folder Die gesammelten Produktionsferenzdaten, die als Azure Machine Learning-Datenressource registriert sind azureml:myproduction_inference_data:1
Ausgabe preprocessed_data MLTable Eine tabellarische Datenressource, die einer Teilmenge des Referenzdatenschemas entspricht

Ein Beispiel für eine benutzerdefinierte Datenvorverarbeitungskomponente finden Sie unter custom_preprocessing im GitHub-Repository „azuremml-examples“.

Anweisungen zum Registrieren einer Azure Machine Learning-Komponente finden Sie unter Registrieren der Komponente in Ihrem Arbeitsbereich.

Nachdem Sie Die Produktionsdaten und die Vorverarbeitungskomponente registriert haben, können Sie die Modellüberwachung einrichten.

  1. Erstellen Sie eine YAML-Überwachungsdefinitionsdatei, die dem folgenden ähnelt. Bevor Sie diese Definition verwenden, passen Sie die folgenden Einstellungen und alle anderen Einstellungen an die Anforderungen Ihrer Umgebung an:

    • Verwenden Sie für endpoint_deployment_id einen Wert im Format azureml:<endpoint-name>:<deployment-name>.
    • Verwenden Sie für pre_processing_component einen Wert im Format azureml:<component-name>:<component-version>. Geben Sie die genaue Version an, wie 1.0.0, nicht 1.
    • Verwenden Sie für jedes path, einen Wert im Format azureml:<data-asset-name>:<version>.
    • Verwenden Sie für den target_column Wert den Namen der Ausgabespalte, die Werte enthält, die vom Modell vorhergesagt werden.
    • Listen Sie unter emails die E-Mail-Adressen auf, die Sie für Benachrichtigungen verwenden möchten.
    # 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. Führen Sie den folgenden Befehl aus, um das Modell zu erstellen.

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

Einrichten der Modellüberwachung mit benutzerdefinierten Signalen und Metriken

Wenn Sie die Azure Machine Learning-Modellüberwachung verwenden, können Sie ein benutzerdefiniertes Signal definieren und eine beliebige Metrik Ihrer Wahl implementieren, um Ihr Modell zu überwachen. Sie können Ihr benutzerdefiniertes Signal als Azure Machine Learning-Komponente registrieren. Wenn ihr Modellüberwachungsauftrag im angegebenen Zeitplan ausgeführt wird, berechnet er die Metriken, die innerhalb Ihres benutzerdefinierten Signals definiert sind, genau wie für die Datenabweichung, Vorhersageabweichung und vordefinierte Datenqualitätssignale.

Um ein benutzerdefiniertes Signal für die Modellüberwachung einzurichten, müssen Sie zuerst das benutzerdefinierte Signal definieren und als Azure Machine Learning-Komponente registrieren. Die Azure Machine Learning-Komponente muss über die folgenden Eingabe- und Ausgabesignaturen verfügen.

Signatur der Komponenteneingabe

Der Komponenteneingabedatenframe sollte die folgenden Elemente enthalten:

  • Eine mltable Struktur, die die verarbeiteten Daten aus der Vorverarbeitungskomponente enthält.
  • Eine beliebige Anzahl von Literalen, die jeweils eine implementierte Metrik als Teil der benutzerdefinierten Signalkomponente darstellen. Wenn Sie beispielsweise die std_deviation Metrik implementieren, benötigen Sie eine Eingabe für std_deviation_threshold. Im Allgemeinen sollte eine Eingabe mit dem Namen <metric-name>_threshold pro Metrik vorhanden sein.
Signaturname type Beschreibung Beispielswert
production_data MLTable Eine tabellarische Datenressource, die einer Teilmenge des Referenzdatenschemas entspricht
std_deviation_threshold Literal, Zeichenfolge Der entsprechende Schwellenwert für die implementierte Metrik 2

Signatur der Komponentenausgabe

Der Komponentenausgabeport sollte die folgende Signatur aufweisen:

Signaturname type Beschreibung
signal_metrics MLTable Die mltable-Struktur, die die berechneten Metriken enthält. Das Schema dieser Signatur finden Sie im nächsten Abschnitt signal_metrics Schemas.

signal_metrics Schema

Der Datenrahmen für die Komponentenausgabe sollte vier Spalten enthalten: group, , metric_name, metric_valueund threshold_value.

Signaturname type Beschreibung Beispielswert
group Literal, Zeichenfolge Die logische Gruppierung der obersten Ebene, die auf die benutzerdefinierte Metrik angewendet werden soll TRANSACTIONAMOUNT
metric_name Literal, Zeichenfolge Der Name der benutzerdefinierten Metrik std_deviation
metric_value Numerisch Der Wert der benutzerdefinierten Metrik 44.896,082
threshold_value Numerisch Der Schwellenwert für die benutzerdefinierte Metrik 2

Die folgende Tabelle zeigt die Beispielausgabe einer benutzerdefinierten Signalkomponente, die die std_deviation Metrik berechnet:

Gruppe Metrikwert metric_name Schwellenwert
Transaktionsbetrag 44.896,082 std_deviation 2
Ortszeit 3,983 std_deviation 2
TRANSACTIONAMOUNTUSD 54.004,902 std_deviation 2
DIGITALITEMCOUNT 7,238 std_deviation 2
PHYSICALITEMCOUNT 5,509 std_deviation 2

Ein Beispiel für eine Definition einer benutzerdefinierten Signalkomponente und eines metrischen Berechnungscodes finden Sie unter custom_signal im Azureml-Beispiel-Repository.

Anweisungen zum Registrieren einer Azure Machine Learning-Komponente finden Sie unter Registrieren der Komponente in Ihrem Arbeitsbereich.

Nachdem Sie Ihre benutzerdefinierte Signalkomponente in Azure Machine Learning erstellt und registriert haben, führen Sie die folgenden Schritte aus, um die Modellüberwachung einzurichten:

  1. Erstellen Sie eine Überwachungsdefinition in einer YAML-Datei, die dem folgenden ähnelt. Bevor Sie diese Definition verwenden, passen Sie die folgenden Einstellungen und alle anderen Einstellungen an die Anforderungen Ihrer Umgebung an:

    • Verwenden Sie für component_id einen Wert im Format azureml:<custom-signal-name>:1.0.0.
    • path Verwenden Sie im Abschnitt "Eingabedaten" einen Wert im Formatazureml:<production-data-asset-name>:<version>.
    • Für pre_processing_component:
      • Wenn Sie den Datensammler zum Sammeln Ihrer Daten verwenden, können Sie die pre_processing_component Eigenschaft weglassen.
      • Wenn Sie den Datensammler nicht verwenden und eine Komponente zum Vorverarbeitung von Produktionsdaten verwenden möchten, verwenden Sie einen Wert im Format azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • Listen Sie unter emails die E-Mail-Adressen auf, die Sie für Benachrichtigungen verwenden möchten.
    # 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. Führen Sie den folgenden Befehl aus, um das Modell zu erstellen:

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

Interpretieren von Überwachungsergebnissen

Nachdem Sie den Modellmonitor und die erste Ausführung konfiguriert haben, können Sie die Ergebnisse im Azure Machine Learning Studio anzeigen.

  1. Wählen Sie im Studio unter "Verwalten" die Option "Überwachung" aus. Wählen Sie auf der Seite "Überwachung" den Namen Ihres Modellmonitors aus, um die Zugehörige Übersichtsseite anzuzeigen. Diese Seite zeigt das Überwachungsmodell, den Endpunkt und die Bereitstellung an. Außerdem werden detaillierte Informationen zu konfigurierten Signalen bereitgestellt. Die folgende Abbildung zeigt eine Überwachungsübersichtsseite, die Datenabweichungs- und Datenqualitätssignale enthält.

    Screenshot: Überwachungsseite für ein Modell mit hervorgehobener Option „Überwachung“. Informationen zu Fehler- und Erfolgsraten sind für zwei Signale sichtbar.

  2. Suchen Sie im Abschnitt "Benachrichtigungen" der Übersichtsseite. In diesem Abschnitt sehen Sie das Feature für jedes Signal, das den konfigurierten Schwellenwert für die jeweilige Metrik verletzt.

  3. Wählen Sie im Abschnitt "Signale " data_drift aus, um detaillierte Informationen zum Datenabweichungssignal anzuzeigen. Auf der Detailseite können Sie den Metrikwert der Datenabweichung für jedes numerische und kategorisierte Feature sehen, das ihre Überwachungskonfiguration enthält. Wenn Ihr Monitor mehrere Durchläufe aufweist, wird für jede Funktion eine Trendlinie angezeigt.

    Screenshot mit detaillierten Informationen zum Datenabweichungssignal, einschließlich eines Featuredatenabweichungsdiagramms und einer Funktionsaufschlüsselung.

  4. Wählen Sie auf der Detailseite den Namen eines einzelnen Features aus. Eine detaillierte Ansicht wird geöffnet, in der die Produktionsverteilung im Vergleich zur Referenzverteilung angezeigt wird. Sie können diese Ansicht auch verwenden, um den Drift im Laufe der Zeit für das Feature nachzuverfolgen.

    Screenshot, der detaillierte Informationen zu einem Feature enthält, einschließlich eines Histogramms und eines Diagramms, das eine Abweichung über die Zeit zeigt.

  5. Kehren Sie zur Überwachungsübersichtsseite zurück. Wählen Sie im Abschnitt "Signale " data_quality aus, um detaillierte Informationen zu diesem Signal anzuzeigen. Auf dieser Seite können Sie die Nullwertsätze, Grenzwertüberschreitungsraten und Datentypfehlerraten für jedes Feature anzeigen, das Sie überwachen.

    Screenshot mit detaillierten Informationen zum Datenqualitätssignal, einschließlich Fehler- und Passraten und einer Funktionsaufschlüsselung.

Modellüberwachung ist ein kontinuierlicher Prozess. Wenn Sie die Azure Machine Learning-Modellüberwachung verwenden, können Sie mehrere Überwachungssignale konfigurieren, um einen umfassenden Überblick über die Leistung Ihrer Modelle in der Produktion zu erhalten.

Integrieren der Azure Machine Learning-Modellüberwachung in das Ereignisraster

Wenn Sie Event Grid verwenden, können Sie Ereignisse konfigurieren, die von der Azure Machine Learning-Modellüberwachung generiert werden, um Anwendungen, Prozesse und CI/CD-Workflows auszulösen. Sie können Ereignisse über verschiedene Ereignishandler empfangen, beispielsweise mit Azure Event Hubs, Azure Functions und Azure Logic Apps. Wenn Ihre Monitore Abweichung erkennen, können Sie programmgesteuert Maßnahmen ergreifen, z. B. indem Sie eine Machine Learning-Pipeline ausführen, um ein Modell neu zu trainieren und erneut bereitzustellen.

Führen Sie die Schritte in den folgenden Abschnitten aus, um die Azure Machine Learning-Modellüberwachung in das Event Grid zu integrieren.

Erstellen eines Systemthemas

Wenn Sie nicht über ein Ereignisrastersystemthema verfügen, das für die Überwachung verwendet werden soll, erstellen Sie eins. Anweisungen finden Sie unter Erstellen, Anzeigen und Verwalten von Ereignisrastersystemthemen im Azure-Portal.

Erstellen eines Ereignisabonnements

  1. Wechseln Sie im Azure-Portal zu Ihrem Azure Machine Learning-Arbeitsbereich.

  2. Wählen Sie Ereignisse und dann Ereignis-Abonnement aus.

    Screenshot der Seite

  3. Geben Sie neben Name einen Namen für Ihr Ereignisabonnement ein, z. B. MonitoringEvent.

  4. Wählen Sie unter Ereignistypen nur Ausführungsstatus geändert aus.

    Warnung

    Wählen Sie nur Geänderter Ausführungsstatus als Ereignistyp aus. Wählen Sie nicht Datasetdrift erkannt aus, da dies für Datendrift v1 gilt, nicht für die Azure Machine Learning-Modellüberwachung.

  5. Wählen Sie die Registerkarte "Filter" aus . Wählen Sie unter "Erweiterte Filter" die Option " Neuen Filter hinzufügen" aus, und geben Sie dann die folgenden Werte ein:

    • Geben Sie unter Schlüssel die Zeichenfolge data.RunTags.azureml_modelmonitor_threshold_breached ein.
    • Wählen Sie unter Operator die Option Zeichenfolge enthält aus.
    • Unter "Wert" ist die Eingabe aufgrund eines oder mehrerer Features fehlgeschlagen, die metrische Schwellenwerte verletzen.

    Screenshot der Seite

    Wenn Sie diesen Filter verwenden, werden Ereignisse generiert, wenn sich der Ausführungsstatus eines Monitors in Ihrem Azure Machine Learning-Arbeitsbereich ändert. Der Ausführungsstatus kann von „Abgeschlossen“ in „Fehlgeschlagen“ oder von „Fehlgeschlagen“ in „Abgeschlossen“ geändert werden.

    Um auf Überwachungsebene zu filtern, wählen Sie erneut neuen Filter hinzufügen aus, und geben Sie dann die folgenden Werte ein:

    • Geben Sie unter Schlüssel die Zeichenfolge data.RunTags.azureml_modelmonitor_threshold_breached ein.
    • Wählen Sie unter Operator die Option Zeichenfolge enthält aus.
    • Geben Sie unter "Wert" den Namen eines Monitorsignals ein, nach dem Sie Ereignisse filtern möchten, z. B. credit_card_fraud_monitor_data_drift. Der eingegebene Name muss mit dem Namen des Überwachungssignals übereinstimmen. Jedes Signal, das Sie beim Filtern verwenden, sollte einen Namen im Format <monitor-name>_<signal-description> aufweisen, das den Monitornamen und eine Beschreibung des Signals enthält.
  6. Wählen Sie die Registerkarte " Grundlagen " aus. Konfigurieren Sie den Endpunkt, den Sie als Ereignishandler verwenden möchten, z. B. Event Hubs.

  7. Wählen Sie Erstellen aus, um das Ereignisabonnement zu erstellen.

Anzeigen von Ereignissen

Nachdem Sie Ereignisse erfasst haben, können Sie sie auf der Seite des Ereignishandlerendpunkts anzeigen:

Screenshot einer Ereignisabonnementseite, die einen Event Hubs-Endpunkt und ein Azure Machine Learning-Arbeitsbereichsthema verwendet. Ein Diagramm ist sichtbar.

Sie können Ereignisse auch auf der Registerkarte Metriken von Azure Monitor anzeigen:

Screenshot der Seite für Überwachungsmetriken. Ein Liniendiagramm zeigt drei Ereignisse in der vergangenen Stunde.