Condividi tramite


Monitorare le prestazioni dei modelli distribuiti in produzione

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

Informazioni su come usare il monitoraggio del modello di Azure Machine Learning per tenere continuamente traccia delle prestazioni dei modelli di Machine Learning nell'ambiente di produzione. Il monitoraggio dei modelli offre una panoramica generale dei segnali di monitoraggio e degli avvisi per i potenziali problemi. Quando si monitorano i segnali e le metriche delle prestazioni dei modelli nell'ambiente di produzione, è possibile valutare in modo critico i rischi intrinseci associati e identificare i punti ciechi che potrebbero influire negativamente sull'azienda.

Questo articolo spiega come eseguire le attività seguenti:

  • Configurare il monitoraggio predefinito e avanzato per i modelli distribuiti in endpoint online di Azure Machine Learning
  • Monitorare le metriche delle prestazioni per i modelli nell'ambiente di produzione
  • Monitorare i modelli che sono distribuiti al di fuori di Azure Machine Learning o distribuiti agli endpoint batch di Azure Machine Learning
  • Configurare il monitoraggio dei modelli con segnali e metriche personalizzati
  • Interpretare i risultati del monitoraggio
  • Integrazione del monitoraggio dei modelli di Azure Machine Learning con la Griglia di eventi di Azure

Prerequisiti

Prima di seguire la procedura descritta in questo articolo, assicurarsi di disporre dei prerequisiti seguenti:

  • I controlli degli accessi in base al ruolo di Azure vengono usati per concedere l'accesso alle operazioni in Azure Machine Learning. Per eseguire la procedura descritta in questo articolo, all'account utente deve essere assegnato il ruolo di Proprietario o Collaboratore per l'area di lavoro di Azure Machine Learning o a un ruolo personalizzato che consente Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Per altre informazioni, vedere Gestire l'accesso a un'area di lavoro di Azure Machine Learning.

  • Per monitorare un modello che è stato distribuito su un endpoint online di Azure Machine Learning (endpoint online gestito o endpoint online Kubernetes), assicurarsi di:

  • Per monitorare un modello che è stato distribuito su un endpoint batch di Azure Machine Learning o distribuito al di fuori di Azure Machine Learning, assicurarsi di:

    • Avere un mezzo per raccogliere dati di produzione e registrarli come asset di dati di Azure Machine Learning.
    • Aggiornare continuamente l'asset di dati registrato per il monitoraggio dei modelli.
    • (Scelta consigliata) Registrare il modello in un'area di lavoro di Azure Machine Learning, per il tracciamento della linea di derivazione.

Importante

I processi di monitoraggio dei modelli sono programmati per essere eseguiti su pool di calcolo Spark serverless con supporto per i seguenti tipi di istanza VM: Standard_E4s_v3, Standard_E8s_v3, Standard_E16s_v3, Standard_E32s_v3 e Standard_E64s_v3. È possibile selezionare il tipo di istanza VM con la proprietà create_monitor.compute.instance_type nella configurazione YAML o dal menu a discesa nello studio di Azure Machine Learning.

Configurare il monitoraggio del modelli preconfigurati

Supponiamo di distribuire il modello in produzione su un endpoint online di Azure Machine Learning e di abilitare la raccolta dati al momento della distribuzione. In questo scenario, Azure Machine Learning raccoglie i dati di inferenza di produzione e li archivia automaticamente in Archiviazione BLOB di Microsoft Azure. È possibile quindi utilizzare il monitoraggio dei modelli di Azure Machine Learning per monitorare continuamente questi dati di inferenza di produzione.

È possibile utilizzare l'interfaccia della riga di comando di Azure, Python SDK o lo studio per una configurazione preconfigurata del monitoraggio dei modelli. La configurazione del monitoraggio dei modelli preconfigurati fornisce le seguenti capacità di monitoraggio:

  • Azure Machine Learning rileva automaticamente il dataset di inferenza di produzione associato a una distribuzione online di Azure Machine Learning e utilizza il dataset per il monitoraggio dei modelli.
  • Il dataset di riferimento per il confronto è impostato come il dataset di inferenza di produzione recente e passato.
  • La configurazione del monitoraggio include automaticamente e traccia i segnali di monitoraggio predefiniti: deriva dei dati, deriva delle previsioni e qualità dei dati. Per ogni segnale di monitoraggio, Azure Machine Learning utilizza:
    • il dataset di inferenza di produzione recente e passato come dataset di riferimento per il confronto.
    • impostazioni predefinite intelligenti per metriche e soglie.
  • Un processo di monitoraggio è programmato per essere eseguito quotidianamente alle 3:15 (per questo esempio) con la finalità di acquisire segnali di monitoraggio e valutare ogni risultato delle metriche rispetto alla soglia corrispondente. Per impostazione predefinita, quando una soglia viene superata, Azure Machine Learning invia un'email di avviso all'utente che ha configurato il monitoraggio.

