Generování zodpovědných přehledů AI pomocí YAML a Pythonu

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Řídicí panel Zodpovědné AI a přehled výkonnostních metrik můžete vygenerovat prostřednictvím úlohy kanálu pomocí komponent Zodpovědné AI. Existuje šest základních komponent, které jsou potřeba při vytváření řídicích panelů odpovědné AI, a několik pomocných komponent. Tady je ukázkový graf experimentu:

Snímek obrazovky s ukázkovým grafem experimentu

Zodpovědné komponenty AI

Základní komponenty pro vytvoření řídicího panelu Zodpovědné AI ve službě Azure Machine Učení jsou:

  • RAI Insights dashboard constructor
  • Součásti nástroje:
    • 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

Komponenty RAI Insights dashboard constructor a Gather RAI Insights dashboard jsou potřeba vždy a k nim aspoň jedna komponenta v podobě nástroje. Není však nutné používat všechny nástroje na každém řídicím panelu zodpovědné umělé inteligence.

V následujících částech jsou specifikace komponent zodpovědné umělé inteligence a příklady fragmentů kódu v YAML a Pythonu.

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Omezení

Aktuální sada komponent má mnoho omezení jejich použití:

  • Všechny modely musí být zaregistrované ve službě Azure Machine Učení ve formátu MLflow s příchutí sklearn (scikit-learn).
  • Modely se musejí do prostředí komponenty dát načíst.
  • Modely musí být pickleable.
  • Modely musí být dodány komponentám zodpovědné umělé inteligence pomocí Fetch Registered Model komponenty, kterou poskytujeme.
  • Vstupy datové sady musí být ve mltable formátu.
  • Model musí být dodán i v případě, že se provádí pouze kauzální analýza dat. K tomuto účelu DummyClassifier můžete použít a DummyRegressor odhadátory z nástroje scikit-learn.

R Přehledy AI konstruktor řídicího panelu

Tato komponenta má tři vstupní porty:

  • Model strojového učení
  • Trénovací datová sada
  • Testovací datová sada

Pokud chcete vygenerovat přehledy ladění modelu s komponentami, jako je analýza chyb a vysvětlení modelu, použijte trénovací a testovací datovou sadu, kterou jste použili při trénování modelu. U komponent, jako je kauzální analýza, která nevyžaduje model, použijete trénovací datovou sadu k trénování kauzálního modelu k vygenerování kauzálních přehledů. Testovací datovou sadu použijete k naplnění vizualizací řídicího panelu Zodpovědné umělé inteligence.

Nejjednodušší způsob, jak model zadat, je zaregistrovat vstupní model a odkazovat na stejný model na vstupním portu RAI Insight Constructor komponenty modelu, který probereme dále v tomto článku.

Poznámka:

V současné době se podporují pouze modely ve formátu MLflow a s příchutí sklearn .

Dvě datové sady by měly být ve mltable formátu. Poskytnuté trénovací a testovací datové sady nemusí být stejné datové sady, které se používají při trénování modelu, ale můžou být stejné. Ve výchozím nastavení je testovací datová sada z důvodů výkonu omezena na 5 000 řádků uživatelského rozhraní vizualizace.

Komponenta konstruktoru také přijímá následující parametry:

Název parametru Popis Typ
title Stručný popis řídicího panelu String
task_type Určuje, jestli je model určen pro klasifikaci, regresi nebo prognózování. Řetězec, classification, regression, nebo forecasting
target_column_name Název sloupce ve vstupních datových sadách, který se model pokouší předpovědět. String
maximum_rows_for_test_dataset Maximální počet řádků povolených v testovací datové sadě z důvodů výkonu Celé číslo, výchozí hodnota je 5 000
categorical_column_names Sloupce v datových sadách, které představují kategorická data. Volitelný seznam řetězců1
classes Úplný seznam popisků tříd v trénovací datové sadě Volitelný seznam řetězců1
feature_metadata Určuje další informace, které může řídicí panel potřebovat v závislosti na typu úkolu. Pro prognózování to zahrnuje určení sloupce, který je datetime sloupcem a kterým sloupcem time_series_id je sloupec. U obrazu to může zahrnovat střední hodnotu pixelu nebo data o poloze obrázku. Volitelný seznam řetězců1
use_model_dependency Určuje, jestli model vyžaduje, aby se v důsledku konfliktních závislostí s řídicím panelem RAI obsluhoval samostatný kontejner Dockeru. Pro prognózování musí být tato možnost povolená. Obvykle pro jiné scénáře není tato možnost povolená. Logická hodnota

