Condividi tramite


Monitorare le prestazioni dei modelli distribuiti nell'ambiente di produzione

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

In Azure Machine Learning è possibile usare il monitoraggio dei modelli per tenere costantemente traccia delle prestazioni dei modelli di Machine Learning nell'ambiente di produzione. Il monitoraggio dei modelli offre una panoramica generale dei segnali di monitoraggio. Segnala anche 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 dei modelli. È anche possibile identificare i punti ciechi che potrebbero influire negativamente sull'azienda.

In questo articolo viene illustrato come eseguire le attività seguenti:

  • Configurare il monitoraggio predefinito e avanzato per i modelli implementati negli 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 segnali e metriche personalizzati da usare nel monitoraggio del modello
  • Interpretare i risultati del monitoraggio
  • Integrazione del monitoraggio dei modelli di Azure Machine Learning con la Griglia di eventi di Azure

Prerequisiti

  • Un account utente che possiede almeno uno dei ruoli di controllo degli accessi di Azure RBAC seguenti:

    • Ruolo proprietario per l'area di lavoro di Azure Machine Learning
    • Ruolo Collaboratore per l'area di lavoro di Azure Machine Learning
    • Ruolo personalizzato con Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* autorizzazioni

    Per altre informazioni, vedere Gestire l'accesso alle aree di lavoro di Azure Machine Learning.

  • Per il monitoraggio di un endpoint online gestito di Azure Machine Learning o di un endpoint online Kubernetes:

  • Per il monitoraggio di un modello distribuito in un endpoint batch di Azure Machine Learning o distribuito all'esterno di Azure Machine Learning:

    • Un mezzo per raccogliere i dati di produzione e registrarlo come asset di dati di Azure Machine Learning
    • Un mezzo per aggiornare continuamente l'asset di dati registrato per il monitoraggio del modello
    • (Scelta consigliata) Registrazione del modello in un'area di lavoro di Azure Machine Learning per il rilevamento della derivazione

Configurare un pool di calcolo Spark serverless

I processi di monitoraggio dei modelli sono pianificati per l'esecuzione nei pool di calcolo Spark serverless. Sono supportati i tipi di istanza di Macchine virtuali di Azure seguenti:

  • Standard_E4s_v3
  • Standard_E8s_v3
  • Standard_E16s_v3
  • Standard_E32s_v3
  • Standard_E64s_v3

Per specificare un tipo di istanza di macchina virtuale quando si seguono le procedure descritte in questo articolo, seguire questa procedura:

Quando si usa l'interfaccia della riga di comando di Azure per creare un monitoraggio, si usa un file di configurazione YAML. In quel file, impostare il valore create_monitor.compute.instance_type sul tipo che si desidera utilizzare.

Configurare il monitoraggio del modelli preconfigurati

Si consideri uno scenario in cui distribuire il modello nell'ambiente di produzione in un endpoint online di Azure Machine Learning e abilitare la raccolta dei dati in fase di distribuzione. In questo caso, Azure Machine Learning raccoglie i dati di inferenza di produzione e li archivia automaticamente in Archiviazione BLOB di Azure. È possibile usare il monitoraggio del modello 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 l'asset di dati di inferenza di produzione associato a una distribuzione online di Azure Machine Learning e usa l'asset di dati per il monitoraggio del modello.
  • L'asset di dati di riferimento di confronto viene impostato come asset di dati di inferenza di produzione recente e precedente.
  • La configurazione del monitoraggio include e tiene traccia dei segnali di monitoraggio predefiniti seguenti: deriva dei dati, deviazione della stima e qualità dei dati. Per ogni segnale di monitoraggio, Azure Machine Learning utilizza:
    • Asset di dati di inferenza della produzione recente e passata come riferimento per il confronto.
    • Valori predefiniti intelligenti per metriche e soglie.
  • Un processo di monitoraggio è configurato per l'esecuzione in base a una pianificazione regolare. Tale processo acquisisce i segnali di monitoraggio e valuta ogni risultato della metrica rispetto alla soglia corrispondente. Per impostazione predefinita, quando viene superata una soglia, Azure Machine Learning invia un messaggio di posta elettronica di avviso all'utente che ha configurato il monitoraggio.

Per configurare il monitoraggio dei modelli predefiniti, seguire questa serie di passaggi.

