Generare informazioni dettagliate sull'intelligenza artificiale responsabile con YAML e Python

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

È possibile generare un dashboard di intelligenza artificiale responsabile e una scorecard tramite un processo della pipeline usando i componenti di intelligenza artificiale responsabile. Sono disponibili sei componenti principali per la creazione di dashboard di intelligenza artificiale responsabile, insieme a un paio di componenti di aiuto. Ecco un grafico dell'esperimento di esempio:

Screenshot di un grafico dell'esperimento di esempio.

Componenti di intelligenza artificiale responsabili

I componenti principali per la costruzione del dashboard di intelligenza artificiale responsabile in Azure Machine Learning sono:

  • RAI Insights dashboard constructor
  • Componenti degli strumenti:
    • Add Explanation to RAI Insights dashboard
    • Add Causal to RAI Insights dashboard
    • Add Counterfactuals to RAI Insights dashboard
    • Add Error Analysis to RAI Insights dashboard
    • Gather RAI Insights dashboard
    • Gather RAI Insights score card

I componenti RAI Insights dashboard constructor e Gather RAI Insights dashboard sono sempre necessari, oltre ad almeno uno dei componenti dello strumento. Tuttavia, non è necessario usare tutti gli strumenti in ogni dashboard di intelligenza artificiale responsabile.

Nelle sezioni seguenti sono riportate le specifiche dei componenti di intelligenza artificiale responsabile ed esempi di frammenti di codice in YAML e Python.

Importante

