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:

Skärmbild av 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 och DummyRegressor 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, regressioneller 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_featuresen 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 autokommer 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, geneticeller 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-mlav . 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örda RAIInsights 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:

Metric fairness_evaluation_kind Definition Modelltyp
accuracy_score Skillnaden Den maximala skillnaden i noggrannhetspoäng mellan två grupper. Klassificering
accuracy_score Förhållandet Minsta förhållande i noggrannhetspoäng mellan två grupper. Klassificering
precision_score Skillnaden Den maximala skillnaden i precisionspoäng mellan två grupper. Klassificering
precision_score Förhållandet Det maximala förhållandet i precisionspoäng mellan två grupper. Klassificering
recall_score Skillnaden Den maximala skillnaden i träffsäkerhetspoäng mellan två grupper. Klassificering
recall_score Förhållandet Det maximala förhållandet i träffsäkerhetspoäng mellan två grupper. Klassificering
f1_score Skillnaden Den maximala skillnaden i f1-poäng mellan två grupper. Klassificering
f1_score Förhållandet Det maximala förhållandet i f1-poäng mellan två grupper. Klassificering
error_rate Skillnaden Den maximala skillnaden i felfrekvens mellan två grupper. Klassificering
error_rate Förhållandet Det maximala förhållandet i felfrekvens mellan två grupper. Klassificering
Selection_rate Skillnaden Den maximala skillnaden i urvalsfrekvens mellan två grupper. Klassificering
Selection_rate Förhållandet Det maximala förhållandet i urvalshastigheten mellan två grupper. Klassificering
mean_absolute_error Skillnaden Den maximala skillnaden i genomsnittligt absolut fel mellan två grupper. Regression
mean_absolute_error Förhållandet Det maximala förhållandet i genomsnittligt absolut fel mellan två grupper. Regression
mean_squared_error Skillnaden Den maximala skillnaden i genomsnittligt kvadratfel mellan två grupper. Regression
mean_squared_error Förhållandet Det maximala förhållandet i genomsnittligt kvadratfel mellan två grupper. Regression
median_absolute_error Skillnaden Den maximala skillnaden i absolut medianfel mellan två grupper. Regression
median_absolute_error Förhållandet Det maximala förhållandet i absolut medianfel mellan två grupper. Regression
r2_score Skillnaden Den maximala skillnaden i R2-poäng mellan två grupper. Regression
r2_Score Förhållandet 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