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:
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 eDummyRegressor
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_names
gli 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. , random genetic o 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 completatoRAIInsights
. - 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_kind
a , 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.