Il monitoraggio dei modelli di Azure Machine Learning utilizza az ml schedule per programmare un processo di monitoraggio. È possibile creare il monitoraggio dei modelli preconfigurati con il seguente comando dell'interfaccia della riga di comando e definizione YAML:

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

La seguente YAML contiene la definizione per il monitoraggio dei modelli preconfigurato.

# 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.3"

  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

Configurare il monitoraggio avanzato dei modelli

Azure Machine Learning offre numerose capacità per il monitoraggio continuo dei modelli. Vedere Capacità di monitoraggio di modelli per un elenco completo di queste capacità. In molti casi, è necessario configurare il monitoraggio dei modelli con capacità di monitoraggio avanzate. Nelle sezioni seguenti, si configura il monitoraggio dei modelli con queste capacità:

  • Uso di molteplici segnali di monitoraggio per una visione ampia.
  • Uso dei dati cronologici di training dei modelli o dei dati di convalida come dataset di riferimento per il confronto.
  • Monitoraggio delle prime N caratteristiche più importanti e delle singole caratteristiche.

Configurare l'importanza delle caratteristiche

L'importanza delle caratteristiche rappresenta l'importanza relativa di ogni caratteristica di input rispetto all'output di un modello. Ad esempio, la temperatura temperature potrebbe essere più importante per la previsione di un modello rispetto all'elevazione elevation. Abilitare l'importanza delle caratteristiche può offrire visibilità su quali caratteristiche non si desidera che subiscano derive o abbiano problemi di qualità dei dati in produzione.

Per abilitare l'importanza delle caratteristiche con uno qualsiasi dei segnali (come la deriva dei dati o la qualità dei dati), è necessario fornire:

  • Il dataset di training come dataset di reference_data.
  • La proprietà reference_data.data_column_names.target_column, che è il nome della colonna di output/previsione del modello.

Dopo aver abilitato l'importanza delle caratteristiche, sarà possibile visualizzare l'importanza assegnata a ciascuna caratteristica monitorata nell'interfaccia utente dello studio di monitoraggio dei modelli di Azure Machine Learning.

È possibile utilizzare l'interfaccia della riga di comando di Azure CLI, Python SDK o lo studio per una configurazione avanzata del monitoraggio dei modelli.

Creare una configurazione avanzata di monitoraggio del modello con il seguente comando dell'interfaccia della riga di comando e definizione YAML:

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

Il seguente YAML contiene la definizione per il monitoraggio avanzato dei modelli.

# 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.3"

  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
      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
      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
      metric_thresholds:
        normalized_discounted_cumulative_gain: 0.9
  
  alert_notification:
    emails:
      - abc@example.com
      - def@example.com

Configurare il monitoraggio delle prestazioni del modello

Il monitoraggio dei modelli di Azure Machine Learning consente di tenere traccia delle prestazioni dei modelli nell'ambiente di produzione calcolando le metriche delle prestazioni. Sono attualmente supportate le metriche delle prestazioni del modello seguenti:

Per i modelli di classificazione:

  • Precisione
  • Accuratezza
  • Richiamo

Per i modelli di regressione:

  • Errore assoluto medio (MAE)
  • Errore quadratico medio
  • Radice errore quadratico medio (RMSE)

Altri prerequisiti per il monitoraggio delle prestazioni del modello