Nell'interfaccia della riga di comando di Azure si usa az ml schedule per pianificare un processo di monitoraggio.

  1. Creare una definizione di monitoraggio in un file YAML. Per una definizione predefinita di esempio, vedere il codice YAML seguente, disponibile anche nel repository azureml-examples.

    Prima di usare questa definizione, modificare i valori in base all'ambiente. Per endpoint_deployment_idusare un valore nel formato 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.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:
          - [email protected]
          - [email protected]
    
  2. Eseguire il comando seguente per creare il modello:

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

Configurare il monitoraggio avanzato dei modelli

Azure Machine Learning offre numerose capacità per il monitoraggio continuo dei modelli. Per un elenco completo di questa funzionalità, vedere Funzionalità del monitoraggio dei modelli. In molti casi, è necessario configurare il monitoraggio del modello che supporta attività di monitoraggio avanzate. La sezione seguente fornisce alcuni esempi di monitoraggio avanzato:

  • L'uso di più segnali di monitoraggio per una visione generale
  • Uso dei dati di training del modello storico o dei dati di convalida come dati di riferimento per il confronto
  • Monitoraggio delle funzionalità più importanti di N e delle singole funzionalità

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 potrebbe essere più importante per la stima di un modello rispetto all'elevazione. Quando si attiva l'importanza delle funzionalità, è possibile fornire visibilità sulle funzionalità che non si desidera derivare o avere problemi di qualità dei dati nell'ambiente di produzione.

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

  • Il tuo asset di dati di training come il data asset reference_data.
  • Proprietà reference_data.data_column_names.target_column , ovvero il nome della colonna di output del modello o della colonna di stima.

Dopo aver attivato l'importanza delle funzionalità, viene visualizzata l'importanza delle funzionalità per ogni funzionalità monitorata in Azure Machine Learning Studio.

È possibile attivare o disattivare gli avvisi per ogni segnale impostando la alert_enabled proprietà quando si usa Python SDK o l'interfaccia della riga di comando di Azure.

È possibile usare l'interfaccia della riga di comando di Azure, Python SDK o lo studio per configurare il monitoraggio avanzato dei modelli.

  1. Creare una definizione di monitoraggio in un file YAML. Per una definizione avanzata di esempio, vedere il codice YAML seguente, disponibile anche nel repository azureml-examples.

    Prima di usare questa definizione, modificare le impostazioni seguenti e tutte le altre per soddisfare le esigenze dell'ambiente:

    • Per endpoint_deployment_idusare un valore nel formato azureml:<endpoint-name>:<deployment-name>.
    • Per path nelle sezioni dei dati di input di riferimento, usare un valore nel formato azureml:<reference-data-asset-name>:<version>.
    • Per target_columnusare il nome della colonna di output che contiene valori stimati dal modello, ad esempio DEFAULT_NEXT_MONTH.
    • Per features, elencare le funzionalità come SEX, EDUCATIONe AGE che si vuole usare in un segnale di qualità dei dati avanzato.
    • In emailselencare gli indirizzi di posta elettronica da usare per le notifiche.
    # 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
          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:
          - [email protected]
          - [email protected]
    
  2. Eseguire il comando seguente per creare il modello:

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

Configurare il monitoraggio delle prestazioni del modello

Quando si usa il monitoraggio dei modelli di Azure Machine Learning, è possibile 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 (MSE)
    • Errore quadratico medio radice (RMSE)

Prerequisiti per il monitoraggio delle prestazioni del modello

  • Dati di output per il modello di produzione (stime del modello) con un ID univoco per ogni riga. Se si usa l'agente di raccolta dati di Azure Machine Learning per raccogliere i dati di produzione, viene fornito un ID di correlazione per ogni richiesta di inferenza. L'agente di raccolta dati offre anche la possibilità di registrare il proprio ID univoco dall'applicazione.

    Nota

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

  • Dati di verità del terreno (effettivi) con un ID univoco per ogni riga. L'ID univoco per una determinata riga deve corrispondere all'ID univoco per i dati di output del modello per la richiesta di inferenza specifica. Questo ID univoco viene usato per unire l'asset di dati di verità di base con i dati di output del modello.

    Se non si dispone di dati di verità di base, non è possibile eseguire il monitoraggio delle prestazioni del modello. I dati di verità a livello di applicazione vengono rilevati a livello di applicazione, quindi è 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) Asset di dati tabulari pre-uniti con dati di output del modello e dati di verità di base già uniti.

