Condividi tramite


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 una 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 della 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 le specifiche dei componenti di intelligenza artificiale responsabile ed esempi di frammenti di codice in YAML e Python.

Importante

Gli elementi contrassegnati (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 diverse limitazioni per l'uso:

  • Tutti i modelli devono essere registrati in Azure Machine Learning in formato MLflow con una versione 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 Responsible IA usando il componente Fetch Registered Modelche viene fornito.
  • Gli input del set di dati devono essere in formato mltable.
  • È comunque necessario fornire un modello, anche se viene eseguita solo un'analisi causale dei dati. A questo scopo, è possibile usare le stime DummyClassifier e DummyRegressor di scikit-learn.

Costruttore della dashboard di RAI con informazioni dettagliate

Questo componente ha tre porte di input:

  • Il modello di Machine Learning
  • Il 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 della 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 una versione sklearn.

I due set di dati devono essere in formato mltable. 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 Il nome della colonna nei set di dati di input, che il modello sta tentando di stimare. String
maximum_rows_for_test_dataset Il 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à. Ai fini della previsione, include la specifica di quale colonna è la colonna datetime e quale è la colonna time_series_id. 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 gli input categorical_column_names, classes e feature_metadata.

Il componente del costruttore ha un singolo output denominato rai_insights_dashboard. Si tratta di una dashboard vuoto su cui operano i singoli componenti degli strumenti. Tutti i risultati vengono assemblati dal componente Gather RAI Insights dashboard 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 alla dashboard di RAI con informazioni dettagliate

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. Inoltre, accetta i seguenti parametri:

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, con valore predefinito è linear.
heterogeneity_model Modello usato per stimare l'effetto delle caratteristiche di eterogeneità sul risultato. Stringa facoltativa. Deve essere linear o forest, con valore predefinito è linear.
alpha Livello di confidenza degli intervalli di confidenza. Numero a virgola mobile facoltativo, il valore predefinito è pari a 0,05.
upper_bound_on_cat_expansion Espansione massima delle funzionalità categoriche. Numero intero facoltativo, il valore predefinito è pari a 50.
treatment_cost Il costo dei trattamenti. Se è uguale a 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 Il numero minimo di campioni per nodo 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 Affinché un modello abbia maggiore affidabilità, le funzionalità categoriche, per impostazione predefinita, devono avere diverse istanze di ogni categoria. Se si imposta questa opzione su True, questi controlli verranno ignorati. Valore booleano facoltativo, con valore predefinito è False.
categories Le categorie da utilizzare per le colonne categoriche. Se viene soddisfatta la condizione auto, le categorie verranno dedotte per tutte le colonne categorica. In caso contrario, questo argomento deve contenere tante voci, quante quelle presenti nelle colonne categoriche.

Ogni voce deve essere o auto per 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 valore "di controllo" per la colonna, e gli altri valori vengono confrontati in base a questo.
Facoltativo, auto o elenco2.
n_jobs Grado di parallelismo da usare, Numero intero facoltativo, che diventa per impostazione predefinita, 1.
verbose Indica se fornire un output dettagliato durante il calcolo. Numero intero facoltativo, che diventa per impostazione predefinita, 1.
random_state Valore di inizializzazione per il generatore di numeri pseudocasuali (PRNG). Valore intero facoltativo.

2 Per i parametri list: diversi parametri accettano elenchi di altri tipi (stringhe, numeri, persino altri elenchi). Per trasferirli 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 porte di input insight_[n] del componente Gather RAI Insights Dashboard.

  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 alla dashboard di RAI con informazioni dettagliate

Questo componente genera punti controfattuali per il set di dati di test fornito. Ha una singola porta di input, che accetta l'output del costruttore della dashboard di RAI con informazioni dettagliate. Inoltre, accetta i seguenti parametri:

Nome parametro Descrizione Tipo
total_CFs Il numero di punti controfattuali da generare per ogni riga nel set di dati di test. Numero intero facoltativo, che diventa, per impostazione predefinita, 10.
method Explainer dice-ml da usare. Stringa facoltativa. Deve essere random, genetic o kdtree. Il valore predefinito è random.
desired_class Indice che identifica la classe controfattuale desiderata. Per la classificazione binaria, deve essere impostata su opposite. Stringa o numero intero facoltativi. Il valore predefinito è 0.
desired_range Per problemi di regressione, è necessario 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. Diventa, per impostazione predefinita, l'intervallo derivato dai dati di training. Stringa o elenco facoltativi3.
features_to_vary Una stringa all o un elenco di nomi di funzionalità da variare. Stringa o elenco facoltativi3.
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 input insight_[n] del componente Gather RAI Insights dashboard.

 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 alla dashboard di RAI con informazioni dettagliate

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. Inoltre, accetta i seguenti parametri:

Nome parametro Descrizione Tipo
max_depth La profondità massima dell'albero di analisi degli errori. Valore intero facoltativo. Il valore predefinito è 3.
num_leaves Il numero massimo di nodi foglia nell'albero degli errori. Valore intero facoltativo. Il valore predefinito è 31.
min_child_samples Il numero minimo di punti dati necessari per generare un nodo foglia. Valore intero facoltativo. L'impostazione predefinita è 20.
filter_features Un elenco di una o due funzionalità da usare per il filtro matrice. Elenco facoltativo da trasferire come singola stringa con codifica JSON.

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

  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 alla dashboard di RAI con informazioni dettagliate

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 Gather dashboard RAI con informazioni dettagliate.

  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}} 