Per configurare il segnale di prestazioni del modello, è necessario soddisfare i requisiti seguenti:

  • Avere i dati di output per il modello di produzione (stime del modello) con un ID univoco per ogni riga. Se si raccolgono dati di produzione con l'agente di raccolta dati di Azure Machine Learning, viene fornito un correlation_id per ogni richiesta di inferenza. Con l'agente di raccolta dati è anche possibile registrare il proprio ID univoco dall'applicazione.

    Nota

    Per il monitoraggio delle prestazioni del modello di Azure Machine Learning, è consigliabile registrare l'ID univoco nella propria colonna usando l'agente di raccolta dati di Azure Machine Learning.

  • Avere dati ground truth (effettivi) con un ID univoco per ogni riga. L'ID univoco per una determinata riga deve corrispondere all'ID univoco per gli output del modello per la richiesta di inferenza specifica. Questo ID univoco viene usato per unire il set di dati ground truth agli output del modello.

    Senza avere dati reali, non è possibile eseguire il monitoraggio delle prestazioni del modello. Poiché i dati di verità a livello di applicazione vengono rilevati a livello di applicazione, è responsabilità dell'utente raccoglierli man mano che diventano disponibili. È anche consigliabile gestire un asset di dati in Azure Machine Learning che contiene questi dati ground truth.

  • (Facoltativo) Avere un set di dati tabulare pre-aggiunto con output del modello e dati ground truth già uniti.

Monitorare i requisiti di prestazioni del modello quando si usa l'agente di raccolta dati

Se si usa l'agente di raccolta dati di Azure Machine Learning per raccogliere dati di inferenza di produzione senza specificare il proprio ID univoco per ogni riga come colonna separata, verrà generato automaticamente un correlationid che sarà incluso nell'oggetto JSON registrato. Tuttavia, l'agente di raccolta dati eseguirà il batch di righe inviate entro brevi intervalli di tempo l'uno dall'altro. Le righe soggette batch rientrano nello stesso oggetto JSON e avranno quindi lo stesso correlationid.

Per distinguere le righe nello stesso oggetto JSON, il monitoraggio delle prestazioni del modello di Azure Machine Learning usa l'indicizzazione per determinare l'ordine delle righe nell'oggetto JSON. Ad esempio, se tre righe vengono raggruppate in batch e correlationid è test, la riga 1 avrà un ID test_0, la riga 2 avrà un ID test_1 e la riga 3 avrà un ID test_2. Per assicurarsi che il set di dati ground truth contenga ID univoci che corrispondono agli output del modello di inferenza di produzione raccolti, assicurarsi di indicizzare ogni correlationid in modo appropriato. Se l'oggetto JSON registrato ha una sola riga, correlationid sarà correlationid_0.

Per evitare di usare questa indicizzazione, è consigliabile registrare l'ID univoco nella propria colonna all'interno del DataFrame Pandas che si sta registrando con l'agente di raccolta dati di Azure Machine Learning. Nella configurazione di monitoraggio del modello specificare quindi il nome di questa colonna per unire i dati di output del modello ai dati ground truth. Purché gli ID per ogni riga in entrambi i set di dati siano uguali, il monitoraggio del modello di Azure Machine Learning può eseguire il monitoraggio delle prestazioni del modello.

Flusso di lavoro di esempio per il monitoraggio delle prestazioni del modello

Per comprendere i concetti associati al monitoraggio delle prestazioni del modello, prendere in considerazione questo flusso di lavoro di esempio. Si supponga di distribuire un modello per stimare se le transazioni con carta di credito sono fraudolente o meno, è possibile seguire questa procedura per monitorare le prestazioni del modello:

  1. Configurare la distribuzione in modo da usare l'agente di raccolta dati per raccogliere i dati di inferenza di produzione del modello (dati di input e output). Si supponga che i dati di output vengano archiviati in una colonna is_fraud.
  2. Per ogni riga dei dati di inferenza raccolti, registrare un ID univoco. L'ID univoco può provenire dall'applicazione oppure è possibile usare il correlationid generato in modo univoco da Azure Machine Learning per ogni oggetto JSON registrato.
  3. Successivamente, quando i dati is_fraud di base reali (o effettivi) diventano disponibili, sono registrati e mappati allo stesso ID univoco registrato con gli output del modello.
  4. Questi dati is_fraud di base vengono raccolti, gestiti e registrati in Azure Machine Learning come asset di dati.
  5. Creare un segnale di monitoraggio delle prestazioni del modello che unisce l'inferenza di produzione del modello e gli asset di dati ground truth usando le colonne ID univoche.
  6. Infine, calcolare le metriche delle prestazioni del modello.

Una volta soddisfatti i prerequisiti per il monitoraggio delle prestazioni del modello, è possibile impostare il monitoraggio del modello con il seguente comando dell'interfaccia della riga di comando e la definizione YAML:

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