Requisiti per il monitoraggio delle prestazioni del modello quando si usa l'agente di raccolta dati

Azure Machine Learning genera automaticamente un ID di correlazione quando si soddisfano i criteri seguenti:

L'ID di correlazione generato è incluso nell'oggetto JSON registrato. Tuttavia, l'agente di raccolta dati raggruppa le righe inviate entro brevi intervalli di tempo l'uno dall'altro. Le righe in batch rientrano nello stesso oggetto JSON. All'interno di ogni oggetto tutte le righe hanno lo stesso ID di correlazione.

Per distinguere le righe in un oggetto JSON, il monitoraggio delle prestazioni del modello di Azure Machine Learning usa l'indicizzazione per determinare l'ordine delle righe all'interno dell'oggetto. Ad esempio, se un batch contiene tre righe e l'ID di correlazione è test, la prima riga ha un ID test_0, la seconda riga ha un ID test_1, e la terza riga ha un ID test_2. Per associare gli ID univoci dell'asset di dati di verità di base con gli ID dei dati di output del modello di inferenza di produzione raccolti, applicare un indice a ogni ID di correlazione in modo appropriato. Se l'oggetto JSON registrato ha una sola riga, usare correlationid_0 come correlationid valore.

Per evitare di usare questa indicizzazione, è consigliabile registrare l'ID univoco nella propria colonna. Inserire tale colonna all'interno del frame di dati pandas registrato dall'agente di raccolta dati di Azure Machine Learning . Nella configurazione di monitoraggio del modello è quindi possibile specificare il nome di questa colonna per unire i dati di output del modello ai dati di verità di base. Purché gli ID per ogni riga in entrambi gli asset di dati siano uguali, il monitoraggio dei modelli 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 il flusso di lavoro di esempio seguente. Si applica a uno scenario in cui si distribuisce un modello per stimare se le transazioni con carta di credito sono fraudolente:

  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). Archiviare i dati di output in una colonna denominata 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 valore generato in modo univoco da Azure Machine Learning per ogni oggetto JSON registrato.
  3. Quando sono disponibili i dati reali o effettivi is_fraud, registrare e mappare ogni riga allo stesso ID univoco registrato per la riga corrispondente nei dati di output del modello.
  4. Registrare un asset di dati in Azure Machine Learning e utilizzarlo per raccogliere e mantenere i dati di verità di base is_fraud.
  5. Creare un segnale di monitoraggio delle prestazioni del modello che usa le colonne ID univoche per unire l'inferenza di produzione del modello e gli asset di dati di verità di base.
  6. Calcolare le metriche delle prestazioni del modello.

Dopo aver soddisfatto i prerequisiti per il monitoraggio delle prestazioni del modello, seguire questa procedura per configurare il monitoraggio del modello:

  1. Creare una definizione di monitoraggio in un file YAML. La specifica di esempio seguente definisce il monitoraggio del modello con i dati di inferenza di produzione. Prima di usare questa definizione, modificare le impostazioni seguenti e tutte le altre per soddisfare le esigenze dell'ambiente:

    • Per endpoint_deployment_idusare un valore nel formato azureml:<endpoint-name>:<deployment-name>.
    • Per ogni path valore in una sezione dei dati di input, usare un valore nel formato azureml:<data-asset-name>:<version>.
    • Per il prediction valore, usare il nome della colonna di output che contiene valori stimati dal modello.
    • Per il actual valore, usare il nome della colonna di verità di base che contiene i valori effettivi che il modello tenta di stimare.
    • Per i correlation_id valori, usare i nomi delle colonne usate per unire i dati di output e i dati di verità di base.
    • In emailselencare gli indirizzi di posta elettronica da usare per le notifiche.
    # 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: 
            - [email protected]
    
  2. Eseguire il comando seguente per creare il modello:

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

Configurare il monitoraggio del modello dei dati di produzione