Gather dashboard RAI con informazioni dettagliate

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

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

Vi sono due porte di output:

  • La porta dashboard contiene l'oggetto completato RAIInsights.
  • La porta ux_json contiene i dati necessari per visualizzare minimo una dashboard.
  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 necessita l’utilizzo delle 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 della 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 scorecard e l’ID predifined_cohorts_json è 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 adottare 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 quanto riguarda la classe di riferimento selezionata rispetto al resto delle classi.

Metrica

Misurazione delle prestazioni Definizione Tipo di modello
accuracy_score La frazione di punti dati classificati correttamente. Classificazione
precision_score Frazione di punti dati classificati correttamente tra quelli classificati come 1. Classificazione
recall_score La frazione di punti dati classificati correttamente tra quelli la cui vera etichetta è 1. Nomi alternativi: tasso vero positivo, 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 La media dei valori assoluti degli errori. Più solido per gli outlier di mean_squared_error. Regressione
mean_squared_error Media degli errori quadratici. Regressione
median_absolute_error La mediana di errori quadrati. Regressione
r2_score Frazione della varianza nelle etichette spiegata dal modello. Regressione

Soglia: la 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: il numero di funzionalità da visualizzare, con un massimo di 10. Sono consentiti numeri interi positivi fino a 10.

Equità

Metrico Definizione
metric La metrica primaria per l'equità di valutazione.
sensitive_features Un 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 I valori di destinazione desiderati della valutazione dell'equità. I token matematici consentiti sono >, <, >=, e <=, seguito da un numero reale.
Ad esempio, metric="accuracy", fairness_evaluation_kind="difference".
<= 0,05 indica che il target per la differenza nell'accuratezza è minore o uguale a 0,05.

Nota

La scelta di fairness_evaluation_kind (selezionando "differenza" rispetto a "rapporto") 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:

Metric fairness_evaluation_kind Definizione Tipo di modello
accuracy_score differenza Differenza massima nel punteggio accuratezza tra due gruppi qualsiasi. Classificazione
accuracy_score ratio Differenza minima nel punteggio accuratezza tra due gruppi qualsiasi. Classificazione
precision_score differenza Differenza massima nel punteggio di precisione tra due gruppi qualsiasi. Classificazione
precision_score ratio Il rapporto massimo nel punteggio di precisione tra due gruppi. Classificazione
recall_score differenza Differenza massima nel punteggio di richiamo tra due gruppi qualsiasi. Classificazione
recall_score ratio Il rapporto massimo nel punteggio di richiamo tra due gruppi. Classificazione
f1_score differenza Differenza massima nel punteggio f1 tra due gruppi qualsiasi. Classificazione
f1_score ratio Il rapporto massimo nel punteggio f1 tra due gruppi. Classificazione
error_rate differenza La differenza massima nella frequenza di errore tra due gruppi. Classificazione
error_rate ratio Il rapporto massimo in percentuale di errore tra due gruppi. Classificazione
Selection_rate differenza La differenza massima nella frequenza di selezione tra due gruppi. Classificazione
Selection_rate ratio Il 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 ratio Il rapporto massimo nell'errore assoluto medio tra due gruppi. Regressione
mean_squared_error differenza La differenza massima nell'errore quadratico medio tra due gruppi. Regressione
mean_squared_error ratio Il rapporto massimo in errore quadratico medio tra due gruppi. Regressione
median_absolute_error differenza La differenza massima nell'errore assoluto della mediana tra due gruppi. Regressione
median_absolute_error ratio Il rapporto massimo nell'errore assoluto della mediana tra due gruppi. Regressione
r2_score differenza La 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 versioni e formati di modello sono supportati?

Il modello deve trovarsi nella directory MLflow con una versione 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