Il seguente YAML contiene la definizione per il monitoraggio del modello con i dati di inferenza produttivi raccolti.

$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:
        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: actuals
      alert_enabled: true
      metric_thresholds: 
        tabular_classification:
          accuracy: 0.95
          precision: 0.8
  alert_notification: 
      emails: 
        - abc@example.com

Configurare il monitoraggio dei modelli portando i dati di produzione su Azure Machine Learning

È possibile anche configurare il monitoraggio per i modelli distribuiti agli endpoint batch di Azure Machine Learning o distribuiti al di fuori di Azure Machine Learning. Se non si dispone di una distribuzione, ma si hanno dati di produzione, è possibile utilizzare i dati per eseguire un monitoraggio continuo dei modelli. Per monitorare questi modelli, è necessario essere in grado di:

  • Raccogliere i dati di inferenza di produzione dai modelli distribuiti in produzione.
  • Registrare i dati di inferenza di produzione come asset di dati di Azure Machine Learning e garantire aggiornamenti continui dei dati.
  • Fornire un componente personalizzato di pre-elaborazione dei dati e registrarlo come componente di Azure Machine Learning.

È necessario fornire un componente personalizzato di pre-elaborazione dei dati se i dati non sono raccolti con l'agente di raccolta dati. Senza questo componente personalizzato di pre-elaborazione dei dati, il sistema di monitoraggio del modello di Azure Machine Learning non saprà come elaborare i dati in forma tabellare con supporto per la windowing temporale.

Il componente di pre-elaborazione personalizzato deve disporre di queste firme di input e output:

Input/Output Nome della firma Tipo Descrizione Valore di esempio
input data_window_start letterale, string ora di inizio della finestra dati nel formato ISO8601. 2023-05-01T04:31:57.012Z
input data_window_end letterale, string ora di fine della finestra dati nel formato ISO8601. 2023-05-01T04:31:57.012Z
input input_data uri_folder I dati di inferenza produttivi raccolti, registrati come asset di dati di Azure Machine Learning. azureml:myproduction_inference_data:1
output preprocessed_data mltable Un dataset tabulare, che corrisponde a un sottoinsieme dello schema dei dati di riferimento.

Per un esempio di un componente di pre-elaborazione dei dati personalizzato, vedere custom_preprocessing in the azuremml-examples GitHub repo.

Una volta soddisfatti i requisiti precedenti, è possibile impostare il monitoraggio del modello con il seguente comando dell'interfaccia della riga di comando e la definizione YAML:

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

Il seguente YAML contiene la definizione per il monitoraggio del modello con i dati di inferenza produttivi raccolti.

# 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.3"
  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
      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
      metric_thresholds:
        numberical:
          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
      reference_data:
        input_data:
          path: azureml:my_model_validation_data:1 # use training data as comparison reference dataset
          type: mltable
        data_context: validation
      metric_thresholds:
        categorical:
          pearsons_chi_squared_test: 0.02
  
  alert_notification:
    emails:
      - abc@example.com
      - def@example.com

Configurare il monitoraggio dei modelli con segnali e metriche personalizzati

Con il monitoraggio dei modelli di Azure Machine Learning, è possibile definire un segnale personalizzato e implementare qualsiasi metrica di propria scelta per monitorare il proprio modello. È possibile registrare questo segnale personalizzato come componente di Azure Machine Learning. Quando il processo di monitoraggio del modello di Azure Machine Learning viene eseguito secondo la programmazione specificata, calcola la o le metriche definite all'interno del segnale personalizzato, proprio come fa per i segnali predefiniti (deriva dei dati, deriva delle previsioni e qualità dei dati).

Per configurare un segnale personalizzato da utilizzare per il monitoraggio del modello, è necessario prima definire il segnale personalizzato e registrarlo come componente di Azure Machine Learning. Il componente di Azure Machine Learning deve disporre di queste firme di input e output:

Firma di input del componente

Il DataFrame di input del componente dovrebbe contenere i seguenti elementi:

  • Un mltable con i dati elaborati dal componente di pre-elaborazione
  • Un numero qualsiasi di letterali, ciascuno rappresentante una metrica implementata come parte del componente di segnale personalizzato. Ad esempio, se hai implementato la metrica, std_deviation, allora si avrà bisogno di un input per std_deviation_threshold. Generalmente, dovrebbe esserci un input per metrica con il nome <metric_name>_threshold.