Gli elementi contrassegnati come (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Limiti

Il set corrente di componenti presenta molte limitazioni per l'uso:

  • Tutti i modelli devono essere registrati in Azure Machine Learning in formato MLflow con un sapore sklearn (scikit-learn).
  • I modelli devono essere caricabili nell'ambiente dei componenti.
  • I modelli devono essere selezionabili.
  • I modelli devono essere forniti ai componenti di intelligenza artificiale responsabile usando il Fetch Registered Model componente fornito.
  • Gli input del set di dati devono essere in mltable formato .
  • È necessario fornire un modello anche se viene eseguita solo un'analisi causale dei dati. A questo scopo, è possibile usare gli DummyClassifier estimatori e DummyRegressor di scikit-learn.

Costruttore del dashboard di RAI Insights

Questo componente ha tre porte di input:

  • Modello di Machine Learning
  • Set di dati di training
  • Set di dati di test

Per generare informazioni dettagliate sul debug del modello con componenti come l'analisi degli errori e le spiegazioni del modello, usare il set di dati di training e test usato durante il training del modello. Per i componenti come l'analisi causale, che non richiede un modello, è possibile usare il set di dati di training per eseguire il training del modello causale per generare le informazioni dettagliate causali. Il set di dati di test viene usato per popolare le visualizzazioni del dashboard di intelligenza artificiale responsabile.

Il modo più semplice per fornire il modello consiste nel registrare il modello di input e fare riferimento allo stesso modello nella porta di input del modello del RAI Insight Constructor componente, descritta più avanti in questo articolo.

Nota

Attualmente sono supportati solo i modelli in formato MLflow e con un sklearn sapore.

I due set di dati devono essere in mltable formato . I set di dati di training e di test forniti non devono essere gli stessi set di dati usati nel training del modello, ma possono essere uguali. Per impostazione predefinita, per motivi di prestazioni, il set di dati di test è limitato a 5.000 righe dell'interfaccia utente di visualizzazione.

Il componente del costruttore accetta anche i parametri seguenti:

Nome parametro Descrizione Tipo
title Breve descrizione del dashboard. String
task_type Specifica se il modello è per la classificazione, la regressione o la previsione. Stringa, classification, regression, o forecasting
target_column_name Nome della colonna nei set di dati di input, che il modello sta tentando di stimare. String
maximum_rows_for_test_dataset Numero massimo di righe consentite nel set di dati di test, per motivi di prestazioni. Integer, il valore predefinito è 5.000
categorical_column_names Colonne nei set di dati, che rappresentano dati categorici. Elenco facoltativo di stringhe1
classes Elenco completo delle etichette di classe nel set di dati di training. Elenco facoltativo di stringhe1
feature_metadata Specifica informazioni aggiuntive che il dashboard potrebbe richiedere a seconda del tipo di attività. Per la previsione, è inclusa la specifica di quale colonna è la datetime colonna e quale colonna è la time_series_id colonna. Per la visione, questo potrebbe includere i dati del pixel medio o della posizione di un'immagine. Elenco facoltativo di stringhe1
use_model_dependency Specifica se il modello richiede che venga gestito un contenitore Docker separato a causa di dipendenze in conflitto con il dashboard RAI. Per la previsione, questa operazione deve essere abilitata. In genere per altri scenari non è abilitato. Booleano

1 Gli elenchi devono essere forniti come una singola stringa con codifica JSON per categorical_column_namesgli input , classes, feature_metadata .

Il componente del costruttore ha un singolo output denominato rai_insights_dashboard. Si tratta di un dashboard vuoto su cui operano i singoli componenti degli strumenti. Tutti i risultati vengono assemblati dal Gather RAI Insights dashboard componente alla fine.

 create_rai_job: 

    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_constructor/versions/<get current version>
    inputs: 
      title: From YAML snippet 
      task_type: regression
      type: mlflow_model
      path: azureml:<registered_model_name>:<registered model version> 
      train_dataset: ${{parent.inputs.my_training_data}} 
      test_dataset: ${{parent.inputs.my_test_data}} 
      target_column_name: ${{parent.inputs.target_column_name}} 
      categorical_column_names: '["location", "style", "job title", "OS", "Employer", "IDE", "Programming language"]' 

Aggiungere causale al dashboard di RAI Insights

Questo componente esegue un'analisi causale sui set di dati forniti. Ha una singola porta di input, che accetta l'output di RAI Insights dashboard constructor. Accetta anche i parametri seguenti:

Nome parametro Descrizione Digitare
treatment_features Elenco di nomi di funzionalità nei set di dati, potenzialmente "trattabili" per ottenere risultati diversi. Elenco di stringhe2.
heterogeneity_features Elenco di nomi di funzionalità nei set di dati, che potrebbero influire sul comportamento delle funzionalità "trattabili". Per impostazione predefinita, verranno considerate tutte le funzionalità. Elenco facoltativo di stringhe2.
nuisance_model Modello usato per stimare il risultato della modifica delle caratteristiche di trattamento. Stringa facoltativa. Deve essere linear o AutoML, il valore predefinito è linear.
heterogeneity_model Modello usato per stimare l'effetto delle caratteristiche di eterogeneità sul risultato. Stringa facoltativa. Deve essere linear o forest, il valore predefinito è linear.
alpha Livello di confidenza degli intervalli di confidenza. Numero a virgola mobile facoltativo, il valore predefinito è 0,05.
upper_bound_on_cat_expansion Espansione massima delle funzionalità categoriche. Numero intero facoltativo, il valore predefinito è 50.
treatment_cost Il costo dei trattamenti. Se 0, tutti i trattamenti avranno un costo zero. Se viene passato un elenco, ogni elemento viene applicato a uno di treatment_features.

Ogni elemento può essere un valore scalare per indicare un costo costante di applicazione del trattamento o di una matrice che indica il costo per ogni campione. Se il trattamento è un trattamento discreto, la matrice per tale caratteristica deve essere bidimensionale, con la prima dimensione che rappresenta campioni e la seconda che rappresenta la differenza di costo tra i valori non predefiniti e il valore predefinito.
Numero intero facoltativo o elenco2.
min_tree_leaf_samples Numero minimo di campioni per foglia nell'albero dei criteri. Numero intero facoltativo, il valore predefinito è 2.
max_tree_depth Profondità massima dell'albero dei criteri. Numero intero facoltativo, il valore predefinito è 2.
skip_cat_limit_checks Per impostazione predefinita, le funzionalità categoriche devono avere diverse istanze di ogni categoria affinché un modello sia adatto in modo affidabile. Se si imposta questa opzione su True , questi controlli verranno ignorati. Valore booleano facoltativo, il valore predefinito è False.
categories Categorie da utilizzare per le colonne categorica. Se auto, le categorie verranno dedotte per tutte le colonne categorica. In caso contrario, questo argomento deve contenere il numero di voci in cui sono presenti colonne categoriche.

Ogni voce deve essere per auto dedurre i valori per tale colonna o l'elenco di valori per la colonna. Se vengono forniti valori espliciti, il primo valore viene considerato come il valore "control" per la colonna rispetto alla quale vengono confrontati altri valori.
Facoltativo o auto elenco2.
n_jobs Grado di parallelismo da usare, Numero intero facoltativo, il valore predefinito è 1.
verbose Indica se fornire output dettagliato durante il calcolo. Numero intero facoltativo, il valore predefinito è 1.
random_state Valore di inizializzazione per il generatore di numeri pseudorandomi (PRNG). Numero intero facoltativo.

2 Per i list parametri: diversi parametri accettano elenchi di altri tipi (stringhe, numeri, persino altri elenchi). Per passarli al componente, devono prima essere codificati in formato JSON in una singola stringa.

Questo componente ha una singola porta di output, che può essere connessa a una delle insight_[n] porte di input del Gather RAI Insights Dashboard componente.

  causal_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_causal/versions/<version>
    inputs: 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      treatment_features: `["Number of GitHub repos contributed to", "YOE"]' 

Aggiungere contatori al dashboard di RAI Insights

Questo componente genera punti controfactuali per il set di dati di test fornito. Ha una singola porta di input, che accetta l'output del costruttore del dashboard di RAI Insights. Accetta anche i parametri seguenti:

Nome parametro Descrizione Tipo
total_CFs Numero di punti contatori da generare per ogni riga nel set di dati di test. Numero intero facoltativo, il valore predefinito è 10.
method Spiegazione dice-ml da usare. Stringa facoltativa. , randomgenetico kdtree. Il valore predefinito è random.
desired_class Indice che identifica la classe controfactuale desiderata. Per la classificazione binaria, questa proprietà deve essere impostata su opposite. Stringa o numero intero facoltativo. Il valore predefinito è 0.
desired_range Per i problemi di regressione, identificare l'intervallo di risultati desiderato. Elenco facoltativo di due numeri3.
permitted_range Dizionario con nomi di funzionalità come chiavi e intervallo consentito in un elenco come valori. Il valore predefinito è l'intervallo dedotto dai dati di training. Stringa o elencofacoltativo 3.
features_to_vary Una stringa all o un elenco di nomi di funzionalità da variare. Stringa o elencofacoltativo 3.
feature_importance Flag per abilitare il calcolo delle priorità delle funzionalità tramite dice-ml. Valore booleano facoltativo. Il valore predefinito è True.

3 Per i parametri non scalari: i parametri che sono elenchi o dizionari devono essere passati come singole stringhe con codifica JSON.

Questo componente ha una singola porta di output, che può essere connessa a una delle insight_[n] porte di input del Gather RAI Insights dashboard componente.

 counterfactual_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_counterfactual/versions/<version>
    inputs: 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      total_CFs: 10 
      desired_range: "[5, 10]" 

Aggiungere l'analisi degli errori al dashboard di RAI Insights

Questo componente genera un'analisi degli errori per il modello. Ha una singola porta di input, che accetta l'output di RAI Insights Dashboard Constructor. Accetta anche i parametri seguenti:

Nome parametro Descrizione Tipo
max_depth Profondità massima dell'albero di analisi degli errori. Numero intero facoltativo. Il valore predefinito è 3.
num_leaves Numero massimo di foglie nell'albero degli errori. Numero intero facoltativo. Il valore predefinito è 31.
min_child_samples Numero minimo di punti dati necessari per produrre una foglia. Numero intero facoltativo. L'impostazione predefinita è 20.
filter_features Elenco di una o due funzionalità da usare per il filtro matrice. Elenco facoltativo da passare come singola stringa con codifica JSON.

Questo componente ha una singola porta di output, che può essere connessa a una delle insight_[n] porte di input del Gather RAI Insights Dashboard componente.

  error_analysis_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_erroranalysis/versions/<version>
    inputs: 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      filter_features: `["style", "Employer"]' 

Aggiungere spiegazione al dashboard di RAI Insights

Questo componente genera una spiegazione per il modello. Ha una singola porta di input, che accetta l'output di RAI Insights Dashboard Constructor. Accetta una singola stringa di commento facoltativa come parametro.

Questo componente ha una singola porta di output, che può essere connessa a una delle porte di insight_[n] input del componente dashboard Gather RAI Insights.

  explain_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_explanation/versions/<version>
    inputs: 
      comment: My comment 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 

Raccogliere il dashboard di RAI Insights

Questo componente assembla le informazioni dettagliate generate in un singolo dashboard di intelligenza artificiale responsabile. Ha cinque porte di input:

  • Porta constructor che deve essere connessa al componente del costruttore del dashboard di RAI Insights.
  • Quattro insight_[n] porte che possono essere connesse all'output dei componenti degli strumenti. Almeno una di queste porte deve essere connessa.

Esistono due porte di output:

  • La dashboard porta contiene l'oggetto completato RAIInsights .
  • La ux_json porta contiene i dati necessari per visualizzare un dashboard minimo.
  gather_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_gather/versions/<version>
    inputs: 
      constructor: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      insight_1: ${{parent.jobs.causal_01.outputs.causal}} 
      insight_2: ${{parent.jobs.counterfactual_01.outputs.counterfactual}} 
      insight_3: ${{parent.jobs.error_analysis_01.outputs.error_analysis}} 
      insight_4: ${{parent.jobs.explain_01.outputs.explanation}} 

Come generare una scorecard di intelligenza artificiale responsabile (anteprima)

La fase di configurazione richiede di usare le competenze del dominio relative al problema per impostare i valori di destinazione desiderati per le metriche di equità e prestazioni del modello.

Analogamente ad altri componenti del dashboard di intelligenza artificiale responsabile configurati nella pipeline YAML, è possibile aggiungere un componente per generare la scorecard nella pipeline YAML:

scorecard_01: 

   type: command 
   component: azureml:rai_score_card@latest 
   inputs: 
     dashboard: ${{parent.jobs.gather_01.outputs.dashboard}} 
     pdf_generation_config: 
       type: uri_file 
       path: ./pdf_gen.json 
       mode: download 

     predefined_cohorts_json: 
       type: uri_file 
       path: ./cohorts.json 
       mode: download 

Dove pdf_gen.json è il file JSON di configurazione della generazione della scheda score e predifined_cohorts_json ID il file JSON di definizione della coorte predefinito.

Ecco un file JSON di esempio per la definizione delle coorti e la configurazione della generazione di scorecard:

Definizione di coorte:

[ 
  { 
    "name": "High Yoe", 
    "cohort_filter_list": [ 
      { 
        "method": "greater", 
        "arg": [ 
          5 
        ], 
        "column": "YOE" 
      } 
    ] 
  }, 
  { 
    "name": "Low Yoe", 
    "cohort_filter_list": [ 
      { 
        "method": "less", 
        "arg": [ 
          6.5 
        ], 
        "column": "YOE" 
      } 
    ] 
  } 
] 

Di seguito è riportato un file di configurazione scorecard-generation come esempio di regressione:

{ 
  "Model": { 
    "ModelName": "GPT-2 Access", 
    "ModelType": "Regression", 
    "ModelSummary": "This is a regression model to analyze how likely a programmer is given access to GPT-2" 
  }, 
  "Metrics": { 
    "mean_absolute_error": { 
      "threshold": "<=20" 
    }, 
    "mean_squared_error": {} 
  }, 
  "FeatureImportance": { 
    "top_n": 6 
  }, 
  "DataExplorer": { 
    "features": [ 
      "YOE", 
      "age" 
    ] 
  }, 
  "Fairness": {
    "metric": ["mean_squared_error"],
    "sensitive_features": ["YOUR SENSITIVE ATTRIBUTE"],
    "fairness_evaluation_kind": "difference OR ratio"
  },
  "Cohorts": [ 
    "High Yoe", 
    "Low Yoe" 
  ]  
} 

Ecco un file di configurazione scorecard-generation come esempio di classificazione:

{
  "Model": {
    "ModelName": "Housing Price Range Prediction",
    "ModelType": "Classification",
    "ModelSummary": "This model is a classifier that predicts whether the house will sell for more than the median price."
  },
  "Metrics" :{
    "accuracy_score": {
        "threshold": ">=0.85"
    },
  }
  "FeatureImportance": { 
    "top_n": 6 
  }, 
  "DataExplorer": { 
    "features": [ 
      "YearBuilt", 
      "OverallQual", 
      "GarageCars"
    ] 
  },
  "Fairness": {
    "metric": ["accuracy_score", "selection_rate"],
    "sensitive_features": ["YOUR SENSITIVE ATTRIBUTE"],
    "fairness_evaluation_kind": "difference OR ratio"
  }
}

Definizione degli input per il componente scorecard di intelligenza artificiale responsabile

Questa sezione elenca e definisce i parametri necessari per configurare il componente Scorecard di intelligenza artificiale responsabile.

Modello

ModelName Nome del modello
ModelType Valori in ['classification', 'regression'].
ModelSummary Immettere il testo che riepiloga il valore del modello.

Nota

Per la classificazione multiclasse, è necessario usare prima di tutto la strategia One-vs-Rest per scegliere la classe di riferimento e quindi suddividere il modello di classificazione multiclasse in un problema di classificazione binaria per la classe di riferimento selezionata rispetto al resto delle classi.

Metriche

Misurazione delle prestazioni Definizione Tipo di modello
accuracy_score Frazione di punti dati classificati correttamente. Classificazione
precision_score Frazione di punti dati classificati correttamente tra quelli classificati come 1. Classificazione
recall_score Frazione di punti dati classificati correttamente tra quelli la cui vera etichetta è 1. Nomi alternativi: tasso positivo vero, sensibilità. Classificazione
f1_score Il punteggio F1 è la media armonica della precisione e del richiamo. Classificazione
error_rate Percentuale di istanze non classificate in modo errato sull'intero set di istanze. Classificazione
mean_absolute_error Media dei valori assoluti degli errori. Più robusto per gli outlier di mean_squared_error. Regressione
mean_squared_error Media degli errori quadrati. Regressione
median_absolute_error Mediano di errori quadrati. Regressione
r2_score Frazione di varianza nelle etichette spiegate dal modello. Regressione

Soglia: soglia desiderata per la metrica selezionata. I token matematici consentiti sono >, , <>=, e <=m, seguiti da un numero reale. Ad esempio, >= 0,75 indica che la destinazione per la metrica selezionata è maggiore o uguale a 0,75.

Importanza della caratteristica

top_n: numero di funzionalità da visualizzare, con un massimo di 10. Sono consentiti numeri interi positivi fino a 10.

Equità

Metrico Definizione
metric Metrica primaria per l'equità di valutazione.
sensitive_features Elenco di nomi di funzionalità del set di dati di input da designare come funzionalità sensibili per il report di equità.
fairness_evaluation_kind Valori in ['differenza', 'ratio'].
threshold Valori di destinazione desiderati della valutazione dell'equità. I token matematici consentiti sono >, , <>=, e <=, seguiti da un numero reale.
Ad esempio, metric="accuracy", fairness_evaluation_kind="difference".
<= 0,05 indica che la destinazione per la differenza nell'accuratezza è minore o uguale a 0,05.

Nota

La scelta di fairness_evaluation_kind (selezionando "differenza" rispetto a "ratio") influisce sulla scala del valore di destinazione. Nella selezione assicurarsi di scegliere un valore di destinazione significativo.

È possibile selezionare tra le metriche seguenti, abbinate fairness_evaluation_kinda , per configurare il componente di valutazione dell'equità della scorecard:

Metric fairness_evaluation_kind Definizione Tipo di modello
accuracy_score differenza Differenza massima nel punteggio di accuratezza tra due gruppi. Classificazione
accuracy_score ratio Rapporto minimo nel punteggio di accuratezza tra due gruppi. Classificazione
precision_score differenza Differenza massima nel punteggio di precisione tra due gruppi. Classificazione
precision_score ratio Rapporto massimo nel punteggio di precisione tra due gruppi. Classificazione
recall_score differenza Differenza massima nel punteggio di richiamo tra due gruppi. Classificazione
recall_score ratio Rapporto massimo nel punteggio di richiamo tra due gruppi. Classificazione
f1_score differenza Differenza massima nel punteggio f1 tra due gruppi. Classificazione
f1_score ratio Rapporto massimo nel punteggio f1 tra due gruppi. Classificazione
error_rate differenza Differenza massima nella frequenza di errore tra due gruppi. Classificazione
error_rate ratio Rapporto massimo in percentuale di errore tra due gruppi. Classificazione
Selection_rate differenza Differenza massima nella frequenza di selezione tra due gruppi. Classificazione
Selection_rate ratio Rapporto massimo nella frequenza di selezione tra due gruppi. Classificazione
mean_absolute_error differenza Differenza massima nell'errore assoluto medio tra due gruppi. Regressione
mean_absolute_error ratio Rapporto massimo in medio errore assoluto tra due gruppi. Regressione
mean_squared_error differenza Differenza massima nell'errore quadratico medio tra due gruppi. Regressione
mean_squared_error ratio Rapporto massimo in errore quadratico medio tra due gruppi. Regressione
median_absolute_error differenza Differenza massima nell'errore assoluto mediano tra due gruppi. Regressione
median_absolute_error ratio Rapporto massimo nell'errore assoluto mediano tra due gruppi. Regressione
r2_score differenza Differenza massima nel punteggio R2 tra due gruppi. Regressione
r2_Score ratio Rapporto massimo nel punteggio R2 tra due gruppi. Regressione

Vincoli di input

Quali tipi e formati di modello sono supportati?

Il modello deve trovarsi nella directory MLflow con un sklearn flavor disponibile. Inoltre, il modello deve essere caricabile nell'ambiente usato dai componenti di intelligenza artificiale responsabile.

Quali formati di dati sono supportati?

I set di dati forniti devono essere mltable con dati tabulari.

Passaggi successivi

  • Dopo aver generato il dashboard di IA responsabile, vedere come accedervi e usarlo in studio di Azure Machine Learning.
  • Riepilogare e condividere le informazioni dettagliate sull'intelligenza artificiale responsabile con la scorecard di intelligenza artificiale responsabile come esportazione PDF.
  • Altre informazioni sui concetti e sulle tecniche dietro il dashboard di intelligenza artificiale responsabile.
  • Altre informazioni su come raccogliere i dati in modo responsabile.
  • Visualizzare i notebook YAML e Python di esempio per generare il dashboard di intelligenza artificiale responsabile con YAML o Python.
  • Altre informazioni su come usare il dashboard dell'intelligenza artificiale responsabile e la scorecard per eseguire il debug di dati e modelli e informare meglio il processo decisionale in questo post di blog della community tecnica.
  • Informazioni sul modo in cui il dashboard e la scorecard dell'intelligenza artificiale responsabile sono stati usati dal National Servizio integrità (NHS) regno Unito in una storia reale dei clienti.
  • Esplorare le funzionalità del dashboard dell'intelligenza artificiale responsabile tramite questa demo Web interattiva del lab di intelligenza artificiale.