1 Seznamy by měly být zadány jako jeden řetězec kódovaný ve formátu JSON pro categorical_column_names, classesfeature_metadata vstupy.

Komponenta konstruktoru má jeden výstup s názvem rai_insights_dashboard. Toto je prázdný řídicí panel, na kterém jednotlivé součásti nástrojů pracují. Všechny výsledky jsou sestaveny komponentou Gather RAI Insights dashboard na konci.

 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"]' 

Přidání kauzalálního řídicího panelu R Přehledy AI

Tato komponenta provádí kauzální analýzu zadaných datových sad. Má jeden vstupní port, který přijímá výstup RAI Insights dashboard constructor. Přijímá také následující parametry:

Název parametru Popis Zadejte
treatment_features Seznam názvů funkcí v datových sadách, které jsou potenciálně "považovat za použitelné" pro získání různých výsledků. Seznam řetězců2.
heterogeneity_features Seznam názvů funkcí v datových sadách, které můžou ovlivnit chování "považovatelných" funkcí. Ve výchozím nastavení budou všechny funkce považovány za. Volitelný seznam řetězců2.
nuisance_model Model použitý k odhadu výsledku změny vlastností léčby. Volitelný řetězec. Musí být linear nebo AutoML, výchozí hodnota linear.
heterogeneity_model Model použitý k odhadu vlivu heterogenity na výsledek. Volitelný řetězec. Musí být linear nebo forest, výchozí hodnota linear.
alpha Úroveň spolehlivosti intervalů spolehlivosti Volitelné číslo s plovoucí desetinou čárkou, výchozí hodnota je 0,05.
upper_bound_on_cat_expansion Maximální rozšíření kategorických funkcí. Volitelné celé číslo, výchozí hodnota je 50.
treatment_cost Náklady na léčbu. Pokud 0, všechny léčby budou mít nulové náklady. Pokud je seznam předán, každý prvek se použije na jeden z .treatment_features

Každý prvek může být skalární hodnota, která označuje konstantní náklady na použití této procedury nebo pole označující náklady na každý vzorek. Pokud je ošetření diskrétní ošetření, pole pro tuto funkci by mělo být dvojrozměrné, přičemž první dimenze představuje vzorky a druhý představuje rozdíl v nákladech mezi ne-výchozími hodnotami a výchozí hodnotou.
Volitelné celé číslo nebo seznam2.
min_tree_leaf_samples Minimální početvzorkůch Volitelné celé číslo, výchozí hodnota je 2.
max_tree_depth Maximální hloubka stromu zásad. Volitelné celé číslo, výchozí hodnota je 2.
skip_cat_limit_checks Ve výchozím nastavení musí kategorické funkce mít několik instancí každé kategorie, aby byl model robustní. Nastavením této hodnoty True tyto kontroly přeskočíte. Volitelná logická hodnota, výchozí hodnota Falseje .
categories Kategorie, které se mají použít pro sloupce kategorií. Pokud autobudou kategorie odvozeny pro všechny sloupce kategorií. Jinak by tento argument měl obsahovat tolik položek, kolik existuje ve sloupcích kategorií.