Nome della firma Tipo Descrizione Valore di esempio
production_data mltable Un dataset tabulare che corrisponde a un sottoinsieme dello schema dei dati di riferimento.
std_deviation_threshold letterale, string Soglia corrispondente per la metrica implementata. 2

Firma di output del componente

La porta di output del componente dovrebbe avere la seguente firma.

Nome della firma Tipo Descrizione
signal_metrics mltable Il mltable che contiene le metriche calcolate. Lo schema è definito nella sezione successiva denominata signal_metrics schema.

signal_metrics schema

Il DataFrame di output del componente dovrebbe contenere quattro colonne: group, metric_name, metric_value e threshold_value.

Nome della firma Tipo Descrizione Valore di esempio
group letterale, string Raggruppamento logico di livello superiore da applicare a questa metrica personalizzata. TRANSACTIONAMOUNT
metric_name letterale, string Il nome della metrica personalizzata. std_deviation
metric_value numerico Il valore della metrica personalizzata. 44,896.082
threshold_value numerico La soglia per la metrica personalizzata. 2

La seguente tabella mostra un esempio di output da un componente di segnale personalizzato che calcola la metrica std_deviation:

group metric_value metric_name threshold_value
TRANSACTIONAMOUNT 44,896.082 std_deviation 2
LOCALHOUR 3.983 std_deviation 2
TRANSACTIONAMOUNTUSD 54,004.902 std_deviation 2
DIGITALITEMCOUNT 7.238 std_deviation 2
PHYSICALITEMCOUNT 5.509 std_deviation 2

Per vedere un esempio di definizione di componente di segnale personalizzato e codice di calcolo della metrica, vedere custom_signal in the azureml-examples repo.

Una volta soddisfatti i requisiti per l'utilizzo di segnali e metriche personalizzate, è possibile configurare il monitoraggio del modello con il seguente comando dell'interfaccia della riga di comando e la definizione YAML:

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

Il seguente YAML contiene la definizione per il monitoraggio del modello con un segnale personalizzato. Alcune cose da notare riguardo al codice:

  • Si presume che sia già stato creato e registrato il proprio componente con la definizione di segnale personalizzato in Azure Machine Learning.
  • component_id del componente di segnale personalizzato registrato è azureml:my_custom_signal:1.0.0.
  • Se si sono raccolti i propri dati con l'Agente di raccolta dati, si può omettere la proprietà pre_processing_component. Se si desidera utilizzare un componente di pre-elaborazione per elaborare i dati di produzione non raccolti dall'Agente di raccolta dati, è possibile specificarlo.
# custom-monitoring.yaml
$schema:  http://azureml/sdk-2-0/Schedule.json
name: my-custom-signal
trigger:
  type: recurrence
  frequency: day # can be minute, hour, day, week, month
  interval: 7 # #every day
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

Interpretare i risultati del monitoraggio

Dopo aver configurato il monitoraggio del modello e completato la prima esecuzione, è possibile tornare alla scheda Monitoraggio in studio di Azure Machine Learning per visualizzare i risultati.

  • Dalla vista principale Monitoraggio, selezionare il nome del monitoraggio del modello per accedere alla pagina Panoramica monitoraggio. Questa pagina mostra il modello corrispondente, l'endpoint e la distribuzione, insieme ai dettagli relativi ai segnali configurati. L'immagine seguente mostra un dashboard di monitoraggio che include i segnali di deriva dei dati e qualità dei dati. A seconda dei segnali di monitoraggio configurati, il dashboard potrebbe apparire diverso.

    Screenshot che mostra un dashboard di monitoraggio.

  • Consultare la sezione Notifiche del dashboard per vedere, per ciascun segnale, quali caratteristiche hanno superato la soglia configurata per le rispettive metriche:

  • Selezionare data_drift per accedere alla pagina dei dettagli sulla deriva dei dati. Nella pagina dei dettagli, è possibile vedere il valore della metrica di deriva dei dati per ogni caratteristica numerica e categorica inclusa nella configurazione di monitoraggio. Quando il monitoraggio ha registrato più di una esecuzione, si potrà osservare una linea di tendenza per ciascuna caratteristica.

    Screenshot che mostra la pagina dei dettagli del segnale di deriva dei dati.

  • Per visualizzare nel dettaglio una singola caratteristica, selezionare il nome della caratteristica per visualizzare la distribuzione dei dati in produzione rispetto alla distribuzione di riferimento. Questa vista consente anche di tracciare l'andamento della deriva nel tempo per quella specifica caratteristica.

    Screenshot che mostra i dettagli della deriva dei dati per una singola funzionalità.

  • Tornare al dashboard di monitoraggio e selezionare data_quality per visualizzare la pagina del segnale di qualità dei dati. In questa pagina, è possibile vedere i tassi di valori nulli, i tassi di valori fuori intervallo e i tassi di errori sui tipi di dati per ogni caratteristica monitorata.

    Screenshot che mostra la pagina dei dettagli del segnale di qualità dei dati.

