Generera en ansvarsfull AI-insikt med YAML och Python
GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)
Du kan generera en instrumentpanel för ansvarsfull AI och styrkort via ett pipelinejobb med hjälp av ansvarsfulla AI-komponenter. Instrumentpaneler för ansvarsfull AI skapas med hjälp av sex huvudkomponenter och ett par hjälpkomponenter. Här är ett exempel på ett experimentdiagram:
Ansvarsfulla AI-komponenter
Huvudkomponenterna för att skapa instrumentpanelen ansvarsfull AI i Azure Machine Learning är:
RAI Insights dashboard constructor
- Verktygskomponenterna:
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
Komponenterna RAI Insights dashboard constructor
och Gather RAI Insights dashboard
är obligatoriska, och minst en av verktygskomponenterna krävs. Det är dock inte nödvändigt att använda alla verktyg i varje instrumentpanel för ansvarsfull AI.
I följande avsnitt finns specifikationer för ansvariga AI-komponenter och exempel på kodfragment i YAML och Python.
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Begränsningar
Den aktuella uppsättningen komponenter har många begränsningar för deras användning:
- Alla modeller måste registreras i Azure Machine Learning i MLflow-format med en sklearn-smak (scikit-learn).
- Modellerna måste kunna läsas in i komponentmiljön.
- Modellerna måste vara pickleable.
- Modellerna måste levereras till de ansvariga AI-komponenterna med hjälp av komponenten
Fetch Registered Model
som vi tillhandahåller. - Indata för datamängden måste vara i
mltable
format. - En modell måste anges även om endast en kausal analys av data utförs. Du kan använda
DummyClassifier
estimatorerna ochDummyRegressor
från scikit-learn för det här ändamålet.
R Alla insikter instrumentpanelskonstruktor
Den här komponenten har tre indataportar:
- Maskininlärningsmodellen
- Träningsdatauppsättningen
- Testdatauppsättningen
Om du vill generera modellfelsökningsinsikter med komponenter som felanalys och modellförklaringar använder du den tränings- och testdatauppsättning som du använde när du tränade din modell. För komponenter som kausal analys, som inte kräver en modell, använder du träningsdatauppsättningen för att träna orsakssambandsmodellen för att generera kausala insikter. Du använder testdatauppsättningen för att fylla i visualiseringar av ansvarsfull AI-instrumentpanel.
Det enklaste sättet att ange modellen är att registrera indatamodellen och referera till samma modell i modellens indataport RAI Insight Constructor
för komponenten, som vi diskuterar senare i den här artikeln.
Kommentar
För närvarande stöds endast modeller i MLflow-format och med en sklearn
smak.
De två datauppsättningarna ska vara i mltable
format. De angivna tränings- och testdatauppsättningarna behöver inte vara samma datauppsättningar som används för att träna modellen, men de kan vara desamma. Av prestandaskäl är testdatauppsättningen som standard begränsad till 5 000 rader i visualiseringsgränssnittet.
Konstruktorkomponenten accepterar också följande parametrar:
Parameternamn | beskrivning | Typ |
---|---|---|
title |
Kort beskrivning av instrumentpanelen. | String |
task_type |
Anger om modellen är avsedd för klassificering, regression eller prognostisering. | Sträng, classification , regression eller forecasting |
target_column_name |
Namnet på kolumnen i indatauppsättningarna, som modellen försöker förutsäga. | String |
maximum_rows_for_test_dataset |
Det maximala antalet rader som tillåts i testdatauppsättningen av prestandaskäl. | Heltal, standardvärdet är 5 000 |
categorical_column_names |
Kolumnerna i datauppsättningarna, som representerar kategoriska data. | Valfri lista över strängar1 |
classes |
Den fullständiga listan över klassetiketter i träningsdatauppsättningen. | Valfri lista över strängar1 |
feature_metadata |
Anger ytterligare information som instrumentpanelen kan behöva beroende på aktivitetstyp. För prognostisering inkluderar detta att ange vilken kolumn som är datetime kolumnen och vilken kolumn som är time_series_id kolumnen. För syn kan detta inkludera medelvärdet av pixelvärdet eller platsdata för en bild. |
Valfri lista över strängar1 |
use_model_dependency |
Anger om modellen kräver att en separat dockercontainer hanteras på grund av motstridiga beroenden med RAI-instrumentpanelen. För prognostisering måste detta vara aktiverat. Detta är vanligtvis inte aktiverat för andra scenarier. | Booleskt |
1 Listorna ska anges som en enda JSON-kodad sträng för categorical_column_names
, classes
, feature_metadata
indata.
Konstruktorkomponenten har ett enda utdata med namnet rai_insights_dashboard
. Det här är en tom instrumentpanel som de enskilda verktygskomponenterna arbetar på. Alla resultat monteras av komponenten Gather RAI Insights dashboard
i slutet.
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"]'
Lägg till kausal i R Alla insikter instrumentpanel
Den här komponenten utför en kausal analys på de angivna datauppsättningarna. Den har en enda indataport som accepterar utdata från RAI Insights dashboard constructor
. Den accepterar också följande parametrar:
Parameternamn | beskrivning | Skriv |
---|---|---|
treatment_features |
En lista över funktionsnamn i datauppsättningarna, som potentiellt är "behandlingsbara" för att få olika resultat. | Lista över strängar2. |
heterogeneity_features |
En lista över funktionsnamn i datauppsättningarna, vilket kan påverka hur "behandlingsbara" funktioner fungerar. Som standard beaktas alla funktioner. | Valfri lista över strängar2. |
nuisance_model |
Modellen som används för att beräkna resultatet av att ändra behandlingsfunktionerna. | Valfri sträng. Måste vara linear eller AutoML , som standard .linear |
heterogeneity_model |
Modellen som används för att uppskatta effekten av heterogenitetsfunktionerna på resultatet. | Valfri sträng. Måste vara linear eller forest , som standard .linear |
alpha |
Konfidensnivå för konfidensintervall. | Valfritt flyttalsnummer, standardvärdet är 0,05. |
upper_bound_on_cat_expansion |
Den maximala expansionen av kategoriska funktioner. | Valfritt heltal, standardvärdet är 50. |
treatment_cost |
Kostnaden för behandlingarna. Om 0 kommer alla behandlingar att ha noll kostnad. Om en lista skickas tillämpas varje element på treatment_features en av .Varje element kan vara ett skalärt värde för att ange en konstant kostnad för att tillämpa den behandlingen eller en matris som anger kostnaden för varje exempel. Om behandlingen är en diskret behandling bör matrisen för den funktionen vara tvådimensionell, med den första dimensionen som representerar exempel och den andra representerar skillnaden i kostnad mellan de icke-standardvärdena och standardvärdet. |
Valfritt heltal eller lista2. |
min_tree_leaf_samples |
Det minsta antalet exempel per löv i principträdet. | Valfritt heltal, standardvärdet är 2. |
max_tree_depth |
Det maximala djupet i principträdet. | Valfritt heltal, standardvärdet är 2. |
skip_cat_limit_checks |
Som standard måste kategoriska funktioner ha flera instanser av varje kategori för att en modell ska passa robust. Om du ställer in detta True på hoppar du över dessa kontroller. |
Valfritt booleskt värde, standardvärdet False . |
categories |
De kategorier som ska användas för de kategoriska kolumnerna. Om auto kommer kategorierna att härledas för alla kategoriska kolumner. Annars bör det här argumentet ha lika många poster som det finns kategoriska kolumner.Varje post ska antingen auto vara att härleda värdena för den kolumnen eller listan med värden för kolumnen. Om explicita värden anges behandlas det första värdet som "kontroll"-värdet för den kolumn som andra värden jämförs med. |
Valfritt, auto eller lista2. |
n_jobs |
Grad av parallellitet som ska användas. | Valfritt heltal, standardvärdet är 1. |
verbose |
Anger om du vill ange detaljerade utdata under beräkningen. | Valfritt heltal, standardvärdet är 1. |
random_state |
Frö för pseudorandomnummergeneratorn (PRNG). | Valfritt heltal. |
2 För parametrarna list
: Flera av parametrarna accepterar listor över andra typer (strängar, siffror, till och med andra listor). Om du vill skicka dessa till komponenten måste de först vara JSON-kodade i en enda sträng.
Den här komponenten har en enda utdataport som kan anslutas till en av komponentens insight_[n]
Gather RAI Insights Dashboard
indataportar.
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"]'
Lägg till Counterfactuals till R Alla insikter instrumentpanel
Den här komponenten genererar kontrafaktiska punkter för den angivna testdatauppsättningen. Den har en enda indataport som accepterar utdata från R Alla insikter instrumentpanelskonstruktorn. Den accepterar också följande parametrar:
Parameternamn | beskrivning | Typ |
---|---|---|
total_CFs |
Antalet kontrafaktiska punkter som ska genereras för varje rad i testdatauppsättningen. | Valfritt heltal, standardvärdet är 10. |
method |
Förklaringen dice-ml som ska användas. |
Valfri sträng. Antingen random , genetic eller kdtree . Standardvärdet är random . |
desired_class |
Index som identifierar önskad kontrafaktisk klass. För binär klassificering bör detta anges till opposite . |
Valfri sträng eller heltal. Standardvärdet är 0. |
desired_range |
För regressionsproblem kan du identifiera önskat utfallsintervall. | Valfri lista med två tal3. |
permitted_range |
Ordlista med funktionsnamn som nycklar och det tillåtna intervallet i en lista som värden. Standardvärdet är det intervall som härleds från träningsdata. | Valfri sträng eller lista3. |
features_to_vary |
Antingen en sträng all eller en lista över funktionsnamn som ska variera. |
Valfri sträng eller lista3. |
feature_importance |
Flagga för att aktivera beräkning av funktionsvikter med hjälp dice-ml av . |
Valfritt booleskt värde. Standardvärdet är True . |
3 För icke-skalära parametrar: Parametrar som är listor eller ordlistor ska skickas som enstaka JSON-kodade strängar.
Den här komponenten har en enda utdataport som kan anslutas till en av komponentens insight_[n]
Gather RAI Insights dashboard
indataportar.
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]"
Lägg till felanalys på R Alla insikter instrumentpanel
Den här komponenten genererar en felanalys för modellen. Den har en enda indataport som accepterar utdata från RAI Insights Dashboard Constructor
. Den accepterar också följande parametrar:
Parameternamn | beskrivning | Typ |
---|---|---|
max_depth |
Det maximala djupet i felanalysträdet. | Valfritt heltal. Standardvärdet är 3. |
num_leaves |
Det maximala antalet löv i felträdet. | Valfritt heltal. Standardvärdet är 31. |
min_child_samples |
Det minsta antalet datapunkter som krävs för att skapa ett löv. | Valfritt heltal. Standardvärdet är 20. |
filter_features |
En lista över en eller två funktioner som ska användas för matrisfiltret. | Valfri lista som ska skickas som en enda JSON-kodad sträng. |
Den här komponenten har en enda utdataport som kan anslutas till en av komponentens insight_[n]
Gather RAI Insights Dashboard
indataportar.
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"]'
Lägg till förklaring till R Alla insikter instrumentpanel
Den här komponenten genererar en förklaring av modellen. Den har en enda indataport som accepterar utdata från RAI Insights Dashboard Constructor
. Den accepterar en enskild, valfri kommentarssträng som en parameter.
Den här komponenten har en enda utdataport som kan anslutas till någon av indataportarna insight_[n]
för instrumentpanelskomponenten Samla in R Alla insikter.
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}}
Samla in R Alla insikter instrumentpanel
Den här komponenten sammanställer de genererade insikterna i en enda instrumentpanel för ansvarsfull AI. Den har fem indataportar:
- Porten
constructor
som måste vara ansluten till R Alla insikter-instrumentpanelens konstruktorkomponent. - Fyra
insight_[n]
portar som kan anslutas till utdata från verktygskomponenterna. Minst en av dessa portar måste vara ansluten.
Det finns två utdataportar:
- Porten
dashboard
innehåller det slutfördaRAIInsights
objektet. - Porten
ux_json
innehåller de data som krävs för att visa en minimal instrumentpanel.
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}}
Så här genererar du ett ansvarsfullt AI-styrkort (förhandsversion)
Konfigurationssteget kräver att du använder din domänexpertis kring problemet för att ange önskade målvärden för modellprestanda och rättvisemått.
Precis som andra ansvariga AI-instrumentpanelskomponenter som konfigurerats i YAML-pipelinen kan du lägga till en komponent för att generera styrkortet i YAML-pipelinen:
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
Där pdf_gen.json är JSON-filen för generering av poängkortskonfiguration och predifined_cohorts_json ID:t json-filen för den fördefinierade kohortdefinitionen.
Här är en JSON-exempelfil för kohortdefinition och konfiguration av styrkortsgenerering:
Kohortdefinition:
[
{
"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"
}
]
}
]
Här är en konfigurationsfil för styrkortsgenerering som ett regressionsexempel:
{
"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"
]
}
Här är en konfigurationsfil för styrkortsgenerering som ett klassificeringsexempel:
{
"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"
}
}
Definition av indata för komponenten Ansvarsfullt AI-styrkort
I det här avsnittet visas och definieras de parametrar som krävs för att konfigurera komponenten För ansvarigt AI-styrkort.
Modell
ModelName | Namn på modell |
---|---|
ModelType |
Värden i ['classification', 'regression']. |
ModelSummary |
Ange text som sammanfattar vad modellen är till för. |
Kommentar
För klassificering med flera klasser bör du först använda strategin One-vs-Rest för att välja din referensklass och sedan dela upp klassificeringsmodellen för flera klasser i ett binärt klassificeringsproblem för den valda referensklassen jämfört med resten av klasserna.
Mått
Prestandamått | Definition | Modelltyp |
---|---|---|
accuracy_score |
Den del av datapunkterna som klassificeras korrekt. | Klassificering |
precision_score |
Den del av datapunkterna som klassificeras korrekt bland dem som klassificeras som 1. | Klassificering |
recall_score |
Den del av datapunkterna som klassificeras korrekt bland dem vars sanna etikett är 1. Alternativa namn: sann positiv hastighet, känslighet. | Klassificering |
f1_score |
F1-poängen är det harmoniska medelvärdet av precision och träffsäkerhet. | Klassificering |
error_rate |
Andelen instanser som är felklassificerade över hela uppsättningen instanser. | Klassificering |
mean_absolute_error |
Medelvärdet av absoluta värden för fel. Mer robust för extremvärden än mean_squared_error . |
Regression |
mean_squared_error |
Medelvärdet av kvadratfel. | Regression |
median_absolute_error |
Medianvärdet för kvadratfel. | Regression |
r2_score |
Den del av variansen i etiketterna som förklaras av modellen. | Regression |
Tröskelvärde: Det önskade tröskelvärdet för det valda måttet. Tillåtna matematiska token är >, <, >=och <=m följt av ett verkligt tal. Till exempel >innebär = 0,75 att målet för det valda måttet är större än eller lika med 0,75.
Funktionsvikt
top_n: Antalet funktioner som ska visas, med högst 10. Positiva heltal upp till 10 tillåts.
Rättvisa
Mätvärde | Definition |
---|---|
metric |
Det primära måttet för utvärderings rättvisa. |
sensitive_features |
En lista över funktionsnamn från indatauppsättningen som ska betecknas som känsliga funktioner för rättviserapporten. |
fairness_evaluation_kind |
Värden i ['difference', 'ratio']. |
threshold |
De önskade målvärdena för rättviseutvärderingen. Tillåtna matematiska token är >, <, >=och <=, följt av ett verkligt tal. Till exempel metric="accuracy", fairness_evaluation_kind="difference". <= 0,05 innebär att målet för noggrannhetsskillnaden är mindre än eller lika med 0,05. |
Kommentar
Ditt val av fairness_evaluation_kind
(om du väljer "skillnad" jämfört med "förhållande") påverkar målvärdets skala. I ditt val måste du välja ett meningsfullt målvärde.
Du kan välja mellan följande mått, parat med fairness_evaluation_kind
, för att konfigurera din rättvisebedömningskomponent för styrkortet:
Mått | fairness_evaluation_kind | Definition | Modelltyp |
---|---|---|---|
accuracy_score |
skillnad | Den maximala skillnaden i noggrannhetspoäng mellan två grupper. | Klassificering |
accuracy_score |
förhållande | Minsta förhållande i noggrannhetspoäng mellan två grupper. | Klassificering |
precision_score |
skillnad | Den maximala skillnaden i precisionspoäng mellan två grupper. | Klassificering |
precision_score |
förhållande | Det maximala förhållandet i precisionspoäng mellan två grupper. | Klassificering |
recall_score |
skillnad | Den maximala skillnaden i träffsäkerhetspoäng mellan två grupper. | Klassificering |
recall_score |
förhållande | Det maximala förhållandet i träffsäkerhetspoäng mellan två grupper. | Klassificering |
f1_score |
skillnad | Den maximala skillnaden i f1-poäng mellan två grupper. | Klassificering |
f1_score |
förhållande | Det maximala förhållandet i f1-poäng mellan två grupper. | Klassificering |
error_rate |
skillnad | Den maximala skillnaden i felfrekvens mellan två grupper. | Klassificering |
error_rate |
förhållande | Det maximala förhållandet i felfrekvens mellan två grupper. | Klassificering |
Selection_rate |
skillnad | Den maximala skillnaden i urvalsfrekvens mellan två grupper. | Klassificering |
Selection_rate |
förhållande | Det maximala förhållandet i urvalshastigheten mellan två grupper. | Klassificering |
mean_absolute_error |
skillnad | Den maximala skillnaden i genomsnittligt absolut fel mellan två grupper. | Regression |
mean_absolute_error |
förhållande | Det maximala förhållandet i genomsnittligt absolut fel mellan två grupper. | Regression |
mean_squared_error |
skillnad | Den maximala skillnaden i genomsnittligt kvadratfel mellan två grupper. | Regression |
mean_squared_error |
förhållande | Det maximala förhållandet i genomsnittligt kvadratfel mellan två grupper. | Regression |
median_absolute_error |
skillnad | Den maximala skillnaden i absolut medianfel mellan två grupper. | Regression |
median_absolute_error |
förhållande | Det maximala förhållandet i absolut medianfel mellan två grupper. | Regression |
r2_score |
skillnad | Den maximala skillnaden i R2-poäng mellan två grupper. | Regression |
r2_Score |
förhållande | Det maximala förhållandet i R2-poäng mellan två grupper. | Regression |
Indatabegränsningar
Vilka modellformat och -smaker stöds?
Modellen måste finnas i MLflow-katalogen med en sklearn-smak tillgänglig. Dessutom måste modellen vara inläsbar i miljön som används av de ansvariga AI-komponenterna.
Vilka dataformat stöds?
De angivna datauppsättningarna ska vara mltable
med tabelldata.
Nästa steg
- När du har genererat din instrumentpanel för ansvarsfull AI kan du visa hur du kommer åt och använder den i Azure Machine Learning-studio.
- Sammanfatta och dela dina ansvarsfulla AI-insikter med styrkortet Ansvarsfull AI som PDF-export.
- Läs mer om begreppen och teknikerna bakom instrumentpanelen ansvarsfull AI.
- Läs mer om hur du samlar in data på ett ansvarsfullt sätt.
- Visa yaml- och Python-exempelanteckningsböcker för att generera instrumentpanelen ansvarsfull AI med YAML eller Python.
- Läs mer om hur du använder instrumentpanelen och styrkortet för ansvarsfull AI för att felsöka data och modeller och informera om bättre beslutsfattande i det här blogginlägget från tech communityn.
- Lär dig mer om hur instrumentpanelen för ansvarsfull AI och styrkort användes av UK National Hälsotjänst (NHS) i en verklig kundhistoria.
- Utforska funktionerna i instrumentpanelen ansvarsfull AI via den här interaktiva webbdemon för AI-labb.