Každá položka by měla buď auto odvodit hodnoty pro daný sloupec, nebo seznam hodnot sloupce. Pokud jsou zadané explicitní hodnoty, první hodnota se považuje za hodnotu "control" pro daný sloupec, se kterou se porovnávají jiné hodnoty.
Volitelné nebo auto seznam2.
n_jobs Stupeň paralelismu, který se má použít. Volitelné celé číslo, výchozí hodnota je 1.
verbose Vyjadřuje, jestli se má během výpočtu poskytnout podrobný výstup. Volitelné celé číslo, výchozí hodnota je 1.
random_state Seed pro pseudonáhodný generátor čísel (PRNG). Volitelné celé číslo.

2 Pro list parametry: Několik parametrů přijímá seznamy jiných typů (řetězce, čísla, i jiné seznamy). Pokud je chcete předat do komponenty, musí být nejprve kódované ve formátu JSON do jednoho řetězce.

Tato komponenta má jeden výstupní port, který lze připojit k jednomu ze vstupních insight_[n]Gather RAI Insights Dashboard portů komponenty.

  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"]' 

Přidání counterfactuals do řídicího panelu R Přehledy AI

Tato komponenta generuje pro zadanou testovací datovou sadu protifaktuální body. Má jeden vstupní port, který přijímá výstup konstruktoru řídicího panelu R Přehledy AI. Přijímá také následující parametry:

Název parametru Popis Typ
total_CFs Počet kontrafaktuálních bodů, které se mají vygenerovat pro každý řádek v testovací datové sadě. Volitelné celé číslo, výchozí hodnota je 10.
method Vysvětlení dice-ml , které se má použít. Volitelný řetězec. Buď random, geneticnebo kdtree. Výchozí hodnota randomje .
desired_class Index identifikující požadovanou kontrafaktuální třídu Pro binární klasifikaci by to mělo být nastaveno na opposite. Volitelný řetězec nebo celé číslo Výchozí hodnota je 0.
desired_range V případě regresních problémů identifikujte požadovaný rozsah výsledků. Volitelný seznam dvou čísel3
permitted_range Slovník s názvy funkcí jako klíči a povoleným rozsahem v seznamu jako hodnotami. Výchozí hodnota je oblast odvozená z trénovacích dat. Volitelný řetězec nebo seznam3
features_to_vary Buď řetězec all , nebo seznam názvů funkcí, které se mají lišit. Volitelný řetězec nebo seznam3
feature_importance Příznak pro povolení výpočtu důležitostí funkcí pomocí dice-ml. Volitelná logická hodnota Výchozí hodnota Trueje .

3 Pro jiné než skalární parametry: Parametry, které jsou seznamy nebo slovníky, by se měly předávat jako řetězce s kódováním JSON.

Tato komponenta má jeden výstupní port, který lze připojit k jednomu ze vstupních insight_[n]Gather RAI Insights dashboard portů komponenty.

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

Přidání analýzy chyb do řídicího panelu R Přehledy AI

Tato komponenta vygeneruje analýzu chyb modelu. Má jeden vstupní port, který přijímá výstup RAI Insights Dashboard Constructor. Přijímá také následující parametry:

Název parametru Popis Typ
max_depth Maximální hloubka stromu analýzy chyb. Volitelné celé číslo. Výchozí hodnota je 3.
num_leaves Maximální počet listů ve stromu chyb. Volitelné celé číslo. Výchozí hodnota je 31.
min_child_samples Minimální počet datových bodů potřebných k vytvoření listu. Volitelné celé číslo. Výchozí hodnota je 20.
filter_features Seznam jedné nebo dvou funkcí, které se mají použít pro filtr matice. Volitelný seznam, který se má předat jako jeden řetězec kódovaný ve formátu JSON.

Tato komponenta má jeden výstupní port, který lze připojit k jednomu ze vstupních insight_[n]Gather RAI Insights Dashboard portů komponenty.

  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"]' 

Přidání vysvětlení do řídicího panelu R Přehledy AI