È anche possibile monitorare i modelli distribuiti in endpoint batch di Azure Machine Learning o distribuiti all'esterno di Azure Machine Learning. Se non si dispone di una distribuzione ma si dispone di dati di produzione, è possibile usare i dati per eseguire il monitoraggio continuo del modello. 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 di pre-elaborazione dati personalizzato e registrarlo come componente di Azure Machine Learning se non si usa l'agente di raccolta dati per raccogliere i dati. Senza questo componente di pre-elaborazione dati personalizzato, il sistema di monitoraggio del modello di Azure Machine Learning non può elaborare i dati in un formato tabulare che supporta l'intervallo di tempo.

Il componente di pre-elaborazione personalizzato deve avere le firme di input e output seguenti:

Input o output Nome della firma Tipo Descrizione Valore di esempio
ingresso data_window_start letterale, string Ora di inizio dell'intervallo di dati in formato ISO8601 2023-05-01T04:31:57.012Z
ingresso data_window_end letterale, string Ora di fine dell'intervallo di dati in formato ISO8601 2023-05-01T04:31:57.012Z
ingresso input_data uri_folder Dati di inferenza di produzione raccolti, registrati come asset di dati di Azure Machine Learning azureml:myproduction_inference_data:1
prodotto preprocessed_data mltable Asset di dati tabulari che corrisponde a un subset 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.

Per istruzioni sulla registrazione di un componente di Azure Machine Learning, vedere Registrare il componente nell'area di lavoro.

Dopo aver registrato i dati di produzione e il componente di pre-elaborazione, è possibile configurare il monitoraggio del modello.

  1. Creare un file YAML di definizione di monitoraggio simile a quello seguente. Prima di usare questa definizione, modificare le impostazioni seguenti e tutte le altre per soddisfare le esigenze dell'ambiente:

    • Per endpoint_deployment_idusare un valore nel formato azureml:<endpoint-name>:<deployment-name>.
    • Per pre_processing_componentusare un valore nel formato azureml:<component-name>:<component-version>. Specificare la versione esatta, ad esempio 1.0.0, non 1.
    • Per ogni path, usare un valore nel formato azureml:<data-asset-name>:<version>.
    • Per il target_column valore, usare il nome della colonna di output che contiene valori stimati dal modello.
    • In emailselencare gli indirizzi di posta elettronica da usare per le notifiche.
    # 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.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:
          - [email protected]
          - [email protected]
    
  2. Eseguire il comando seguente per creare il modello.

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

Configurare il monitoraggio dei modelli con segnali e metriche personalizzati

Quando si usa il monitoraggio del modello di Azure Machine Learning, è possibile definire un segnale personalizzato e implementare qualsiasi metrica scelta per monitorare il modello. È possibile registrare il segnale personalizzato come componente di Azure Machine Learning. Quando il processo di monitoraggio del modello viene eseguito in base alla pianificazione specificata, calcola le metriche definite all'interno del segnale personalizzato, esattamente come avviene per la deriva dei dati, la deriva della stima e i segnali predefiniti di 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 Azure Machine Learning deve avere le firme di input e output seguenti.

Firma di input del componente

Il frame di dati di input del componente deve contenere gli elementi seguenti:

  • Struttura mltable che contiene 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 si implementa la std_deviation metrica, è necessario un input per std_deviation_threshold. In genere, dovrebbe essere presente un input con il nome <metric-name>_threshold per metrica.
Nome della firma Tipo Descrizione Valore di esempio
production_data mltable Asset di dati tabulari che corrisponde a un subset 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 deve avere la firma seguente:

Nome della firma Tipo Descrizione
signal_metrics mltable La struttura mltable che contiene le metriche calcolate. Per lo schema di questa firma, vedere la sezione successiva signal_metrics schema.

schema di metriche del segnale

Il frame di dati di output del componente deve contenere quattro colonne: group, metric_name, metric_valuee threshold_value.

Nome della firma Tipo Descrizione Valore di esempio
group letterale, string Raggruppamento logico di primo livello da applicare alla metrica personalizzata IMPORTOTRANSAZIONE
metric_name letterale, string Nome della metrica personalizzata deviazione_standard
metric_value numerico Valore della metrica personalizzata 44,896.082
threshold_value numerico Soglia per la metrica personalizzata 2

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

