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

SI APPLICA A:Estensione 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 di 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
  • I componenti dello strumento:
    • 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 specifiche dei componenti di intelligenza artificiale responsabile ed esempi di frammenti di codice in YAML e Python. Per visualizzare il codice completo, vedere il notebook YAML di esempio e Python.

Limitazioni

Il set corrente di componenti presenta numerose limitazioni sull'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.
  • Un modello deve essere fornito anche se viene eseguita solo un'analisi causale dei dati. È possibile usare gli DummyClassifier stimatori e DummyRegressor da scikit-learn per questo scopo.

Costruttore del dashboard di RAI Insights

Questo componente include 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 quali 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, si usa il set di dati di training per eseguire il training del modello causale per generare le informazioni dettagliate causali. Usare il set di dati di test 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, che verrà illustrato più avanti in questo articolo.

Nota

Attualmente sono supportati solo 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 test forniti non devono essere gli stessi set di dati usati nel training del modello, ma possono essere gli stessi. Per impostazione predefinita, per motivi di prestazioni, il set di dati di test è limitato a 5.000 righe dell'interfaccia utente della 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 o la regressione. classification Stringa oregression
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. Intero, impostazione predefinita a 5.000
categorical_column_names Le 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

1 Gli elenchi devono essere forniti come singola stringa con codifica JSON per categorical_column_names e classes input.

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 il dashboard 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 RAI Insights dashboard constructordi . Accetta anche i parametri seguenti:

Nome parametro Descrizione Tipo
treatment_features Elenco dei nomi delle funzionalità nei set di dati, potenzialmente "trattabili" per ottenere risultati diversi. Elenco di stringhe2.
heterogeneity_features Elenco dei nomi delle funzionalità nei set di dati, che potrebbero influire sul comportamento delle funzionalità "trattabili". Per impostazione predefinita, tutte le funzionalità verranno considerate. 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, impostazione predefinita su linear.
heterogeneity_model Il modello usato per stimare l'effetto delle caratteristiche di eterogeneità sul risultato. Stringa facoltativa. Deve essere linear o forest, impostazione predefinita su linear.
alpha Livello di attendibilità degli intervalli di attendibilità. Numero a virgola mobile facoltativa, il valore predefinito è 0,05.
upper_bound_on_cat_expansion L'espansione massima delle funzionalità categorica. Numero intero facoltativo, valore predefinito su 50.
treatment_cost 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 dell'applicazione di tale 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 o elenco facoltativo2.
min_tree_leaf_samples Numero minimo di campioni per foglia nell'albero dei criteri. Numero intero facoltativo, impostazione predefinita su 2.
max_tree_depth Profondità massima dell'albero dei criteri. Numero intero facoltativo, impostazione predefinita su 2.
skip_cat_limit_checks Per impostazione predefinita, le funzionalità categorica devono avere diverse istanze di ogni categoria in modo che un modello sia adatto in modo affidabile. Impostando questo valore su True verrà ignorato questi controlli. Valore booleano facoltativo, impostazione predefinita su False.
categories Categorie da usare per le colonne categorica. Se auto, le categorie verranno dedotte per tutte le colonne categorica. In caso contrario, questo argomento deve avere il numero massimo di voci presenti in colonne categoriche.

Ogni voce deve essere auto quella di dedurre i valori per tale colonna o l'elenco di valori per la colonna. Se vengono specificati valori espliciti, il primo valore viene considerato come il valore "control" per la colonna in base 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 un 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, anche altri elenchi). Per passarli al componente, è necessario prima di tutto codifica JSON in una singola stringa.

Questo componente ha una singola porta di output, che può essere connessa a una delle porte di insight_[n] 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 contatori 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 controfactuali 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, deve essere impostato su opposite. Stringa o integer 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 l'intervallo consentito in un elenco come valori. Il valore predefinito è l'intervallo dedotto dai dati di training. Stringa facoltativa o elenco3.
features_to_vary Una stringa all o un elenco di nomi di funzionalità da variare. Stringa facoltativa o elenco3.
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 porte di insight_[n] 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 dell'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. Il valore predefinito è 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 porte di insight_[n] 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 dello strumento. Almeno una di queste porte deve essere connessa.

Sono disponibili 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 delle coorti predefinite.

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

Definizione di coorti:

[ 
  { 
    "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" 
      } 
    ] 
  } 
] 

Ecco 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" 
  ]  
} 

Di seguito è riportato 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.

Modellare

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

Nota

Per la classificazione multiclasse, è prima necessario usare 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 dei 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: velocità effettiva positiva, sensibilità. Classificazione
f1_score Il punteggio F1 è la media armonica della precisione e del richiamo. Classificazione
error_rate Percentuale di istanze classificate in modo errato sull'intero set di istanze. Classificazione
mean_absolute_error Media dei valori assoluti degli errori. Più affidabile per gli outlier di mean_squared_error. Regressione
mean_squared_error Media degli errori quadrati. Regressione
median_absolute_error Mediano degli 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.

Priorità funzionalità

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

Equità

Metrica 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 ( fairness_evaluation_kind selezionando "differenza" e "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 a fairness_evaluation_kind, per configurare il componente di valutazione dell'equità della scorecard:

Metrica fairness_evaluation_kind Definizione Tipo di modello
accuracy_score differenza Differenza massima nel punteggio di accuratezza tra due gruppi. Classificazione
accuracy_score Rapporto 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 Rapporto 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 Rapporto Rapporto massimo nel punteggio di richiamo tra due gruppi. Classificazione
f1_score differenza Differenza massima nel punteggio f1 tra due gruppi. Classificazione
f1_score Rapporto Rapporto massimo nel punteggio f1 tra due gruppi. Classificazione
error_rate differenza Differenza massima nella frequenza di errore tra due gruppi. Classificazione
error_rate Rapporto Rapporto massimo nella percentuale di errori tra due gruppi. Classificazione
Selection_rate differenza Differenza massima nella frequenza di selezione tra due gruppi. Classificazione
Selection_rate Rapporto Rapporto massimo nella frequenza di selezione tra due gruppi. Classificazione
mean_absolute_error differenza La differenza massima nell'errore assoluto medio tra due gruppi. Regressione
mean_absolute_error Rapporto Rapporto massimo nell'errore assoluto medio tra due gruppi. Regressione
mean_squared_error differenza Differenza massima nell'errore quadratico medio tra due gruppi. Regressione
mean_squared_error Rapporto Rapporto massimo nell'errore quadratico medio tra due gruppi. Regressione
median_absolute_error differenza Differenza massima nell'errore assoluto mediano tra due gruppi. Regressione
median_absolute_error Rapporto Rapporto massimo nell'errore assoluto mediano tra due gruppi. Regressione
r2_score differenza Differenza massima nel punteggio R2 tra due gruppi. Regressione
r2_Score Rapporto Rapporto massimo nel punteggio R2 tra due gruppi. Regressione

Vincoli di input

Quali formati di modello e tipi sono supportati?

Il modello deve trovarsi nella directory MLflow con un sapore sklearn 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