Tato komponenta vygeneruje vysvětlení modelu. Má jeden vstupní port, který přijímá výstup RAI Insights Dashboard Constructor. Jako parametr přijímá jeden volitelný řetězec komentáře.

Tato komponenta má jeden výstupní port, který lze připojit k jednomu ze vstupních insight_[n] portů komponenty shromáždit R Přehledy AI řídicího panelu.

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

Shromáždění řídicího panelu R Přehledy AI

Tato komponenta sestaví vygenerované přehledy do jednoho řídicího panelu zodpovědné umělé inteligence. Má pět vstupních portů:

  • Portconstructor, který musí být připojen ke komponentě konstruktoru řídicího panelu R Přehledy AI.
  • Čtyři insight_[n] porty, které lze připojit k výstupu součástí nástroje. Musí být připojen alespoň jeden z těchto portů.

Existují dva výstupní porty:

  • Port dashboard obsahuje dokončený RAIInsights objekt.
  • Port ux_json obsahuje data potřebná k zobrazení minimálního řídicího panelu.
  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}} 

Jak vygenerovat přehled výkonnostních metrik zodpovědné umělé inteligence (Preview)

Fáze konfigurace vyžaduje, abyste k nastavení požadovaných cílových hodnot na metrikách výkonu a nestrannosti modelu použili své znalosti v doméně.

Stejně jako ostatní komponenty řídicího panelu Zodpovědné AI nakonfigurované v kanálu YAML můžete přidat komponentu, která vygeneruje přehled výkonnostních metrik v kanálu 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 

Kde pdf_gen.json je soubor JSON pro generování výkonnostních karet a predifined_cohorts_json ID předem připraveného souboru JSON definice kohort.

Tady je ukázkový soubor JSON pro definici kohort a konfiguraci generování přehledu výkonnostních metrik:

Definice kohort:

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

Tady je konfigurační soubor generování přehledu výkonnostních metrik jako příklad regrese:

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

Tady je konfigurační soubor generování přehledu výkonnostních metrik jako příklad klasifikace:

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

Definicevstupůch

Tato část obsahuje seznam a definuje parametry potřebné ke konfiguraci komponenty přehledu výkonnostních metrik Zodpovědné AI.

Model

ModelName Název modelu
ModelType Hodnoty v ['classification', 'regression'].
ModelSummary Zadejte text, který shrnuje, k čemu model slouží.

Poznámka:

U klasifikace s více třídami byste nejprve měli použít strategii One-vs-Rest k výběru referenční třídy a potom rozdělit klasifikační model s více třídami na problém binární klasifikace pro vybranou referenční třídu a zbytek tříd.

Metriky

Metrika výkonu Definice Typ modelu
accuracy_score Zlomek datových bodů, které jsou správně klasifikovány. Klasifikace
precision_score Zlomek datových bodů, které jsou správně klasifikovány mezi body klasifikované jako 1. Klasifikace
recall_score Zlomek datových bodů, které jsou správně klasifikovány mezi ty, jejichž skutečný popisek je 1. Alternativní názvy: pravdivá kladná míra, citlivost. Klasifikace
f1_score Skóre F1 je harmonický průměr přesnosti a úplnosti. Klasifikace
error_rate Poměr instancí, které jsou chybně klasifikovány v celé sadě instancí. Klasifikace
mean_absolute_error Průměr absolutních hodnot chyb. Robustnější než odlehlé hodnoty než mean_squared_error. Regrese
mean_squared_error Průměr kvadratické chyby. Regrese
median_absolute_error Medián kvadratické chyby. Regrese
r2_score Zlomek rozptylu v popiscích vysvětlených modelem Regrese

Prahová hodnota: Požadovaná prahová hodnota pro vybranou metriku. Povolené matematické tokeny jsou >, = ><a <=m následované skutečným číslem. Například >= 0,75 znamená, že cíl pro vybranou metriku je větší nebo roven hodnotě 0,75.

Důležitost funkcí