gruppo valore_metrico metric_name valore soglia
IMPORTO TRANSAZIONE 44,896.082 std_deviation 2
LOCALHOUR 3.983 std_deviation 2
IMPORTOTRANSAZIONEUSD 54.004,902 std_deviation 2
DIGITALITEMCOUNT 7,238 deviazione_standard 2
CONTEGGIOTOTALEFISICO 5.509 std_deviation 2

Per vedere un esempio di definizione del componente di segnale personalizzato e del relativo codice di calcolo, vedere custom_signal nel repository azureml-examples.

Per istruzioni sulla registrazione di un componente di Azure Machine Learning, vedere Registrare il componente nell'area di lavoro.

Dopo aver creato e registrato il componente del segnale personalizzato in Azure Machine Learning, seguire questa procedura per configurare il monitoraggio del modello:

  1. Creare una definizione di monitoraggio in un file YAML simile a quello seguente. Prima di usare questa definizione, modificare le impostazioni seguenti e tutte le altre per soddisfare le esigenze dell'ambiente:

    • Per component_idusare un valore nel formato azureml:<custom-signal-name>:1.0.0.
    • Per path nella sezione dati di input usare un valore nel formato azureml:<production-data-asset-name>:<version>.
    • Per pre_processing_component:
      • Se si usa l'agente di raccolta dati per raccogliere i dati, è possibile omettere la pre_processing_component proprietà .
      • Se non si usa l'agente di raccolta dati e si vuole usare un componente per pre-elaborare i dati di produzione, usare un valore nel formato azureml:<custom-preprocessor-name>:<custom-preprocessor-version>.
    • In emailselencare gli indirizzi di posta elettronica da usare per le notifiche.
    # 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:
          - [email protected]
    
  2. Eseguire il comando seguente per creare il modello:

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

Interpretare i risultati del monitoraggio

Dopo aver configurato il monitoraggio del modello e aver completato la prima esecuzione, è possibile visualizzare i risultati in Azure Machine Learning Studio.

  1. In Studio, in Gestisci, selezionare Monitoraggio. Nella pagina Monitoraggio, selezionare il nome del monitor del modello per visualizzare la sua pagina di panoramica. Questa pagina mostra il modello di monitoraggio, l'endpoint e la distribuzione. Fornisce anche informazioni dettagliate sui segnali configurati. L'immagine seguente mostra una pagina di panoramica del monitoraggio che include segnali di deriva dei dati e qualità dei dati.

    Screenshot della pagina di monitoraggio per un modello, con Monitoraggio evidenziato. Le informazioni sull'esito negativo e sui tassi di passaggio sono visibili per due segnali.

  2. Esaminare la sezione Notifiche della pagina di panoramica. In questa sezione è possibile visualizzare la funzionalità per ogni segnale che viola la soglia configurata per la rispettiva metrica.

  3. Nella sezione Segnali selezionare data_drift per visualizzare informazioni dettagliate sul segnale di deriva dei dati. Nella pagina dei dettagli è possibile visualizzare il valore della metrica deriva dei dati per ogni funzionalità numerica e categorica inclusa nella configurazione di monitoraggio. Se il monitor ha più esecuzioni, viene visualizzata una linea di tendenza per ogni funzionalità.

    Screenshot che mostra informazioni dettagliate sul segnale di deriva dei dati, tra cui un grafico di deriva dei dati delle funzionalità e una suddivisione delle funzionalità.

  4. Nella pagina dei dettagli selezionare il nome di una singola funzionalità. Viene visualizzata una visualizzazione dettagliata che mostra la distribuzione di produzione rispetto alla distribuzione di riferimento. È anche possibile usare questa visualizzazione per tenere traccia della deriva nel tempo per la funzionalità.

    Screenshot che mostra informazioni dettagliate su una funzionalità, tra cui un istogramma e un grafico che mostra la deriva nel tempo.

  5. Tornare alla pagina di panoramica del monitoraggio. Nella sezione Segnali selezionare data_quality per visualizzare informazioni dettagliate su questo segnale. In questa pagina è possibile visualizzare i tassi dei valori null, i tassi fuori limite e i tassi di errore del tipo di dati per ogni parametro monitorato.

    Screenshot che mostra informazioni dettagliate sul segnale di qualità dei dati, inclusi i tassi di errore e di passaggio e una suddivisione delle funzionalità.