Il monitoraggio dei modelli è un processo continuo. Con il monitoraggio dei modelli di Azure Machine Learning, è possibile configurare più segnali di monitoraggio per ottenere una visione ampia delle prestazioni dei propri modelli in produzione.

Integrazione del monitoraggio dei modelli di Azure Machine Learning con la Griglia di eventi di Azure

È possibile utilizzare gli eventi generati dal monitoraggio dei modelli di Azure Machine Learning per configurare applicazioni, processi o flussi di lavoro CI/CD guidati dagli eventi con la Griglia di eventi di Azure. Si può usufruire di eventi tramite vari gestori di eventi, quali Hub eventi di Azure, funzioni di Azure e app per la logica. In base alla deriva rilevata dai monitoraggi, è possibile intraprendere azioni in modo programmatico, ad esempio configurando un pipeline di Machine Learning per eseguire nuovamente il training di un modello e ridistribuirlo.

Per iniziare con l'integrazione del monitoraggio dei modelli di Azure Machine Learning con la Griglia di eventi di Azure:

  1. Seguire i passaggi nella sezione Configurare nel portale di Azure. Dare all'Abbonamento eventi un nome, come MonitoringEvent, e selezionare solo la casella Cambiamento stato esecuzione sotto Tipi di evento.

    Avviso

    Assicurarsi di selezionare Cambiamento stato esecuzione per il tipo di evento. Non selezionare Rilevamento deriva dataset, poiché si applica alla deriva dei dati v1, piuttosto che al monitoraggio dei modelli di Azure Machine Learning.

  2. Seguire i passaggi in Filtro e abbonamento agli eventi per impostare il filtraggio degli eventi per il proprio scenario. Navigare alla scheda Filtri e aggiungere i seguenti Chiave, Operatore e Valore sotto Filtri avanzati:

    • Chiave: data.RunTags.azureml_modelmonitor_threshold_breached
    • Valore: non è riuscito a causa della violazione delle soglie metriche da parte di una o più caratteristiche
    • Operatore: Contiene stringa

    Con questo filtro, gli eventi vengono generati quando lo stato dell'esecuzione cambia (da Completato a Non riuscito, o da Non riuscito a Completato) per qualsiasi monitoraggio all'interno della propria area di lavoro di Azure Machine Learning.

  3. Per filtrare a livello di monitoraggio, utilizzare i seguenti Chiave, Operatore e Valore sotto Filtri avanzati:

    • Chiave: data.RunTags.azureml_modelmonitor_threshold_breached
    • Valore: your_monitor_name_signal_name
    • Operatore: Contiene stringa

    Assicurarsi che your_monitor_name_signal_name sia il nome di un segnale nel monitoraggio specifico per cui si desidera filtrare gli eventi. Ad esempio, credit_card_fraud_monitor_data_drift. Perché questo filtro funzioni, questa stringa deve corrispondere al nome del segnale di monitoraggio. Si dovrebbe nominare il proprio segnale con sia il nome del monitoraggio che il nome del segnale per questo caso.

  4. Quando si è completata la configurazione dell'Abbonamento eventi, selezionare l'endpoint desiderato per fungere da gestore di eventi, come gli Hub eventi di Azure.

  5. Dopo che gli eventi sono stati acquisiti, è possibile visualizzarli dalla pagina dell'endpoint:

    Screenshot che mostra gli eventi visualizzati dalla pagina dell'endpoint.

"È possibile visualizzare gli eventi anche nella scheda Metriche di Monitoraggio di Azure:

Screenshot che mostra gli eventi visualizzati nella scheda Metriche di Monitoraggio di Azure.