top_n: Počet funkcí, které se mají zobrazit, s maximálně 10. Jsou povolena kladná celá čísla až 10.

Spravedlnost

Metrické definice
metric Primární metrika pro nestrannost vyhodnocení.
sensitive_features Seznam názvů funkcí ze vstupní datové sady, které mají být určené jako citlivé funkce pro sestavu nestrannosti.
fairness_evaluation_kind Hodnoty v ['difference', 'ratio'].
threshold Požadované cílové hodnoty vyhodnocení nestrannosti. Povolené matematické tokeny jsou >, = ><a <= následované skutečným číslem.
Například metric="accuracy", fairness_evaluation_kind="difference".
<= 0,05 znamená, že cíl pro rozdíl v přesnosti je menší nebo roven hodnotě 0,05.

Poznámka:

fairness_evaluation_kind Výběr možnosti (výběr rozdílu a poměru) má vliv na měřítko cílové hodnoty. Ve výběru nezapomeňte zvolit smysluplnou cílovou hodnotu.

Můžete vybrat z následujících metrik spárovaných s fairness_evaluation_kindkomponentou posouzení nestrannosti přehledu výkonnostních metrik:

Metrika fairness_evaluation_kind Definice Typ modelu
accuracy_score rozdíl Maximální rozdíl ve skóre přesnosti mezi dvěma skupinami. Klasifikace
accuracy_score Poměr Minimální poměr skóre přesnosti mezi všemi dvěma skupinami. Klasifikace
precision_score rozdíl Maximální rozdíl ve skóre přesnosti mezi všemi dvěma skupinami. Klasifikace
precision_score Poměr Maximální poměr skóre přesnosti mezi dvěma skupinami. Klasifikace
recall_score rozdíl Maximální rozdíl ve skóre úplnosti mezi dvěma skupinami. Klasifikace
recall_score Poměr Maximální poměr skóre úplnosti mezi dvěma skupinami. Klasifikace
f1_score rozdíl Maximální rozdíl ve skóre f1 mezi dvěma skupinami. Klasifikace
f1_score Poměr Maximální poměr ve f1 skóre mezi všemi dvěma skupinami. Klasifikace
error_rate rozdíl Maximální rozdíl v chybovosti mezi všemi dvěma skupinami. Klasifikace
error_rate Poměr Maximální poměr chybovosti mezi všemi dvěma skupinami. Klasifikace
Selection_rate rozdíl Maximální rozdíl v míře výběru mezi dvěma skupinami. Klasifikace
Selection_rate Poměr Maximální poměr míry výběru mezi všemi dvěma skupinami. Klasifikace
mean_absolute_error rozdíl Maximální rozdíl v absolutní střední chybě mezi libovolnými dvěma skupinami. Regrese
mean_absolute_error Poměr Maximální poměr průměrné absolutní chyby mezi všemi dvěma skupinami. Regrese
mean_squared_error rozdíl Maximální rozdíl v střední kvadratická chybě mezi libovolnými dvěma skupinami. Regrese
mean_squared_error Poměr Maximální poměr střední kvadratická chyba mezi všemi dvěma skupinami. Regrese
median_absolute_error rozdíl Maximální rozdíl v absolutní střední chybě mezi libovolnými dvěma skupinami. Regrese
median_absolute_error Poměr Maximální poměr v absolutní střední chybě mezi libovolnými dvěma skupinami. Regrese
r2_score rozdíl Maximální rozdíl ve skóre R2 mezi dvěma skupinami. Regrese
r2_Score Poměr Maximální poměr ve skóre R2 mezi dvěma skupinami. Regrese

Vstupní omezení

Jaké formáty modelů a varianty jsou podporované?

Model musí být v adresáři MLflow s dostupnou příchutí sklearn. Kromě toho musí být model načístelný v prostředí, které používají komponenty zodpovědné umělé inteligence.

Jaké formáty dat jsou podporované?

Zadané datové sady by měly být mltable s tabulkovými daty.

Další kroky