Il monitoraggio dei modelli è un processo continuo. Quando si usa il monitoraggio dei modelli di Azure Machine Learning, è possibile configurare più segnali di monitoraggio per ottenere una panoramica generale delle prestazioni dei modelli nell'ambiente di produzione.

Integrare il monitoraggio dei modelli di Azure Machine Learning con Griglia di eventi

Quando si usa Griglia di eventi, è possibile configurare gli eventi generati dal monitoraggio del modello di Azure Machine Learning per attivare applicazioni, processi e flussi di lavoro CI/CD. È possibile usare eventi tramite vari gestori eventi, ad esempio Hub eventi di Azure, Funzioni di Azure e App per la logica di Azure. Quando i monitoraggi rilevano la deriva, è possibile intervenire a livello di codice, ad esempio eseguendo una pipeline di Machine Learning per ripetere il training di un modello e ridistribuirlo.

Per integrare il monitoraggio dei modelli di Azure Machine Learning con Griglia di eventi, seguire questa procedura nelle sezioni seguenti.

Creare un argomento di sistema

Se non è disponibile un argomento di sistema di Griglia di eventi da usare per il monitoraggio, crearne uno. Per istruzioni, vedere Creare, visualizzare e gestire gli argomenti di sistema di Griglia di eventi nel portale di Azure.

Creare una sottoscrizione di eventi

  1. Nel portale di Azure passare all'area di lavoro di Azure Machine Learning.

  2. Seleziona Eventi e quindi seleziona Sottoscrizione evento.

    Screenshot che mostra la pagina Evento di un'area di lavoro di Azure Machine Learning. Gli eventi e la sottoscrizione di eventi sono evidenziati.

  3. Accanto a Nome immettere un nome per la sottoscrizione di eventi, ad esempio MonitoringEvent.

  4. In Tipi di evento, selezionare solo Stato di esecuzione modificato.

    Avviso

    Selezionare solo Stato di esecuzione modificato per il tipo di evento. Non selezionare Deviazione del set di dati rilevata, che si applica alla deriva dei dati v1, non al monitoraggio del modello di Azure Machine Learning.

  5. Selezionare la scheda Filtri . In Filtri avanzati selezionare Aggiungi nuovo filtro e quindi immettere i valori seguenti:

    • Sotto Chiave, immetti data.RunTags.azureml_modelmonitor_threshold_breached.
    • In Operatore selezionare String contains (String contains).
    • In Valore, inserisci non è riuscito a causa di una o più caratteristiche che violano le soglie metriche.

    Screenshot della pagina Crea descrizione evento nel portale di Azure. La scheda Filtri e i valori in Chiave, Operatore e Valore sono evidenziati.

    Quando si usa questo filtro, gli eventi vengono generati quando cambia lo stato di esecuzione di qualsiasi monitoraggio nell'area di lavoro di Azure Machine Learning. Lo stato dell'esecuzione può passare da completato a non riuscito o da non riuscito a completato.

    Per filtrare a livello di monitoraggio, selezionare di nuovo Aggiungi nuovo filtro e quindi immettere i valori seguenti:

    • In Chiave immettere i dati. RunTags.azureml_modelmonitor_threshold_breached.
    • In Operatore, selezionare La stringa contiene.
    • In Valore immettere il nome di un segnale di monitoraggio per cui filtrare gli eventi, ad esempio credit_card_fraud_monitor_data_drift. Il nome immesso deve corrispondere al nome del segnale di monitoraggio. Qualsiasi segnale usato nel filtro deve avere un nome nel formato <monitor-name>_<signal-description> che include il nome del monitoraggio e una descrizione del segnale.
  6. Selezionare la scheda Informazioni di base . Configurare l'endpoint che si vuole usare come gestore eventi, ad esempio Hub eventi.

  7. Selezionare Crea per creare la sottoscrizione di eventi.

Visualizza eventi

Dopo aver acquisito gli eventi, è possibile visualizzarli nella pagina dell'endpoint del gestore eventi:

Screenshot di una pagina di sottoscrizione di eventi che usa un endpoint di Hub eventi e un argomento dell'area di lavoro di Azure Machine Learning. Un grafico è visibile.

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

Screenshot della pagina Metrics del monitor. Un grafico a linee mostra un totale di tre eventi nell'ultima ora.